@open-mercato/core 0.4.7-develop-0a657b411f → 0.4.7-develop-e249d3e7d0

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 (278) hide show
  1. package/dist/generated/entities/carrier_shipment/index.js +37 -0
  2. package/dist/generated/entities/carrier_shipment/index.js.map +7 -0
  3. package/dist/generated/entities/gateway_transaction/index.js +47 -0
  4. package/dist/generated/entities/gateway_transaction/index.js.map +7 -0
  5. package/dist/generated/entities/webhook_processed_event/index.js +17 -0
  6. package/dist/generated/entities/webhook_processed_event/index.js.map +7 -0
  7. package/dist/generated/entities.ids.generated.js +10 -1
  8. package/dist/generated/entities.ids.generated.js.map +2 -2
  9. package/dist/generated/entity-fields-registry.js +6 -0
  10. package/dist/generated/entity-fields-registry.js.map +2 -2
  11. package/dist/modules/data_sync/api/runs/[id]/cancel.js +14 -5
  12. package/dist/modules/data_sync/api/runs/[id]/cancel.js.map +2 -2
  13. package/dist/modules/data_sync/backend/data-sync/page.meta.js +2 -2
  14. package/dist/modules/data_sync/backend/data-sync/page.meta.js.map +1 -1
  15. package/dist/modules/data_sync/backend/data-sync/runs/[id]/page.js +37 -12
  16. package/dist/modules/data_sync/backend/data-sync/runs/[id]/page.js.map +2 -2
  17. package/dist/modules/directory/api/get/tenants/lookup.js +1 -0
  18. package/dist/modules/directory/api/get/tenants/lookup.js.map +2 -2
  19. package/dist/modules/integrations/api/[id]/route.js +38 -11
  20. package/dist/modules/integrations/api/[id]/route.js.map +2 -2
  21. package/dist/modules/integrations/api/logs/route.js +52 -26
  22. package/dist/modules/integrations/api/logs/route.js.map +2 -2
  23. package/dist/modules/integrations/api/route.js +37 -7
  24. package/dist/modules/integrations/api/route.js.map +2 -2
  25. package/dist/modules/integrations/api/umes-read.js +121 -0
  26. package/dist/modules/integrations/api/umes-read.js.map +7 -0
  27. package/dist/modules/integrations/backend/integrations/[id]/page.js +715 -183
  28. package/dist/modules/integrations/backend/integrations/[id]/page.js.map +2 -2
  29. package/dist/modules/integrations/backend/integrations/bundle/[id]/page.js +30 -9
  30. package/dist/modules/integrations/backend/integrations/bundle/[id]/page.js.map +2 -2
  31. package/dist/modules/integrations/backend/integrations/detail-page-widgets.js +46 -0
  32. package/dist/modules/integrations/backend/integrations/detail-page-widgets.js.map +7 -0
  33. package/dist/modules/integrations/backend/integrations/page.js +78 -62
  34. package/dist/modules/integrations/backend/integrations/page.js.map +2 -2
  35. package/dist/modules/integrations/backend/integrations/page.meta.js +2 -2
  36. package/dist/modules/integrations/backend/integrations/page.meta.js.map +1 -1
  37. package/dist/modules/integrations/setup.js +2 -2
  38. package/dist/modules/integrations/setup.js.map +2 -2
  39. package/dist/modules/payment_gateways/acl.js +12 -0
  40. package/dist/modules/payment_gateways/acl.js.map +7 -0
  41. package/dist/modules/payment_gateways/api/cancel/route.js +55 -0
  42. package/dist/modules/payment_gateways/api/cancel/route.js.map +7 -0
  43. package/dist/modules/payment_gateways/api/capture/route.js +55 -0
  44. package/dist/modules/payment_gateways/api/capture/route.js.map +7 -0
  45. package/dist/modules/payment_gateways/api/interceptors.js +24 -0
  46. package/dist/modules/payment_gateways/api/interceptors.js.map +7 -0
  47. package/dist/modules/payment_gateways/api/openapi.js +5 -0
  48. package/dist/modules/payment_gateways/api/openapi.js.map +7 -0
  49. package/dist/modules/payment_gateways/api/refund/route.js +56 -0
  50. package/dist/modules/payment_gateways/api/refund/route.js.map +7 -0
  51. package/dist/modules/payment_gateways/api/sessions/route.js +74 -0
  52. package/dist/modules/payment_gateways/api/sessions/route.js.map +7 -0
  53. package/dist/modules/payment_gateways/api/status/route.js +66 -0
  54. package/dist/modules/payment_gateways/api/status/route.js.map +7 -0
  55. package/dist/modules/payment_gateways/api/transactions/[id]/route.js +118 -0
  56. package/dist/modules/payment_gateways/api/transactions/[id]/route.js.map +7 -0
  57. package/dist/modules/payment_gateways/api/transactions/route.js +113 -0
  58. package/dist/modules/payment_gateways/api/transactions/route.js.map +7 -0
  59. package/dist/modules/payment_gateways/api/webhook/[provider]/route.js +136 -0
  60. package/dist/modules/payment_gateways/api/webhook/[provider]/route.js.map +7 -0
  61. package/dist/modules/payment_gateways/backend/payment-gateways/page.js +496 -0
  62. package/dist/modules/payment_gateways/backend/payment-gateways/page.js.map +7 -0
  63. package/dist/modules/payment_gateways/backend/payment-gateways/page.meta.js +23 -0
  64. package/dist/modules/payment_gateways/backend/payment-gateways/page.meta.js.map +7 -0
  65. package/dist/modules/payment_gateways/data/enrichers.js +5 -0
  66. package/dist/modules/payment_gateways/data/enrichers.js.map +7 -0
  67. package/dist/modules/payment_gateways/data/entities.js +131 -0
  68. package/dist/modules/payment_gateways/data/entities.js.map +7 -0
  69. package/dist/modules/payment_gateways/data/validators.js +57 -0
  70. package/dist/modules/payment_gateways/data/validators.js.map +7 -0
  71. package/dist/modules/payment_gateways/di.js +16 -0
  72. package/dist/modules/payment_gateways/di.js.map +7 -0
  73. package/dist/modules/payment_gateways/events.js +21 -0
  74. package/dist/modules/payment_gateways/events.js.map +7 -0
  75. package/dist/modules/payment_gateways/i18n/en.js +6 -0
  76. package/dist/modules/payment_gateways/i18n/en.js.map +7 -0
  77. package/dist/modules/payment_gateways/i18n/pl.js +6 -0
  78. package/dist/modules/payment_gateways/i18n/pl.js.map +7 -0
  79. package/dist/modules/payment_gateways/index.js +9 -0
  80. package/dist/modules/payment_gateways/index.js.map +7 -0
  81. package/dist/modules/payment_gateways/lib/gateway-service.js +378 -0
  82. package/dist/modules/payment_gateways/lib/gateway-service.js.map +7 -0
  83. package/dist/modules/payment_gateways/lib/queue.js +17 -0
  84. package/dist/modules/payment_gateways/lib/queue.js.map +7 -0
  85. package/dist/modules/payment_gateways/lib/status-machine.js +29 -0
  86. package/dist/modules/payment_gateways/lib/status-machine.js.map +7 -0
  87. package/dist/modules/payment_gateways/lib/webhook-processor.js +88 -0
  88. package/dist/modules/payment_gateways/lib/webhook-processor.js.map +7 -0
  89. package/dist/modules/payment_gateways/lib/webhook-utils.js +42 -0
  90. package/dist/modules/payment_gateways/lib/webhook-utils.js.map +7 -0
  91. package/dist/modules/payment_gateways/migrations/Migration20260305122155.js +19 -0
  92. package/dist/modules/payment_gateways/migrations/Migration20260305122155.js.map +7 -0
  93. package/dist/modules/payment_gateways/setup.js +13 -0
  94. package/dist/modules/payment_gateways/setup.js.map +7 -0
  95. package/dist/modules/payment_gateways/widgets/injection-table.js +7 -0
  96. package/dist/modules/payment_gateways/widgets/injection-table.js.map +7 -0
  97. package/dist/modules/payment_gateways/workers/status-poller.js +44 -0
  98. package/dist/modules/payment_gateways/workers/status-poller.js.map +7 -0
  99. package/dist/modules/payment_gateways/workers/webhook-processor.js +20 -0
  100. package/dist/modules/payment_gateways/workers/webhook-processor.js.map +7 -0
  101. package/dist/modules/sales/data/enrichers.js +72 -0
  102. package/dist/modules/sales/data/enrichers.js.map +7 -0
  103. package/dist/modules/sales/lib/makeSalesLineRoute.js +3 -0
  104. package/dist/modules/sales/lib/makeSalesLineRoute.js.map +2 -2
  105. package/dist/modules/sales/widgets/injection/payment-gateway-config-field/widget.js +29 -0
  106. package/dist/modules/sales/widgets/injection/payment-gateway-config-field/widget.js.map +7 -0
  107. package/dist/modules/sales/widgets/injection/payment-gateway-status-column/widget.js +23 -0
  108. package/dist/modules/sales/widgets/injection/payment-gateway-status-column/widget.js.map +7 -0
  109. package/dist/modules/sales/widgets/injection-table.js +13 -1
  110. package/dist/modules/sales/widgets/injection-table.js.map +2 -2
  111. package/dist/modules/shipping_carriers/acl.js +10 -0
  112. package/dist/modules/shipping_carriers/acl.js.map +7 -0
  113. package/dist/modules/shipping_carriers/api/cancel/route.js +55 -0
  114. package/dist/modules/shipping_carriers/api/cancel/route.js.map +7 -0
  115. package/dist/modules/shipping_carriers/api/interceptors.js +21 -0
  116. package/dist/modules/shipping_carriers/api/interceptors.js.map +7 -0
  117. package/dist/modules/shipping_carriers/api/openapi.js +5 -0
  118. package/dist/modules/shipping_carriers/api/openapi.js.map +7 -0
  119. package/dist/modules/shipping_carriers/api/rates/route.js +55 -0
  120. package/dist/modules/shipping_carriers/api/rates/route.js.map +7 -0
  121. package/dist/modules/shipping_carriers/api/shipments/route.js +61 -0
  122. package/dist/modules/shipping_carriers/api/shipments/route.js.map +7 -0
  123. package/dist/modules/shipping_carriers/api/tracking/route.js +58 -0
  124. package/dist/modules/shipping_carriers/api/tracking/route.js.map +7 -0
  125. package/dist/modules/shipping_carriers/api/webhook/[provider]/route.js +119 -0
  126. package/dist/modules/shipping_carriers/api/webhook/[provider]/route.js.map +7 -0
  127. package/dist/modules/shipping_carriers/data/enrichers.js +82 -0
  128. package/dist/modules/shipping_carriers/data/enrichers.js.map +7 -0
  129. package/dist/modules/shipping_carriers/data/entities.js +80 -0
  130. package/dist/modules/shipping_carriers/data/entities.js.map +7 -0
  131. package/dist/modules/shipping_carriers/data/validators.js +49 -0
  132. package/dist/modules/shipping_carriers/data/validators.js.map +7 -0
  133. package/dist/modules/shipping_carriers/di.js +15 -0
  134. package/dist/modules/shipping_carriers/di.js.map +7 -0
  135. package/dist/modules/shipping_carriers/events.js +19 -0
  136. package/dist/modules/shipping_carriers/events.js.map +7 -0
  137. package/dist/modules/shipping_carriers/i18n/en.js +11 -0
  138. package/dist/modules/shipping_carriers/i18n/en.js.map +7 -0
  139. package/dist/modules/shipping_carriers/i18n/pl.js +11 -0
  140. package/dist/modules/shipping_carriers/i18n/pl.js.map +7 -0
  141. package/dist/modules/shipping_carriers/index.js +9 -0
  142. package/dist/modules/shipping_carriers/index.js.map +7 -0
  143. package/dist/modules/shipping_carriers/lib/adapter-registry.js +29 -0
  144. package/dist/modules/shipping_carriers/lib/adapter-registry.js.map +7 -0
  145. package/dist/modules/shipping_carriers/lib/adapter.js +1 -0
  146. package/dist/modules/shipping_carriers/lib/adapter.js.map +7 -0
  147. package/dist/modules/shipping_carriers/lib/queue.js +17 -0
  148. package/dist/modules/shipping_carriers/lib/queue.js.map +7 -0
  149. package/dist/modules/shipping_carriers/lib/shipping-service.js +155 -0
  150. package/dist/modules/shipping_carriers/lib/shipping-service.js.map +7 -0
  151. package/dist/modules/shipping_carriers/lib/status-sync.js +37 -0
  152. package/dist/modules/shipping_carriers/lib/status-sync.js.map +7 -0
  153. package/dist/modules/shipping_carriers/migrations/Migration20260305170000.js +16 -0
  154. package/dist/modules/shipping_carriers/migrations/Migration20260305170000.js.map +7 -0
  155. package/dist/modules/shipping_carriers/setup.js +13 -0
  156. package/dist/modules/shipping_carriers/setup.js.map +7 -0
  157. package/dist/modules/shipping_carriers/widgets/injection/create-shipment-button/widget.js +25 -0
  158. package/dist/modules/shipping_carriers/widgets/injection/create-shipment-button/widget.js.map +7 -0
  159. package/dist/modules/shipping_carriers/widgets/injection/tracking-column/widget.js +23 -0
  160. package/dist/modules/shipping_carriers/widgets/injection/tracking-column/widget.js.map +7 -0
  161. package/dist/modules/shipping_carriers/widgets/injection/tracking-status-badge/widget.js +40 -0
  162. package/dist/modules/shipping_carriers/widgets/injection/tracking-status-badge/widget.js.map +7 -0
  163. package/dist/modules/shipping_carriers/widgets/injection-table.js +24 -0
  164. package/dist/modules/shipping_carriers/widgets/injection-table.js.map +7 -0
  165. package/dist/modules/shipping_carriers/workers/status-poller.js +21 -0
  166. package/dist/modules/shipping_carriers/workers/status-poller.js.map +7 -0
  167. package/dist/modules/shipping_carriers/workers/webhook-processor.js +54 -0
  168. package/dist/modules/shipping_carriers/workers/webhook-processor.js.map +7 -0
  169. package/dist/modules/translations/api/get/locales.js +1 -0
  170. package/dist/modules/translations/api/get/locales.js.map +2 -2
  171. package/dist/modules/translations/api/put/locales.js +1 -0
  172. package/dist/modules/translations/api/put/locales.js.map +2 -2
  173. package/generated/entities/carrier_shipment/index.ts +17 -0
  174. package/generated/entities/gateway_transaction/index.ts +22 -0
  175. package/generated/entities/webhook_processed_event/index.ts +7 -0
  176. package/generated/entities.ids.generated.ts +10 -1
  177. package/generated/entity-fields-registry.ts +6 -0
  178. package/jest.config.cjs +1 -0
  179. package/package.json +5 -2
  180. package/src/modules/auth/i18n/de.json +1 -0
  181. package/src/modules/auth/i18n/en.json +1 -0
  182. package/src/modules/auth/i18n/es.json +1 -0
  183. package/src/modules/auth/i18n/pl.json +1 -0
  184. package/src/modules/data_sync/api/runs/[id]/cancel.ts +18 -5
  185. package/src/modules/data_sync/backend/data-sync/page.meta.ts +2 -2
  186. package/src/modules/data_sync/backend/data-sync/runs/[id]/page.tsx +50 -12
  187. package/src/modules/directory/api/get/tenants/lookup.ts +1 -0
  188. package/src/modules/integrations/AGENTS.md +31 -0
  189. package/src/modules/integrations/api/[id]/route.ts +38 -11
  190. package/src/modules/integrations/api/logs/route.ts +53 -27
  191. package/src/modules/integrations/api/route.ts +31 -1
  192. package/src/modules/integrations/api/umes-read.ts +177 -0
  193. package/src/modules/integrations/backend/integrations/[id]/page.tsx +902 -202
  194. package/src/modules/integrations/backend/integrations/bundle/[id]/page.tsx +43 -9
  195. package/src/modules/integrations/backend/integrations/detail-page-widgets.ts +74 -0
  196. package/src/modules/integrations/backend/integrations/page.meta.ts +2 -2
  197. package/src/modules/integrations/backend/integrations/page.tsx +65 -54
  198. package/src/modules/integrations/i18n/de.json +15 -0
  199. package/src/modules/integrations/i18n/en.json +15 -0
  200. package/src/modules/integrations/i18n/es.json +15 -0
  201. package/src/modules/integrations/i18n/pl.json +15 -0
  202. package/src/modules/integrations/setup.ts +2 -2
  203. package/src/modules/payment_gateways/acl.ts +8 -0
  204. package/src/modules/payment_gateways/api/cancel/route.ts +56 -0
  205. package/src/modules/payment_gateways/api/capture/route.ts +56 -0
  206. package/src/modules/payment_gateways/api/interceptors.ts +22 -0
  207. package/src/modules/payment_gateways/api/openapi.ts +1 -0
  208. package/src/modules/payment_gateways/api/refund/route.ts +57 -0
  209. package/src/modules/payment_gateways/api/sessions/route.ts +76 -0
  210. package/src/modules/payment_gateways/api/status/route.ts +69 -0
  211. package/src/modules/payment_gateways/api/transactions/[id]/route.ts +123 -0
  212. package/src/modules/payment_gateways/api/transactions/route.ts +120 -0
  213. package/src/modules/payment_gateways/api/webhook/[provider]/route.ts +161 -0
  214. package/src/modules/payment_gateways/backend/payment-gateways/page.meta.ts +19 -0
  215. package/src/modules/payment_gateways/backend/payment-gateways/page.tsx +660 -0
  216. package/src/modules/payment_gateways/data/enrichers.ts +8 -0
  217. package/src/modules/payment_gateways/data/entities.ts +106 -0
  218. package/src/modules/payment_gateways/data/validators.ts +67 -0
  219. package/src/modules/payment_gateways/di.ts +26 -0
  220. package/src/modules/payment_gateways/events.ts +17 -0
  221. package/src/modules/payment_gateways/i18n/de.json +77 -0
  222. package/src/modules/payment_gateways/i18n/en.json +77 -0
  223. package/src/modules/payment_gateways/i18n/en.ts +4 -0
  224. package/src/modules/payment_gateways/i18n/es.json +77 -0
  225. package/src/modules/payment_gateways/i18n/pl.json +77 -0
  226. package/src/modules/payment_gateways/i18n/pl.ts +4 -0
  227. package/src/modules/payment_gateways/index.ts +5 -0
  228. package/src/modules/payment_gateways/lib/gateway-service.ts +486 -0
  229. package/src/modules/payment_gateways/lib/queue.ts +19 -0
  230. package/src/modules/payment_gateways/lib/status-machine.ts +28 -0
  231. package/src/modules/payment_gateways/lib/webhook-processor.ts +133 -0
  232. package/src/modules/payment_gateways/lib/webhook-utils.ts +52 -0
  233. package/src/modules/payment_gateways/migrations/.snapshot-open-mercato.json +373 -0
  234. package/src/modules/payment_gateways/migrations/Migration20260305122155.ts +20 -0
  235. package/src/modules/payment_gateways/setup.ts +11 -0
  236. package/src/modules/payment_gateways/widgets/injection-table.ts +9 -0
  237. package/src/modules/payment_gateways/workers/status-poller.ts +58 -0
  238. package/src/modules/payment_gateways/workers/webhook-processor.ts +30 -0
  239. package/src/modules/sales/data/enrichers.ts +120 -0
  240. package/src/modules/sales/lib/makeSalesLineRoute.ts +3 -0
  241. package/src/modules/sales/widgets/injection/payment-gateway-config-field/widget.ts +28 -0
  242. package/src/modules/sales/widgets/injection/payment-gateway-status-column/widget.ts +22 -0
  243. package/src/modules/sales/widgets/injection-table.ts +12 -0
  244. package/src/modules/shipping_carriers/acl.ts +6 -0
  245. package/src/modules/shipping_carriers/api/cancel/route.ts +53 -0
  246. package/src/modules/shipping_carriers/api/interceptors.ts +19 -0
  247. package/src/modules/shipping_carriers/api/openapi.ts +1 -0
  248. package/src/modules/shipping_carriers/api/rates/route.ts +53 -0
  249. package/src/modules/shipping_carriers/api/shipments/route.ts +59 -0
  250. package/src/modules/shipping_carriers/api/tracking/route.ts +56 -0
  251. package/src/modules/shipping_carriers/api/webhook/[provider]/route.ts +134 -0
  252. package/src/modules/shipping_carriers/data/enrichers.ts +89 -0
  253. package/src/modules/shipping_carriers/data/entities.ts +60 -0
  254. package/src/modules/shipping_carriers/data/validators.ts +48 -0
  255. package/src/modules/shipping_carriers/di.ts +20 -0
  256. package/src/modules/shipping_carriers/events.ts +16 -0
  257. package/src/modules/shipping_carriers/i18n/de.json +7 -0
  258. package/src/modules/shipping_carriers/i18n/en.json +7 -0
  259. package/src/modules/shipping_carriers/i18n/en.ts +7 -0
  260. package/src/modules/shipping_carriers/i18n/es.json +7 -0
  261. package/src/modules/shipping_carriers/i18n/pl.json +7 -0
  262. package/src/modules/shipping_carriers/i18n/pl.ts +7 -0
  263. package/src/modules/shipping_carriers/index.ts +5 -0
  264. package/src/modules/shipping_carriers/lib/adapter-registry.ts +33 -0
  265. package/src/modules/shipping_carriers/lib/adapter.ts +93 -0
  266. package/src/modules/shipping_carriers/lib/queue.ts +19 -0
  267. package/src/modules/shipping_carriers/lib/shipping-service.ts +204 -0
  268. package/src/modules/shipping_carriers/lib/status-sync.ts +38 -0
  269. package/src/modules/shipping_carriers/migrations/Migration20260305170000.ts +14 -0
  270. package/src/modules/shipping_carriers/setup.ts +11 -0
  271. package/src/modules/shipping_carriers/widgets/injection/create-shipment-button/widget.ts +24 -0
  272. package/src/modules/shipping_carriers/widgets/injection/tracking-column/widget.ts +22 -0
  273. package/src/modules/shipping_carriers/widgets/injection/tracking-status-badge/widget.tsx +44 -0
  274. package/src/modules/shipping_carriers/widgets/injection-table.ts +22 -0
  275. package/src/modules/shipping_carriers/workers/status-poller.ts +33 -0
  276. package/src/modules/shipping_carriers/workers/webhook-processor.ts +79 -0
  277. package/src/modules/translations/api/get/locales.ts +1 -0
  278. package/src/modules/translations/api/put/locales.ts +1 -0
