@porulle/core 0.7.0 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (289) hide show
  1. package/dist/auth/setup.d.ts.map +1 -1
  2. package/dist/auth/setup.js +1 -0
  3. package/dist/config/defaults.d.ts.map +1 -1
  4. package/dist/config/defaults.js +5 -0
  5. package/dist/config/types.d.ts +17 -1
  6. package/dist/config/types.d.ts.map +1 -1
  7. package/dist/generated/plugin-manifest.d.ts +3 -0
  8. package/dist/generated/plugin-manifest.d.ts.map +1 -1
  9. package/dist/generated/plugin-manifest.js +1 -0
  10. package/dist/hooks/checkout.d.ts.map +1 -1
  11. package/dist/hooks/checkout.js +16 -1
  12. package/dist/index.d.ts +1 -0
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.js +1 -0
  15. package/dist/interfaces/rest/index.d.ts.map +1 -1
  16. package/dist/interfaces/rest/index.js +12 -0
  17. package/dist/interfaces/rest/routes/admin/staff.d.ts +12 -0
  18. package/dist/interfaces/rest/routes/admin/staff.d.ts.map +1 -0
  19. package/dist/interfaces/rest/routes/admin/staff.js +172 -0
  20. package/dist/interfaces/rest/routes/analytics.d.ts +5 -0
  21. package/dist/interfaces/rest/routes/analytics.d.ts.map +1 -0
  22. package/dist/interfaces/rest/routes/analytics.js +24 -0
  23. package/dist/interfaces/rest/routes/carts.d.ts.map +1 -1
  24. package/dist/interfaces/rest/routes/carts.js +39 -2
  25. package/dist/interfaces/rest/routes/catalog.d.ts.map +1 -1
  26. package/dist/interfaces/rest/routes/catalog.js +17 -1
  27. package/dist/interfaces/rest/routes/checkout.d.ts.map +1 -1
  28. package/dist/interfaces/rest/routes/checkout.js +17 -0
  29. package/dist/interfaces/rest/routes/documents.d.ts +10 -0
  30. package/dist/interfaces/rest/routes/documents.d.ts.map +1 -0
  31. package/dist/interfaces/rest/routes/documents.js +40 -0
  32. package/dist/interfaces/rest/routes/orders.d.ts.map +1 -1
  33. package/dist/interfaces/rest/routes/orders.js +98 -1
  34. package/dist/interfaces/rest/routes/pricing.d.ts.map +1 -1
  35. package/dist/interfaces/rest/routes/pricing.js +36 -1
  36. package/dist/interfaces/rest/routes/settings.d.ts +5 -0
  37. package/dist/interfaces/rest/routes/settings.d.ts.map +1 -0
  38. package/dist/interfaces/rest/routes/settings.js +50 -0
  39. package/dist/interfaces/rest/routes/shipping.d.ts +5 -0
  40. package/dist/interfaces/rest/routes/shipping.d.ts.map +1 -0
  41. package/dist/interfaces/rest/routes/shipping.js +68 -0
  42. package/dist/interfaces/rest/routes/tax.d.ts +5 -0
  43. package/dist/interfaces/rest/routes/tax.d.ts.map +1 -0
  44. package/dist/interfaces/rest/routes/tax.js +68 -0
  45. package/dist/interfaces/rest/schemas/admin-staff.d.ts +899 -0
  46. package/dist/interfaces/rest/schemas/admin-staff.d.ts.map +1 -0
  47. package/dist/interfaces/rest/schemas/admin-staff.js +98 -0
  48. package/dist/interfaces/rest/schemas/analytics.d.ts +252 -0
  49. package/dist/interfaces/rest/schemas/analytics.d.ts.map +1 -0
  50. package/dist/interfaces/rest/schemas/analytics.js +33 -0
  51. package/dist/interfaces/rest/schemas/carts.d.ts +656 -0
  52. package/dist/interfaces/rest/schemas/carts.d.ts.map +1 -1
  53. package/dist/interfaces/rest/schemas/carts.js +38 -0
  54. package/dist/interfaces/rest/schemas/catalog.d.ts +1218 -1
  55. package/dist/interfaces/rest/schemas/catalog.d.ts.map +1 -1
  56. package/dist/interfaces/rest/schemas/catalog.js +48 -0
  57. package/dist/interfaces/rest/schemas/checkout.d.ts +2 -0
  58. package/dist/interfaces/rest/schemas/checkout.d.ts.map +1 -1
  59. package/dist/interfaces/rest/schemas/checkout.js +4 -0
  60. package/dist/interfaces/rest/schemas/customer-portal.d.ts +35 -0
  61. package/dist/interfaces/rest/schemas/customer-portal.d.ts.map +1 -1
  62. package/dist/interfaces/rest/schemas/documents.d.ts +509 -0
  63. package/dist/interfaces/rest/schemas/documents.d.ts.map +1 -0
  64. package/dist/interfaces/rest/schemas/documents.js +65 -0
  65. package/dist/interfaces/rest/schemas/orders.d.ts +3110 -43
  66. package/dist/interfaces/rest/schemas/orders.d.ts.map +1 -1
  67. package/dist/interfaces/rest/schemas/orders.js +233 -0
  68. package/dist/interfaces/rest/schemas/pricing.d.ts +405 -0
  69. package/dist/interfaces/rest/schemas/pricing.d.ts.map +1 -1
  70. package/dist/interfaces/rest/schemas/pricing.js +70 -0
  71. package/dist/interfaces/rest/schemas/responses.d.ts +156 -0
  72. package/dist/interfaces/rest/schemas/responses.d.ts.map +1 -1
  73. package/dist/interfaces/rest/schemas/search.d.ts +17 -0
  74. package/dist/interfaces/rest/schemas/search.d.ts.map +1 -1
  75. package/dist/interfaces/rest/schemas/settings.d.ts +397 -0
  76. package/dist/interfaces/rest/schemas/settings.d.ts.map +1 -0
  77. package/dist/interfaces/rest/schemas/settings.js +79 -0
  78. package/dist/interfaces/rest/schemas/shipping.d.ts +1093 -0
  79. package/dist/interfaces/rest/schemas/shipping.d.ts.map +1 -0
  80. package/dist/interfaces/rest/schemas/shipping.js +146 -0
  81. package/dist/interfaces/rest/schemas/tax.d.ts +1074 -0
  82. package/dist/interfaces/rest/schemas/tax.d.ts.map +1 -0
  83. package/dist/interfaces/rest/schemas/tax.js +132 -0
  84. package/dist/kernel/database/schema.d.ts +4 -0
  85. package/dist/kernel/database/schema.d.ts.map +1 -1
  86. package/dist/kernel/database/schema.js +8 -0
  87. package/dist/kernel/hooks/types.d.ts +1 -1
  88. package/dist/kernel/hooks/types.d.ts.map +1 -1
  89. package/dist/kernel/plugin/manifest.d.ts +23 -0
  90. package/dist/kernel/plugin/manifest.d.ts.map +1 -1
  91. package/dist/kernel/plugin/manifest.js +17 -2
  92. package/dist/modules/analytics/module.d.ts.map +1 -1
  93. package/dist/modules/analytics/module.js +6 -0
  94. package/dist/modules/analytics/reports.d.ts +58 -0
  95. package/dist/modules/analytics/reports.d.ts.map +1 -0
  96. package/dist/modules/analytics/reports.js +249 -0
  97. package/dist/modules/analytics/service.d.ts +10 -0
  98. package/dist/modules/analytics/service.d.ts.map +1 -1
  99. package/dist/modules/analytics/service.js +14 -0
  100. package/dist/modules/cart/repository/index.d.ts +7 -0
  101. package/dist/modules/cart/repository/index.d.ts.map +1 -1
  102. package/dist/modules/cart/repository/index.js +25 -1
  103. package/dist/modules/cart/schema.d.ts +17 -0
  104. package/dist/modules/cart/schema.d.ts.map +1 -1
  105. package/dist/modules/cart/schema.js +2 -0
  106. package/dist/modules/cart/schemas.d.ts +1 -0
  107. package/dist/modules/cart/schemas.d.ts.map +1 -1
  108. package/dist/modules/cart/schemas.js +1 -0
  109. package/dist/modules/cart/service.d.ts +32 -0
  110. package/dist/modules/cart/service.d.ts.map +1 -1
  111. package/dist/modules/cart/service.js +58 -0
  112. package/dist/modules/catalog/entity-service.d.ts +21 -0
  113. package/dist/modules/catalog/entity-service.d.ts.map +1 -1
  114. package/dist/modules/catalog/entity-service.js +132 -3
  115. package/dist/modules/catalog/schema.d.ts +34 -0
  116. package/dist/modules/catalog/schema.d.ts.map +1 -1
  117. package/dist/modules/catalog/schema.js +5 -0
  118. package/dist/modules/catalog/schemas.d.ts +3 -0
  119. package/dist/modules/catalog/schemas.d.ts.map +1 -1
  120. package/dist/modules/catalog/schemas.js +3 -0
  121. package/dist/modules/catalog/service.d.ts +36 -0
  122. package/dist/modules/catalog/service.d.ts.map +1 -1
  123. package/dist/modules/catalog/service.js +6 -0
  124. package/dist/modules/documents/module.d.ts +7 -0
  125. package/dist/modules/documents/module.d.ts.map +1 -0
  126. package/dist/modules/documents/module.js +12 -0
  127. package/dist/modules/documents/pdf.d.ts +25 -0
  128. package/dist/modules/documents/pdf.d.ts.map +1 -0
  129. package/dist/modules/documents/pdf.js +80 -0
  130. package/dist/modules/documents/render.d.ts +32 -0
  131. package/dist/modules/documents/render.d.ts.map +1 -0
  132. package/dist/modules/documents/render.js +190 -0
  133. package/dist/modules/documents/repository/index.d.ts +25 -0
  134. package/dist/modules/documents/repository/index.d.ts.map +1 -0
  135. package/dist/modules/documents/repository/index.js +47 -0
  136. package/dist/modules/documents/schema.d.ts +214 -0
  137. package/dist/modules/documents/schema.d.ts.map +1 -0
  138. package/dist/modules/documents/schema.js +42 -0
  139. package/dist/modules/documents/service.d.ts +51 -0
  140. package/dist/modules/documents/service.d.ts.map +1 -0
  141. package/dist/modules/documents/service.js +119 -0
  142. package/dist/modules/fulfillment/service.d.ts +18 -0
  143. package/dist/modules/fulfillment/service.d.ts.map +1 -1
  144. package/dist/modules/fulfillment/service.js +85 -1
  145. package/dist/modules/orders/repository/index.d.ts +18 -1
  146. package/dist/modules/orders/repository/index.d.ts.map +1 -1
  147. package/dist/modules/orders/repository/index.js +86 -1
  148. package/dist/modules/orders/schema.d.ts +374 -0
  149. package/dist/modules/orders/schema.d.ts.map +1 -1
  150. package/dist/modules/orders/schema.js +52 -1
  151. package/dist/modules/orders/service.d.ts +86 -1
  152. package/dist/modules/orders/service.d.ts.map +1 -1
  153. package/dist/modules/orders/service.js +447 -20
  154. package/dist/modules/pricing/repository/index.d.ts +5 -0
  155. package/dist/modules/pricing/repository/index.d.ts.map +1 -1
  156. package/dist/modules/pricing/repository/index.js +19 -0
  157. package/dist/modules/pricing/service.d.ts +18 -0
  158. package/dist/modules/pricing/service.d.ts.map +1 -1
  159. package/dist/modules/pricing/service.js +38 -0
  160. package/dist/modules/settings/module.d.ts +6 -0
  161. package/dist/modules/settings/module.d.ts.map +1 -0
  162. package/dist/modules/settings/module.js +11 -0
  163. package/dist/modules/settings/repository/index.d.ts +16 -0
  164. package/dist/modules/settings/repository/index.d.ts.map +1 -0
  165. package/dist/modules/settings/repository/index.js +41 -0
  166. package/dist/modules/settings/schema.d.ts +121 -0
  167. package/dist/modules/settings/schema.d.ts.map +1 -0
  168. package/dist/modules/settings/schema.js +24 -0
  169. package/dist/modules/settings/service.d.ts +26 -0
  170. package/dist/modules/settings/service.d.ts.map +1 -0
  171. package/dist/modules/settings/service.js +51 -0
  172. package/dist/modules/shipping/calculator.d.ts +5 -0
  173. package/dist/modules/shipping/calculator.d.ts.map +1 -1
  174. package/dist/modules/shipping/calculator.js +10 -0
  175. package/dist/modules/shipping/module.d.ts +5 -1
  176. package/dist/modules/shipping/module.d.ts.map +1 -1
  177. package/dist/modules/shipping/module.js +4 -1
  178. package/dist/modules/shipping/repository/index.d.ts +27 -2
  179. package/dist/modules/shipping/repository/index.d.ts.map +1 -1
  180. package/dist/modules/shipping/repository/index.js +105 -1
  181. package/dist/modules/shipping/schema.d.ts +419 -0
  182. package/dist/modules/shipping/schema.d.ts.map +1 -0
  183. package/dist/modules/shipping/schema.js +56 -0
  184. package/dist/modules/shipping/service.d.ts +54 -0
  185. package/dist/modules/shipping/service.d.ts.map +1 -1
  186. package/dist/modules/shipping/service.js +161 -2
  187. package/dist/modules/tax/adapter.d.ts +13 -0
  188. package/dist/modules/tax/adapter.d.ts.map +1 -1
  189. package/dist/modules/tax/module.d.ts +5 -1
  190. package/dist/modules/tax/module.d.ts.map +1 -1
  191. package/dist/modules/tax/module.js +4 -1
  192. package/dist/modules/tax/repository/index.d.ts +38 -2
  193. package/dist/modules/tax/repository/index.d.ts.map +1 -1
  194. package/dist/modules/tax/repository/index.js +138 -1
  195. package/dist/modules/tax/schema.d.ts +355 -0
  196. package/dist/modules/tax/schema.d.ts.map +1 -0
  197. package/dist/modules/tax/schema.js +55 -0
  198. package/dist/modules/tax/service.d.ts +60 -1
  199. package/dist/modules/tax/service.d.ts.map +1 -1
  200. package/dist/modules/tax/service.js +227 -2
  201. package/dist/runtime/kernel-modules.d.ts +15 -2
  202. package/dist/runtime/kernel-modules.d.ts.map +1 -1
  203. package/dist/runtime/kernel-modules.js +4 -0
  204. package/dist/runtime/kernel-types.d.ts +5 -1
  205. package/dist/runtime/kernel-types.d.ts.map +1 -1
  206. package/dist/runtime/kernel-types.js +2 -0
  207. package/dist/runtime/server.js +1 -1
  208. package/dist/test-utils/create-plugin-test-app.d.ts +3 -0
  209. package/dist/test-utils/create-plugin-test-app.d.ts.map +1 -1
  210. package/dist/test-utils/create-plugin-test-app.js +15 -3
  211. package/dist/test-utils/rest-api-test-utils.d.ts.map +1 -1
  212. package/dist/test-utils/rest-api-test-utils.js +6 -0
  213. package/package.json +3 -3
  214. package/src/auth/setup.ts +1 -0
  215. package/src/config/defaults.ts +5 -0
  216. package/src/config/types.ts +17 -1
  217. package/src/generated/plugin-capabilities.d.ts +1 -0
  218. package/src/generated/plugin-manifest.ts +1 -0
  219. package/src/generated/plugin-repositories.d.ts +1 -0
  220. package/src/hooks/checkout.ts +25 -3
  221. package/src/index.ts +1 -0
  222. package/src/interfaces/rest/index.ts +12 -0
  223. package/src/interfaces/rest/routes/admin/staff.ts +218 -0
  224. package/src/interfaces/rest/routes/analytics.ts +33 -0
  225. package/src/interfaces/rest/routes/carts.ts +52 -2
  226. package/src/interfaces/rest/routes/catalog.ts +34 -0
  227. package/src/interfaces/rest/routes/checkout.ts +22 -0
  228. package/src/interfaces/rest/routes/documents.ts +61 -0
  229. package/src/interfaces/rest/routes/orders.ts +137 -1
  230. package/src/interfaces/rest/routes/pricing.ts +44 -1
  231. package/src/interfaces/rest/routes/settings.ts +61 -0
  232. package/src/interfaces/rest/routes/shipping.ts +92 -0
  233. package/src/interfaces/rest/routes/tax.ts +90 -0
  234. package/src/interfaces/rest/schemas/admin-staff.ts +110 -0
  235. package/src/interfaces/rest/schemas/analytics.ts +39 -0
  236. package/src/interfaces/rest/schemas/carts.ts +40 -0
  237. package/src/interfaces/rest/schemas/catalog.ts +53 -0
  238. package/src/interfaces/rest/schemas/checkout.ts +4 -0
  239. package/src/interfaces/rest/schemas/documents.ts +72 -0
  240. package/src/interfaces/rest/schemas/orders.ts +257 -0
  241. package/src/interfaces/rest/schemas/pricing.ts +75 -0
  242. package/src/interfaces/rest/schemas/settings.ts +93 -0
  243. package/src/interfaces/rest/schemas/shipping.ts +164 -0
  244. package/src/interfaces/rest/schemas/tax.ts +148 -0
  245. package/src/kernel/database/schema.ts +12 -0
  246. package/src/kernel/hooks/types.ts +1 -0
  247. package/src/kernel/plugin/manifest.ts +38 -2
  248. package/src/modules/analytics/module.ts +10 -0
  249. package/src/modules/analytics/reports.ts +311 -0
  250. package/src/modules/analytics/service.ts +23 -0
  251. package/src/modules/cart/repository/index.ts +30 -1
  252. package/src/modules/cart/schema.ts +2 -0
  253. package/src/modules/cart/schemas.ts +1 -0
  254. package/src/modules/cart/service.ts +101 -0
  255. package/src/modules/catalog/entity-service.ts +168 -3
  256. package/src/modules/catalog/schema.ts +5 -0
  257. package/src/modules/catalog/schemas.ts +3 -0
  258. package/src/modules/catalog/service.ts +30 -0
  259. package/src/modules/documents/module.ts +19 -0
  260. package/src/modules/documents/pdf.ts +101 -0
  261. package/src/modules/documents/render.ts +231 -0
  262. package/src/modules/documents/repository/index.ts +68 -0
  263. package/src/modules/documents/schema.ts +44 -0
  264. package/src/modules/documents/service.ts +176 -0
  265. package/src/modules/fulfillment/service.ts +139 -1
  266. package/src/modules/orders/repository/index.ts +127 -1
  267. package/src/modules/orders/schema.ts +54 -1
  268. package/src/modules/orders/service.ts +654 -22
  269. package/src/modules/pricing/repository/index.ts +34 -0
  270. package/src/modules/pricing/service.ts +71 -0
  271. package/src/modules/settings/module.ts +18 -0
  272. package/src/modules/settings/repository/index.ts +59 -0
  273. package/src/modules/settings/schema.ts +25 -0
  274. package/src/modules/settings/service.ts +82 -0
  275. package/src/modules/shipping/calculator.ts +27 -0
  276. package/src/modules/shipping/module.ts +6 -2
  277. package/src/modules/shipping/repository/index.ts +136 -2
  278. package/src/modules/shipping/schema.ts +58 -0
  279. package/src/modules/shipping/service.ts +260 -1
  280. package/src/modules/tax/adapter.ts +9 -0
  281. package/src/modules/tax/module.ts +6 -2
  282. package/src/modules/tax/repository/index.ts +169 -2
  283. package/src/modules/tax/schema.ts +57 -0
  284. package/src/modules/tax/service.ts +313 -2
  285. package/src/runtime/kernel-modules.ts +4 -0
  286. package/src/runtime/kernel-types.ts +6 -0
  287. package/src/runtime/server.ts +1 -1
  288. package/src/test-utils/create-plugin-test-app.ts +17 -4
  289. package/src/test-utils/rest-api-test-utils.ts +6 -0
