@medusajs/utils 3.0.0-snapshot-20250410105645 → 3.0.0-snapshot-20251104004624

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 (460) hide show
  1. package/dist/analytics/abstract-analytics-provider.d.ts +110 -0
  2. package/dist/analytics/abstract-analytics-provider.d.ts.map +1 -0
  3. package/dist/analytics/abstract-analytics-provider.js +107 -0
  4. package/dist/analytics/abstract-analytics-provider.js.map +1 -0
  5. package/dist/analytics/index.d.ts +2 -0
  6. package/dist/analytics/index.d.ts.map +1 -0
  7. package/dist/{feature-flags/utils → analytics}/index.js +1 -1
  8. package/dist/analytics/index.js.map +1 -0
  9. package/dist/auth/token.d.ts +4 -2
  10. package/dist/auth/token.d.ts.map +1 -1
  11. package/dist/auth/token.js +5 -2
  12. package/dist/auth/token.js.map +1 -1
  13. package/dist/bundles.d.ts +1 -0
  14. package/dist/bundles.d.ts.map +1 -1
  15. package/dist/bundles.js +19 -8
  16. package/dist/bundles.js.map +1 -1
  17. package/dist/caching/index.d.ts +59 -0
  18. package/dist/caching/index.d.ts.map +1 -0
  19. package/dist/caching/index.js +132 -0
  20. package/dist/caching/index.js.map +1 -0
  21. package/dist/common/build-query.d.ts +1 -1
  22. package/dist/common/build-query.d.ts.map +1 -1
  23. package/dist/common/camel-to-snake-case.d.ts.map +1 -1
  24. package/dist/common/compress-name.d.ts +2 -0
  25. package/dist/common/compress-name.d.ts.map +1 -0
  26. package/dist/common/compress-name.js +34 -0
  27. package/dist/common/compress-name.js.map +1 -0
  28. package/dist/common/container.d.ts +1 -1
  29. package/dist/common/container.js +1 -1
  30. package/dist/common/create-container-like.d.ts.map +1 -1
  31. package/dist/common/create-container-like.js +9 -1
  32. package/dist/common/create-container-like.js.map +1 -1
  33. package/dist/common/create-psql-index-helper.d.ts +2 -2
  34. package/dist/common/create-psql-index-helper.d.ts.map +1 -1
  35. package/dist/common/create-psql-index-helper.js +4 -2
  36. package/dist/common/create-psql-index-helper.js.map +1 -1
  37. package/dist/common/deep-copy.js +20 -10
  38. package/dist/common/deep-copy.js.map +1 -1
  39. package/dist/common/define-config.d.ts.map +1 -1
  40. package/dist/common/define-config.js +122 -6
  41. package/dist/common/define-config.js.map +1 -1
  42. package/dist/common/define-file-config.d.ts +7 -0
  43. package/dist/common/define-file-config.d.ts.map +1 -0
  44. package/dist/common/define-file-config.js +31 -0
  45. package/dist/common/define-file-config.js.map +1 -0
  46. package/dist/common/dynamic-import.d.ts.map +1 -1
  47. package/dist/common/dynamic-import.js +6 -1
  48. package/dist/common/dynamic-import.js.map +1 -1
  49. package/dist/common/execute-with-concurrency.d.ts +7 -0
  50. package/dist/common/execute-with-concurrency.d.ts.map +1 -0
  51. package/dist/common/execute-with-concurrency.js +26 -0
  52. package/dist/common/execute-with-concurrency.js.map +1 -0
  53. package/dist/common/get-duplicates.d.ts.map +1 -1
  54. package/dist/common/get-iso-string-from-date.d.ts.map +1 -1
  55. package/dist/common/get-resolved-plugins.js +1 -1
  56. package/dist/common/get-resolved-plugins.js.map +1 -1
  57. package/dist/common/get-selects-and-relations-from-object-array.d.ts +2 -1
  58. package/dist/common/get-selects-and-relations-from-object-array.d.ts.map +1 -1
  59. package/dist/common/get-selects-and-relations-from-object-array.js +7 -5
  60. package/dist/common/get-selects-and-relations-from-object-array.js.map +1 -1
  61. package/dist/common/index.d.ts +9 -2
  62. package/dist/common/index.d.ts.map +1 -1
  63. package/dist/common/index.js +9 -2
  64. package/dist/common/index.js.map +1 -1
  65. package/dist/common/medusa-container.js +1 -1
  66. package/dist/common/medusa-container.js.map +1 -1
  67. package/dist/common/normalize-csv-value.d.ts +6 -0
  68. package/dist/common/normalize-csv-value.d.ts.map +1 -0
  69. package/dist/common/normalize-csv-value.js +14 -0
  70. package/dist/common/normalize-csv-value.js.map +1 -0
  71. package/dist/common/normalize-import-path-with-source.d.ts +1 -1
  72. package/dist/common/normalize-import-path-with-source.d.ts.map +1 -1
  73. package/dist/common/normalize-import-path-with-source.js +2 -2
  74. package/dist/common/normalize-import-path-with-source.js.map +1 -1
  75. package/dist/common/optional-numeric-serializer.d.ts.map +1 -1
  76. package/dist/common/parse-stringify-if-necessary.d.ts +11 -0
  77. package/dist/common/parse-stringify-if-necessary.d.ts.map +1 -0
  78. package/dist/common/parse-stringify-if-necessary.js +44 -0
  79. package/dist/common/parse-stringify-if-necessary.js.map +1 -0
  80. package/dist/common/partition-array.d.ts.map +1 -1
  81. package/dist/common/read-dir-recursive.d.ts +2 -1
  82. package/dist/common/read-dir-recursive.d.ts.map +1 -1
  83. package/dist/common/read-dir-recursive.js +4 -3
  84. package/dist/common/read-dir-recursive.js.map +1 -1
  85. package/dist/common/remove-undefined.d.ts.map +1 -1
  86. package/dist/common/retry-execution.d.ts +18 -0
  87. package/dist/common/retry-execution.d.ts.map +1 -0
  88. package/dist/common/retry-execution.js +50 -0
  89. package/dist/common/retry-execution.js.map +1 -0
  90. package/dist/common/to-handle.d.ts.map +1 -1
  91. package/dist/common/to-kebab-case.d.ts.map +1 -1
  92. package/dist/common/try-convert-to-boolean.d.ts +7 -0
  93. package/dist/common/try-convert-to-boolean.d.ts.map +1 -0
  94. package/dist/common/try-convert-to-boolean.js +15 -0
  95. package/dist/common/try-convert-to-boolean.js.map +1 -0
  96. package/dist/common/try-convert-to-number.d.ts +7 -0
  97. package/dist/common/try-convert-to-number.d.ts.map +1 -0
  98. package/dist/common/try-convert-to-number.js +10 -0
  99. package/dist/common/try-convert-to-number.js.map +1 -0
  100. package/dist/common/validate-handle.d.ts.map +1 -1
  101. package/dist/common/wrap-handler.d.ts.map +1 -1
  102. package/dist/core-flows/events.d.ts +783 -0
  103. package/dist/core-flows/events.d.ts.map +1 -1
  104. package/dist/core-flows/events.js +784 -1
  105. package/dist/core-flows/events.js.map +1 -1
  106. package/dist/dal/index.d.ts +4 -3
  107. package/dist/dal/index.d.ts.map +1 -1
  108. package/dist/dal/index.js +4 -3
  109. package/dist/dal/index.js.map +1 -1
  110. package/dist/dal/mikro-orm/base-entity.d.ts +1 -1
  111. package/dist/dal/mikro-orm/base-entity.d.ts.map +1 -1
  112. package/dist/dal/mikro-orm/base-entity.js +1 -1
  113. package/dist/dal/mikro-orm/base-entity.js.map +1 -1
  114. package/dist/dal/mikro-orm/big-number-field.d.ts +1 -1
  115. package/dist/dal/mikro-orm/big-number-field.d.ts.map +1 -1
  116. package/dist/dal/mikro-orm/big-number-field.js +38 -2
  117. package/dist/dal/mikro-orm/big-number-field.js.map +1 -1
  118. package/dist/dal/mikro-orm/custom-db-migrator.d.ts +8 -0
  119. package/dist/dal/mikro-orm/custom-db-migrator.d.ts.map +1 -0
  120. package/dist/dal/mikro-orm/custom-db-migrator.js +47 -0
  121. package/dist/dal/mikro-orm/custom-db-migrator.js.map +1 -0
  122. package/dist/dal/mikro-orm/db-error-mapper.d.ts.map +1 -1
  123. package/dist/dal/mikro-orm/db-error-mapper.js +1 -1
  124. package/dist/dal/mikro-orm/db-error-mapper.js.map +1 -1
  125. package/dist/dal/mikro-orm/decorators/foreign-key.d.ts.map +1 -1
  126. package/dist/dal/mikro-orm/decorators/foreign-key.js +1 -1
  127. package/dist/dal/mikro-orm/decorators/foreign-key.js.map +1 -1
  128. package/dist/dal/mikro-orm/decorators/searchable.d.ts.map +1 -1
  129. package/dist/dal/mikro-orm/decorators/searchable.js +1 -1
  130. package/dist/dal/mikro-orm/decorators/searchable.js.map +1 -1
  131. package/dist/dal/mikro-orm/mikro-orm-create-connection.d.ts +3 -3
  132. package/dist/dal/mikro-orm/mikro-orm-create-connection.d.ts.map +1 -1
  133. package/dist/dal/mikro-orm/mikro-orm-create-connection.js +32 -4
  134. package/dist/dal/mikro-orm/mikro-orm-create-connection.js.map +1 -1
  135. package/dist/dal/mikro-orm/mikro-orm-free-text-search-filter.d.ts +2 -2
  136. package/dist/dal/mikro-orm/mikro-orm-free-text-search-filter.d.ts.map +1 -1
  137. package/dist/dal/mikro-orm/mikro-orm-free-text-search-filter.js +3 -3
  138. package/dist/dal/mikro-orm/mikro-orm-free-text-search-filter.js.map +1 -1
  139. package/dist/dal/mikro-orm/mikro-orm-repository.d.ts +2 -1
  140. package/dist/dal/mikro-orm/mikro-orm-repository.d.ts.map +1 -1
  141. package/dist/dal/mikro-orm/mikro-orm-repository.js +282 -65
  142. package/dist/dal/mikro-orm/mikro-orm-repository.js.map +1 -1
  143. package/dist/dal/mikro-orm/mikro-orm-serializer-old.d.ts +29 -0
  144. package/dist/dal/mikro-orm/mikro-orm-serializer-old.d.ts.map +1 -0
  145. package/dist/dal/mikro-orm/mikro-orm-serializer-old.js +443 -0
  146. package/dist/dal/mikro-orm/mikro-orm-serializer-old.js.map +1 -0
  147. package/dist/dal/mikro-orm/mikro-orm-serializer.d.ts +25 -10
  148. package/dist/dal/mikro-orm/mikro-orm-serializer.d.ts.map +1 -1
  149. package/dist/dal/mikro-orm/mikro-orm-serializer.js +384 -175
  150. package/dist/dal/mikro-orm/mikro-orm-serializer.js.map +1 -1
  151. package/dist/dal/mikro-orm/utils.d.ts +1 -1
  152. package/dist/dal/mikro-orm/utils.d.ts.map +1 -1
  153. package/dist/defaults/countries.js +6 -6
  154. package/dist/defaults/countries.js.map +1 -1
  155. package/dist/defaults/currencies.d.ts.map +1 -1
  156. package/dist/defaults/currencies.js +27 -0
  157. package/dist/defaults/currencies.js.map +1 -1
  158. package/dist/dml/entity-builder.d.ts +1 -1
  159. package/dist/dml/entity-builder.js +1 -1
  160. package/dist/dml/helpers/create-graphql.d.ts.map +1 -1
  161. package/dist/dml/helpers/create-graphql.js +10 -3
  162. package/dist/dml/helpers/create-graphql.js.map +1 -1
  163. package/dist/dml/helpers/create-mikro-orm-entity.d.ts +0 -3
  164. package/dist/dml/helpers/create-mikro-orm-entity.d.ts.map +1 -1
  165. package/dist/dml/helpers/create-mikro-orm-entity.js +5 -4
  166. package/dist/dml/helpers/create-mikro-orm-entity.js.map +1 -1
  167. package/dist/dml/helpers/entity-builder/create-big-number-properties.d.ts.map +1 -1
  168. package/dist/dml/helpers/entity-builder/create-big-number-properties.js +16 -4
  169. package/dist/dml/helpers/entity-builder/create-big-number-properties.js.map +1 -1
  170. package/dist/dml/helpers/entity-builder/define-property.js +1 -1
  171. package/dist/dml/helpers/entity-builder/define-property.js.map +1 -1
  172. package/dist/dml/helpers/entity-builder/define-relationship.js +1 -1
  173. package/dist/dml/helpers/entity-builder/define-relationship.js.map +1 -1
  174. package/dist/dml/helpers/graphql-builder/get-attribute.d.ts.map +1 -1
  175. package/dist/dml/helpers/graphql-builder/get-attribute.js +3 -2
  176. package/dist/dml/helpers/graphql-builder/get-attribute.js.map +1 -1
  177. package/dist/dml/helpers/mikro-orm/apply-checks.js +1 -1
  178. package/dist/dml/helpers/mikro-orm/apply-checks.js.map +1 -1
  179. package/dist/dml/helpers/mikro-orm/build-indexes.js +1 -1
  180. package/dist/dml/helpers/mikro-orm/build-indexes.js.map +1 -1
  181. package/dist/dml/properties/autoincrement.d.ts +20 -1
  182. package/dist/dml/properties/autoincrement.d.ts.map +1 -1
  183. package/dist/dml/properties/autoincrement.js +19 -0
  184. package/dist/dml/properties/autoincrement.js.map +1 -1
  185. package/dist/dml/properties/big-number.d.ts +2 -0
  186. package/dist/dml/properties/big-number.d.ts.map +1 -1
  187. package/dist/dml/properties/big-number.js +4 -0
  188. package/dist/dml/properties/big-number.js.map +1 -1
  189. package/dist/dml/properties/id.d.ts +1 -1
  190. package/dist/dml/properties/id.d.ts.map +1 -1
  191. package/dist/dml/properties/id.js.map +1 -1
  192. package/dist/dml/properties/primary-key.d.ts +1 -0
  193. package/dist/dml/properties/primary-key.d.ts.map +1 -1
  194. package/dist/dml/properties/primary-key.js +8 -5
  195. package/dist/dml/properties/primary-key.js.map +1 -1
  196. package/dist/dml/relations/belongs-to.d.ts.map +1 -1
  197. package/dist/dml/relations/has-many.d.ts.map +1 -1
  198. package/dist/dml/relations/has-one-fk.d.ts.map +1 -1
  199. package/dist/dml/relations/has-one.d.ts.map +1 -1
  200. package/dist/dml/relations/many-to-many.d.ts.map +1 -1
  201. package/dist/event-bus/index.d.ts +30 -2
  202. package/dist/event-bus/index.d.ts.map +1 -1
  203. package/dist/event-bus/index.js +39 -0
  204. package/dist/event-bus/index.js.map +1 -1
  205. package/dist/event-bus/message-aggregator.d.ts +1 -1
  206. package/dist/event-bus/message-aggregator.d.ts.map +1 -1
  207. package/dist/event-bus/message-aggregator.js +30 -8
  208. package/dist/event-bus/message-aggregator.js.map +1 -1
  209. package/dist/event-bus/utils.d.ts.map +1 -1
  210. package/dist/event-bus/utils.js +1 -2
  211. package/dist/event-bus/utils.js.map +1 -1
  212. package/dist/exceptions/is-duplicate-error.d.ts.map +1 -1
  213. package/dist/feature-flags/discover-and-register-feature-flags.d.ts +15 -0
  214. package/dist/feature-flags/discover-and-register-feature-flags.d.ts.map +1 -0
  215. package/dist/feature-flags/discover-and-register-feature-flags.js +23 -0
  216. package/dist/feature-flags/discover-and-register-feature-flags.js.map +1 -0
  217. package/dist/feature-flags/discover-feature-flags.d.ts +6 -0
  218. package/dist/feature-flags/discover-feature-flags.d.ts.map +1 -0
  219. package/dist/feature-flags/discover-feature-flags.js +53 -0
  220. package/dist/feature-flags/discover-feature-flags.js.map +1 -0
  221. package/dist/feature-flags/{utils/flag-router.d.ts → flag-router.d.ts} +1 -0
  222. package/dist/feature-flags/flag-router.d.ts.map +1 -0
  223. package/dist/feature-flags/{utils/flag-router.js → flag-router.js} +3 -2
  224. package/dist/feature-flags/flag-router.js.map +1 -0
  225. package/dist/feature-flags/index.d.ts +4 -10
  226. package/dist/feature-flags/index.d.ts.map +1 -1
  227. package/dist/feature-flags/index.js +4 -10
  228. package/dist/feature-flags/index.js.map +1 -1
  229. package/dist/feature-flags/register-flag.d.ts +18 -0
  230. package/dist/feature-flags/register-flag.d.ts.map +1 -0
  231. package/dist/feature-flags/register-flag.js +41 -0
  232. package/dist/feature-flags/register-flag.js.map +1 -0
  233. package/dist/file/abstract-file-provider.d.ts +61 -9
  234. package/dist/file/abstract-file-provider.d.ts.map +1 -1
  235. package/dist/file/abstract-file-provider.js +64 -9
  236. package/dist/file/abstract-file-provider.js.map +1 -1
  237. package/dist/fulfillment/events.d.ts +6 -0
  238. package/dist/fulfillment/events.d.ts.map +1 -1
  239. package/dist/fulfillment/events.js +6 -0
  240. package/dist/fulfillment/events.js.map +1 -1
  241. package/dist/fulfillment/provider.d.ts +4 -4
  242. package/dist/fulfillment/provider.js +4 -4
  243. package/dist/graphql/graphql-to-ts-types.d.ts.map +1 -1
  244. package/dist/graphql/graphql-to-ts-types.js +40 -9
  245. package/dist/graphql/graphql-to-ts-types.js.map +1 -1
  246. package/dist/index.d.ts +2 -0
  247. package/dist/index.d.ts.map +1 -1
  248. package/dist/index.js +2 -0
  249. package/dist/index.js.map +1 -1
  250. package/dist/link/compose-link-name.d.ts.map +1 -1
  251. package/dist/migrations/index.d.ts +3 -3
  252. package/dist/migrations/index.d.ts.map +1 -1
  253. package/dist/migrations/index.js +37 -3
  254. package/dist/migrations/index.js.map +1 -1
  255. package/dist/modules-sdk/build-query.d.ts.map +1 -1
  256. package/dist/modules-sdk/build-query.js +5 -11
  257. package/dist/modules-sdk/build-query.js.map +1 -1
  258. package/dist/modules-sdk/create-medusa-mikro-orm-event-subscriber.d.ts +16 -0
  259. package/dist/modules-sdk/create-medusa-mikro-orm-event-subscriber.d.ts.map +1 -0
  260. package/dist/modules-sdk/create-medusa-mikro-orm-event-subscriber.js +50 -0
  261. package/dist/modules-sdk/create-medusa-mikro-orm-event-subscriber.js.map +1 -0
  262. package/dist/modules-sdk/create-pg-connection.d.ts +1 -1
  263. package/dist/modules-sdk/create-pg-connection.d.ts.map +1 -1
  264. package/dist/modules-sdk/create-pg-connection.js +13 -2
  265. package/dist/modules-sdk/create-pg-connection.js.map +1 -1
  266. package/dist/modules-sdk/decorators/context-parameter.d.ts.map +1 -1
  267. package/dist/modules-sdk/decorators/emit-events.d.ts.map +1 -1
  268. package/dist/modules-sdk/decorators/inject-manager.d.ts.map +1 -1
  269. package/dist/modules-sdk/decorators/inject-manager.js +4 -3
  270. package/dist/modules-sdk/decorators/inject-manager.js.map +1 -1
  271. package/dist/modules-sdk/decorators/inject-transaction-manager.d.ts.map +1 -1
  272. package/dist/modules-sdk/decorators/inject-transaction-manager.js +7 -9
  273. package/dist/modules-sdk/decorators/inject-transaction-manager.js.map +1 -1
  274. package/dist/modules-sdk/define-link.d.ts +2 -0
  275. package/dist/modules-sdk/define-link.d.ts.map +1 -1
  276. package/dist/modules-sdk/define-link.js +11 -0
  277. package/dist/modules-sdk/define-link.js.map +1 -1
  278. package/dist/modules-sdk/definition.d.ts +9 -0
  279. package/dist/modules-sdk/definition.d.ts.map +1 -1
  280. package/dist/modules-sdk/definition.js +6 -0
  281. package/dist/modules-sdk/definition.js.map +1 -1
  282. package/dist/modules-sdk/event-builder-factory.d.ts.map +1 -1
  283. package/dist/modules-sdk/index.d.ts +1 -0
  284. package/dist/modules-sdk/index.d.ts.map +1 -1
  285. package/dist/modules-sdk/index.js +1 -0
  286. package/dist/modules-sdk/index.js.map +1 -1
  287. package/dist/modules-sdk/joiner-config-builder.d.ts +7 -1
  288. package/dist/modules-sdk/joiner-config-builder.d.ts.map +1 -1
  289. package/dist/modules-sdk/joiner-config-builder.js +42 -8
  290. package/dist/modules-sdk/joiner-config-builder.js.map +1 -1
  291. package/dist/modules-sdk/load-module-database-config.d.ts.map +1 -1
  292. package/dist/modules-sdk/load-module-database-config.js +15 -1
  293. package/dist/modules-sdk/load-module-database-config.js.map +1 -1
  294. package/dist/modules-sdk/loaders/container-loader-factory.js +1 -1
  295. package/dist/modules-sdk/loaders/container-loader-factory.js.map +1 -1
  296. package/dist/modules-sdk/loaders/mikro-orm-connection-loader.d.ts.map +1 -1
  297. package/dist/modules-sdk/loaders/mikro-orm-connection-loader.js +1 -1
  298. package/dist/modules-sdk/loaders/mikro-orm-connection-loader.js.map +1 -1
  299. package/dist/modules-sdk/medusa-internal-service.d.ts +14 -3
  300. package/dist/modules-sdk/medusa-internal-service.d.ts.map +1 -1
  301. package/dist/modules-sdk/medusa-internal-service.js +126 -3
  302. package/dist/modules-sdk/medusa-internal-service.js.map +1 -1
  303. package/dist/modules-sdk/medusa-service.d.ts.map +1 -1
  304. package/dist/modules-sdk/medusa-service.js +89 -56
  305. package/dist/modules-sdk/medusa-service.js.map +1 -1
  306. package/dist/modules-sdk/migration-scripts/migration-down.d.ts.map +1 -1
  307. package/dist/modules-sdk/migration-scripts/migration-down.js +4 -2
  308. package/dist/modules-sdk/migration-scripts/migration-down.js.map +1 -1
  309. package/dist/modules-sdk/migration-scripts/migration-generate.d.ts +1 -1
  310. package/dist/modules-sdk/migration-scripts/migration-generate.d.ts.map +1 -1
  311. package/dist/modules-sdk/migration-scripts/migration-generate.js +3 -3
  312. package/dist/modules-sdk/migration-scripts/migration-generate.js.map +1 -1
  313. package/dist/modules-sdk/migration-scripts/migration-up.d.ts.map +1 -1
  314. package/dist/modules-sdk/migration-scripts/migration-up.js +4 -2
  315. package/dist/modules-sdk/migration-scripts/migration-up.js.map +1 -1
  316. package/dist/modules-sdk/migration-scripts/seed.d.ts.map +1 -1
  317. package/dist/modules-sdk/migration-scripts/seed.js +4 -1
  318. package/dist/modules-sdk/migration-scripts/seed.js.map +1 -1
  319. package/dist/modules-sdk/mikro-orm-cli-config-builder.d.ts +1 -1
  320. package/dist/modules-sdk/mikro-orm-cli-config-builder.d.ts.map +1 -1
  321. package/dist/modules-sdk/mikro-orm-cli-config-builder.js +2 -1
  322. package/dist/modules-sdk/mikro-orm-cli-config-builder.js.map +1 -1
  323. package/dist/modules-sdk/module.d.ts.map +1 -1
  324. package/dist/modules-sdk/module.js +2 -0
  325. package/dist/modules-sdk/module.js.map +1 -1
  326. package/dist/modules-sdk/modules-to-container-types.d.ts.map +1 -1
  327. package/dist/modules-sdk/modules-to-container-types.js +2 -1
  328. package/dist/modules-sdk/modules-to-container-types.js.map +1 -1
  329. package/dist/modules-sdk/query-context.d.ts +2 -2
  330. package/dist/modules-sdk/query-context.d.ts.map +1 -1
  331. package/dist/modules-sdk/query-context.js.map +1 -1
  332. package/dist/modules-sdk/types/medusa-service.d.ts +15 -1
  333. package/dist/modules-sdk/types/medusa-service.d.ts.map +1 -1
  334. package/dist/payment/abstract-payment-provider.d.ts +145 -32
  335. package/dist/payment/abstract-payment-provider.d.ts.map +1 -1
  336. package/dist/payment/abstract-payment-provider.js +6 -3
  337. package/dist/payment/abstract-payment-provider.js.map +1 -1
  338. package/dist/payment/index.d.ts +0 -1
  339. package/dist/payment/index.d.ts.map +1 -1
  340. package/dist/payment/index.js +0 -1
  341. package/dist/payment/index.js.map +1 -1
  342. package/dist/pg/index.d.ts +1 -1
  343. package/dist/pg/index.d.ts.map +1 -1
  344. package/dist/pg/index.js +1 -1
  345. package/dist/pg/index.js.map +1 -1
  346. package/dist/product/csv-normalizer.d.ts +43 -0
  347. package/dist/product/csv-normalizer.d.ts.map +1 -0
  348. package/dist/product/csv-normalizer.js +382 -0
  349. package/dist/product/csv-normalizer.js.map +1 -0
  350. package/dist/product/enums.d.ts +7 -0
  351. package/dist/product/enums.d.ts.map +1 -0
  352. package/dist/product/enums.js +11 -0
  353. package/dist/product/enums.js.map +1 -0
  354. package/dist/product/events.d.ts +6 -0
  355. package/dist/product/events.d.ts.map +1 -1
  356. package/dist/product/events.js +1 -0
  357. package/dist/product/events.js.map +1 -1
  358. package/dist/product/get-variant-availability.d.ts +3 -3
  359. package/dist/product/get-variant-availability.d.ts.map +1 -1
  360. package/dist/product/get-variant-availability.js +13 -2
  361. package/dist/product/get-variant-availability.js.map +1 -1
  362. package/dist/product/index.d.ts +3 -6
  363. package/dist/product/index.d.ts.map +1 -1
  364. package/dist/product/index.js +26 -8
  365. package/dist/product/index.js.map +1 -1
  366. package/dist/product/validators.d.ts +894 -0
  367. package/dist/product/validators.d.ts.map +1 -0
  368. package/dist/product/validators.js +163 -0
  369. package/dist/product/validators.js.map +1 -0
  370. package/dist/promotion/index.d.ts +5 -2
  371. package/dist/promotion/index.d.ts.map +1 -1
  372. package/dist/promotion/index.js +3 -0
  373. package/dist/promotion/index.js.map +1 -1
  374. package/dist/totals/adjustment/index.d.ts +11 -6
  375. package/dist/totals/adjustment/index.d.ts.map +1 -1
  376. package/dist/totals/adjustment/index.js +25 -19
  377. package/dist/totals/adjustment/index.js.map +1 -1
  378. package/dist/totals/big-number.d.ts +5 -1
  379. package/dist/totals/big-number.d.ts.map +1 -1
  380. package/dist/totals/big-number.js +26 -14
  381. package/dist/totals/big-number.js.map +1 -1
  382. package/dist/totals/cart/index.d.ts +1 -0
  383. package/dist/totals/cart/index.d.ts.map +1 -1
  384. package/dist/totals/cart/index.js +19 -4
  385. package/dist/totals/cart/index.js.map +1 -1
  386. package/dist/totals/credit-lines/index.d.ts +3 -3
  387. package/dist/totals/credit-lines/index.d.ts.map +1 -1
  388. package/dist/totals/credit-lines/index.js +4 -3
  389. package/dist/totals/credit-lines/index.js.map +1 -1
  390. package/dist/totals/line-item/index.d.ts +2 -1
  391. package/dist/totals/line-item/index.d.ts.map +1 -1
  392. package/dist/totals/line-item/index.js +42 -18
  393. package/dist/totals/line-item/index.js.map +1 -1
  394. package/dist/totals/math.d.ts +4 -2
  395. package/dist/totals/math.d.ts.map +1 -1
  396. package/dist/totals/math.js +18 -10
  397. package/dist/totals/math.js.map +1 -1
  398. package/dist/totals/promotion/index.d.ts +2 -2
  399. package/dist/totals/promotion/index.d.ts.map +1 -1
  400. package/dist/totals/promotion/index.js +46 -26
  401. package/dist/totals/promotion/index.js.map +1 -1
  402. package/dist/totals/shipping-method/index.d.ts +1 -0
  403. package/dist/totals/shipping-method/index.d.ts.map +1 -1
  404. package/dist/totals/shipping-method/index.js +3 -1
  405. package/dist/totals/shipping-method/index.js.map +1 -1
  406. package/dist/totals/tax/index.d.ts +1 -1
  407. package/dist/totals/tax/index.d.ts.map +1 -1
  408. package/dist/totals/tax/index.js +0 -3
  409. package/dist/totals/tax/index.js.map +1 -1
  410. package/dist/tsconfig.tsbuildinfo +1 -1
  411. package/package.json +11 -29
  412. package/dist/common/set-metadata.d.ts +0 -10
  413. package/dist/common/set-metadata.d.ts.map +0 -1
  414. package/dist/common/set-metadata.js +0 -37
  415. package/dist/common/set-metadata.js.map +0 -1
  416. package/dist/feature-flags/analytics.d.ts +0 -3
  417. package/dist/feature-flags/analytics.d.ts.map +0 -1
  418. package/dist/feature-flags/analytics.js +0 -10
  419. package/dist/feature-flags/analytics.js.map +0 -1
  420. package/dist/feature-flags/many-to-many-inventory.d.ts +0 -3
  421. package/dist/feature-flags/many-to-many-inventory.d.ts.map +0 -1
  422. package/dist/feature-flags/many-to-many-inventory.js +0 -10
  423. package/dist/feature-flags/many-to-many-inventory.js.map +0 -1
  424. package/dist/feature-flags/medusa-v2.d.ts +0 -3
  425. package/dist/feature-flags/medusa-v2.d.ts.map +0 -1
  426. package/dist/feature-flags/medusa-v2.js +0 -10
  427. package/dist/feature-flags/medusa-v2.js.map +0 -1
  428. package/dist/feature-flags/order-editing.d.ts +0 -3
  429. package/dist/feature-flags/order-editing.d.ts.map +0 -1
  430. package/dist/feature-flags/order-editing.js +0 -10
  431. package/dist/feature-flags/order-editing.js.map +0 -1
  432. package/dist/feature-flags/product-categories.d.ts +0 -3
  433. package/dist/feature-flags/product-categories.d.ts.map +0 -1
  434. package/dist/feature-flags/product-categories.js +0 -10
  435. package/dist/feature-flags/product-categories.js.map +0 -1
  436. package/dist/feature-flags/publishable-api-keys.d.ts +0 -3
  437. package/dist/feature-flags/publishable-api-keys.d.ts.map +0 -1
  438. package/dist/feature-flags/publishable-api-keys.js +0 -10
  439. package/dist/feature-flags/publishable-api-keys.js.map +0 -1
  440. package/dist/feature-flags/sales-channels.d.ts +0 -3
  441. package/dist/feature-flags/sales-channels.d.ts.map +0 -1
  442. package/dist/feature-flags/sales-channels.js +0 -10
  443. package/dist/feature-flags/sales-channels.js.map +0 -1
  444. package/dist/feature-flags/tax-inclusive-pricing.d.ts +0 -3
  445. package/dist/feature-flags/tax-inclusive-pricing.d.ts.map +0 -1
  446. package/dist/feature-flags/tax-inclusive-pricing.js +0 -10
  447. package/dist/feature-flags/tax-inclusive-pricing.js.map +0 -1
  448. package/dist/feature-flags/utils/flag-router.d.ts.map +0 -1
  449. package/dist/feature-flags/utils/flag-router.js.map +0 -1
  450. package/dist/feature-flags/utils/index.d.ts +0 -2
  451. package/dist/feature-flags/utils/index.d.ts.map +0 -1
  452. package/dist/feature-flags/utils/index.js.map +0 -1
  453. package/dist/feature-flags/workflows.d.ts +0 -3
  454. package/dist/feature-flags/workflows.d.ts.map +0 -1
  455. package/dist/feature-flags/workflows.js +0 -10
  456. package/dist/feature-flags/workflows.js.map +0 -1
  457. package/dist/payment/events.d.ts +0 -5
  458. package/dist/payment/events.d.ts.map +0 -1
  459. package/dist/payment/events.js +0 -8
  460. package/dist/payment/events.js.map +0 -1