@@ -0,0 +1,15 @@
1
+ import { asFunction, asValue } from "awilix";
2
+ import { CarrierShipment } from "./data/entities.js";
3
+ import { createShippingCarrierService } from "./lib/shipping-service.js";
4
+ function register(container) {
5
+ container.register({
6
+ shippingCarrierService: asFunction(
7
+ ({ em, integrationCredentialsService }) => createShippingCarrierService({ em, integrationCredentialsService })
8
+ ).scoped().proxy(),
9
+ CarrierShipment: asValue(CarrierShipment)
10
+ });
11
+ }
12
+ export {
13
+ register
14
+ };
15
+ //# sourceMappingURL=di.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/modules/shipping_carriers/di.ts"],
4
+ "sourcesContent": ["import { asFunction, asValue } from 'awilix'\nimport type { EntityManager } from '@mikro-orm/postgresql'\nimport type { AppContainer } from '@open-mercato/shared/lib/di/container'\nimport type { CredentialsService } from '../integrations/lib/credentials-service'\nimport { CarrierShipment } from './data/entities'\nimport { createShippingCarrierService } from './lib/shipping-service'\n\ntype Cradle = {\n em: EntityManager\n integrationCredentialsService: CredentialsService\n}\n\nexport function register(container: AppContainer) {\n container.register({\n shippingCarrierService: asFunction(({ em, integrationCredentialsService }: Cradle) =>\n createShippingCarrierService({ em, integrationCredentialsService }),\n ).scoped().proxy(),\n CarrierShipment: asValue(CarrierShipment),\n })\n}\n"],
5
+ "mappings": "AAAA,SAAS,YAAY,eAAe;AAIpC,SAAS,uBAAuB;AAChC,SAAS,oCAAoC;AAOtC,SAAS,SAAS,WAAyB;AAChD,YAAU,SAAS;AAAA,IACjB,wBAAwB;AAAA,MAAW,CAAC,EAAE,IAAI,8BAA8B,MACtE,6BAA6B,EAAE,IAAI,8BAA8B,CAAC;AAAA,IACpE,EAAE,OAAO,EAAE,MAAM;AAAA,IACjB,iBAAiB,QAAQ,eAAe;AAAA,EAC1C,CAAC;AACH;",
6
+ "names": []
7
+ }
@@ -0,0 +1,19 @@
1
+ import { createModuleEvents } from "@open-mercato/shared/modules/events";
2
+ const events = [
3
+ { id: "shipping_carriers.shipment.created", label: "Shipment Created", category: "lifecycle", entity: "shipment" },
4
+ { id: "shipping_carriers.shipment.status_changed", label: "Shipment Status Changed", category: "lifecycle", entity: "shipment" },
5
+ { id: "shipping_carriers.shipment.delivered", label: "Shipment Delivered", category: "lifecycle", entity: "shipment" },
6
+ { id: "shipping_carriers.shipment.returned", label: "Shipment Returned", category: "lifecycle", entity: "shipment" },
7
+ { id: "shipping_carriers.shipment.cancelled", label: "Shipment Cancelled", category: "lifecycle", entity: "shipment" },
8
+ { id: "shipping_carriers.webhook.received", label: "Shipping Webhook Received", category: "system", excludeFromTriggers: true },
9
+ { id: "shipping_carriers.webhook.failed", label: "Shipping Webhook Failed", category: "system", excludeFromTriggers: true }
10
+ ];
11
+ const eventsConfig = createModuleEvents({ moduleId: "shipping_carriers", events });
12
+ const emitShippingEvent = eventsConfig.emit;
13
+ var events_default = eventsConfig;
14
+ export {
15
+ events_default as default,
16
+ emitShippingEvent,
17
+ eventsConfig
18
+ };
19
+ //# sourceMappingURL=events.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/modules/shipping_carriers/events.ts"],
4
+ "sourcesContent": ["import { createModuleEvents } from '@open-mercato/shared/modules/events'\n\nconst events = [\n { id: 'shipping_carriers.shipment.created', label: 'Shipment Created', category: 'lifecycle', entity: 'shipment' },\n { id: 'shipping_carriers.shipment.status_changed', label: 'Shipment Status Changed', category: 'lifecycle', entity: 'shipment' },\n { id: 'shipping_carriers.shipment.delivered', label: 'Shipment Delivered', category: 'lifecycle', entity: 'shipment' },\n { id: 'shipping_carriers.shipment.returned', label: 'Shipment Returned', category: 'lifecycle', entity: 'shipment' },\n { id: 'shipping_carriers.shipment.cancelled', label: 'Shipment Cancelled', category: 'lifecycle', entity: 'shipment' },\n { id: 'shipping_carriers.webhook.received', label: 'Shipping Webhook Received', category: 'system', excludeFromTriggers: true },\n { id: 'shipping_carriers.webhook.failed', label: 'Shipping Webhook Failed', category: 'system', excludeFromTriggers: true },\n] as const\n\nexport const eventsConfig = createModuleEvents({ moduleId: 'shipping_carriers', events })\nexport const emitShippingEvent = eventsConfig.emit\nexport type ShippingEventId = typeof events[number]['id']\nexport default eventsConfig\n"],
5
+ "mappings": "AAAA,SAAS,0BAA0B;AAEnC,MAAM,SAAS;AAAA,EACb,EAAE,IAAI,sCAAsC,OAAO,oBAAoB,UAAU,aAAa,QAAQ,WAAW;AAAA,EACjH,EAAE,IAAI,6CAA6C,OAAO,2BAA2B,UAAU,aAAa,QAAQ,WAAW;AAAA,EAC/H,EAAE,IAAI,wCAAwC,OAAO,sBAAsB,UAAU,aAAa,QAAQ,WAAW;AAAA,EACrH,EAAE,IAAI,uCAAuC,OAAO,qBAAqB,UAAU,aAAa,QAAQ,WAAW;AAAA,EACnH,EAAE,IAAI,wCAAwC,OAAO,sBAAsB,UAAU,aAAa,QAAQ,WAAW;AAAA,EACrH,EAAE,IAAI,sCAAsC,OAAO,6BAA6B,UAAU,UAAU,qBAAqB,KAAK;AAAA,EAC9H,EAAE,IAAI,oCAAoC,OAAO,2BAA2B,UAAU,UAAU,qBAAqB,KAAK;AAC5H;AAEO,MAAM,eAAe,mBAAmB,EAAE,UAAU,qBAAqB,OAAO,CAAC;AACjF,MAAM,oBAAoB,aAAa;AAE9C,IAAO,iBAAQ;",
6
+ "names": []
7
+ }
@@ -0,0 +1,11 @@
1
+ var en_default = {
2
+ "shipping_carriers.feature.view": "View shipping carrier shipments",
3
+ "shipping_carriers.feature.manage": "Manage shipping carrier operations",
4
+ "shipping_carriers.column.trackingStatus": "Tracking status",
5
+ "shipping_carriers.column.shippingStatus": "Shipping status",
6
+ "shipping_carriers.action.createShipment": "Create shipment"
7
+ };
8
+ export {
9
+ en_default as default
10
+ };
11
+ //# sourceMappingURL=en.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/modules/shipping_carriers/i18n/en.ts"],
4
+ "sourcesContent": ["export default {\n 'shipping_carriers.feature.view': 'View shipping carrier shipments',\n 'shipping_carriers.feature.manage': 'Manage shipping carrier operations',\n 'shipping_carriers.column.trackingStatus': 'Tracking status',\n 'shipping_carriers.column.shippingStatus': 'Shipping status',\n 'shipping_carriers.action.createShipment': 'Create shipment',\n}\n"],
5
+ "mappings": "AAAA,IAAO,aAAQ;AAAA,EACb,kCAAkC;AAAA,EAClC,oCAAoC;AAAA,EACpC,2CAA2C;AAAA,EAC3C,2CAA2C;AAAA,EAC3C,2CAA2C;AAC7C;",
6
+ "names": []
7
+ }
@@ -0,0 +1,11 @@
1
+ var pl_default = {
2
+ "shipping_carriers.feature.view": "Podgl\u0105d przesy\u0142ek przewo\u017Anik\xF3w",
3
+ "shipping_carriers.feature.manage": "Zarz\u0105dzanie operacjami przewo\u017Anik\xF3w",
4
+ "shipping_carriers.column.trackingStatus": "Status \u015Bledzenia",
5
+ "shipping_carriers.column.shippingStatus": "Status wysy\u0142ki",
6
+ "shipping_carriers.action.createShipment": "Utw\xF3rz przesy\u0142k\u0119"
7
+ };
8
+ export {
9
+ pl_default as default
10
+ };
11
+ //# sourceMappingURL=pl.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/modules/shipping_carriers/i18n/pl.ts"],
4
+ "sourcesContent": ["export default {\n 'shipping_carriers.feature.view': 'Podgl\u0105d przesy\u0142ek przewo\u017Anik\u00F3w',\n 'shipping_carriers.feature.manage': 'Zarz\u0105dzanie operacjami przewo\u017Anik\u00F3w',\n 'shipping_carriers.column.trackingStatus': 'Status \u015Bledzenia',\n 'shipping_carriers.column.shippingStatus': 'Status wysy\u0142ki',\n 'shipping_carriers.action.createShipment': 'Utw\u00F3rz przesy\u0142k\u0119',\n}\n"],
5
+ "mappings": "AAAA,IAAO,aAAQ;AAAA,EACb,kCAAkC;AAAA,EAClC,oCAAoC;AAAA,EACpC,2CAA2C;AAAA,EAC3C,2CAA2C;AAAA,EAC3C,2CAA2C;AAC7C;",
6
+ "names": []
7
+ }
@@ -0,0 +1,9 @@
1
+ const metadata = {
2
+ id: "shipping_carriers",
3
+ title: "Shipping Carriers",
4
+ description: "Shipping carrier adapter hub with rates, shipment creation, tracking, and webhooks."
5
+ };
6
+ export {
7
+ metadata
8
+ };
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/modules/shipping_carriers/index.ts"],
4
+ "sourcesContent": ["export const metadata = {\n id: 'shipping_carriers',\n title: 'Shipping Carriers',\n description: 'Shipping carrier adapter hub with rates, shipment creation, tracking, and webhooks.',\n}\n"],
5
+ "mappings": "AAAO,MAAM,WAAW;AAAA,EACtB,IAAI;AAAA,EACJ,OAAO;AAAA,EACP,aAAa;AACf;",
6
+ "names": []
7
+ }
@@ -0,0 +1,29 @@
1
+ const SHIPPING_ADAPTER_REGISTRY_KEY = Symbol.for("@open-mercato/shipping-carriers/adapter-registry");
2
+ function getAdapterRegistry() {
3
+ const globalScope = globalThis;
4
+ if (!globalScope[SHIPPING_ADAPTER_REGISTRY_KEY]) {
5
+ globalScope[SHIPPING_ADAPTER_REGISTRY_KEY] = /* @__PURE__ */ new Map();
6
+ }
7
+ return globalScope[SHIPPING_ADAPTER_REGISTRY_KEY];
8
+ }
9
+ function registerShippingAdapter(adapter) {
10
+ const adapterRegistry = getAdapterRegistry();
11
+ adapterRegistry.set(adapter.providerKey, adapter);
12
+ return () => adapterRegistry.delete(adapter.providerKey);
13
+ }
14
+ function getShippingAdapter(providerKey) {
15
+ return getAdapterRegistry().get(providerKey);
16
+ }
17
+ function listShippingAdapters() {
18
+ return Array.from(getAdapterRegistry().values());
19
+ }
20
+ function clearShippingAdapters() {
21
+ getAdapterRegistry().clear();
22
+ }
23
+ export {
24
+ clearShippingAdapters,
25
+ getShippingAdapter,
26
+ listShippingAdapters,
27
+ registerShippingAdapter
28
+ };
29
+ //# sourceMappingURL=adapter-registry.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/modules/shipping_carriers/lib/adapter-registry.ts"],
4
+ "sourcesContent": ["import type { ShippingAdapter } from './adapter'\n\nconst SHIPPING_ADAPTER_REGISTRY_KEY = Symbol.for('@open-mercato/shipping-carriers/adapter-registry')\n\ntype GlobalWithShippingRegistry = typeof globalThis & {\n [SHIPPING_ADAPTER_REGISTRY_KEY]?: Map<string, ShippingAdapter>\n}\n\nfunction getAdapterRegistry(): Map<string, ShippingAdapter> {\n const globalScope = globalThis as GlobalWithShippingRegistry\n if (!globalScope[SHIPPING_ADAPTER_REGISTRY_KEY]) {\n globalScope[SHIPPING_ADAPTER_REGISTRY_KEY] = new Map<string, ShippingAdapter>()\n }\n return globalScope[SHIPPING_ADAPTER_REGISTRY_KEY]\n}\n\nexport function registerShippingAdapter(adapter: ShippingAdapter): () => void {\n const adapterRegistry = getAdapterRegistry()\n adapterRegistry.set(adapter.providerKey, adapter)\n return () => adapterRegistry.delete(adapter.providerKey)\n}\n\nexport function getShippingAdapter(providerKey: string): ShippingAdapter | undefined {\n return getAdapterRegistry().get(providerKey)\n}\n\nexport function listShippingAdapters(): ShippingAdapter[] {\n return Array.from(getAdapterRegistry().values())\n}\n\nexport function clearShippingAdapters(): void {\n getAdapterRegistry().clear()\n}\n"],
5
+ "mappings": "AAEA,MAAM,gCAAgC,OAAO,IAAI,kDAAkD;AAMnG,SAAS,qBAAmD;AAC1D,QAAM,cAAc;AACpB,MAAI,CAAC,YAAY,6BAA6B,GAAG;AAC/C,gBAAY,6BAA6B,IAAI,oBAAI,IAA6B;AAAA,EAChF;AACA,SAAO,YAAY,6BAA6B;AAClD;AAEO,SAAS,wBAAwB,SAAsC;AAC5E,QAAM,kBAAkB,mBAAmB;AAC3C,kBAAgB,IAAI,QAAQ,aAAa,OAAO;AAChD,SAAO,MAAM,gBAAgB,OAAO,QAAQ,WAAW;AACzD;AAEO,SAAS,mBAAmB,aAAkD;AACnF,SAAO,mBAAmB,EAAE,IAAI,WAAW;AAC7C;AAEO,SAAS,uBAA0C;AACxD,SAAO,MAAM,KAAK,mBAAmB,EAAE,OAAO,CAAC;AACjD;AAEO,SAAS,wBAA8B;AAC5C,qBAAmB,EAAE,MAAM;AAC7B;",
6
+ "names": []
7
+ }
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=adapter.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [],
5
+ "mappings": "",
6
+ "names": []
7
+ }
@@ -0,0 +1,17 @@
1
+ import { createQueue } from "@open-mercato/queue";
2
+ import { getRedisUrl } from "@open-mercato/shared/lib/redis/connection";
3
+ const queues = /* @__PURE__ */ new Map();
4
+ function getShippingCarrierQueue(queueName) {
5
+ const existing = queues.get(queueName);
6
+ if (existing) return existing;
7
+ const created = process.env.QUEUE_STRATEGY === "async" ? createQueue(queueName, "async", {
8
+ connection: { url: getRedisUrl("QUEUE") },
9
+ concurrency: Math.max(1, Number.parseInt(process.env.SHIPPING_CARRIER_QUEUE_CONCURRENCY ?? "5", 10) || 5)
10
+ }) : createQueue(queueName, "local");
11
+ queues.set(queueName, created);
12
+ return created;
13
+ }
14
+ export {
15
+ getShippingCarrierQueue
16
+ };
17
+ //# sourceMappingURL=queue.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/modules/shipping_carriers/lib/queue.ts"],
4
+ "sourcesContent": ["import { createQueue, type Queue } from '@open-mercato/queue'\nimport { getRedisUrl } from '@open-mercato/shared/lib/redis/connection'\n\nconst queues = new Map<string, Queue<Record<string, unknown>>>()\n\nexport function getShippingCarrierQueue(queueName: string): Queue<Record<string, unknown>> {\n const existing = queues.get(queueName)\n if (existing) return existing\n\n const created = process.env.QUEUE_STRATEGY === 'async'\n ? createQueue<Record<string, unknown>>(queueName, 'async', {\n connection: { url: getRedisUrl('QUEUE') },\n concurrency: Math.max(1, Number.parseInt(process.env.SHIPPING_CARRIER_QUEUE_CONCURRENCY ?? '5', 10) || 5),\n })\n : createQueue<Record<string, unknown>>(queueName, 'local')\n\n queues.set(queueName, created)\n return created\n}\n"],
5
+ "mappings": "AAAA,SAAS,mBAA+B;AACxC,SAAS,mBAAmB;AAE5B,MAAM,SAAS,oBAAI,IAA4C;AAExD,SAAS,wBAAwB,WAAmD;AACzF,QAAM,WAAW,OAAO,IAAI,SAAS;AACrC,MAAI,SAAU,QAAO;AAErB,QAAM,UAAU,QAAQ,IAAI,mBAAmB,UAC3C,YAAqC,WAAW,SAAS;AAAA,IACzD,YAAY,EAAE,KAAK,YAAY,OAAO,EAAE;AAAA,IACxC,aAAa,KAAK,IAAI,GAAG,OAAO,SAAS,QAAQ,IAAI,sCAAsC,KAAK,EAAE,KAAK,CAAC;AAAA,EAC1G,CAAC,IACC,YAAqC,WAAW,OAAO;AAE3D,SAAO,IAAI,WAAW,OAAO;AAC7B,SAAO;AACT;",
6
+ "names": []
7
+ }
@@ -0,0 +1,155 @@
1
+ import { findOneWithDecryption } from "@open-mercato/shared/lib/encryption/find";
2
+ import { CarrierShipment } from "../data/entities.js";
3
+ import { emitShippingEvent } from "../events.js";
4
+ import { getShippingAdapter } from "./adapter-registry.js";
5
+ function createShippingCarrierService(deps) {
6
+ const { em, integrationCredentialsService } = deps;
7
+ async function findShipmentOrThrow(shipmentId, scope) {
8
+ const shipment = await findOneWithDecryption(
9
+ em,
10
+ CarrierShipment,
11
+ {
12
+ id: shipmentId,
13
+ organizationId: scope.organizationId,
14
+ tenantId: scope.tenantId,
15
+ deletedAt: null
16
+ },
17
+ void 0,
18
+ scope
19
+ );
20
+ if (!shipment) {
21
+ throw new Error("Shipment not found");
22
+ }
23
+ return shipment;
24
+ }
25
+ async function resolveAdapter(providerKey, scope) {
26
+ const adapter = getShippingAdapter(providerKey);
27
+ if (!adapter) throw new Error(`No shipping adapter registered for provider: ${providerKey}`);
28
+ const credentials = await integrationCredentialsService.resolve(`carrier_${providerKey}`, scope) ?? {};
29
+ return { adapter, credentials };
30
+ }
31
+ return {
32
+ async calculateRates(input) {
33
+ const { adapter, credentials } = await resolveAdapter(input.providerKey, {
34
+ organizationId: input.organizationId,
35
+ tenantId: input.tenantId
36
+ });
37
+ return adapter.calculateRates({
38
+ origin: input.origin,
39
+ destination: input.destination,
40
+ packages: input.packages,
41
+ credentials
42
+ });
43
+ },
44
+ async createShipment(input) {
45
+ const { adapter, credentials } = await resolveAdapter(input.providerKey, {
46
+ organizationId: input.organizationId,
47
+ tenantId: input.tenantId
48
+ });
49
+ const created = await adapter.createShipment({
50
+ orderId: input.orderId,
51
+ origin: input.origin,
52
+ destination: input.destination,
53
+ packages: input.packages,
54
+ serviceCode: input.serviceCode,
55
+ credentials,
56
+ labelFormat: input.labelFormat
57
+ });
58
+ const shipment = em.create(CarrierShipment, {
59
+ orderId: input.orderId,
60
+ providerKey: input.providerKey,
61
+ carrierShipmentId: created.shipmentId,
62
+ trackingNumber: created.trackingNumber,
63
+ unifiedStatus: "label_created",
64
+ labelUrl: created.labelUrl ?? null,
65
+ labelData: created.labelData ?? null,
66
+ organizationId: input.organizationId,
67
+ tenantId: input.tenantId
68
+ });
69
+ await em.persistAndFlush(shipment);
70
+ await emitShippingEvent("shipping_carriers.shipment.created", {
71
+ shipmentId: shipment.id,
72
+ orderId: input.orderId,
73
+ providerKey: input.providerKey,
74
+ trackingNumber: created.trackingNumber,
75
+ organizationId: input.organizationId,
76
+ tenantId: input.tenantId
77
+ });
78
+ return shipment;
79
+ },
80
+ async getTracking(input) {
81
+ const { adapter, credentials } = await resolveAdapter(input.providerKey, {
82
+ organizationId: input.organizationId,
83
+ tenantId: input.tenantId
84
+ });
85
+ const shipment = input.shipmentId ? await findOneWithDecryption(
86
+ em,
87
+ CarrierShipment,
88
+ {
89
+ id: input.shipmentId,
90
+ organizationId: input.organizationId,
91
+ tenantId: input.tenantId,
92
+ deletedAt: null
93
+ },
94
+ void 0,
95
+ {
96
+ organizationId: input.organizationId,
97
+ tenantId: input.tenantId
98
+ }
99
+ ) : null;
100
+ const tracking = await adapter.getTracking({
101
+ shipmentId: shipment?.carrierShipmentId ?? input.shipmentId,
102
+ trackingNumber: input.trackingNumber,
103
+ credentials
104
+ });
105
+ if (shipment) {
106
+ shipment.unifiedStatus = tracking.status;
107
+ shipment.trackingEvents = tracking.events;
108
+ shipment.lastPolledAt = /* @__PURE__ */ new Date();
109
+ await em.flush();
110
+ }
111
+ return tracking;
112
+ },
113
+ async cancelShipment(input) {
114
+ const scope = { organizationId: input.organizationId, tenantId: input.tenantId };
115
+ const shipment = await findShipmentOrThrow(input.shipmentId, scope);
116
+ const { adapter, credentials } = await resolveAdapter(input.providerKey, {
117
+ organizationId: input.organizationId,
118
+ tenantId: input.tenantId
119
+ });
120
+ const result = await adapter.cancelShipment({
121
+ shipmentId: shipment.carrierShipmentId,
122
+ reason: input.reason,
123
+ credentials
124
+ });
125
+ shipment.unifiedStatus = result.status;
126
+ await em.flush();
127
+ await emitShippingEvent("shipping_carriers.shipment.cancelled", {
128
+ shipmentId: shipment.id,
129
+ providerKey: input.providerKey,
130
+ organizationId: input.organizationId,
131
+ tenantId: input.tenantId
132
+ });
133
+ return result;
134
+ },
135
+ async findShipmentByCarrierId(providerKey, carrierShipmentId, scope) {
136
+ return findOneWithDecryption(
137
+ em,
138
+ CarrierShipment,
139
+ {
140
+ providerKey,
141
+ carrierShipmentId,
142
+ organizationId: scope.organizationId,
143
+ tenantId: scope.tenantId,
144
+ deletedAt: null
145
+ },
146
+ void 0,
147
+ scope
148
+ );
149
+ }
150
+ };
151
+ }
152
+ export {
153
+ createShippingCarrierService
154
+ };
155
+ //# sourceMappingURL=shipping-service.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/modules/shipping_carriers/lib/shipping-service.ts"],
4
+ "sourcesContent": ["import type { EntityManager } from '@mikro-orm/postgresql'\nimport { findOneWithDecryption } from '@open-mercato/shared/lib/encryption/find'\nimport type { CredentialsService } from '../../integrations/lib/credentials-service'\nimport { CarrierShipment } from '../data/entities'\nimport { emitShippingEvent } from '../events'\nimport { getShippingAdapter } from './adapter-registry'\n\nexport function createShippingCarrierService(deps: {\n em: EntityManager\n integrationCredentialsService: CredentialsService\n}) {\n const { em, integrationCredentialsService } = deps\n\n async function findShipmentOrThrow(\n shipmentId: string,\n scope: { organizationId: string; tenantId: string },\n ): Promise<CarrierShipment> {\n const shipment = await findOneWithDecryption(\n em,\n CarrierShipment,\n {\n id: shipmentId,\n organizationId: scope.organizationId,\n tenantId: scope.tenantId,\n deletedAt: null,\n },\n undefined,\n scope,\n )\n if (!shipment) {\n throw new Error('Shipment not found')\n }\n return shipment\n }\n\n async function resolveAdapter(providerKey: string, scope: { organizationId: string; tenantId: string }) {\n const adapter = getShippingAdapter(providerKey)\n if (!adapter) throw new Error(`No shipping adapter registered for provider: ${providerKey}`)\n const credentials = await integrationCredentialsService.resolve(`carrier_${providerKey}`, scope) ?? {}\n return { adapter, credentials }\n }\n\n return {\n async calculateRates(input: {\n providerKey: string\n origin: { countryCode: string; postalCode: string; city: string; line1: string; line2?: string }\n destination: { countryCode: string; postalCode: string; city: string; line1: string; line2?: string }\n packages: Array<{ weightKg: number; lengthCm: number; widthCm: number; heightCm: number }>\n organizationId: string\n tenantId: string\n }) {\n const { adapter, credentials } = await resolveAdapter(input.providerKey, {\n organizationId: input.organizationId,\n tenantId: input.tenantId,\n })\n return adapter.calculateRates({\n origin: input.origin,\n destination: input.destination,\n packages: input.packages,\n credentials,\n })\n },\n\n async createShipment(input: {\n providerKey: string\n orderId: string\n origin: { countryCode: string; postalCode: string; city: string; line1: string; line2?: string }\n destination: { countryCode: string; postalCode: string; city: string; line1: string; line2?: string }\n packages: Array<{ weightKg: number; lengthCm: number; widthCm: number; heightCm: number }>\n serviceCode: string\n labelFormat?: 'pdf' | 'zpl' | 'png'\n organizationId: string\n tenantId: string\n }) {\n const { adapter, credentials } = await resolveAdapter(input.providerKey, {\n organizationId: input.organizationId,\n tenantId: input.tenantId,\n })\n const created = await adapter.createShipment({\n orderId: input.orderId,\n origin: input.origin,\n destination: input.destination,\n packages: input.packages,\n serviceCode: input.serviceCode,\n credentials,\n labelFormat: input.labelFormat,\n })\n const shipment = em.create(CarrierShipment, {\n orderId: input.orderId,\n providerKey: input.providerKey,\n carrierShipmentId: created.shipmentId,\n trackingNumber: created.trackingNumber,\n unifiedStatus: 'label_created',\n labelUrl: created.labelUrl ?? null,\n labelData: created.labelData ?? null,\n organizationId: input.organizationId,\n tenantId: input.tenantId,\n })\n await em.persistAndFlush(shipment)\n await emitShippingEvent('shipping_carriers.shipment.created', {\n shipmentId: shipment.id,\n orderId: input.orderId,\n providerKey: input.providerKey,\n trackingNumber: created.trackingNumber,\n organizationId: input.organizationId,\n tenantId: input.tenantId,\n })\n return shipment\n },\n\n async getTracking(input: {\n providerKey: string\n shipmentId?: string\n trackingNumber?: string\n organizationId: string\n tenantId: string\n }) {\n const { adapter, credentials } = await resolveAdapter(input.providerKey, {\n organizationId: input.organizationId,\n tenantId: input.tenantId,\n })\n const shipment = input.shipmentId\n ? await findOneWithDecryption(\n em,\n CarrierShipment,\n {\n id: input.shipmentId,\n organizationId: input.organizationId,\n tenantId: input.tenantId,\n deletedAt: null,\n },\n undefined,\n {\n organizationId: input.organizationId,\n tenantId: input.tenantId,\n },\n )\n : null\n const tracking = await adapter.getTracking({\n shipmentId: shipment?.carrierShipmentId ?? input.shipmentId,\n trackingNumber: input.trackingNumber,\n credentials,\n })\n if (shipment) {\n shipment.unifiedStatus = tracking.status\n shipment.trackingEvents = tracking.events\n shipment.lastPolledAt = new Date()\n await em.flush()\n }\n return tracking\n },\n\n async cancelShipment(input: {\n providerKey: string\n shipmentId: string\n reason?: string\n organizationId: string\n tenantId: string\n }) {\n const scope = { organizationId: input.organizationId, tenantId: input.tenantId }\n const shipment = await findShipmentOrThrow(input.shipmentId, scope)\n const { adapter, credentials } = await resolveAdapter(input.providerKey, {\n organizationId: input.organizationId,\n tenantId: input.tenantId,\n })\n const result = await adapter.cancelShipment({\n shipmentId: shipment.carrierShipmentId,\n reason: input.reason,\n credentials,\n })\n shipment.unifiedStatus = result.status\n await em.flush()\n await emitShippingEvent('shipping_carriers.shipment.cancelled', {\n shipmentId: shipment.id,\n providerKey: input.providerKey,\n organizationId: input.organizationId,\n tenantId: input.tenantId,\n })\n return result\n },\n\n async findShipmentByCarrierId(\n providerKey: string,\n carrierShipmentId: string,\n scope: { organizationId: string; tenantId: string },\n ) {\n return findOneWithDecryption(\n em,\n CarrierShipment,\n {\n providerKey,\n carrierShipmentId,\n organizationId: scope.organizationId,\n tenantId: scope.tenantId,\n deletedAt: null,\n },\n undefined,\n scope,\n )\n },\n }\n}\n\nexport type ShippingCarrierService = ReturnType<typeof createShippingCarrierService>\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -0,0 +1,37 @@
1
+ const VALID_SHIPPING_TRANSITIONS = {
2
+ label_created: ["picked_up", "in_transit", "cancelled"],
3
+ picked_up: ["in_transit", "cancelled"],
4
+ in_transit: ["out_for_delivery", "delivered", "returned", "failed_delivery"],
5
+ out_for_delivery: ["delivered", "returned", "failed_delivery"],
6
+ failed_delivery: ["in_transit", "out_for_delivery", "delivered", "returned", "cancelled"]
7
+ };
8
+ const TERMINAL_SHIPPING_STATUSES = /* @__PURE__ */ new Set([
9
+ "delivered",
10
+ "returned",
11
+ "cancelled"
12
+ ]);
13
+ function isValidShippingTransition(from, to) {
14
+ if (from === to) return false;
15
+ const allowed = VALID_SHIPPING_TRANSITIONS[from];
16
+ if (!allowed) return false;
17
+ return allowed.includes(to);
18
+ }
19
+ function syncShipmentStatus(shipment, newStatus) {
20
+ const currentStatus = shipment.unifiedStatus;
21
+ if (!isValidShippingTransition(currentStatus, newStatus)) return false;
22
+ shipment.unifiedStatus = newStatus;
23
+ return true;
24
+ }
25
+ function getTerminalShippingEvent(status) {
26
+ if (status === "delivered") return "shipping_carriers.shipment.delivered";
27
+ if (status === "returned") return "shipping_carriers.shipment.returned";
28
+ if (status === "cancelled") return "shipping_carriers.shipment.cancelled";
29
+ return null;
30
+ }
31
+ export {
32
+ TERMINAL_SHIPPING_STATUSES,
33
+ getTerminalShippingEvent,
34
+ isValidShippingTransition,
35
+ syncShipmentStatus
36
+ };
37
+ //# sourceMappingURL=status-sync.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/modules/shipping_carriers/lib/status-sync.ts"],
4
+ "sourcesContent": ["import type { UnifiedShipmentStatus } from './adapter'\nimport type { CarrierShipment } from '../data/entities'\nimport type { ShippingEventId } from '../events'\n\nconst VALID_SHIPPING_TRANSITIONS: Record<string, UnifiedShipmentStatus[]> = {\n label_created: ['picked_up', 'in_transit', 'cancelled'],\n picked_up: ['in_transit', 'cancelled'],\n in_transit: ['out_for_delivery', 'delivered', 'returned', 'failed_delivery'],\n out_for_delivery: ['delivered', 'returned', 'failed_delivery'],\n failed_delivery: ['in_transit', 'out_for_delivery', 'delivered', 'returned', 'cancelled'],\n}\n\nexport const TERMINAL_SHIPPING_STATUSES: Set<UnifiedShipmentStatus> = new Set([\n 'delivered',\n 'returned',\n 'cancelled',\n])\n\nexport function isValidShippingTransition(from: UnifiedShipmentStatus, to: UnifiedShipmentStatus): boolean {\n if (from === to) return false\n const allowed = VALID_SHIPPING_TRANSITIONS[from]\n if (!allowed) return false\n return allowed.includes(to)\n}\n\nexport function syncShipmentStatus(shipment: CarrierShipment, newStatus: UnifiedShipmentStatus): boolean {\n const currentStatus = shipment.unifiedStatus as UnifiedShipmentStatus\n if (!isValidShippingTransition(currentStatus, newStatus)) return false\n shipment.unifiedStatus = newStatus\n return true\n}\n\nexport function getTerminalShippingEvent(status: UnifiedShipmentStatus): ShippingEventId | null {\n if (status === 'delivered') return 'shipping_carriers.shipment.delivered'\n if (status === 'returned') return 'shipping_carriers.shipment.returned'\n if (status === 'cancelled') return 'shipping_carriers.shipment.cancelled'\n return null\n}\n"],
5
+ "mappings": "AAIA,MAAM,6BAAsE;AAAA,EAC1E,eAAe,CAAC,aAAa,cAAc,WAAW;AAAA,EACtD,WAAW,CAAC,cAAc,WAAW;AAAA,EACrC,YAAY,CAAC,oBAAoB,aAAa,YAAY,iBAAiB;AAAA,EAC3E,kBAAkB,CAAC,aAAa,YAAY,iBAAiB;AAAA,EAC7D,iBAAiB,CAAC,cAAc,oBAAoB,aAAa,YAAY,WAAW;AAC1F;AAEO,MAAM,6BAAyD,oBAAI,IAAI;AAAA,EAC5E;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAEM,SAAS,0BAA0B,MAA6B,IAAoC;AACzG,MAAI,SAAS,GAAI,QAAO;AACxB,QAAM,UAAU,2BAA2B,IAAI;AAC/C,MAAI,CAAC,QAAS,QAAO;AACrB,SAAO,QAAQ,SAAS,EAAE;AAC5B;AAEO,SAAS,mBAAmB,UAA2B,WAA2C;AACvG,QAAM,gBAAgB,SAAS;AAC/B,MAAI,CAAC,0BAA0B,eAAe,SAAS,EAAG,QAAO;AACjE,WAAS,gBAAgB;AACzB,SAAO;AACT;AAEO,SAAS,yBAAyB,QAAuD;AAC9F,MAAI,WAAW,YAAa,QAAO;AACnC,MAAI,WAAW,WAAY,QAAO;AAClC,MAAI,WAAW,YAAa,QAAO;AACnC,SAAO;AACT;",
6
+ "names": []
7
+ }
@@ -0,0 +1,16 @@
1
+ import { Migration } from "@mikro-orm/migrations";
2
+ class Migration20260305170000 extends Migration {
3
+ async up() {
4
+ this.addSql(`create table "carrier_shipments" ("id" uuid not null default gen_random_uuid(), "order_id" uuid not null, "provider_key" text not null, "carrier_shipment_id" text not null, "tracking_number" text not null, "unified_status" text not null default 'label_created', "carrier_status" text null, "label_url" text null, "label_data" text null, "tracking_events" jsonb null, "organization_id" uuid not null, "tenant_id" uuid not null, "last_webhook_at" timestamptz null, "last_polled_at" timestamptz null, "created_at" timestamptz not null, "updated_at" timestamptz not null, "deleted_at" timestamptz null, constraint "carrier_shipments_pkey" primary key ("id"));`);
5
+ this.addSql(`create index "carrier_shipments_organization_id_tenant_id_unif_b5ab4_index" on "carrier_shipments" ("organization_id", "tenant_id", "unified_status");`);
6
+ this.addSql(`create index "carrier_shipments_provider_key_carrier_shipment_i_f9f17_index" on "carrier_shipments" ("provider_key", "carrier_shipment_id", "organization_id");`);
7
+ this.addSql(`create index "carrier_shipments_order_id_organization_id_tenant_id_index" on "carrier_shipments" ("order_id", "organization_id", "tenant_id");`);
8
+ }
9
+ async down() {
10
+ this.addSql(`drop table if exists "carrier_shipments";`);
11
+ }
12
+ }
13
+ export {
14
+ Migration20260305170000
15
+ };
16
+ //# sourceMappingURL=Migration20260305170000.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/modules/shipping_carriers/migrations/Migration20260305170000.ts"],
4
+ "sourcesContent": ["import { Migration } from '@mikro-orm/migrations'\n\nexport class Migration20260305170000 extends Migration {\n override async up(): Promise<void> {\n this.addSql(`create table \"carrier_shipments\" (\"id\" uuid not null default gen_random_uuid(), \"order_id\" uuid not null, \"provider_key\" text not null, \"carrier_shipment_id\" text not null, \"tracking_number\" text not null, \"unified_status\" text not null default 'label_created', \"carrier_status\" text null, \"label_url\" text null, \"label_data\" text null, \"tracking_events\" jsonb null, \"organization_id\" uuid not null, \"tenant_id\" uuid not null, \"last_webhook_at\" timestamptz null, \"last_polled_at\" timestamptz null, \"created_at\" timestamptz not null, \"updated_at\" timestamptz not null, \"deleted_at\" timestamptz null, constraint \"carrier_shipments_pkey\" primary key (\"id\"));`)\n this.addSql(`create index \"carrier_shipments_organization_id_tenant_id_unif_b5ab4_index\" on \"carrier_shipments\" (\"organization_id\", \"tenant_id\", \"unified_status\");`)\n this.addSql(`create index \"carrier_shipments_provider_key_carrier_shipment_i_f9f17_index\" on \"carrier_shipments\" (\"provider_key\", \"carrier_shipment_id\", \"organization_id\");`)\n this.addSql(`create index \"carrier_shipments_order_id_organization_id_tenant_id_index\" on \"carrier_shipments\" (\"order_id\", \"organization_id\", \"tenant_id\");`)\n }\n\n override async down(): Promise<void> {\n this.addSql(`drop table if exists \"carrier_shipments\";`)\n }\n}\n"],
5
+ "mappings": "AAAA,SAAS,iBAAiB;AAEnB,MAAM,gCAAgC,UAAU;AAAA,EACrD,MAAe,KAAoB;AACjC,SAAK,OAAO,ipBAAipB;AAC7pB,SAAK,OAAO,wJAAwJ;AACpK,SAAK,OAAO,iKAAiK;AAC7K,SAAK,OAAO,gJAAgJ;AAAA,EAC9J;AAAA,EAEA,MAAe,OAAsB;AACnC,SAAK,OAAO,2CAA2C;AAAA,EACzD;AACF;",
6
+ "names": []
7
+ }
@@ -0,0 +1,13 @@
1
+ const setup = {
2
+ defaultRoleFeatures: {
3
+ superadmin: ["shipping_carriers.view", "shipping_carriers.manage"],
4
+ admin: ["shipping_carriers.view", "shipping_carriers.manage"],
5
+ employee: ["shipping_carriers.view"]
6
+ }
7
+ };
8
+ var setup_default = setup;
9
+ export {
10
+ setup_default as default,
11
+ setup
12
+ };
13
+ //# sourceMappingURL=setup.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/modules/shipping_carriers/setup.ts"],
4
+ "sourcesContent": ["import type { ModuleSetupConfig } from '@open-mercato/shared/modules/setup'\n\nexport const setup: ModuleSetupConfig = {\n defaultRoleFeatures: {\n superadmin: ['shipping_carriers.view', 'shipping_carriers.manage'],\n admin: ['shipping_carriers.view', 'shipping_carriers.manage'],\n employee: ['shipping_carriers.view'],\n },\n}\n\nexport default setup\n"],
5
+ "mappings": "AAEO,MAAM,QAA2B;AAAA,EACtC,qBAAqB;AAAA,IACnB,YAAY,CAAC,0BAA0B,0BAA0B;AAAA,IACjE,OAAO,CAAC,0BAA0B,0BAA0B;AAAA,IAC5D,UAAU,CAAC,wBAAwB;AAAA,EACrC;AACF;AAEA,IAAO,gBAAQ;",
6
+ "names": []
7
+ }
@@ -0,0 +1,25 @@
1
+ const widget = {
2
+ metadata: {
3
+ id: "shipping_carriers.injection.create-shipment-button",
4
+ priority: 30
5
+ },
6
+ rowActions: [
7
+ {
8
+ id: "create_shipment",
9
+ label: "shipping_carriers.action.createShipment",
10
+ icon: "Truck",
11
+ onSelect: (row, context) => {
12
+ const ctx = context;
13
+ const order = row;
14
+ if (ctx.navigate && order.id) {
15
+ ctx.navigate(`/backend/shipping-carriers/create?orderId=${order.id}`);
16
+ }
17
+ }
18
+ }
19
+ ]
20
+ };
21
+ var widget_default = widget;
22
+ export {
23
+ widget_default as default
24
+ };
25
+ //# sourceMappingURL=widget.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../src/modules/shipping_carriers/widgets/injection/create-shipment-button/widget.ts"],
4
+ "sourcesContent": ["import type { InjectionRowActionWidget } from '@open-mercato/shared/modules/widgets/injection'\n\nconst widget: InjectionRowActionWidget = {\n metadata: {\n id: 'shipping_carriers.injection.create-shipment-button',\n priority: 30,\n },\n rowActions: [\n {\n id: 'create_shipment',\n label: 'shipping_carriers.action.createShipment',\n icon: 'Truck',\n onSelect: (row: unknown, context: unknown) => {\n const ctx = context as { navigate?: (path: string) => void }\n const order = row as { id?: string }\n if (ctx.navigate && order.id) {\n ctx.navigate(`/backend/shipping-carriers/create?orderId=${order.id}`)\n }\n },\n },\n ],\n}\n\nexport default widget\n"],
5
+ "mappings": "AAEA,MAAM,SAAmC;AAAA,EACvC,UAAU;AAAA,IACR,IAAI;AAAA,IACJ,UAAU;AAAA,EACZ;AAAA,EACA,YAAY;AAAA,IACV;AAAA,MACE,IAAI;AAAA,MACJ,OAAO;AAAA,MACP,MAAM;AAAA,MACN,UAAU,CAAC,KAAc,YAAqB;AAC5C,cAAM,MAAM;AACZ,cAAM,QAAQ;AACd,YAAI,IAAI,YAAY,MAAM,IAAI;AAC5B,cAAI,SAAS,6CAA6C,MAAM,EAAE,EAAE;AAAA,QACtE;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEA,IAAO,iBAAQ;",
6
+ "names": []
7
+ }
@@ -0,0 +1,23 @@
1
+ const widget = {
2
+ metadata: {
3
+ id: "shipping_carriers.injection.tracking-column",
4
+ priority: 40
5
+ },
6
+ columns: [
7
+ {
8
+ id: "carrier_tracking_status",
9
+ header: "shipping_carriers.column.trackingStatus",
10
+ accessorKey: "_carrier.status",
11
+ sortable: false,
12
+ cell: ({ getValue }) => {
13
+ const value = getValue();
14
+ return typeof value === "string" && value.length > 0 ? value : "unknown";
15
+ }
16
+ }
17
+ ]
18
+ };
19
+ var widget_default = widget;
20
+ export {
21
+ widget_default as default
22
+ };
23
+ //# sourceMappingURL=widget.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../src/modules/shipping_carriers/widgets/injection/tracking-column/widget.ts"],
4
+ "sourcesContent": ["import type { InjectionColumnWidget } from '@open-mercato/shared/modules/widgets/injection'\n\nconst widget: InjectionColumnWidget = {\n metadata: {\n id: 'shipping_carriers.injection.tracking-column',\n priority: 40,\n },\n columns: [\n {\n id: 'carrier_tracking_status',\n header: 'shipping_carriers.column.trackingStatus',\n accessorKey: '_carrier.status',\n sortable: false,\n cell: ({ getValue }) => {\n const value = getValue()\n return typeof value === 'string' && value.length > 0 ? value : 'unknown'\n },\n },\n ],\n}\n\nexport default widget\n"],
5
+ "mappings": "AAEA,MAAM,SAAgC;AAAA,EACpC,UAAU;AAAA,IACR,IAAI;AAAA,IACJ,UAAU;AAAA,EACZ;AAAA,EACA,SAAS;AAAA,IACP;AAAA,MACE,IAAI;AAAA,MACJ,QAAQ;AAAA,MACR,aAAa;AAAA,MACb,UAAU;AAAA,MACV,MAAM,CAAC,EAAE,SAAS,MAAM;AACtB,cAAM,QAAQ,SAAS;AACvB,eAAO,OAAO,UAAU,YAAY,MAAM,SAAS,IAAI,QAAQ;AAAA,MACjE;AAAA,IACF;AAAA,EACF;AACF;AAEA,IAAO,iBAAQ;",
6
+ "names": []
7
+ }
@@ -0,0 +1,40 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ const SHIPPING_STATUS_COLORS = {
3
+ pending: "bg-gray-100 text-gray-700",
4
+ label_created: "bg-slate-100 text-slate-700",
5
+ picked_up: "bg-sky-100 text-sky-700",
6
+ in_transit: "bg-blue-100 text-blue-700",
7
+ out_for_delivery: "bg-indigo-100 text-indigo-700",
8
+ delivered: "bg-green-100 text-green-700",
9
+ returned: "bg-amber-100 text-amber-700",
10
+ cancelled: "bg-red-100 text-red-700",
11
+ failed_delivery: "bg-orange-100 text-orange-700"
12
+ };
13
+ function formatShippingStatusLabel(value) {
14
+ return value.replace(/_/g, " ");
15
+ }
16
+ const widget = {
17
+ metadata: {
18
+ id: "shipping_carriers.injection.tracking-status-badge",
19
+ priority: 45
20
+ },
21
+ columns: [
22
+ {
23
+ id: "carrier_status_badge",
24
+ header: "shipping_carriers.column.shippingStatus",
25
+ accessorKey: "_carrier.status",
26
+ sortable: false,
27
+ cell: ({ getValue }) => {
28
+ const value = getValue();
29
+ if (typeof value !== "string" || value.length === 0) return null;
30
+ const colors = SHIPPING_STATUS_COLORS[value] ?? "bg-gray-100 text-gray-700";
31
+ return /* @__PURE__ */ jsx("span", { className: `inline-flex items-center rounded-full px-2 py-0.5 text-xs font-medium ${colors}`, children: formatShippingStatusLabel(value) });
32
+ }
33
+ }
34
+ ]
35
+ };
36
+ var widget_default = widget;
37
+ export {
38
+ widget_default as default
39
+ };
40
+ //# sourceMappingURL=widget.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../src/modules/shipping_carriers/widgets/injection/tracking-status-badge/widget.tsx"],
4
+ "sourcesContent": ["import type { InjectionColumnWidget } from '@open-mercato/shared/modules/widgets/injection'\n\nconst SHIPPING_STATUS_COLORS: Record<string, string> = {\n pending: 'bg-gray-100 text-gray-700',\n label_created: 'bg-slate-100 text-slate-700',\n picked_up: 'bg-sky-100 text-sky-700',\n in_transit: 'bg-blue-100 text-blue-700',\n out_for_delivery: 'bg-indigo-100 text-indigo-700',\n delivered: 'bg-green-100 text-green-700',\n returned: 'bg-amber-100 text-amber-700',\n cancelled: 'bg-red-100 text-red-700',\n failed_delivery: 'bg-orange-100 text-orange-700',\n}\n\nfunction formatShippingStatusLabel(value: string): string {\n return value.replace(/_/g, ' ')\n}\n\nconst widget: InjectionColumnWidget = {\n metadata: {\n id: 'shipping_carriers.injection.tracking-status-badge',\n priority: 45,\n },\n columns: [\n {\n id: 'carrier_status_badge',\n header: 'shipping_carriers.column.shippingStatus',\n accessorKey: '_carrier.status',\n sortable: false,\n cell: ({ getValue }) => {\n const value = getValue()\n if (typeof value !== 'string' || value.length === 0) return null\n const colors = SHIPPING_STATUS_COLORS[value] ?? 'bg-gray-100 text-gray-700'\n return (\n <span className={`inline-flex items-center rounded-full px-2 py-0.5 text-xs font-medium ${colors}`}>\n {formatShippingStatusLabel(value)}\n </span>\n )\n },\n },\n ],\n}\n\nexport default widget\n"],
5
+ "mappings": "AAkCU;AAhCV,MAAM,yBAAiD;AAAA,EACrD,SAAS;AAAA,EACT,eAAe;AAAA,EACf,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,kBAAkB;AAAA,EAClB,WAAW;AAAA,EACX,UAAU;AAAA,EACV,WAAW;AAAA,EACX,iBAAiB;AACnB;AAEA,SAAS,0BAA0B,OAAuB;AACxD,SAAO,MAAM,QAAQ,MAAM,GAAG;AAChC;AAEA,MAAM,SAAgC;AAAA,EACpC,UAAU;AAAA,IACR,IAAI;AAAA,IACJ,UAAU;AAAA,EACZ;AAAA,EACA,SAAS;AAAA,IACP;AAAA,MACE,IAAI;AAAA,MACJ,QAAQ;AAAA,MACR,aAAa;AAAA,MACb,UAAU;AAAA,MACV,MAAM,CAAC,EAAE,SAAS,MAAM;AACtB,cAAM,QAAQ,SAAS;AACvB,YAAI,OAAO,UAAU,YAAY,MAAM,WAAW,EAAG,QAAO;AAC5D,cAAM,SAAS,uBAAuB,KAAK,KAAK;AAChD,eACE,oBAAC,UAAK,WAAW,yEAAyE,MAAM,IAC7F,oCAA0B,KAAK,GAClC;AAAA,MAEJ;AAAA,IACF;AAAA,EACF;AACF;AAEA,IAAO,iBAAQ;",
6
+ "names": []
7
+ }