@cogenta/commerce 0.2.0 → 0.5.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 (95) hide show
  1. package/dist/admin/permissions.d.ts +8 -0
  2. package/dist/admin/permissions.d.ts.map +1 -1
  3. package/dist/admin/permissions.js +1 -0
  4. package/dist/admin/permissions.js.map +1 -1
  5. package/dist/admin/router.d.ts +47 -5
  6. package/dist/admin/router.d.ts.map +1 -1
  7. package/dist/admin/router.js +942 -24
  8. package/dist/admin/router.js.map +1 -1
  9. package/dist/cart/store.d.ts +23 -0
  10. package/dist/cart/store.d.ts.map +1 -1
  11. package/dist/cart/store.js +49 -2
  12. package/dist/cart/store.js.map +1 -1
  13. package/dist/catalog/csv.d.ts +29 -0
  14. package/dist/catalog/csv.d.ts.map +1 -0
  15. package/dist/catalog/csv.js +396 -0
  16. package/dist/catalog/csv.js.map +1 -0
  17. package/dist/catalog/store.d.ts +24 -4
  18. package/dist/catalog/store.d.ts.map +1 -1
  19. package/dist/catalog/store.js +238 -11
  20. package/dist/catalog/store.js.map +1 -1
  21. package/dist/catalog/types.d.ts +92 -0
  22. package/dist/catalog/types.d.ts.map +1 -1
  23. package/dist/catalog/types.js +20 -0
  24. package/dist/catalog/types.js.map +1 -1
  25. package/dist/coupon/store.d.ts +63 -5
  26. package/dist/coupon/store.d.ts.map +1 -1
  27. package/dist/coupon/store.js +140 -7
  28. package/dist/coupon/store.js.map +1 -1
  29. package/dist/customer/store.d.ts +17 -0
  30. package/dist/customer/store.d.ts.map +1 -1
  31. package/dist/customer/store.js +26 -0
  32. package/dist/customer/store.js.map +1 -1
  33. package/dist/index.d.ts +18 -8
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index.js +9 -3
  36. package/dist/index.js.map +1 -1
  37. package/dist/invoice/credit-note.d.ts +45 -0
  38. package/dist/invoice/credit-note.d.ts.map +1 -0
  39. package/dist/invoice/credit-note.js +109 -0
  40. package/dist/invoice/credit-note.js.map +1 -0
  41. package/dist/invoice/sequence.d.ts +21 -0
  42. package/dist/invoice/sequence.d.ts.map +1 -0
  43. package/dist/invoice/sequence.js +64 -0
  44. package/dist/invoice/sequence.js.map +1 -0
  45. package/dist/invoice/store.d.ts +23 -1
  46. package/dist/invoice/store.d.ts.map +1 -1
  47. package/dist/invoice/store.js +23 -56
  48. package/dist/invoice/store.js.map +1 -1
  49. package/dist/order/csv.d.ts +24 -0
  50. package/dist/order/csv.d.ts.map +1 -0
  51. package/dist/order/csv.js +42 -0
  52. package/dist/order/csv.js.map +1 -0
  53. package/dist/order/notify.d.ts +71 -0
  54. package/dist/order/notify.d.ts.map +1 -0
  55. package/dist/order/notify.js +197 -0
  56. package/dist/order/notify.js.map +1 -0
  57. package/dist/order/store.d.ts +58 -1
  58. package/dist/order/store.d.ts.map +1 -1
  59. package/dist/order/store.js +145 -10
  60. package/dist/order/store.js.map +1 -1
  61. package/dist/order/types.d.ts +35 -1
  62. package/dist/order/types.d.ts.map +1 -1
  63. package/dist/order/types.js +2 -0
  64. package/dist/order/types.js.map +1 -1
  65. package/dist/payment/paypal.d.ts +9 -0
  66. package/dist/payment/paypal.d.ts.map +1 -0
  67. package/dist/payment/paypal.js +583 -0
  68. package/dist/payment/paypal.js.map +1 -0
  69. package/dist/payment/registry.d.ts +15 -6
  70. package/dist/payment/registry.d.ts.map +1 -1
  71. package/dist/payment/registry.js +17 -6
  72. package/dist/payment/registry.js.map +1 -1
  73. package/dist/payment/types.d.ts +6 -0
  74. package/dist/payment/types.d.ts.map +1 -1
  75. package/dist/shipping/store.d.ts +29 -3
  76. package/dist/shipping/store.d.ts.map +1 -1
  77. package/dist/shipping/store.js +68 -4
  78. package/dist/shipping/store.js.map +1 -1
  79. package/dist/subscription/renewal-notifier.d.ts +17 -0
  80. package/dist/subscription/renewal-notifier.d.ts.map +1 -0
  81. package/dist/subscription/renewal-notifier.js +33 -0
  82. package/dist/subscription/renewal-notifier.js.map +1 -0
  83. package/dist/subscription/store.d.ts +126 -3
  84. package/dist/subscription/store.d.ts.map +1 -1
  85. package/dist/subscription/store.js +348 -8
  86. package/dist/subscription/store.js.map +1 -1
  87. package/dist/tables.d.ts +17 -0
  88. package/dist/tables.d.ts.map +1 -1
  89. package/dist/tables.js +274 -0
  90. package/dist/tables.js.map +1 -1
  91. package/dist/tax/store.d.ts +20 -0
  92. package/dist/tax/store.d.ts.map +1 -1
  93. package/dist/tax/store.js +51 -7
  94. package/dist/tax/store.js.map +1 -1
  95. package/package.json +3 -2