@@ -1 +1,105 @@
1
- export {};
1
+ import { eq, and, asc } from "drizzle-orm";
2
+ import { shippingZones, shippingRates } from "../schema.js";
3
+ /**
4
+ * Persistence for runtime shipping zones & rates (issue #45).
5
+ */
6
+ export class ShippingConfigRepository {
7
+ db;
8
+ constructor(db) {
9
+ this.db = db;
10
+ }
11
+ getDb(ctx) {
12
+ return ctx?.tx ?? this.db;
13
+ }
14
+ // ── Zones ──────────────────────────────────────────────────────────────
15
+ async findZoneById(orgId, id, ctx) {
16
+ const db = this.getDb(ctx);
17
+ const rows = await db
18
+ .select()
19
+ .from(shippingZones)
20
+ .where(and(eq(shippingZones.organizationId, orgId), eq(shippingZones.id, id)));
21
+ return rows[0];
22
+ }
23
+ async findZones(orgId, ctx) {
24
+ const db = this.getDb(ctx);
25
+ return db
26
+ .select()
27
+ .from(shippingZones)
28
+ .where(eq(shippingZones.organizationId, orgId))
29
+ .orderBy(asc(shippingZones.priority));
30
+ }
31
+ async findActiveZones(orgId, ctx) {
32
+ const db = this.getDb(ctx);
33
+ return db
34
+ .select()
35
+ .from(shippingZones)
36
+ .where(and(eq(shippingZones.organizationId, orgId), eq(shippingZones.isActive, true)))
37
+ .orderBy(asc(shippingZones.priority));
38
+ }
39
+ async createZone(data, ctx) {
40
+ const db = this.getDb(ctx);
41
+ const rows = await db.insert(shippingZones).values(data).returning();
42
+ return rows[0];
43
+ }
44
+ async updateZone(id, data, ctx) {
45
+ const db = this.getDb(ctx);
46
+ const rows = await db
47
+ .update(shippingZones)
48
+ .set({ ...data, updatedAt: new Date() })
49
+ .where(eq(shippingZones.id, id))
50
+ .returning();
51
+ return rows[0];
52
+ }
53
+ async deleteZone(id, ctx) {
54
+ const db = this.getDb(ctx);
55
+ const rows = await db.delete(shippingZones).where(eq(shippingZones.id, id)).returning();
56
+ return rows.length > 0;
57
+ }
58
+ // ── Rates ──────────────────────────────────────────────────────────────
59
+ async findRateById(orgId, id, ctx) {
60
+ const db = this.getDb(ctx);
61
+ const rows = await db
62
+ .select()
63
+ .from(shippingRates)
64
+ .where(and(eq(shippingRates.organizationId, orgId), eq(shippingRates.id, id)));
65
+ return rows[0];
66
+ }
67
+ async findRates(orgId, filter, ctx) {
68
+ const db = this.getDb(ctx);
69
+ const conditions = [eq(shippingRates.organizationId, orgId)];
70
+ if (filter?.zoneId)
71
+ conditions.push(eq(shippingRates.zoneId, filter.zoneId));
72
+ return db
73
+ .select()
74
+ .from(shippingRates)
75
+ .where(and(...conditions))
76
+ .orderBy(asc(shippingRates.amount));
77
+ }
78
+ async findActiveRatesByZoneId(zoneId, ctx) {
79
+ const db = this.getDb(ctx);
80
+ return db
81
+ .select()
82
+ .from(shippingRates)
83
+ .where(and(eq(shippingRates.zoneId, zoneId), eq(shippingRates.isActive, true)))
84
+ .orderBy(asc(shippingRates.amount));
85
+ }
86
+ async createRate(data, ctx) {
87
+ const db = this.getDb(ctx);
88
+ const rows = await db.insert(shippingRates).values(data).returning();
89
+ return rows[0];
90
+ }
91
+ async updateRate(id, data, ctx) {
92
+ const db = this.getDb(ctx);
93
+ const rows = await db
94
+ .update(shippingRates)
95
+ .set({ ...data, updatedAt: new Date() })
96
+ .where(eq(shippingRates.id, id))
97
+ .returning();
98
+ return rows[0];
99
+ }
100
+ async deleteRate(id, ctx) {
101
+ const db = this.getDb(ctx);
102
+ const rows = await db.delete(shippingRates).where(eq(shippingRates.id, id)).returning();
103
+ return rows.length > 0;
104
+ }
105
+ }
@@ -0,0 +1,419 @@
1
+ /**
2
+ * Runtime shipping configuration (issue #45).
3
+ *
4
+ * Zones match a destination (country + optional state); rates belong to a
5
+ * zone and carry a flat amount with optional subtotal/weight bands and a
6
+ * free-shipping threshold. When zones exist for an organization they take
7
+ * precedence over the code-config strategy in `defineConfig({ shipping })`,
8
+ * which remains the fallback.
9
+ */
10
+ export declare const shippingZones: import("drizzle-orm/pg-core").PgTableWithColumns<{
11
+ name: "shipping_zones";
12
+ schema: undefined;
13
+ columns: {
14
+ id: import("drizzle-orm/pg-core").PgColumn<{
15
+ name: "id";
16
+ tableName: "shipping_zones";
17
+ dataType: "string";
18
+ columnType: "PgUUID";
19
+ data: string;
20
+ driverParam: string;
21
+ notNull: true;
22
+ hasDefault: true;
23
+ isPrimaryKey: true;
24
+ isAutoincrement: false;
25
+ hasRuntimeDefault: false;
26
+ enumValues: undefined;
27
+ baseColumn: never;
28
+ identity: undefined;
29
+ generated: undefined;
30
+ }, {}, {}>;
31
+ organizationId: import("drizzle-orm/pg-core").PgColumn<{
32
+ name: "organization_id";
33
+ tableName: "shipping_zones";
34
+ dataType: "string";
35
+ columnType: "PgText";
36
+ data: string;
37
+ driverParam: string;
38
+ notNull: true;
39
+ hasDefault: false;
40
+ isPrimaryKey: false;
41
+ isAutoincrement: false;
42
+ hasRuntimeDefault: false;
43
+ enumValues: [string, ...string[]];
44
+ baseColumn: never;
45
+ identity: undefined;
46
+ generated: undefined;
47
+ }, {}, {}>;
48
+ name: import("drizzle-orm/pg-core").PgColumn<{
49
+ name: "name";
50
+ tableName: "shipping_zones";
51
+ dataType: "string";
52
+ columnType: "PgText";
53
+ data: string;
54
+ driverParam: string;
55
+ notNull: true;
56
+ hasDefault: false;
57
+ isPrimaryKey: false;
58
+ isAutoincrement: false;
59
+ hasRuntimeDefault: false;
60
+ enumValues: [string, ...string[]];
61
+ baseColumn: never;
62
+ identity: undefined;
63
+ generated: undefined;
64
+ }, {}, {}>;
65
+ countries: import("drizzle-orm/pg-core").PgColumn<{
66
+ name: "countries";
67
+ tableName: "shipping_zones";
68
+ dataType: "json";
69
+ columnType: "PgJsonb";
70
+ data: string[];
71
+ driverParam: unknown;
72
+ notNull: true;
73
+ hasDefault: true;
74
+ isPrimaryKey: false;
75
+ isAutoincrement: false;
76
+ hasRuntimeDefault: false;
77
+ enumValues: undefined;
78
+ baseColumn: never;
79
+ identity: undefined;
80
+ generated: undefined;
81
+ }, {}, {
82
+ $type: string[];
83
+ }>;
84
+ states: import("drizzle-orm/pg-core").PgColumn<{
85
+ name: "states";
86
+ tableName: "shipping_zones";
87
+ dataType: "json";
88
+ columnType: "PgJsonb";
89
+ data: string[];
90
+ driverParam: unknown;
91
+ notNull: true;
92
+ hasDefault: true;
93
+ isPrimaryKey: false;
94
+ isAutoincrement: false;
95
+ hasRuntimeDefault: false;
96
+ enumValues: undefined;
97
+ baseColumn: never;
98
+ identity: undefined;
99
+ generated: undefined;
100
+ }, {}, {
101
+ $type: string[];
102
+ }>;
103
+ priority: import("drizzle-orm/pg-core").PgColumn<{
104
+ name: "priority";
105
+ tableName: "shipping_zones";
106
+ dataType: "number";
107
+ columnType: "PgInteger";
108
+ data: number;
109
+ driverParam: string | number;
110
+ notNull: true;
111
+ hasDefault: true;
112
+ isPrimaryKey: false;
113
+ isAutoincrement: false;
114
+ hasRuntimeDefault: false;
115
+ enumValues: undefined;
116
+ baseColumn: never;
117
+ identity: undefined;
118
+ generated: undefined;
119
+ }, {}, {}>;
120
+ isActive: import("drizzle-orm/pg-core").PgColumn<{
121
+ name: "is_active";
122
+ tableName: "shipping_zones";
123
+ dataType: "boolean";
124
+ columnType: "PgBoolean";
125
+ data: boolean;
126
+ driverParam: boolean;
127
+ notNull: true;
128
+ hasDefault: true;
129
+ isPrimaryKey: false;
130
+ isAutoincrement: false;
131
+ hasRuntimeDefault: false;
132
+ enumValues: undefined;
133
+ baseColumn: never;
134
+ identity: undefined;
135
+ generated: undefined;
136
+ }, {}, {}>;
137
+ createdAt: import("drizzle-orm/pg-core").PgColumn<{
138
+ name: "created_at";
139
+ tableName: "shipping_zones";
140
+ dataType: "date";
141
+ columnType: "PgTimestamp";
142
+ data: Date;
143
+ driverParam: string;
144
+ notNull: true;
145
+ hasDefault: true;
146
+ isPrimaryKey: false;
147
+ isAutoincrement: false;
148
+ hasRuntimeDefault: false;
149
+ enumValues: undefined;
150
+ baseColumn: never;
151
+ identity: undefined;
152
+ generated: undefined;
153
+ }, {}, {}>;
154
+ updatedAt: import("drizzle-orm/pg-core").PgColumn<{
155
+ name: "updated_at";
156
+ tableName: "shipping_zones";
157
+ dataType: "date";
158
+ columnType: "PgTimestamp";
159
+ data: Date;
160
+ driverParam: string;
161
+ notNull: true;
162
+ hasDefault: true;
163
+ isPrimaryKey: false;
164
+ isAutoincrement: false;
165
+ hasRuntimeDefault: false;
166
+ enumValues: undefined;
167
+ baseColumn: never;
168
+ identity: undefined;
169
+ generated: undefined;
170
+ }, {}, {}>;
171
+ };
172
+ dialect: "pg";
173
+ }>;
174
+ export declare const shippingRates: import("drizzle-orm/pg-core").PgTableWithColumns<{
175
+ name: "shipping_rates";
176
+ schema: undefined;
177
+ columns: {
178
+ id: import("drizzle-orm/pg-core").PgColumn<{
179
+ name: "id";
180
+ tableName: "shipping_rates";
181
+ dataType: "string";
182
+ columnType: "PgUUID";
183
+ data: string;
184
+ driverParam: string;
185
+ notNull: true;
186
+ hasDefault: true;
187
+ isPrimaryKey: true;
188
+ isAutoincrement: false;
189
+ hasRuntimeDefault: false;
190
+ enumValues: undefined;
191
+ baseColumn: never;
192
+ identity: undefined;
193
+ generated: undefined;
194
+ }, {}, {}>;
195
+ organizationId: import("drizzle-orm/pg-core").PgColumn<{
196
+ name: "organization_id";
197
+ tableName: "shipping_rates";
198
+ dataType: "string";
199
+ columnType: "PgText";
200
+ data: string;
201
+ driverParam: string;
202
+ notNull: true;
203
+ hasDefault: false;
204
+ isPrimaryKey: false;
205
+ isAutoincrement: false;
206
+ hasRuntimeDefault: false;
207
+ enumValues: [string, ...string[]];
208
+ baseColumn: never;
209
+ identity: undefined;
210
+ generated: undefined;
211
+ }, {}, {}>;
212
+ zoneId: import("drizzle-orm/pg-core").PgColumn<{
213
+ name: "zone_id";
214
+ tableName: "shipping_rates";
215
+ dataType: "string";
216
+ columnType: "PgUUID";
217
+ data: string;
218
+ driverParam: string;
219
+ notNull: true;
220
+ hasDefault: false;
221
+ isPrimaryKey: false;
222
+ isAutoincrement: false;
223
+ hasRuntimeDefault: false;
224
+ enumValues: undefined;
225
+ baseColumn: never;
226
+ identity: undefined;
227
+ generated: undefined;
228
+ }, {}, {}>;
229
+ name: import("drizzle-orm/pg-core").PgColumn<{
230
+ name: "name";
231
+ tableName: "shipping_rates";
232
+ dataType: "string";
233
+ columnType: "PgText";
234
+ data: string;
235
+ driverParam: string;
236
+ notNull: true;
237
+ hasDefault: false;
238
+ isPrimaryKey: false;
239
+ isAutoincrement: false;
240
+ hasRuntimeDefault: false;
241
+ enumValues: [string, ...string[]];
242
+ baseColumn: never;
243
+ identity: undefined;
244
+ generated: undefined;
245
+ }, {}, {}>;
246
+ currency: import("drizzle-orm/pg-core").PgColumn<{
247
+ name: "currency";
248
+ tableName: "shipping_rates";
249
+ dataType: "string";
250
+ columnType: "PgText";
251
+ data: string;
252
+ driverParam: string;
253
+ notNull: true;
254
+ hasDefault: true;
255
+ isPrimaryKey: false;
256
+ isAutoincrement: false;
257
+ hasRuntimeDefault: false;
258
+ enumValues: [string, ...string[]];
259
+ baseColumn: never;
260
+ identity: undefined;
261
+ generated: undefined;
262
+ }, {}, {}>;
263
+ amount: import("drizzle-orm/pg-core").PgColumn<{
264
+ name: "amount";
265
+ tableName: "shipping_rates";
266
+ dataType: "number";
267
+ columnType: "PgInteger";
268
+ data: number;
269
+ driverParam: string | number;
270
+ notNull: true;
271
+ hasDefault: false;
272
+ isPrimaryKey: false;
273
+ isAutoincrement: false;
274
+ hasRuntimeDefault: false;
275
+ enumValues: undefined;
276
+ baseColumn: never;
277
+ identity: undefined;
278
+ generated: undefined;
279
+ }, {}, {}>;
280
+ minSubtotal: import("drizzle-orm/pg-core").PgColumn<{
281
+ name: "min_subtotal";
282
+ tableName: "shipping_rates";
283
+ dataType: "number";
284
+ columnType: "PgInteger";
285
+ data: number;
286
+ driverParam: string | number;
287
+ notNull: false;
288
+ hasDefault: false;
289
+ isPrimaryKey: false;
290
+ isAutoincrement: false;
291
+ hasRuntimeDefault: false;
292
+ enumValues: undefined;
293
+ baseColumn: never;
294
+ identity: undefined;
295
+ generated: undefined;
296
+ }, {}, {}>;
297
+ maxSubtotal: import("drizzle-orm/pg-core").PgColumn<{
298
+ name: "max_subtotal";
299
+ tableName: "shipping_rates";
300
+ dataType: "number";
301
+ columnType: "PgInteger";
302
+ data: number;
303
+ driverParam: string | number;
304
+ notNull: false;
305
+ hasDefault: false;
306
+ isPrimaryKey: false;
307
+ isAutoincrement: false;
308
+ hasRuntimeDefault: false;
309
+ enumValues: undefined;
310
+ baseColumn: never;
311
+ identity: undefined;
312
+ generated: undefined;
313
+ }, {}, {}>;
314
+ minWeightGrams: import("drizzle-orm/pg-core").PgColumn<{
315
+ name: "min_weight_grams";
316
+ tableName: "shipping_rates";
317
+ dataType: "number";
318
+ columnType: "PgInteger";
319
+ data: number;
320
+ driverParam: string | number;
321
+ notNull: false;
322
+ hasDefault: false;
323
+ isPrimaryKey: false;
324
+ isAutoincrement: false;
325
+ hasRuntimeDefault: false;
326
+ enumValues: undefined;
327
+ baseColumn: never;
328
+ identity: undefined;
329
+ generated: undefined;
330
+ }, {}, {}>;
331
+ maxWeightGrams: import("drizzle-orm/pg-core").PgColumn<{
332
+ name: "max_weight_grams";
333
+ tableName: "shipping_rates";
334
+ dataType: "number";
335
+ columnType: "PgInteger";
336
+ data: number;
337
+ driverParam: string | number;
338
+ notNull: false;
339
+ hasDefault: false;
340
+ isPrimaryKey: false;
341
+ isAutoincrement: false;
342
+ hasRuntimeDefault: false;
343
+ enumValues: undefined;
344
+ baseColumn: never;
345
+ identity: undefined;
346
+ generated: undefined;
347
+ }, {}, {}>;
348
+ freeShippingThreshold: import("drizzle-orm/pg-core").PgColumn<{
349
+ name: "free_shipping_threshold";
350
+ tableName: "shipping_rates";
351
+ dataType: "number";
352
+ columnType: "PgInteger";
353
+ data: number;
354
+ driverParam: string | number;
355
+ notNull: false;
356
+ hasDefault: false;
357
+ isPrimaryKey: false;
358
+ isAutoincrement: false;
359
+ hasRuntimeDefault: false;
360
+ enumValues: undefined;
361
+ baseColumn: never;
362
+ identity: undefined;
363
+ generated: undefined;
364
+ }, {}, {}>;
365
+ isActive: import("drizzle-orm/pg-core").PgColumn<{
366
+ name: "is_active";
367
+ tableName: "shipping_rates";
368
+ dataType: "boolean";
369
+ columnType: "PgBoolean";
370
+ data: boolean;
371
+ driverParam: boolean;
372
+ notNull: true;
373
+ hasDefault: true;
374
+ isPrimaryKey: false;
375
+ isAutoincrement: false;
376
+ hasRuntimeDefault: false;
377
+ enumValues: undefined;
378
+ baseColumn: never;
379
+ identity: undefined;
380
+ generated: undefined;
381
+ }, {}, {}>;
382
+ createdAt: import("drizzle-orm/pg-core").PgColumn<{
383
+ name: "created_at";
384
+ tableName: "shipping_rates";
385
+ dataType: "date";
386
+ columnType: "PgTimestamp";
387
+ data: Date;
388
+ driverParam: string;
389
+ notNull: true;
390
+ hasDefault: true;
391
+ isPrimaryKey: false;
392
+ isAutoincrement: false;
393
+ hasRuntimeDefault: false;
394
+ enumValues: undefined;
395
+ baseColumn: never;
396
+ identity: undefined;
397
+ generated: undefined;
398
+ }, {}, {}>;
399
+ updatedAt: import("drizzle-orm/pg-core").PgColumn<{
400
+ name: "updated_at";
401
+ tableName: "shipping_rates";
402
+ dataType: "date";
403
+ columnType: "PgTimestamp";
404
+ data: Date;
405
+ driverParam: string;
406
+ notNull: true;
407
+ hasDefault: true;
408
+ isPrimaryKey: false;
409
+ isAutoincrement: false;
410
+ hasRuntimeDefault: false;
411
+ enumValues: undefined;
412
+ baseColumn: never;
413
+ identity: undefined;
414
+ generated: undefined;
415
+ }, {}, {}>;
416
+ };
417
+ dialect: "pg";
418
+ }>;
419
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/modules/shipping/schema.ts"],"names":[],"mappings":"AAGA;;;;;;;;GAQG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiBvB,CAAC;AAEJ,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA0BvB,CAAC"}
@@ -0,0 +1,56 @@
1
+ import { boolean, index, integer, jsonb, pgTable, text, timestamp, uuid } from "drizzle-orm/pg-core";
2
+ import { organization } from "../../auth/auth-schema.js";
3
+ /**
4
+ * Runtime shipping configuration (issue #45).
5
+ *
6
+ * Zones match a destination (country + optional state); rates belong to a
7
+ * zone and carry a flat amount with optional subtotal/weight bands and a
8
+ * free-shipping threshold. When zones exist for an organization they take
9
+ * precedence over the code-config strategy in `defineConfig({ shipping })`,
10
+ * which remains the fallback.
11
+ */
12
+ export const shippingZones = pgTable("shipping_zones", {
13
+ id: uuid("id").defaultRandom().primaryKey(),
14
+ organizationId: text("organization_id")
15
+ .notNull()
16
+ .references(() => organization.id, { onDelete: "cascade" }),
17
+ name: text("name").notNull(),
18
+ // ISO 3166-1 alpha-2 codes, uppercase. "*" matches any country.
19
+ countries: jsonb("countries").$type().notNull().default([]),
20
+ // Optional state/province codes; empty array = the whole country.
21
+ states: jsonb("states").$type().notNull().default([]),
22
+ priority: integer("priority").notNull().default(100),
23
+ isActive: boolean("is_active").notNull().default(true),
24
+ createdAt: timestamp("created_at", { withTimezone: true }).defaultNow().notNull(),
25
+ updatedAt: timestamp("updated_at", { withTimezone: true }).defaultNow().notNull(),
26
+ }, (table) => ({
27
+ orgIdx: index("idx_shipping_zones_org").on(table.organizationId),
28
+ priorityIdx: index("idx_shipping_zones_priority").on(table.priority),
29
+ }));
30
+ export const shippingRates = pgTable("shipping_rates", {
31
+ id: uuid("id").defaultRandom().primaryKey(),
32
+ organizationId: text("organization_id")
33
+ .notNull()
34
+ .references(() => organization.id, { onDelete: "cascade" }),
35
+ zoneId: uuid("zone_id")
36
+ .notNull()
37
+ .references(() => shippingZones.id, { onDelete: "cascade" }),
38
+ name: text("name").notNull(),
39
+ currency: text("currency").notNull().default("USD"),
40
+ // Flat cost in minor units
41
+ amount: integer("amount").notNull(),
42
+ // Price bands (subtotal after discount, minor units) — nulls are open-ended
43
+ minSubtotal: integer("min_subtotal"),
44
+ maxSubtotal: integer("max_subtotal"),
45
+ // Weight bands (grams) — nulls are open-ended
46
+ minWeightGrams: integer("min_weight_grams"),
47
+ maxWeightGrams: integer("max_weight_grams"),
48
+ // Subtotal at or above which shipping is free for this rate
49
+ freeShippingThreshold: integer("free_shipping_threshold"),
50
+ isActive: boolean("is_active").notNull().default(true),
51
+ createdAt: timestamp("created_at", { withTimezone: true }).defaultNow().notNull(),
52
+ updatedAt: timestamp("updated_at", { withTimezone: true }).defaultNow().notNull(),
53
+ }, (table) => ({
54
+ zoneIdx: index("idx_shipping_rates_zone").on(table.zoneId),
55
+ orgIdx: index("idx_shipping_rates_org").on(table.organizationId),
56
+ }));
@@ -1,11 +1,14 @@
1
1
  import type { CommerceConfig } from "../../config/types.js";