@@ -1,243 +1,452 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.mikroOrmSerializer = exports.EntitySerializer = void 0;
4
- const core_1 = require("@mikro-orm/core");
5
- function isVisible(meta, propName, options = {}) {
6
- if (options.populate === true) {
4
+ const core_1 = require("@medusajs/deps/mikro-orm/core");
5
+ const STATIC_OPTIONS_SHAPE = {
6
+ populate: true,
7
+ exclude: undefined,
8
+ preventCircularRef: true,
9
+ skipNull: undefined,
10
+ ignoreSerializers: undefined,
11
+ forceObject: true,
12
+ };
13
+ const EMPTY_ARRAY = Object.freeze([]);
14
+ const WILDCARD = "*";
15
+ const DOT = ".";
16
+ const UNDERSCORE = "_";
17
+ function isVisible(propName, populate, exclude, meta) {
18
+ if (populate === true)
7
19
  return true;
8
- }
9
- if (Array.isArray(options.populate) &&
10
- options.exclude?.find((item) => item === propName)) {
20
+ if (exclude && exclude.includes(propName))
11
21
  return false;
22
+ if (Array.isArray(populate)) {
23
+ const populateLength = populate.length;
24
+ const propNameLength = propName.length;
25
+ for (let i = 0; i < populateLength; i++) {
26
+ const item = populate[i];
27
+ if (item === WILDCARD)
28
+ return true;
29
+ if (item === propName)
30
+ return true;
31
+ if (item.length > propNameLength && item[propNameLength] === DOT) {
32
+ if (item.slice(0, propNameLength) === propName)
33
+ return true;
34
+ }
35
+ }
12
36
  }
13
- if (Array.isArray(options.populate) &&
14
- (options.populate?.find((item) => item === propName || item.startsWith(propName + ".")) ||
15
- options.populate.includes("*"))) {
16
- return true;
17
- }
18
- const prop = meta.properties[propName];
19
- const visible = (prop && !prop.hidden) || prop === undefined; // allow unknown properties
20
- const prefixed = prop && !prop.primary && propName.startsWith("_"); // ignore prefixed properties, if it's not a PK
37
+ const prop = meta[propName];
38
+ const visible = (prop && !prop.hidden) || prop === undefined;
39
+ const prefixed = prop && !prop.primary && propName.charAt(0) === UNDERSCORE;
21
40
  return visible && !prefixed;
22
41
  }
23
- function isPopulated(entity, propName, options) {
24
- if (Array.isArray(options.populate) &&
25
- (options.populate?.find((item) => item === propName || item.startsWith(propName + ".")) ||
26
- options.populate.includes("*"))) {
42
+ function isPopulated(propName, populate) {
43
+ if (populate === true)
27
44
  return true;
28
- }
29
- if (typeof options.populate === "boolean") {
30
- return options.populate;
45
+ if (populate === false || !Array.isArray(populate))
46
+ return false;
47
+ const propNameLength = propName.length;
48
+ const populateLength = populate.length;
49
+ for (let i = 0; i < populateLength; i++) {
50
+ const item = populate[i];
51
+ if (item === WILDCARD || item === propName)
52
+ return true;
53
+ if (item.length > propNameLength && item[propNameLength] === DOT) {
54
+ if (item.slice(0, propNameLength) === propName)
55
+ return true;
56
+ }
31
57
  }
32
58
  return false;
33
59
  }
34
- /**
35
- * Custom property filtering for the serialization which takes into account circular references to not return them.
36
- * @param propName
37
- * @param meta
38
- * @param options
39
- * @param parents
40
- */
41
- function filterEntityPropToSerialize({ propName, meta, options, parents, }) {
42
- parents ??= [];
43
- const isVisibleRes = isVisible(meta, propName, options);
44
- const prop = meta.properties[propName];
45
- // Only prevent circular references if prop is a relation
46
- if (prop &&
47
- options.preventCircularRef &&
48
- isVisibleRes &&
49
- prop.kind !== core_1.ReferenceKind.SCALAR) {
50
- // mapToPk would represent a foreign key and we want to keep them
51
- if (!!prop.mapToPk) {
52
- return true;
60
+ class RequestScopedSerializationContext {
61
+ constructor() {
62
+ this.propertyNameCache = new Map();
63
+ this.visitedEntities = new WeakSet();
64
+ // The buffer essentially replaces what would otherwise be a Set → Array conversion with a more
65
+ // efficient pre-allocated array approach, while maintaining the
66
+ // deduplication logic via the separate seenKeys Set.
67
+ this.keyCollectionBuffer = new Array(100); // Pre-allocated buffer for key collection
68
+ this.keyBufferIndex = 0;
69
+ this.propertyNameCache.set("id", "id");
70
+ this.propertyNameCache.set("created_at", "created_at");
71
+ this.propertyNameCache.set("updated_at", "updated_at");
72
+ this.propertyNameCache.set("deleted_at", "deleted_at");
73
+ }
74
+ resetKeyBuffer() {
75
+ this.keyBufferIndex = 0;
76
+ }
77
+ addKey(key) {
78
+ if (this.keyBufferIndex < this.keyCollectionBuffer.length) {
79
+ this.keyCollectionBuffer[this.keyBufferIndex++] = key;
80
+ }
81
+ else {
82
+ this.keyCollectionBuffer.push(key);
83
+ this.keyBufferIndex++;
53
84
  }
54
- return !parents.some((parent) => parent === prop.type);
55
85
  }
56
- return isVisibleRes;
86
+ getKeys() {
87
+ // Avoid slice allocation if buffer is exactly full
88
+ if (this.keyBufferIndex === this.keyCollectionBuffer.length) {
89
+ return this.keyCollectionBuffer;
90
+ }
91
+ return this.keyCollectionBuffer.slice(0, this.keyBufferIndex);
92
+ }
57
93
  }
58
94
  class EntitySerializer {
59
- static serialize(entity, options = {}, parents = []) {
60
- const parents_ = Array.from(new Set(parents));
95
+ static serialize(entity, options = STATIC_OPTIONS_SHAPE, parents = EMPTY_ARRAY, requestCtx) {
96
+ const ctx = requestCtx ?? new RequestScopedSerializationContext();
61
97
  const wrapped = (0, core_1.helper)(entity);
62
98
  const meta = wrapped.__meta;
63
99
  let contextCreated = false;
64
- if (!wrapped.__serializationContext.root) {
100
+ const populate = options.populate ?? STATIC_OPTIONS_SHAPE.populate;
101
+ const exclude = options.exclude;
102
+ const skipNull = options.skipNull ?? STATIC_OPTIONS_SHAPE.skipNull;
103
+ const preventCircularRef = options.preventCircularRef ?? STATIC_OPTIONS_SHAPE.preventCircularRef;
104
+ const ignoreSerializers = options.ignoreSerializers ?? STATIC_OPTIONS_SHAPE.ignoreSerializers;
105
+ const forceObject = options.forceObject ?? STATIC_OPTIONS_SHAPE.forceObject;
106
+ const serializationContext = wrapped.__serializationContext;
107
+ if (!serializationContext.root) {
65
108
  const root = new core_1.SerializationContext({});
66
109
  core_1.SerializationContext.propagate(root, entity, (meta, prop) => meta.properties[prop]?.kind !== core_1.ReferenceKind.SCALAR);
67
110
  contextCreated = true;
68
111
  }
69
- const root = wrapped.__serializationContext
70
- .root;
112
+ const root = serializationContext.root;
71
113
  const ret = {};
72
- const keys = new Set(meta.primaryKeys);
73
- Object.keys(entity).forEach((prop) => keys.add(prop));
114
+ ctx.resetKeyBuffer();
115
+ const seenKeys = new Set();
116
+ const primaryKeys = meta.primaryKeys;
117
+ const primaryKeysLength = primaryKeys.length;
118
+ const entityKeys = Object.keys(entity);
119
+ const entityKeysLength = entityKeys.length;
120
+ const metaPropertyKeys = Object.keys(meta.properties);
121
+ const metaPropertyKeysLength = metaPropertyKeys.length;
122
+ for (let i = 0; i < primaryKeysLength; i++) {
123
+ const key = primaryKeys[i];
124
+ if (!seenKeys.has(key)) {
125
+ seenKeys.add(key);
126
+ ctx.addKey(key);
127
+ }
128
+ }
129
+ for (let i = 0; i < entityKeysLength; i++) {
130
+ const key = entityKeys[i];
131
+ if (!seenKeys.has(key)) {
132
+ seenKeys.add(key);
133
+ ctx.addKey(key);
134
+ }
135
+ }
136
+ for (let i = 0; i < metaPropertyKeysLength; i++) {
137
+ const key = metaPropertyKeys[i];
138
+ if (!seenKeys.has(key)) {
139
+ seenKeys.add(key);
140
+ ctx.addKey(key);
141
+ }
142
+ }
143
+ const allKeys = ctx.getKeys();
144
+ const allKeysLength = allKeys.length;
145
+ let hasComplexProperties = false;
146
+ const metaProperties = meta.properties;
147
+ for (let i = 0; i < allKeysLength; i++) {
148
+ const prop = allKeys[i];
149
+ const propMeta = metaProperties[prop];
150
+ if (propMeta && propMeta.kind !== core_1.ReferenceKind.SCALAR) {
151
+ hasComplexProperties = true;
152
+ break;
153
+ }
154
+ }
155
+ if (!hasComplexProperties && populate === true) {
156
+ for (let i = 0; i < allKeysLength; i++) {
157
+ const prop = allKeys[i];
158
+ const propValue = entity[prop];
159
+ if (propValue !== undefined && !(propValue === null && skipNull)) {
160
+ ret[prop] = propValue;
161
+ }
162
+ }
163
+ if (contextCreated)
164
+ root.close();
165
+ return ret;
166
+ }
74
167
  const visited = root.visited.has(entity);
75
- if (!visited) {
168
+ if (!visited)
76
169
  root.visited.add(entity);
170
+ const className = meta.className;
171
+ const platform = wrapped.__platform;
172
+ for (let i = 0; i < allKeysLength; i++) {
173
+ const prop = allKeys[i];
174
+ const isPropertyVisible = isVisible(prop, populate, exclude, metaProperties);
175
+ if (!isPropertyVisible)
176
+ continue;
177
+ const propMeta = metaProperties[prop];
178
+ let shouldSerialize = true;
179
+ if (propMeta &&
180
+ preventCircularRef &&
181
+ propMeta.kind !== core_1.ReferenceKind.SCALAR) {
182
+ if (!propMeta.mapToPk) {
183
+ const propType = propMeta.type;
184
+ const parentsLength = parents.length;
185
+ for (let j = 0; j < parentsLength; j++) {
186
+ if (parents[j] === propType) {
187
+ shouldSerialize = false;
188
+ break;
189
+ }
190
+ }
191
+ }
192
+ }
193
+ if (!shouldSerialize)
194
+ continue;
195
+ const cycle = root.visit(className, prop);
196
+ if (cycle && visited)
197
+ continue;
198
+ const val = this.processProperty(prop, entity, populate, exclude, skipNull, preventCircularRef, ignoreSerializers, forceObject, parents, ctx);
199
+ if (!cycle)
200
+ root.leave(className, prop);
201
+ if (val !== undefined && !(val === null && skipNull)) {
202
+ let propName;
203
+ if (propMeta?.serializedName) {
204
+ propName = propMeta.serializedName;
205
+ }
206
+ else if (propMeta?.primary && platform) {
207
+ propName = platform.getSerializedPrimaryKeyField(prop);
208
+ }
209
+ else {
210
+ propName = prop;
211
+ }
212
+ ret[propName] = val;
213
+ }
77
214
  }
78
- ;
79
- [...keys]
80
- /** Medusa Custom properties filtering **/
81
- .filter((prop) => filterEntityPropToSerialize({
82
- propName: prop,
83
- meta,
84
- options,
85
- parents: parents_,
86
- }))
87
- .map((prop) => {
88
- const cycle = root.visit(meta.className, prop);
89
- if (cycle && visited) {
90
- return [prop, undefined];
91
- }
92
- const val = this.processProperty(prop, entity, options, parents_);
93
- if (!cycle) {
94
- root.leave(meta.className, prop);
95
- }
96
- if (options.skipNull && core_1.Utils.isPlainObject(val)) {
97
- core_1.Utils.dropUndefinedProperties(val, null);
98
- }
99
- return [prop, val];
100
- })
101
- .filter(([, value]) => typeof value !== "undefined" && !(value === null && options.skipNull))
102
- .forEach(([prop, value]) => (ret[this.propertyName(meta, prop, wrapped.__platform)] = value));
103
- if (contextCreated) {
215
+ if (contextCreated)
104
216
  root.close();
105
- }
106
- if (!wrapped.isInitialized()) {
217
+ if (!wrapped.isInitialized())
107
218
  return ret;
219
+ const metaProps = meta.props;
220
+ const metaPropsLength = metaProps.length;
221
+ for (let i = 0; i < metaPropsLength; i++) {
222
+ const prop = metaProps[i];
223
+ const propName = prop.name;
224
+ if (!isVisible(propName, populate, exclude, meta.properties))
225
+ continue;
226
+ let propertyKey;
227
+ let shouldProcess = false;
228
+ if (prop.getter && !prop.getterName && entity[propName] !== undefined) {
229
+ propertyKey = propName;
230
+ shouldProcess = true;
231
+ }
232
+ else if (prop.getterName &&
233
+ typeof entity[prop.getterName] === "function") {
234
+ propertyKey = prop.getterName;
235
+ shouldProcess = true;
236
+ }
237
+ if (shouldProcess) {
238
+ ret[this.propertyName(meta, propName, platform, ctx)] =
239
+ this.processProperty(propertyKey, entity, populate, exclude, skipNull, preventCircularRef, ignoreSerializers, forceObject, parents, ctx);
240
+ }
108
241
  }
109
- // decorated getters
110
- meta.props
111
- .filter((prop) => prop.getter &&
112
- prop.getterName === undefined &&
113
- typeof entity[prop.name] !== "undefined" &&
114
- isVisible(meta, prop.name, options))
115
- .forEach((prop) => (ret[this.propertyName(meta, prop.name, wrapped.__platform)] =
116
- this.processProperty(prop.name, entity, options, parents_)));
117
- // decorated get methods
118
- meta.props
119
- .filter((prop) => prop.getterName &&
120
- entity[prop.getterName] instanceof Function &&
121
- isVisible(meta, prop.name, options))
122
- .forEach((prop) => (ret[this.propertyName(meta, prop.name, wrapped.__platform)] =
123
- this.processProperty(prop.getterName, entity, options, parents_)));
124
242
  return ret;
125
243
  }
126
- static propertyName(meta, prop, platform) {
127
- /* istanbul ignore next */
128
- if (meta.properties[prop]?.serializedName) {
129
- return meta.properties[prop].serializedName;
244
+ static propertyName(meta, prop, platform, ctx) {
245
+ const cacheKey = `${meta.className}:${prop}:${platform?.constructor.name || "none"}`;
246
+ const cached = ctx.propertyNameCache.get(cacheKey);
247
+ if (cached !== undefined)
248
+ return cached;
249
+ const property = meta.properties[prop];
250
+ let result;
251
+ if (property?.serializedName) {
252
+ result = property.serializedName;
253
+ }
254
+ else if (property?.primary && platform) {
255
+ result = platform.getSerializedPrimaryKeyField(prop);
130
256
  }
131
- if (meta.properties[prop]?.primary && platform) {
132
- return platform.getSerializedPrimaryKeyField(prop);
257
+ else {
258
+ result = prop;
133
259
  }
134
- return prop;
260
+ ctx.propertyNameCache.set(cacheKey, result);
261
+ return result;
135
262
  }
136
- static processProperty(prop, entity, options, parents = []) {
137
- const parents_ = [...parents, entity.constructor.name];
138
- const parts = prop.split(".");
139
- prop = parts[0];
263
+ static processProperty(prop, entity, populate, exclude, skipNull, preventCircularRef, ignoreSerializers, forceObject, parents, ctx) {
264
+ const entityConstructorName = entity.constructor.name;
265
+ const newParents = parents.length > 0
266
+ ? [...parents, entityConstructorName]
267
+ : [entityConstructorName];
268
+ const dotIndex = prop.indexOf(DOT);
269
+ if (dotIndex > 0) {
270
+ prop = prop.substring(0, dotIndex);
271
+ }
140
272
  const wrapped = (0, core_1.helper)(entity);
141
273
  const property = wrapped.__meta.properties[prop];
142
- const serializer = property?.serializer;
143
- // getter method
144
- if (entity[prop] instanceof Function) {
145
- const returnValue = entity[prop]();
146
- if (!options.ignoreSerializers && serializer) {
147
- return serializer(returnValue);
274
+ const propValue = entity[prop];
275
+ if (typeof propValue === "function") {
276
+ const returnValue = propValue();
277
+ if (!ignoreSerializers && property?.serializer) {
278
+ return property.serializer(returnValue);
148
279
  }
149
280
  return returnValue;
150
281
  }
151
- /* istanbul ignore next */
152
- if (!options.ignoreSerializers && serializer) {
153
- return serializer(entity[prop]);
282
+ if (!ignoreSerializers && property?.serializer) {
283
+ return property.serializer(propValue);
154
284
  }
155
- if (core_1.Utils.isCollection(entity[prop])) {
156
- return this.processCollection(prop, entity, options, parents_);
285
+ if (core_1.Utils.isCollection(propValue)) {
286
+ return this.processCollection(prop, entity, populate, exclude, skipNull, preventCircularRef, ignoreSerializers, forceObject, newParents, ctx);
157
287
  }
158
- if (core_1.Utils.isEntity(entity[prop], true)) {
159
- return this.processEntity(prop, entity, wrapped.__platform, options, parents_);
288
+ if (core_1.Utils.isEntity(propValue, true)) {
289
+ return this.processEntity(prop, entity, wrapped.__platform, populate, exclude, skipNull, preventCircularRef, ignoreSerializers, forceObject, newParents, ctx);
160
290
  }
161
- /* istanbul ignore next */
162
- if (property?.reference === core_1.ReferenceKind.EMBEDDED) {
163
- if (Array.isArray(entity[prop])) {
164
- return entity[prop].map((item) => (0, core_1.helper)(item).toJSON());
291
+ if (property?.kind === core_1.ReferenceKind.EMBEDDED) {
292
+ if (Array.isArray(propValue)) {
293
+ const result = new Array(propValue.length);
294
+ for (let i = 0; i < propValue.length; i++) {
295
+ result[i] = (0, core_1.helper)(propValue[i]).toJSON();
296
+ }
297
+ return result;
165
298
  }
166
- if (core_1.Utils.isObject(entity[prop])) {
167
- return (0, core_1.helper)(entity[prop]).toJSON();
299
+ if (core_1.Utils.isObject(propValue)) {
300
+ return (0, core_1.helper)(propValue).toJSON();
168
301
  }
169
302
  }
170
- const customType = property?.customType;
171
- if (customType) {
172
- return customType.toJSON(entity[prop], wrapped.__platform);
303
+ if (property?.customType) {
304
+ return property.customType.toJSON(propValue, wrapped.__platform);
173
305
  }
174
- return wrapped.__platform.normalizePrimaryKey(entity[prop]);
306
+ return wrapped.__platform.normalizePrimaryKey(propValue);
175
307
  }
176
- static extractChildOptions(options, prop) {
177
- const extractChildElements = (items) => {
178
- return items
179
- .filter((field) => field.startsWith(`${prop}.`))
180
- .map((field) => field.substring(prop.length + 1));
181
- };
308
+ static extractChildPopulate(populate, prop) {
309
+ if (!Array.isArray(populate) || populate.includes(WILDCARD)) {
310
+ return populate;
311
+ }
312
+ const propPrefix = prop + DOT;
313
+ const propPrefixLength = propPrefix.length;
314
+ const childPopulate = [];
315
+ const populateLength = populate.length;
316
+ for (let i = 0; i < populateLength; i++) {
317
+ const field = populate[i];
318
+ if (field.length > propPrefixLength &&
319
+ field.slice(0, propPrefixLength) === propPrefix) {
320
+ childPopulate.push(field.substring(propPrefixLength));
321
+ }
322
+ }
323
+ return childPopulate.length > 0 ? childPopulate : false;
324
+ }
325
+ static createChildOptions(populate, exclude, skipNull, preventCircularRef, ignoreSerializers, forceObject, prop) {
326
+ const childPopulate = this.extractChildPopulate(populate, prop);
182
327
  return {
183
- ...options,
184
- populate: Array.isArray(options.populate) && !options.populate.includes("*")
185
- ? extractChildElements(options.populate)
186
- : options.populate,
187
- exclude: Array.isArray(options.exclude) && !options.exclude.includes("*")
188
- ? extractChildElements(options.exclude)
189
- : options.exclude,
328
+ populate: childPopulate,
329
+ exclude,
330
+ preventCircularRef,
331
+ skipNull,
332
+ ignoreSerializers,
333
+ forceObject,
190
334
  };
191
335
  }
192
- static processEntity(prop, entity, platform, options, parents = []) {
193
- const parents_ = [...parents, entity.constructor.name];
336
+ static processEntity(prop, entity, platform, populate, exclude, skipNull, preventCircularRef, ignoreSerializers, forceObject, parents, ctx) {
194
337
  const child = core_1.Reference.unwrapReference(entity[prop]);
195
338
  const wrapped = (0, core_1.helper)(child);
196
- const populated = isPopulated(child, prop, options) && wrapped.isInitialized();
197
- const expand = populated || options.forceObject || !wrapped.__managed;
339
+ const populated = isPopulated(prop, populate) && wrapped.isInitialized();
340
+ const expand = populated || forceObject || !wrapped.__managed;
198
341
  if (expand) {
199
- return this.serialize(child, this.extractChildOptions(options, prop), parents_);
342
+ const childOptions = this.createChildOptions(populate, exclude, skipNull, preventCircularRef, ignoreSerializers, forceObject, prop);
343
+ return this.serialize(child, childOptions, parents, ctx);
200
344
  }
201
345
  return platform.normalizePrimaryKey(wrapped.getPrimaryKey());
202
346
  }
203
- static processCollection(prop, entity, options, parents = []) {
204
- const parents_ = [...parents, entity.constructor.name];
347
+ static processCollection(prop, entity, populate, exclude, skipNull, preventCircularRef, ignoreSerializers, forceObject, parents, ctx) {
205
348
  const col = entity[prop];
206
- if (!col.isInitialized()) {
349
+ if (!col.isInitialized())
207
350
  return undefined;
351
+ const items = col.getItems(false);
352
+ const itemsLength = items.length;
353
+ if (itemsLength === 0)
354
+ return [];
355
+ const result = new Array(itemsLength);
356
+ let shouldPopulateCollection = false;
357
+ if (populate === true) {
358
+ shouldPopulateCollection = true;
208
359
  }
209
- return col.getItems(false).map((item) => {
210
- if (isPopulated(item, prop, options)) {
211
- return this.serialize(item, this.extractChildOptions(options, prop), parents_);
360
+ else if (Array.isArray(populate)) {
361
+ const propLength = prop.length;
362
+ const populateLength = populate.length;
363
+ for (let j = 0; j < populateLength; j++) {
364
+ const item = populate[j];
365
+ if (item === WILDCARD || item === prop) {
366
+ shouldPopulateCollection = true;
367
+ break;
368
+ }
369
+ if (item.length > propLength && item[propLength] === DOT) {
370
+ if (item.slice(0, propLength) === prop) {
371
+ shouldPopulateCollection = true;
372
+ break;
373
+ }
374
+ }
212
375
  }
213
- return (0, core_1.helper)(item).getPrimaryKey();
214
- });
376
+ }
377
+ if (!shouldPopulateCollection) {
378
+ for (let i = 0; i < itemsLength; i++) {
379
+ const item = items[i];
380
+ const wrapped = (0, core_1.helper)(item);
381
+ result[i] = wrapped.getPrimaryKey();
382
+ }
383
+ return result;
384
+ }
385
+ let childPopulate = populate;
386
+ if (Array.isArray(populate) && !populate.includes(WILDCARD)) {
387
+ const propPrefix = prop + DOT;
388
+ const propPrefixLength = propPrefix.length;
389
+ const childPopulateArray = [];
390
+ for (let j = 0; j < populate.length; j++) {
391
+ const field = populate[j];
392
+ if (field.length > propPrefixLength &&
393
+ field.slice(0, propPrefixLength) === propPrefix) {
394
+ childPopulateArray.push(field.substring(propPrefixLength));
395
+ }
396
+ }
397
+ childPopulate = childPopulateArray.length > 0 ? childPopulateArray : false;
398
+ }
399
+ const childOptions = {
400
+ populate: childPopulate,
401
+ exclude,
402
+ preventCircularRef,
403
+ skipNull,
404
+ ignoreSerializers,
405
+ forceObject,
406
+ };
407
+ for (let i = 0; i < itemsLength; i++) {
408
+ result[i] = this.serialize(items[i], childOptions, parents, ctx);
409
+ }
410
+ return result;
215
411
  }
216
412
  }
217
413
  exports.EntitySerializer = EntitySerializer;
218
414
  const mikroOrmSerializer = (data, options) => {
219
- return new Promise((resolve) => {
220
- options ??= {};
221
- const data_ = (Array.isArray(data) ? data : [data]).filter(Boolean);
222
- const forSerialization = [];
223
- const notForSerialization = [];
224
- data_.forEach((object) => {
225
- if (object.__meta) {
226
- return forSerialization.push(object);
227
- }
228
- return notForSerialization.push(object);
229
- });
230
- let result = forSerialization.map((entity) => EntitySerializer.serialize(entity, {
231
- forceObject: true,
232
- populate: ["*"],
233
- preventCircularRef: true,
234
- ...options,
235
- }));
236
- if (notForSerialization.length) {
237
- result = result.concat(notForSerialization);
238
- }
239
- resolve(Array.isArray(data) ? result : result[0]);
240
- });
415
+ const ctx = new RequestScopedSerializationContext();
416
+ const finalOptions = options
417
+ ? {
418
+ populate: Array.isArray(options.populate) &&
419
+ options.populate?.includes(WILDCARD)
420
+ ? true
421
+ : options.populate ?? STATIC_OPTIONS_SHAPE.populate,
422
+ exclude: options.exclude,
423
+ preventCircularRef: options.preventCircularRef ?? STATIC_OPTIONS_SHAPE.preventCircularRef,
424
+ skipNull: options.skipNull ?? STATIC_OPTIONS_SHAPE.skipNull,
425
+ ignoreSerializers: options.ignoreSerializers ?? STATIC_OPTIONS_SHAPE.ignoreSerializers,
426
+ forceObject: options.forceObject ?? STATIC_OPTIONS_SHAPE.forceObject,
427
+ }
428
+ : STATIC_OPTIONS_SHAPE;
429
+ if (!Array.isArray(data)) {
430
+ if (data?.__meta) {
431
+ return EntitySerializer.serialize(data, finalOptions, EMPTY_ARRAY, ctx);
432
+ }
433
+ return data;
434
+ }
435
+ const dataLength = data.length;
436
+ if (dataLength === 0) {
437
+ return [];
438
+ }
439
+ const result = new Array(dataLength);
440
+ for (let i = 0; i < dataLength; i++) {
441
+ const item = data[i];
442
+ if (item?.__meta) {
443
+ result[i] = EntitySerializer.serialize(item, finalOptions, EMPTY_ARRAY, ctx);
444
+ }
445
+ else {
446
+ result[i] = item;
447
+ }
448
+ }
449
+ return result;
241
450
  };
242
451
  exports.mikroOrmSerializer = mikroOrmSerializer;
243
452
  //# sourceMappingURL=mikro-orm-serializer.js.map