package/dist/tables.js CHANGED
@@ -17,16 +17,37 @@ export const TABLES = {
17
17
  orders: 'cogenta_commerce_orders',
18
18
  orderLines: 'cogenta_commerce_order_lines',
19
19
  orderEvents: 'cogenta_commerce_order_events',
20
+ orderEmails: 'cogenta_commerce_order_emails',
20
21
  payments: 'cogenta_commerce_payments',
21
22
  refunds: 'cogenta_commerce_refunds',
22
23
  taxRules: 'cogenta_commerce_tax_rules',
23
24
  shippingMethods: 'cogenta_commerce_shipping_methods',
24
25
  coupons: 'cogenta_commerce_coupons',
25
26
  couponRedemptions: 'cogenta_commerce_coupon_redemptions',
27
+ // Fiche 53 task 2: a coupon's own restriction and per-customer counters.
28
+ couponRestrictions: 'cogenta_commerce_coupon_restrictions',
29
+ couponCustomerRedemptions: 'cogenta_commerce_coupon_customer_redemptions',
26
30
  invoices: 'cogenta_commerce_invoices',
27
31
  invoiceSequences: 'cogenta_commerce_invoice_sequences',
32
+ creditNotes: 'cogenta_commerce_credit_notes',
28
33
  subscriptions: 'cogenta_commerce_subscriptions',
29
34
  subscriptionCycles: 'cogenta_commerce_subscription_cycles',
35
+ // Fiche 53 task 3: one open dunning cycle per subscription.
36
+ subscriptionDunning: 'cogenta_commerce_subscription_dunning',
37
+ // Fiche 53 task 5: which billing period a renewal notice was already sent
38
+ // for, so a repeated run never sends the same notice twice.
39
+ subscriptionRenewalNotices: 'cogenta_commerce_subscription_renewal_notices',
40
+ /** A product's link to a term of a taxonomy the *site* declares (ADR-0022,
41
+ * fiche 51 task 3) — not a foreign key for the same reason `content_ref` on
42
+ * `products` is not one: the term table is named after a taxonomy this
43
+ * package cannot know. A join row rather than a column on `products` because
44
+ * a product may carry more than one term, the same "many" a `f.taxonomy`
45
+ * field defaults to on a collection. */
46
+ productTerms: 'cogenta_commerce_product_terms',
47
+ /** Append-only. Every write that moves `on_hand` — a sale, a restock, a
48
+ * stock take — leaves one row here and never edits or removes an earlier
49
+ * one; the row is the audit trail, not a cache of the current count. */
50
+ stockMovements: 'cogenta_commerce_stock_movements',
30
51
  };
31
52
  /** `varchar` on Postgres/MySQL, `text` on SQLite — encapsulated once, here. */