2
+ import type { Actor } from "../../auth/types.js";
2
3
  import { type Result } from "../../kernel/result.js";
3
4
  import type { TxContext } from "../../kernel/database/tx-context.js";
4
5
  import type { CatalogRepository } from "../catalog/repository/index.js";
5
6
  import { type ShippingAddress, type ShippingLineItem } from "./calculator.js";
7
+ import type { ShippingConfigRepository, ShippingZone, ShippingRate } from "./repository/index.js";
6
8
  interface ShippingServiceDeps {
7
9
  config: CommerceConfig;
8
10
  catalogRepository: CatalogRepository;
11
+ repository: ShippingConfigRepository;
9
12
  }
10
13
  export interface CalculateShippingInput {
11
14
  lineItems: ShippingLineItem[];
@@ -13,6 +16,8 @@ export interface CalculateShippingInput {
13
16
  currency: string;
14
17
  address?: ShippingAddress;
15
18
  isFreeShipping?: boolean;
19
+ /** When set, runtime shipping zones for this org take precedence over code config. */
20
+ orgId?: string;
16
21
  }
17
22
  export declare class ShippingService {
18
23
  private deps;
@@ -23,6 +28,55 @@ export declare class ShippingService {
23
28
  strategy: string;
24
29
  weightGrams: number;
25
30
  }>>;
31
+ private zoneMatches;
32
+ private calculateFromZones;
33
+ createZone(input: {
34
+ name: string;
35
+ countries: string[];
36
+ states?: string[] | undefined;
37
+ priority?: number | undefined;
38
+ isActive?: boolean | undefined;
39
+ }, actor?: Actor | null, ctx?: TxContext): Promise<Result<ShippingZone>>;
40
+ listZones(actor?: Actor | null, ctx?: TxContext): Promise<Result<ShippingZone[]>>;
41
+ updateZone(id: string, patch: {
42
+ name?: string | undefined;
43
+ countries?: string[] | undefined;
44
+ states?: string[] | undefined;
45
+ priority?: number | undefined;
46
+ isActive?: boolean | undefined;
47
+ }, actor?: Actor | null, ctx?: TxContext): Promise<Result<ShippingZone>>;
48
+ deleteZone(id: string, actor?: Actor | null, ctx?: TxContext): Promise<Result<{
49
+ deleted: true;
50
+ }>>;
51
+ createRate(input: {
52
+ zoneId: string;
53
+ name: string;
54
+ amount: number;
55
+ currency?: string | undefined;
56
+ minSubtotal?: number | undefined;
57
+ maxSubtotal?: number | undefined;
58
+ minWeightGrams?: number | undefined;
59
+ maxWeightGrams?: number | undefined;
60
+ freeShippingThreshold?: number | undefined;
61
+ isActive?: boolean | undefined;
62
+ }, actor?: Actor | null, ctx?: TxContext): Promise<Result<ShippingRate>>;
63
+ listRates(filter?: {
64
+ zoneId?: string;
65
+ }, actor?: Actor | null, ctx?: TxContext): Promise<Result<ShippingRate[]>>;
66
+ updateRate(id: string, patch: {
67
+ name?: string | undefined;
68
+ amount?: number | undefined;
69
+ currency?: string | undefined;
70
+ minSubtotal?: number | null | undefined;
71
+ maxSubtotal?: number | null | undefined;
72
+ minWeightGrams?: number | null | undefined;
73
+ maxWeightGrams?: number | null | undefined;
74
+ freeShippingThreshold?: number | null | undefined;
75
+ isActive?: boolean | undefined;
76
+ }, actor?: Actor | null, ctx?: TxContext): Promise<Result<ShippingRate>>;
77
+ deleteRate(id: string, actor?: Actor | null, ctx?: TxContext): Promise<Result<{
78
+ deleted: true;
79
+ }>>;
26
80
  }
27
81
  export {};
28
82
  //# sourceMappingURL=service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../src/modules/shipping/service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAM,KAAK,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAC;AACrE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACtB,MAAM,iBAAiB,CAAC;AAEzB,UAAU,mBAAmB;IAC3B,MAAM,EAAE,cAAc,CAAC;IACvB,iBAAiB,EAAE,iBAAiB,CAAC;CACtC;AAED,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,gBAAgB,EAAE,CAAC;IAC9B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,qBAAa,eAAe;IAGd,OAAO,CAAC,IAAI;IAFxB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAoB;gBAE5B,IAAI,EAAE,mBAAmB;IAIvC,SAAS,CACb,KAAK,EAAE,sBAAsB,EAC7B,GAAG,CAAC,EAAE,SAAS,GACd,OAAO,CACR,MAAM,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC,CAClE;CAeF"}
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../src/modules/shipping/service.ts"],"names":[],"mappings":"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"}