32
53
  function textColumn(dialect, length) {
@@ -162,6 +183,24 @@ export async function ensureCommerceTables(db) {
162
183
  shipping_region ${t64},
163
184
  shipping_method_id ${t64},
164
185
  shipping_method_label ${t255},
186
+ -- Structured delivery address (fiche 52 task 1) — the constat that
187
+ -- opened this fiche: shipping_country/shipping_region alone (above)
188
+ -- were the tax/rate *zone*, never a real address a courier can print on
189
+ -- a label. All six nullable: an order placed before this address ever
190
+ -- existed, or one nobody ever filled in, still reads back fine.
191
+ shipping_address_line1 ${t255},
192
+ shipping_address_line2 ${t255},
193
+ shipping_city ${t255},
194
+ shipping_postal_code ${t64},
195
+ shipping_recipient ${t255},
196
+ shipping_phone ${t64},
197
+ -- Shipment tracking (fiche 52 task 4). Set together, by setTracking(),
198
+ -- once goods actually leave — never guessed from the status alone,
199
+ -- because "shipped" and "we know how" are two different facts.
200
+ tracking_carrier ${t64},
201
+ tracking_number ${t255},
202
+ tracking_url ${t1024},
203
+ shipped_at ${t64},
165
204
  placed_at ${t64} not null,
166
205
  updated_at ${t64} not null,
167
206
  -- Set when a subscription cycle produced this order, null otherwise.
@@ -197,6 +236,24 @@ export async function ensureCommerceTables(db) {
197
236
  note ${t1024}
198
237
  )`);
199
238
  await db.query(sql `
239
+ create table if not exists ${identifier(TABLES.orderEmails, d)} (
240
+ id ${t64} not null primary key,
241
+ order_id ${t64} not null,
242
+ -- 'confirmation' | 'shipment' (order/notify.ts's OrderEmailKind) — a
243
+ -- closed vocabulary kept as free text, the same choice this whole
244
+ -- package makes for every other status/kind column.
245
+ kind ${t64} not null,
246
+ to_email ${t255} not null,
247
+ -- 'pending' | 'sending' | 'sent' | 'failed' — 'sending' is a flush's claim
248
+ -- while it holds the message; 'failed' is retried by flushDue()
249
+ -- until MAX_ATTEMPTS, never resurrected after.
250
+ status ${t64} not null,
251
+ attempts ${int} not null,
252
+ last_error ${t1024},
253
+ created_at ${t64} not null,
254
+ sent_at ${t64}
255
+ )`);
256
+ await db.query(sql `
200
257
  create table if not exists ${identifier(TABLES.payments, d)} (
201
258
  id ${t64} not null primary key,
202
259
  order_id ${t64} not null,
@@ -274,9 +331,23 @@ export async function ensureCommerceTables(db) {
274
331
  -- Null means unlimited. Zero means exhausted, not unlimited.
275
332
  max_redemptions ${int},
276
333
  redemptions ${int} not null,
334
+ -- Fiche 53 task 2. Null means no per-customer cap. Enforced against
335
+ -- ${identifier(TABLES.couponCustomerRedemptions, d)}, never against this
336
+ -- column's own value — it only ever records the *limit*, never a count.
337
+ max_redemptions_per_customer ${int},
277
338
  active ${bool} not null,
278
339
  created_at ${t64} not null
279
340
  )`);
341
+ // A database whose `coupons` table predates the per-customer cap: `create
342
+ // table if not exists` above is a no-op for it, so the column is added the
343
+ // same way every other in-place table growth in this codebase is
344
+ // (`menu-tables.ts`'s `location` column). Failure means the column already
345
+ // exists — the only realistic cause once this function has already run
346
+ // against this table — so it is swallowed exactly like the index
347
+ // statements below.
348
+ await db
349
+ .query(sql `alter table ${identifier(TABLES.coupons, d)} add column ${identifier('max_redemptions_per_customer', d)} ${int}`)
350
+ .catch(() => undefined);
280
351
  await db.query(sql `
281
352
  create table if not exists ${identifier(TABLES.couponRedemptions, d)} (
282
353
  id ${t64} not null primary key,
@@ -285,6 +356,31 @@ export async function ensureCommerceTables(db) {
285
356
  customer_id ${t64},
286
357
  at ${t64} not null
287
358
  )`);
359
+ // One row per product a coupon is restricted to. No rows at all means
360
+ // unrestricted — the common case, and the reason this is a join table
361
+ // rather than a nullable column on `coupons` (a coupon can name several
362
+ // products, and a nullable single column could only ever name one).
363
+ await db.query(sql `
364
+ create table if not exists ${identifier(TABLES.couponRestrictions, d)} (
365
+ id ${t64} not null primary key,
366
+ code ${t64} not null,
367
+ product_id ${t64} not null,
368
+ created_at ${t64} not null
369
+ )`);
370
+ // The atomic per-customer counter `redeem()` claims against (fiche 53 task
371
+ // 2). Deliberately not a `count(*)` over `couponRedemptions` at redemption
372
+ // time — a guarded single-row `UPDATE` is what stays atomic on Postgres,
373
+ // MySQL/MariaDB and SQLite alike (the same reasoning as the stock guard in
374
+ // `catalog/store.ts`), and an aggregate query is not a single row.
375
+ await db.query(sql `
376
+ create table if not exists ${identifier(TABLES.couponCustomerRedemptions, d)} (
377
+ code ${t64} not null,
378
+ customer_id ${t64} not null,
379
+ count ${int} not null,
380
+ created_at ${t64} not null,
381
+ updated_at ${t64} not null,
382
+ primary key (code, customer_id)
383
+ )`);
288
384
  await db.query(sql `
289
385
  create table if not exists ${identifier(TABLES.invoices, d)} (
290
386
  id ${t64} not null primary key,
@@ -307,6 +403,23 @@ export async function ensureCommerceTables(db) {
307
403
  next_seq ${int} not null
308
404
  )`);
309
405
  await db.query(sql `
406
+ create table if not exists ${identifier(TABLES.creditNotes, d)} (
407
+ id ${t64} not null primary key,
408
+ order_id ${t64} not null,
409
+ -- One credit note per refund, never per order: an order can be
410
+ -- refunded in several instalments, and each one gets its own
411
+ -- sequential, never-reused number (fiche 52 task 6).
412
+ refund_id ${t64} not null unique,
413
+ series ${t64} not null,
414
+ seq ${int} not null,
415
+ number ${t64} not null unique,
416
+ issued_at ${t64} not null,
417
+ currency ${t8} not null,
418
+ amount_minor ${int} not null,
419
+ reason ${t1024},
420
+ document text not null
421
+ )`);
422
+ await db.query(sql `
310
423
  create table if not exists ${identifier(TABLES.subscriptions, d)} (
311
424
  id ${t64} not null primary key,
312
425
  customer_id ${t64} not null,
@@ -343,7 +456,149 @@ export async function ensureCommerceTables(db) {
343
456
  status ${t64} not null,
344
457
  created_at ${t64} not null
345
458
  )`);
459
+ // Fiche 53 task 3: at most one open dunning cycle per subscription — the
460
+ // primary key is the whole guard against tracking two at once. `period_key`
461
+ // is carried, not reinvented: it is the exact value `billOne` already
462
+ // claimed for the order this cycle is trying to collect, so this table
463
+ // never becomes a second source of truth about which period is which.
464
+ // `next_retry_at` doubles as the compare-and-set field `runDunning` claims
465
+ // against (same shape as `SCHEDULED_TASK_CLAIMS_TABLE` in
466
+ // `@cogenta/schema`): null means either "claimed and being processed right
467
+ // now" (transient) or "exhausted" (terminal, `suspended_at` tells the two
468
+ // apart) — and either way the due-query (`next_retry_at <= now`) simply
469
+ // never matches null, so a claimed-but-not-yet-resolved row can never be
470
+ // picked up twice.
471
+ await db.query(sql `
472
+ create table if not exists ${identifier(TABLES.subscriptionDunning, d)} (
473
+ subscription_id ${t64} not null primary key,
474
+ order_id ${t64} not null,
475
+ period_key ${t255} not null,
476
+ failure_count ${int} not null,
477
+ first_failed_at ${t64} not null,
478
+ next_retry_at ${t64},
479
+ last_reason ${t1024},
480
+ suspended_at ${t64},
481
+ created_at ${t64} not null,
482
+ updated_at ${t64} not null
483
+ )`);
484
+ // Fiche 53 task 5: one row per (subscription, upcoming period) once a
485
+ // renewal notice has actually been sent for it — the insert itself is the
486
+ // claim (a duplicate insert hits the primary key and is swallowed by
487
+ // `sendRenewalNotices`), so a rerun never notifies a subscriber twice for
488
+ // the same renewal.
489
+ await db.query(sql `
490
+ create table if not exists ${identifier(TABLES.subscriptionRenewalNotices, d)} (
491
+ subscription_id ${t64} not null,
492
+ period_key ${t255} not null,
493
+ sent_at ${t64} not null,
494
+ primary key (subscription_id, period_key)
495
+ )`);
496
+ // Columns added to `orders` after it first shipped (fiche 52 tasks 1 and
497
+ // 4). The `create table` above already declares them, which covers a fresh
498
+ // install; a site whose `cogenta_commerce_orders` predates this fiche needs
499
+ // them added in place. Same idiom as `menu-tables.ts`'s `location` column
500
+ // and `theme-store.ts`'s `active_theme`: `alter table … add column`,
501
+ // failure swallowed unconditionally. On a table this function already
502
+ // created, the only realistic failure is "column already exists" — nothing
503
+ // destructive is attempted, and every added column is nullable, so no
504
+ // existing row is affected either way. This is deliberately outside
505
+ // contract A's up/down migration engine (see this file's own header
506
+ // comment) — there is no "down" for an additive, nullable column.
507
+ const ordersTable = identifier(TABLES.orders, d);
508
+ const orderColumnStatements = [
509
+ sql `alter table ${ordersTable} add column shipping_address_line1 ${t255}`,
510
+ sql `alter table ${ordersTable} add column shipping_address_line2 ${t255}`,
511
+ sql `alter table ${ordersTable} add column shipping_city ${t255}`,
512
+ sql `alter table ${ordersTable} add column shipping_postal_code ${t64}`,
513
+ sql `alter table ${ordersTable} add column shipping_recipient ${t255}`,
514
+ sql `alter table ${ordersTable} add column shipping_phone ${t64}`,
515
+ sql `alter table ${ordersTable} add column tracking_carrier ${t64}`,
516
+ sql `alter table ${ordersTable} add column tracking_number ${t255}`,
517
+ sql `alter table ${ordersTable} add column tracking_url ${t1024}`,
518
+ sql `alter table ${ordersTable} add column shipped_at ${t64}`,
519
+ ];
520
+ for (const statement of orderColumnStatements) {
521
+ await db.query(statement).catch(() => undefined);
522
+ }
523
+ await db.query(sql `
524
+ create table if not exists ${identifier(TABLES.productTerms, d)} (
525
+ id ${t64} not null primary key,
526
+ product_id ${t64} not null,
527
+ -- Names a taxonomy the *site* declares (ADR-0022) and a term inside it —
528
+ -- neither is a foreign key here, for the same reason content_ref is not
529
+ -- one on products: the term table belongs to a schema this package
530
+ -- cannot know.
531
+ taxonomy ${t64} not null,
532
+ term_id ${t64} not null,
533
+ created_at ${t64} not null
534
+ )`);
535
+ await db.query(sql `
536
+ create table if not exists ${identifier(TABLES.stockMovements, d)} (
537
+ id ${t64} not null primary key,
538
+ variant_id ${t64} not null,
539
+ -- Positive for stock added, negative for stock taken. Never rewritten:
540
+ -- a mistake is corrected by a further movement, never by editing this
541
+ -- row (fiche 51 task 4's "append-only, jamais modifiable").
542
+ delta ${int} not null,
543
+ -- The absolute count this movement left the variant at — read back
544
+ -- without summing the whole history for a variant that has moved many
545
+ -- times.
546
+ balance_after ${int} not null,
547
+ reason ${t64} not null,
548
+ actor_id ${t64},
549
+ -- Names what caused the movement (an order id, most often), when there
550
+ -- is one. Free-form on purpose: a movement caused by a stock take has
551
+ -- no such thing.
552
+ reference_id ${t64},
553
+ note ${t1024},
554
+ created_at ${t64} not null
555
+ )`);
346
556
  await ensureIndexes(db);
557
+ await ensureColumns(db);
558
+ }
559
+ /**
560
+ * Columns added after this package's first release, on tables that already
561
+ * existed (fiche 51 tasks 4 and 5) — same pattern as `menu-tables.ts`'s own
562
+ * `location` column: `create table if not exists` above is a no-op on a
563
+ * database that already has `variants`, so the column is added here instead,
564
+ * and a failure is swallowed because the only realistic cause on a table this
565
+ * function has already run against is "the column is already there".
566
+ */
567
+ async function ensureColumns(db) {
568
+ const d = db.dialect;
569
+ const products = identifier(TABLES.products, d);
570
+ const variants = identifier(TABLES.variants, d);
571
+ const int = integerColumn();
572
+ const statements = [
573
+ // Task 4: a variant with no threshold set (the default, and every
574
+ // variant created before this column existed) is never "low stock" —
575
+ // absence means "not watched", not "watched at zero".
576
+ sql `alter table ${variants} add column ${identifier('low_stock_threshold', d)} ${int}`,
577
+ // Task 5: the "was" price shown struck through, and the window during
578
+ // which it applies. All three null together means "no promotion" — the
579
+ // state every variant is already in.
580
+ sql `alter table ${variants} add column ${identifier('compare_at_price_minor', d)} ${int}`,
581
+ sql `alter table ${variants} add column ${identifier('sale_starts_at', d)} ${textColumn(d, 64)}`,
582
+ sql `alter table ${variants} add column ${identifier('sale_ends_at', d)} ${textColumn(d, 64)}`,
583
+ // Task 5: physical dimensions, in millimetres — integers for the same
584
+ // reason weight_grams already is (no decimal column means the same thing
585
+ // on all three dialects, ADR-0006).
586
+ sql `alter table ${variants} add column ${identifier('width_mm', d)} ${int}`,
587
+ sql `alter table ${variants} add column ${identifier('height_mm', d)} ${int}`,
588
+ sql `alter table ${variants} add column ${identifier('depth_mm', d)} ${int}`,
589
+ // A product's own photos, direct on the commercial record — bare `text`
590
+ // rather than `textColumn`'s `varchar(n)`: this is a JSON-encoded array
591
+ // of media ids (`catalog/store.ts`'s `decodeProduct`/`toStringArray`),
592
+ // the same unbounded-length choice `invoices.document` already made for
593
+ // its own JSON blob, and no dialect gives an array column the same
594
+ // meaning on all three (ADR-0006).
595
+ sql `alter table ${products} add column ${identifier('image_media_ids', d)} text`,
596
+ // A variant's own single photo — one id, never a list (see `types.ts`).
597
+ sql `alter table ${variants} add column ${identifier('image_media_id', d)} ${textColumn(d, 64)}`,
598
+ ];
599
+ for (const statement of statements) {
600
+ await db.query(statement).catch(() => undefined);
601
+ }
347
602
  }
348
603
  /**
349
604
  * Indexes for the reads this package actually performs.
@@ -365,6 +620,12 @@ async function ensureIndexes(db) {
365
620
  ['cogenta_commerce_payments_order', TABLES.payments, 'order_id'],
366
621
  ['cogenta_commerce_refunds_payment', TABLES.refunds, 'payment_id'],
367
622
  ['cogenta_commerce_cycles_subscription', TABLES.subscriptionCycles, 'subscription_id'],
623
+ ['cogenta_commerce_coupon_restrictions_code', TABLES.couponRestrictions, 'code'],
624
+ ['cogenta_commerce_dunning_next_retry', TABLES.subscriptionDunning, 'next_retry_at'],
625
+ ['cogenta_commerce_order_emails_order', TABLES.orderEmails, 'order_id'],
626
+ ['cogenta_commerce_credit_notes_order', TABLES.creditNotes, 'order_id'],
627
+ ['cogenta_commerce_product_terms_product', TABLES.productTerms, 'product_id'],
628
+ ['cogenta_commerce_stock_movements_variant', TABLES.stockMovements, 'variant_id'],
368
629
  ];
369
630
  for (const [name, table, column] of wanted) {
370
631
  const statement = sql `create index ${identifier(name, d)} on ${identifier(table, d)} (${identifier(column, d)})`;
@@ -379,5 +640,18 @@ async function ensureIndexes(db) {
379
640
  // rather than here.
380
641
  }
381
642
  }
643
+ // A product cannot carry the same term twice — the write side (`setProductTerms`)
644
+ // already guarantees this by replacing the whole set, but the constraint is
645
+ // what actually protects the data on a caller this package does not control.
646
+ const productTermsUnique = identifier('cogenta_commerce_product_terms_unique', d);
647
+ const productTermsTable = identifier(TABLES.productTerms, d);
648
+ try {
649
+ await db.query(d === 'mysql'
650
+ ? sql `create unique index ${productTermsUnique} on ${productTermsTable} (${identifier('product_id', d)}, ${identifier('taxonomy', d)}, ${identifier('term_id', d)})`
651
+ : sql `create unique index if not exists ${productTermsUnique} on ${productTermsTable} (${identifier('product_id', d)}, ${identifier('taxonomy', d)}, ${identifier('term_id', d)})`);
652
+ }
653
+ catch {
654
+ // Already there.
655
+ }
382
656
  }
383
657
  //# sourceMappingURL=tables.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tables.js","sourceRoot":"","sources":["../src/tables.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tables.js","sourceRoot":"","sources":["../src/tables.ts"],"names":[],"mappings":"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"}
@@ -46,8 +46,28 @@ export interface TaxOutcome {
46
46
  readonly includedInPrice: boolean;
47
47
  readonly ruleName: string | null;
48
48
  }
49
+ /**
50
+ * Fiche feedback: a rule had no edit path — only create and delete existed,
51
+ * so fixing a typo'd rate meant deleting and recreating it (losing its
52
+ * `createdAt`, and the priority ordering an operator may have built around
53
+ * that timestamp). Every field absent from the patch is left exactly as
54
+ * saved; `country`/`region` are tri-state — `null` clears them back to
55
+ * "anywhere"/"no region", matching what `undefined` already means at
56
+ * `createRule()` time.
57
+ */
58
+ export interface UpdateTaxRuleInput {
59
+ readonly country?: string | null;
60
+ readonly region?: string | null;
61
+ readonly taxCategory?: string;
62
+ readonly name?: string;
63
+ readonly rateBp?: number;
64
+ readonly includedInPrice?: boolean;
65
+ readonly priority?: number;
66
+ readonly active?: boolean;
67
+ }
49
68
  export interface TaxStore {
50
69
  createRule(input: CreateTaxRuleInput): Promise<TaxRule>;
70
+ updateRule(id: string, patch: UpdateTaxRuleInput): Promise<TaxRule>;
51
71
  deleteRule(id: string): Promise<void>;
52
72
  listRules(): Promise<readonly TaxRule[]>;
53
73
  /** The one rule that applies, or null when nothing does. */
@@ -1 +1 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/tax/store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,cAAc,EAA0B,MAAM,eAAe,CAAA;AAKzF;;;;;;;GAOG;AACH,MAAM,WAAW,OAAO;IACtB,sCAAsC;IACtC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,oEAAoE;IACpE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAChC;AAED,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB;;;OAGG;IACH,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAA;IACjC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAC3B;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAChC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAA;IAClC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAC1B;AAED,0BAA0B;AAC1B,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAA;IACjC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;CACjC;AAED,MAAM,WAAW,QAAQ;IACvB,UAAU,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IACvD,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACrC,SAAS,IAAI,OAAO,CAAC,SAAS,OAAO,EAAE,CAAC,CAAA;IACxC,4DAA4D;IAC5D,OAAO,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAA;CAC5E;AAoDD,wBAAgB,cAAc,CAAC,EAAE,EAAE,cAAc,EAAE,GAAG,GAAE,MAAM,MAAiB,GAAG,QAAQ,CAmEzF;AAED;;;;;;;;;GASG;AACH,wBAAgB,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI,GAAG,UAAU,CAe5E"}
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/tax/store.ts"],"names":[],"mappings":"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"}
package/dist/tax/store.js CHANGED
@@ -40,18 +40,28 @@ function specificity(rule, zone) {
40
40
  }
41
41
  return rule.country === null ? 0 : 1;
42
42
  }
43
+ function assertRateBp(rateBp) {
44
+ if (!Number.isInteger(rateBp) || rateBp < 0 || rateBp > 100_000) {
45
+ throw new CogentaError({
46
+ code: 'COMMERCE_TAX_RULE_INVALID',
47
+ message: `A tax rate must be a whole number of basis points between 0 and 100000, got ${String(rateBp)}.`,
48
+ hint: '20 % is 2000 basis points. 5.5 % is 550.',
49
+ });
50
+ }
51
+ }
52
+ function taxRuleNotFound(id) {
53
+ return new CogentaError({
54
+ code: 'COMMERCE_TAX_RULE_UNKNOWN',
55
+ message: `No tax rule with id "${id}".`,
56
+ hint: 'Check the id against the admin\'s "Taxes" screen.',
57
+ });
58
+ }
43
59
  export function createTaxStore(db, now = Date.now) {
44
60
  const d = db.dialect;
45
61
  const table = identifier(TABLES.taxRules, d);
46
62
  return {
47
63
  createRule: async (input) => {
48
- if (!Number.isInteger(input.rateBp) || input.rateBp < 0 || input.rateBp > 100_000) {
49
- throw new CogentaError({
50
- code: 'COMMERCE_TAX_RULE_INVALID',
51
- message: `A tax rate must be a whole number of basis points between 0 and 100000, got ${String(input.rateBp)}.`,
52
- hint: '20 % is 2000 basis points. 5.5 % is 550.',
53
- });
54
- }
64
+ assertRateBp(input.rateBp);
55
65
  const id = newId(now);
56
66
  await db.query(sql `
57
67
  insert into ${table} (id, country, region, tax_category, name, rate_bp, included_in_price, priority, active, created_at)
@@ -70,6 +80,40 @@ export function createTaxStore(db, now = Date.now) {
70
80
  }
71
81
  return decode(row);
72
82
  },
83
+ updateRule: async (id, patch) => {
84
+ const existing = await db.query(sql `select * from ${table} where id = ${id}`);
85
+ const row = existing.rows[0];
86
+ if (row === undefined)
87
+ throw taxRuleNotFound(id);
88
+ const current = decode(row);
89
+ if (patch.rateBp !== undefined)
90
+ assertRateBp(patch.rateBp);
91
+ const country = patch.country === undefined ? current.country : (patch.country?.toUpperCase() ?? null);
92
+ const region = patch.region === undefined ? current.region : (patch.region ?? null);
93
+ const taxCategory = patch.taxCategory ?? current.taxCategory;
94
+ const name = patch.name ?? current.name;
95
+ const rateBp = patch.rateBp ?? current.rateBp;
96
+ const includedInPrice = patch.includedInPrice ?? current.includedInPrice;
97
+ const priority = patch.priority ?? current.priority;
98
+ const active = patch.active ?? current.active;
99
+ await db.query(sql `
100
+ update ${table}
101
+ set country = ${country}, region = ${region}, tax_category = ${taxCategory},
102
+ name = ${name}, rate_bp = ${rateBp}, included_in_price = ${fromBool(includedInPrice, d)},
103
+ priority = ${priority}, active = ${fromBool(active, d)}
104
+ where id = ${id}`);
105
+ return {
106
+ ...current,
107
+ country,
108
+ region,
109
+ taxCategory,
110
+ name,
111
+ rateBp,
112
+ includedInPrice,
113
+ priority,
114
+ active,
115
+ };
116
+ },
73
117
  deleteRule: async (id) => {
74
118
  await db.query(sql `delete from ${table} where id = ${id}`);
75
119
  },
@@ -1 +1 @@
1
- {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/tax/store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/tax/store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAuB,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,eAAe,CAAA;AACzF,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAC5E,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AA+FrC,SAAS,MAAM,CAAC,GAAe;IAC7B,OAAO;QACL,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,aAAa,CAAC;QACjC,OAAO,EAAE,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC;QACpC,MAAM,EAAE,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC;QAClC,WAAW,EAAE,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,uBAAuB,CAAC;QAC9D,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,eAAe,CAAC;QACvC,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,kBAAkB,CAAC;QAC9C,eAAe,EAAE,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC;QAC9C,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,mBAAmB,CAAC;QAClD,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;QAC1B,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,qBAAqB,CAAC;KACzD,CAAA;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,WAAW,CAAC,IAAa,EAAE,IAAoB;IACtD,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;QAC1B,IAAI,IAAI,KAAK,IAAI;YAAE,OAAO,IAAI,CAAA;QAC9B,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO;YAAE,OAAO,IAAI,CAAA;IAChD,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,IAAI,EAAE,MAAM,IAAI,IAAI,CAAA;QACnC,IAAI,MAAM,KAAK,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM;YAAE,OAAO,IAAI,CAAA;QAC1D,OAAO,CAAC,CAAA;IACV,CAAC;IACD,OAAO,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AACtC,CAAC;AAED,SAAS,YAAY,CAAC,MAAc;IAClC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,GAAG,OAAO,EAAE,CAAC;QAChE,MAAM,IAAI,YAAY,CAAC;YACrB,IAAI,EAAE,2BAA2B;YACjC,OAAO,EAAE,+EAA+E,MAAM,CAAC,MAAM,CAAC,GAAG;YACzG,IAAI,EAAE,0CAA0C;SACjD,CAAC,CAAA;IACJ,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,EAAU;IACjC,OAAO,IAAI,YAAY,CAAC;QACtB,IAAI,EAAE,2BAA2B;QACjC,OAAO,EAAE,wBAAwB,EAAE,IAAI;QACvC,IAAI,EAAE,mDAAmD;KAC1D,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,EAAkB,EAAE,GAAG,GAAiB,IAAI,CAAC,GAAG;IAC7E,MAAM,CAAC,GAAG,EAAE,CAAC,OAAO,CAAA;IACpB,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAA;IAE5C,OAAO;QACL,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;YAC1B,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;YAE1B,MAAM,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,CAAA;YACrB,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,CAAA;sBACF,KAAK;kBACT,EAAE,KAAK,KAAK,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,IAAI,KAAK,KAAK,CAAC,MAAM,IAAI,IAAI;kBACpE,KAAK,CAAC,WAAW,IAAI,UAAU,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,MAAM;kBAC/D,QAAQ,CAAC,KAAK,CAAC,eAAe,IAAI,IAAI,EAAE,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,IAAI,CAAC;kBAClE,QAAQ,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAA;YAEnF,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,KAAK,CAAa,GAAG,CAAA,iBAAiB,KAAK,eAAe,EAAE,EAAE,CAAC,CAAA;YACvF,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YAC1B,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;gBACtB,MAAM,IAAI,YAAY,CAAC;oBACrB,IAAI,EAAE,2BAA2B;oBACjC,OAAO,EAAE,8BAA8B;oBACvC,IAAI,EAAE,8DAA8D;iBACrE,CAAC,CAAA;YACJ,CAAC;YACD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAA;QACpB,CAAC;QAED,UAAU,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE;YAC9B,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,KAAK,CAAa,GAAG,CAAA,iBAAiB,KAAK,eAAe,EAAE,EAAE,CAAC,CAAA;YACzF,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YAC5B,IAAI,GAAG,KAAK,SAAS;gBAAE,MAAM,eAAe,CAAC,EAAE,CAAC,CAAA;YAChD,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,CAAA;YAE3B,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS;gBAAE,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;YAE1D,MAAM,OAAO,GACX,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,IAAI,CAAC,CAAA;YACxF,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,CAAA;YACnF,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,IAAI,OAAO,CAAC,WAAW,CAAA;YAC5D,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAA;YACvC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAA;YAC7C,MAAM,eAAe,GAAG,KAAK,CAAC,eAAe,IAAI,OAAO,CAAC,eAAe,CAAA;YACxE,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAA;YACnD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAA;YAE7C,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,CAAA;iBACP,KAAK;wBACE,OAAO,cAAc,MAAM,oBAAoB,WAAW;qBAC7D,IAAI,eAAe,MAAM,yBAAyB,QAAQ,CAAC,eAAe,EAAE,CAAC,CAAC;yBAC1E,QAAQ,cAAc,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;qBAC7C,EAAE,EAAE,CAAC,CAAA;YAEpB,OAAO;gBACL,GAAG,OAAO;gBACV,OAAO;gBACP,MAAM;gBACN,WAAW;gBACX,IAAI;gBACJ,MAAM;gBACN,eAAe;gBACf,QAAQ;gBACR,MAAM;aACP,CAAA;QACH,CAAC;QAED,UAAU,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE;YACvB,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,CAAA,eAAe,KAAK,eAAe,EAAE,EAAE,CAAC,CAAA;QAC5D,CAAC;QAED,SAAS,EAAE,KAAK,IAAI,EAAE;YACpB,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,KAAK,CAC3B,GAAG,CAAA,iBAAiB,KAAK,yCAAyC,CACnE,CAAA;YACD,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QAChC,CAAC;QAED,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE;YACnC,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,KAAK,CAC3B,GAAG,CAAA,iBAAiB,KAAK,yBAAyB,WAAW,EAAE,CAChE,CAAA;YAED,IAAI,IAAI,GAAmB,IAAI,CAAA;YAC/B,IAAI,SAAS,GAAG,CAAC,CAAC,CAAA;YAClB,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC3C,IAAI,CAAC,IAAI,CAAC,MAAM;oBAAE,SAAQ;gBAC1B,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;gBACrC,IAAI,KAAK,KAAK,IAAI;oBAAE,SAAQ;gBAC5B,oEAAoE;gBACpE,sDAAsD;gBACtD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,GAAG,EAAE,GAAG,KAAK,CAAA;gBAC3C,IAAI,QAAQ,GAAG,SAAS,EAAE,CAAC;oBACzB,IAAI,GAAG,IAAI,CAAA;oBACX,SAAS,GAAG,QAAQ,CAAA;gBACtB,CAAC;YACH,CAAC;YACD,OAAO,IAAI,CAAA;QACb,CAAC;KACF,CAAA;AACH,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,MAAM,CAAC,WAAmB,EAAE,IAAoB;IAC9D,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAClB,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,eAAe,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAA;IAC3E,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe;QACnC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;QAC/F,CAAC,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;IAE9C,OAAO;QACL,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,QAAQ;QACR,eAAe,EAAE,IAAI,CAAC,eAAe;QACrC,QAAQ,EAAE,IAAI,CAAC,IAAI;KACpB,CAAA;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cogenta/commerce",
3
- "version": "0.2.0",
3
+ "version": "0.5.0",
4
4
  "description": "Contract E: products, carts, orders, payments, tax, shipping, coupons, invoices and subscriptions.",
5
5
  "license": "MPL-2.0",
6
6
  "type": "module",
@@ -27,7 +27,8 @@
27
27
  "directory": "packages/commerce"
28
28
  },
29
29
  "dependencies": {
30
- "@cogenta/core": "0.4.0"
30
+ "@cogenta/channels": "0.3.5",
31
+ "@cogenta/core": "0.9.0"
31
32
  },
32
33
  "devDependencies": {
33
34
  "typescript": "^7.0.2",