@flowselections/floriday-verkoop-module 1.0.87 → 1.0.93

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 (148) hide show
  1. package/dist-lib/components/verkoop/CreateOrderPage.d.ts.map +1 -1
  2. package/dist-lib/components/verkoop/CreateOrderPage.js +2 -2
  3. package/dist-lib/components/verkoop/DiagnoseConnectionDialog.js +1 -1
  4. package/dist-lib/components/verkoop/EditLocalOrderDialog.js +3 -3
  5. package/dist-lib/components/verkoop/OrderControlStatusCard.js +1 -1
  6. package/dist-lib/components/verkoop/OrderKarindelingCard.js +2 -2
  7. package/dist-lib/components/verkoop/OrderLinePackingCard.js +1 -1
  8. package/dist-lib/components/verkoop/OrderPickupMomentPicker.d.ts +2 -2
  9. package/dist-lib/components/verkoop/OrderPickupMomentPicker.d.ts.map +1 -1
  10. package/dist-lib/components/verkoop/OrderPickupMomentPicker.js +10 -23
  11. package/dist-lib/components/verkoop/OrderShipmentsCard.js +1 -1
  12. package/dist-lib/components/verkoop/ProductDimensionsSettings.js +1 -1
  13. package/dist-lib/components/verkoop/SalesOrderDetailView.d.ts +1 -1
  14. package/dist-lib/components/verkoop/SalesOrderDetailView.js +12 -12
  15. package/dist-lib/components/verkoop/SalesOrdersFilterPanel.d.ts +1 -1
  16. package/dist-lib/components/verkoop/SalesOrdersFilters.js +1 -1
  17. package/dist-lib/components/verkoop/SalesOrdersTable.d.ts +1 -1
  18. package/dist-lib/components/verkoop/SalesOrdersTable.js +2 -2
  19. package/dist-lib/components/verkoop/StockConsumptionAlertsBanner.js +1 -1
  20. package/dist-lib/components/verkoop/VerkoopOrdersPage.js +15 -15
  21. package/dist-lib/index.d.ts +4 -5
  22. package/dist-lib/index.d.ts.map +1 -1
  23. package/dist-lib/index.js +5 -6
  24. package/dist-lib/integrations/supabase/auth-middleware.d.ts +1 -1
  25. package/dist-lib/integrations/supabase/client.d.ts +1 -1
  26. package/dist-lib/integrations/supabase/client.server.d.ts +1 -1
  27. package/dist-lib/integrations/supabase/types.d.ts +162 -0
  28. package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
  29. package/dist-lib/lib/belading.server.js +1 -1
  30. package/dist-lib/lib/buffer-events.functions.d.ts +1 -1
  31. package/dist-lib/lib/buffer-events.functions.js +1 -1
  32. package/dist-lib/lib/cart-layers.functions.d.ts +4 -4
  33. package/dist-lib/lib/cart-layers.functions.js +2 -2
  34. package/dist-lib/lib/cart-lock.functions.d.ts +1 -1
  35. package/dist-lib/lib/cart-lock.functions.js +2 -2
  36. package/dist-lib/lib/cart-planning-settings.functions.d.ts +11 -11
  37. package/dist-lib/lib/cart-planning-settings.functions.js +1 -1
  38. package/dist-lib/lib/cart-replan.functions.d.ts +4 -4
  39. package/dist-lib/lib/cart-replan.functions.js +9 -9
  40. package/dist-lib/lib/create-order.functions.d.ts +18 -18
  41. package/dist-lib/lib/create-order.functions.js +15 -15
  42. package/dist-lib/lib/cron/index.d.ts +3 -3
  43. package/dist-lib/lib/cron/index.js +3 -3
  44. package/dist-lib/lib/cron/invoice-due.js +1 -1
  45. package/dist-lib/lib/cron/sync-salesorders.js +2 -2
  46. package/dist-lib/lib/cron/sync-tradeitems.js +1 -1
  47. package/dist-lib/lib/engine-block-alerts.server.js +4 -4
  48. package/dist-lib/lib/expand-group-order-items.d.ts +1 -1
  49. package/dist-lib/lib/floriday-change-diff.check.js +2 -2
  50. package/dist-lib/lib/floriday-gateway.server.d.ts +1 -1
  51. package/dist-lib/lib/floriday-gateway.server.js +2 -2
  52. package/dist-lib/lib/floriday-logistic-labels.functions.d.ts +2 -2
  53. package/dist-lib/lib/floriday-logistic-labels.functions.js +5 -5
  54. package/dist-lib/lib/floriday-mirror.functions.d.ts +1 -1
  55. package/dist-lib/lib/floriday-mirror.functions.d.ts.map +1 -1
  56. package/dist-lib/lib/floriday-mirror.functions.js +19 -12
  57. package/dist-lib/lib/floriday-public.functions.d.ts +7 -7
  58. package/dist-lib/lib/floriday-public.functions.js +2 -2
  59. package/dist-lib/lib/floriday-status.d.ts +1 -1
  60. package/dist-lib/lib/floriday-status.server.d.ts +1 -1
  61. package/dist-lib/lib/floriday-status.server.js +2 -2
  62. package/dist-lib/lib/floriday-sync.js +1 -1
  63. package/dist-lib/lib/floriday-unlinked-products.js +1 -1
  64. package/dist-lib/lib/floriday-writes.functions.d.ts +3 -3
  65. package/dist-lib/lib/floriday-writes.functions.js +3 -3
  66. package/dist-lib/lib/invoice-timing.check.d.ts +2 -0
  67. package/dist-lib/lib/invoice-timing.check.d.ts.map +1 -0
  68. package/dist-lib/lib/invoice-timing.check.js +19 -0
  69. package/dist-lib/lib/invoice-timing.d.ts +2 -0
  70. package/dist-lib/lib/invoice-timing.d.ts.map +1 -1
  71. package/dist-lib/lib/invoice-timing.functions.d.ts +5 -5
  72. package/dist-lib/lib/invoice-timing.functions.js +8 -8
  73. package/dist-lib/lib/invoice-timing.js +22 -4
  74. package/dist-lib/lib/invoice-timing.server.d.ts +8 -3
  75. package/dist-lib/lib/invoice-timing.server.d.ts.map +1 -1
  76. package/dist-lib/lib/invoice-timing.server.js +70 -34
  77. package/dist-lib/lib/load-carriers.functions.d.ts +2 -2
  78. package/dist-lib/lib/load-carriers.functions.js +2 -2
  79. package/dist-lib/lib/load-carriers.server.d.ts +1 -1
  80. package/dist-lib/lib/load-carriers.server.js +1 -1
  81. package/dist-lib/lib/logistics-buffer.server.js +1 -1
  82. package/dist-lib/lib/logistics-engine.functions.d.ts +8 -8
  83. package/dist-lib/lib/logistics-engine.functions.js +6 -6
  84. package/dist-lib/lib/logistics-engine.server.d.ts +1 -1
  85. package/dist-lib/lib/logistics-engine.server.js +4 -4
  86. package/dist-lib/lib/logistics-stock.functions.d.ts +3 -3
  87. package/dist-lib/lib/logistics-stock.functions.js +3 -3
  88. package/dist-lib/lib/order-addresses.functions.d.ts +1 -1
  89. package/dist-lib/lib/order-addresses.functions.js +2 -2
  90. package/dist-lib/lib/order-block-mail.server.js +3 -3
  91. package/dist-lib/lib/order-buffers.functions.d.ts +3 -3
  92. package/dist-lib/lib/order-buffers.functions.js +3 -3
  93. package/dist-lib/lib/order-cancel.server.js +6 -6
  94. package/dist-lib/lib/order-carrier.functions.d.ts +2 -2
  95. package/dist-lib/lib/order-carrier.functions.js +2 -2
  96. package/dist-lib/lib/order-departure.check.d.ts +2 -0
  97. package/dist-lib/lib/order-departure.check.d.ts.map +1 -0
  98. package/dist-lib/lib/order-departure.check.js +25 -0
  99. package/dist-lib/lib/order-departure.d.ts +25 -0
  100. package/dist-lib/lib/order-departure.d.ts.map +1 -0
  101. package/dist-lib/lib/order-departure.js +54 -0
  102. package/dist-lib/lib/order-departure.server.d.ts +4 -0
  103. package/dist-lib/lib/order-departure.server.d.ts.map +1 -0
  104. package/dist-lib/lib/order-departure.server.js +62 -0
  105. package/dist-lib/lib/order-fulfill.functions.d.ts +1 -1
  106. package/dist-lib/lib/order-fulfill.functions.js +3 -3
  107. package/dist-lib/lib/order-item-packing.functions.d.ts +3 -3
  108. package/dist-lib/lib/order-item-packing.functions.js +3 -3
  109. package/dist-lib/lib/order-patch.check.d.ts +2 -0
  110. package/dist-lib/lib/order-patch.check.d.ts.map +1 -0
  111. package/dist-lib/lib/order-patch.check.js +40 -0
  112. package/dist-lib/lib/order-patch.d.ts +18 -0
  113. package/dist-lib/lib/order-patch.d.ts.map +1 -0
  114. package/dist-lib/lib/order-patch.js +105 -0
  115. package/dist-lib/lib/order-pickup.functions.d.ts +10 -15
  116. package/dist-lib/lib/order-pickup.functions.d.ts.map +1 -1
  117. package/dist-lib/lib/order-pickup.functions.js +51 -78
  118. package/dist-lib/lib/order-shipments.functions.d.ts +4 -4
  119. package/dist-lib/lib/order-shipments.functions.js +6 -6
  120. package/dist-lib/lib/plan-coverage.check.js +1 -1
  121. package/dist-lib/lib/plan-coverage.server.d.ts +1 -1
  122. package/dist-lib/lib/plan-coverage.server.js +1 -1
  123. package/dist-lib/lib/product-dimensions.functions.d.ts +2 -2
  124. package/dist-lib/lib/product-dimensions.functions.js +1 -1
  125. package/dist-lib/lib/salesorders-list.functions.d.ts +5 -5
  126. package/dist-lib/lib/salesorders-list.functions.js +4 -4
  127. package/dist-lib/lib/salesorders-list.server.d.ts +2 -2
  128. package/dist-lib/lib/salesorders-list.server.d.ts.map +1 -1
  129. package/dist-lib/lib/salesorders-list.server.js +39 -53
  130. package/dist-lib/lib/salesorders-mapping.d.ts +3 -3
  131. package/dist-lib/lib/salesorders-mapping.js +2 -2
  132. package/dist-lib/lib/salesorders.functions.d.ts +7 -7
  133. package/dist-lib/lib/salesorders.functions.js +20 -20
  134. package/dist-lib/lib/stock-consumption-alerts.functions.d.ts +2 -2
  135. package/dist-lib/lib/stock-consumption-alerts.functions.js +1 -1
  136. package/dist-lib/lib/tradeitems.functions.d.ts +1068 -1068
  137. package/dist-lib/lib/tradeitems.functions.js +3 -3
  138. package/dist-lib/lib/useAllowedLoadCarriers.d.ts +1 -1
  139. package/dist-lib/lib/useAllowedLoadCarriers.js +1 -1
  140. package/dist-lib/lib/useBufferEvents.d.ts +1 -1
  141. package/dist-lib/lib/useBufferEvents.js +2 -2
  142. package/dist-lib/lib/useLocalSalesOrderDetailQuery.d.ts +2 -2
  143. package/dist-lib/lib/useLocalSalesOrderDetailQuery.js +2 -2
  144. package/dist-lib/lib/useSalesOrderDetailQuery.d.ts +1 -1
  145. package/dist-lib/lib/useSalesOrderDetailQuery.js +2 -2
  146. package/dist-lib/lib/useSalesOrdersQuery.d.ts +2 -2
  147. package/dist-lib/lib/useSalesOrdersQuery.js +3 -3
  148. package/package.json +2 -2
@@ -0,0 +1,54 @@
1
+ // Ophaal- en aanmeldmoment van een order, zoals de Logistiek Engine het
2
+ // berekent (logistics_order_departure). Deze module rekent zelf niets uit:
3
+ // alleen normaliseren en weergeven.
4
+ const TIME_ZONE = "Europe/Amsterdam";
5
+ function str(v) {
6
+ return typeof v === "string" && v.trim() !== "" ? v : null;
7
+ }
8
+ /** Engine-antwoord veilig omzetten; ontbrekende velden worden null. */
9
+ export function normalizeDeparture(raw) {
10
+ if (!raw || typeof raw !== "object" || Array.isArray(raw))
11
+ return null;
12
+ const r = raw;
13
+ return {
14
+ ok: r.ok === true,
15
+ reason: str(r.reason),
16
+ carrierId: str(r.carrierId),
17
+ momentKey: str(r.momentKey),
18
+ departureAt: str(r.departureAt),
19
+ signupDeadline: str(r.signupDeadline),
20
+ lateSignup: r.lateSignup === true,
21
+ };
22
+ }
23
+ /** "di 20 okt 15:00" in Nederlandse tijd. */
24
+ export function formatMoment(iso) {
25
+ if (!iso)
26
+ return null;
27
+ const d = new Date(iso);
28
+ if (Number.isNaN(d.getTime()))
29
+ return null;
30
+ const date = d
31
+ .toLocaleDateString("nl-NL", { timeZone: TIME_ZONE, weekday: "short", day: "numeric", month: "short" })
32
+ .replace(/\./g, "");
33
+ const time = d.toLocaleTimeString("nl-NL", { timeZone: TIME_ZONE, hour: "2-digit", minute: "2-digit", hour12: false });
34
+ return `${date} ${time}`;
35
+ }
36
+ export const DEPARTURE_UNKNOWN = "Ophaalmoment nu niet bekend. Ververs over een minuut.";
37
+ export function departureView(dep) {
38
+ if (!dep)
39
+ return { text: null, short: null, lateSignup: false, reason: DEPARTURE_UNKNOWN };
40
+ const pickup = dep.ok ? formatMoment(dep.departureAt) : null;
41
+ if (!pickup) {
42
+ return {
43
+ text: null,
44
+ short: null,
45
+ lateSignup: false,
46
+ reason: dep.reason ?? "Er is geen ophaalmoment bekend voor deze order.",
47
+ };
48
+ }
49
+ const signup = formatMoment(dep.signupDeadline);
50
+ const parts = [`${pickup} ophalen`];
51
+ if (signup)
52
+ parts.push(`aanmelden ${signup}`);
53
+ return { text: parts.join(" · "), short: pickup, lateSignup: dep.lateSignup, reason: dep.ok ? null : dep.reason };
54
+ }
@@ -0,0 +1,4 @@
1
+ import { type OrderDeparture } from "./order-departure.js";
2
+ export declare function loadOrderDepartures(supabase: any, orderIds: string[]): Promise<Map<string, OrderDeparture>>;
3
+ export declare function forgetOrderDeparture(orderId: string): void;
4
+ //# sourceMappingURL=order-departure.server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"order-departure.server.d.ts","sourceRoot":"","sources":["../../src/lib/order-departure.server.ts"],"names":[],"mappings":"AAGA,OAAO,EAAsB,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAM5E,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,GAAG,EACb,QAAQ,EAAE,MAAM,EAAE,GACjB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAiDtC;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,QAEnD"}
@@ -0,0 +1,62 @@
1
+ // Leest ophaal-/aanmeldmomenten bij de Engine. Gebruikt de lijstversie
2
+ // (logistics_order_departure_list) als die bestaat, anders één aanroep per
3
+ // order (maximaal 12 tegelijk). Fout => order ontbreekt in het resultaat.
4
+ import { normalizeDeparture } from "./order-departure.js";
5
+ const PARALLEL = 12;
6
+ const CACHE_MS = 30000;
7
+ const cache = new Map();
8
+ export async function loadOrderDepartures(supabase, orderIds) {
9
+ const out = new Map();
10
+ const now = Date.now();
11
+ const todo = [];
12
+ for (const id of Array.from(new Set(orderIds))) {
13
+ const hit = cache.get(id);
14
+ if (hit && now - hit.at < CACHE_MS)
15
+ out.set(id, hit.dep);
16
+ else
17
+ todo.push(id);
18
+ }
19
+ if (todo.length === 0)
20
+ return out;
21
+ // Lijstversie (Engine 1.0.162+): één aanroep.
22
+ try {
23
+ const { data, error } = await supabase.rpc("logistics_order_departure_list", { p_order_ids: todo });
24
+ if (!error) {
25
+ const rows = Array.isArray(data) ? data : [];
26
+ for (const row of rows) {
27
+ const r = (row && typeof row === "object" && "departure" in row ? row.departure : row);
28
+ const id = String(row?.order_id ?? row?.orderId ?? r?.orderId ?? "");
29
+ const dep = normalizeDeparture(r);
30
+ if (id && dep) {
31
+ out.set(id, dep);
32
+ cache.set(id, { at: now, dep });
33
+ }
34
+ }
35
+ return out;
36
+ }
37
+ }
38
+ catch {
39
+ /* lijstversie niet beschikbaar: per order */
40
+ }
41
+ for (let i = 0; i < todo.length; i += PARALLEL) {
42
+ await Promise.all(todo.slice(i, i + PARALLEL).map(async (id) => {
43
+ try {
44
+ const { data, error } = await supabase.rpc("logistics_order_departure", { p_order_id: id });
45
+ if (error)
46
+ return;
47
+ const dep = normalizeDeparture(data);
48
+ if (dep) {
49
+ out.set(id, dep);
50
+ cache.set(id, { at: now, dep });
51
+ }
52
+ }
53
+ catch {
54
+ /* fail closed: onbekend */
55
+ }
56
+ }));
57
+ }
58
+ return out;
59
+ }
60
+ export function forgetOrderDeparture(orderId) {
61
+ cache.delete(orderId);
62
+ }
@@ -1,5 +1,5 @@
1
1
  export declare const markOrdersShipped: import("@tanstack/start-client-core").OptionalFetcher<readonly [import("@tanstack/start-client-core").FunctionMiddlewareAfterServer<{}, unknown, undefined, {
2
- supabase: import("../integrations/supabase/auth-middleware").AuthedSupabaseClient;
2
+ supabase: import("../integrations/supabase/auth-middleware.js").AuthedSupabaseClient;
3
3
  userId: string;
4
4
  claims: import("@supabase/auth-js").User;
5
5
  }, undefined, undefined, undefined>], (input: unknown) => {
@@ -3,8 +3,8 @@
3
3
  // vereist bewijs van vertrek (alle karren verzonden of dekkende zendingen).
4
4
  import { createServerFn } from "@tanstack/react-start";
5
5
  import { z } from "zod";
6
- import { requireSupabaseAuth } from "../integrations/supabase/auth-middleware";
7
- import { resolveOrderRow } from "./order-row.server";
6
+ import { requireSupabaseAuth } from "../integrations/supabase/auth-middleware.js";
7
+ import { resolveOrderRow } from "./order-row.server.js";
8
8
  const Input = z.object({
9
9
  orderIds: z.array(z.string().min(1)).min(1).max(200),
10
10
  });
@@ -12,7 +12,7 @@ export const markOrdersShipped = createServerFn({ method: "POST" })
12
12
  .middleware([requireSupabaseAuth])
13
13
  .inputValidator((input) => Input.parse(input))
14
14
  .handler(async ({ data, context }) => {
15
- const { supabaseAdmin } = await import("../integrations/supabase/client.server");
15
+ const { supabaseAdmin } = await import("../integrations/supabase/client.server.js");
16
16
  const results = [];
17
17
  for (const raw of data.orderIds) {
18
18
  try {
@@ -14,7 +14,7 @@ export interface OrderItemPackingRow {
14
14
  * Floriday sales-order-id zijn (resolveOrderRow vertaalt dat).
15
15
  */
16
16
  export declare const listOrderItemPacking: import("@tanstack/start-client-core").OptionalFetcher<readonly [import("@tanstack/start-client-core").FunctionMiddlewareAfterServer<{}, unknown, undefined, {
17
- supabase: import("../integrations/supabase/auth-middleware").AuthedSupabaseClient;
17
+ supabase: import("../integrations/supabase/auth-middleware.js").AuthedSupabaseClient;
18
18
  userId: string;
19
19
  claims: import("@supabase/auth-js").User;
20
20
  }, undefined, undefined, undefined>], (input: unknown) => {
@@ -24,7 +24,7 @@ export declare const listOrderItemPacking: import("@tanstack/start-client-core")
24
24
  }>>;
25
25
  /** Zet de belading van één orderregel handmatig vast. */
26
26
  export declare const setOrderItemPacking: import("@tanstack/start-client-core").OptionalFetcher<readonly [import("@tanstack/start-client-core").FunctionMiddlewareAfterServer<{}, unknown, undefined, {
27
- supabase: import("../integrations/supabase/auth-middleware").AuthedSupabaseClient;
27
+ supabase: import("../integrations/supabase/auth-middleware.js").AuthedSupabaseClient;
28
28
  userId: string;
29
29
  claims: import("@supabase/auth-js").User;
30
30
  }, undefined, undefined, undefined>], (input: unknown) => {
@@ -38,7 +38,7 @@ export declare const setOrderItemPacking: import("@tanstack/start-client-core").
38
38
  }>>;
39
39
  /** Haal de handmatige markering weg; de regel volgt weer de standaardbelading. */
40
40
  export declare const clearOrderItemPackingLock: import("@tanstack/start-client-core").OptionalFetcher<readonly [import("@tanstack/start-client-core").FunctionMiddlewareAfterServer<{}, unknown, undefined, {
41
- supabase: import("../integrations/supabase/auth-middleware").AuthedSupabaseClient;
41
+ supabase: import("../integrations/supabase/auth-middleware.js").AuthedSupabaseClient;
42
42
  userId: string;
43
43
  claims: import("@supabase/auth-js").User;
44
44
  }, undefined, undefined, undefined>], (input: unknown) => {
@@ -9,10 +9,10 @@
9
9
  // De correctie is strikt lokaal: hij wordt NOOIT teruggestuurd als wijziging
10
10
  // van het Floriday-artikel zelf — dat loopt uitsluitend via de voorraad-module.
11
11
  import { createServerFn } from "@tanstack/react-start";
12
- import { productNameForStorage } from "./product-name";
12
+ import { productNameForStorage } from "./product-name.js";
13
13
  import { z } from "zod";
14
- import { requireSupabaseAuth } from "../integrations/supabase/auth-middleware";
15
- import { resolveOrderRow } from "./order-row.server";
14
+ import { requireSupabaseAuth } from "../integrations/supabase/auth-middleware.js";
15
+ import { resolveOrderRow } from "./order-row.server.js";
16
16
  /**
17
17
  * Belading per bestelregel van één order, inclusief de handmatige
18
18
  * "vastgezet"-markering. `orderId` mag een lokale orders.id of een
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=order-patch.check.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"order-patch.check.d.ts","sourceRoot":"","sources":["../../src/lib/order-patch.check.ts"],"names":[],"mappings":""}
@@ -0,0 +1,40 @@
1
+ // Controle zonder testomgeving: `bun src/lib/order-patch.check.ts`.
2
+ import { diffPatch, distinctFilter } from "./order-patch.js";
3
+ let failed = 0;
4
+ const eq = (name, got, want) => {
5
+ const ok = JSON.stringify(got) === JSON.stringify(want);
6
+ if (!ok)
7
+ failed++;
8
+ console.log(`${ok ? "OK " : "FOUT"} ${name}${ok ? "" : ` — kreeg ${JSON.stringify(got)}`}`);
9
+ };
10
+ const row = {
11
+ status: "Nog te picken",
12
+ delivery_date: "2026-10-16",
13
+ invoice_due_at: "2026-10-16T16:00:00+00:00",
14
+ total: "12.50",
15
+ custom_fields: { a: 1, b: { c: 2 } },
16
+ };
17
+ // Niets veranderd → niets opslaan
18
+ eq("alles gelijk → leeg", diffPatch(row, { ...row }), {});
19
+ eq("zelfde moment, andere notatie", diffPatch(row, { invoice_due_at: "2026-10-16T16:00:00.000Z" }), {});
20
+ eq("jsonb andere volgorde", diffPatch(row, { custom_fields: { b: { c: 2 }, a: 1 } }), {});
21
+ eq("bedrag 12.5 = 12.50", diffPatch(row, { total: "12.5" }), {});
22
+ eq("leeg blijft leeg", diffPatch({ invoice_due_at: null }, { invoice_due_at: null }), {});
23
+ // Echte wijziging → wél opslaan
24
+ eq("nieuwe status uit Floriday", diffPatch(row, { status: "geannuleerd" }), { status: "geannuleerd" });
25
+ eq("nieuwe leverdatum", diffPatch(row, { delivery_date: "2026-10-17" }), { delivery_date: "2026-10-17" });
26
+ eq("gewijzigd factuurmoment", diffPatch(row, { invoice_due_at: "2026-10-17T16:00:00.000Z" }), { invoice_due_at: "2026-10-17T16:00:00.000Z" });
27
+ eq("gewijzigde extra gegevens", Object.keys(diffPatch(row, { custom_fields: { a: 2, b: { c: 2 } } })), ["custom_fields"]);
28
+ eq("leeg → gevuld", diffPatch({ invoice_due_at: null }, { invoice_due_at: "2026-10-17T16:00:00.000Z" }), { invoice_due_at: "2026-10-17T16:00:00.000Z" });
29
+ eq("gevuld → leeg", diffPatch(row, { invoice_due_at: null }), { invoice_due_at: null });
30
+ eq("alleen gewijzigd veld mee", Object.keys(diffPatch(row, { status: row.status, total: "13" })), ["total"]);
31
+ // Voorwaarde in de database
32
+ eq("filter naar leeg", distinctFilter({ invoice_due_at: null }), "invoice_due_at.not.is.null");
33
+ eq("filter met waarde", distinctFilter({ status: "Gereed voor facturatie" }), 'status.is.null,status.neq."Gereed voor facturatie"');
34
+ eq("filter jsonb", distinctFilter({ custom_fields: { a: "x,y" } }), 'custom_fields.is.null,custom_fields.neq."{\\"a\\":\\"x,y\\"}"');
35
+ eq("lege patch → geen filter", distinctFilter({}), null);
36
+ if (failed) {
37
+ console.log(`${failed} controle(s) mislukt`);
38
+ process.exit(1);
39
+ }
40
+ console.log("Alle controles geslaagd");
@@ -0,0 +1,18 @@
1
+ export declare function sameJson(a: unknown, b: unknown): boolean;
2
+ export declare function sameValue(key: string, prev: unknown, next: unknown): boolean;
3
+ /** Alleen de velden die echt anders zijn dan de huidige rij. */
4
+ export declare function diffPatch<T extends Record<string, unknown>>(current: Record<string, unknown> | null | undefined, patch: T): Partial<T>;
5
+ /**
6
+ * PostgREST `or`-filter: de rij wordt alleen geraakt als minstens één veld uit
7
+ * de patch in de database anders is (IS DISTINCT FROM). Leeg → null.
8
+ */
9
+ export declare function distinctFilter(patch: Record<string, unknown>): string | null;
10
+ /**
11
+ * Slaat alleen gewijzigde velden op, met de "alleen als anders"-voorwaarde ook
12
+ * in de database. Geeft het aantal echt bijgewerkte rijen (0 of 1).
13
+ */
14
+ export declare function updateOrderIfChanged(supabase: any, orderId: string, current: Record<string, unknown> | null | undefined, patch: Record<string, unknown>): Promise<{
15
+ written: number;
16
+ changed: string[];
17
+ }>;
18
+ //# sourceMappingURL=order-patch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"order-patch.d.ts","sourceRoot":"","sources":["../../src/lib/order-patch.ts"],"names":[],"mappings":"AAwBA,wBAAgB,QAAQ,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,GAAG,OAAO,CAExD;AAQD,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAe5E;AAED,gEAAgE;AAChE,wBAAgB,SAAS,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACzD,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,EACnD,KAAK,EAAE,CAAC,GACP,OAAO,CAAC,CAAC,CAAC,CAQZ;AAMD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,IAAI,CAY5E;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,GAAG,EACb,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,EACnD,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAYjD"}
@@ -0,0 +1,105 @@
1
+ // Alleen opslaan wat echt verandert. Elke opslag op `orders` laat triggers van
2
+ // andere modules afgaan (planning, factuurkoppelingen, updated_at), dus een
3
+ // gelijke waarde terugschrijven mag nooit.
4
+ //
5
+ // 1) diffPatch: vergelijking vooraf (jsonb op inhoud, tijdstippen als moment).
6
+ // 2) distinctFilter: dezelfde voorwaarde ook in de database (IS DISTINCT FROM),
7
+ // zodat twee rondes tegelijk niet allebei schrijven.
8
+ const DATE_KEYS = new Set(["delivery_date", "order_date"]);
9
+ const NUMERIC_KEYS = new Set(["total"]);
10
+ function canon(v) {
11
+ if (Array.isArray(v))
12
+ return v.map(canon);
13
+ if (v && typeof v === "object") {
14
+ const out = {};
15
+ for (const k of Object.keys(v).sort()) {
16
+ const x = v[k];
17
+ if (x !== undefined)
18
+ out[k] = canon(x);
19
+ }
20
+ return out;
21
+ }
22
+ return v;
23
+ }
24
+ export function sameJson(a, b) {
25
+ return JSON.stringify(canon(a ?? null)) === JSON.stringify(canon(b ?? null));
26
+ }
27
+ function asInstant(v) {
28
+ if (v === null || v === undefined || v === "")
29
+ return null;
30
+ const t = new Date(String(v)).getTime();
31
+ return Number.isNaN(t) ? null : t;
32
+ }
33
+ export function sameValue(key, prev, next) {
34
+ const pNull = prev === null || prev === undefined;
35
+ const nNull = next === null || next === undefined;
36
+ if (pNull || nNull)
37
+ return pNull && nNull;
38
+ if (typeof next === "object" || typeof prev === "object")
39
+ return sameJson(prev, next);
40
+ if (NUMERIC_KEYS.has(key))
41
+ return Number(prev) === Number(next);
42
+ if (DATE_KEYS.has(key))
43
+ return String(prev).slice(0, 10) === String(next).slice(0, 10);
44
+ const ps = String(prev);
45
+ const ns = String(next);
46
+ if (ps === ns)
47
+ return true;
48
+ // Tijdstippen in een andere notatie/tijdzone: zelfde moment = gelijk.
49
+ if (/^\d{4}-\d{2}-\d{2}T/.test(ps) && /^\d{4}-\d{2}-\d{2}T/.test(ns)) {
50
+ return asInstant(ps) === asInstant(ns);
51
+ }
52
+ return false;
53
+ }
54
+ /** Alleen de velden die echt anders zijn dan de huidige rij. */
55
+ export function diffPatch(current, patch) {
56
+ const out = {};
57
+ for (const k of Object.keys(patch)) {
58
+ const next = patch[k];
59
+ if (next === undefined)
60
+ continue;
61
+ if (!sameValue(k, current?.[k], next))
62
+ out[k] = next;
63
+ }
64
+ return out;
65
+ }
66
+ function quote(v) {
67
+ return `"${v.replace(/\\/g, "\\\\").replace(/"/g, '\\"')}"`;
68
+ }
69
+ /**
70
+ * PostgREST `or`-filter: de rij wordt alleen geraakt als minstens één veld uit
71
+ * de patch in de database anders is (IS DISTINCT FROM). Leeg → null.
72
+ */
73
+ export function distinctFilter(patch) {
74
+ const parts = [];
75
+ for (const [k, v] of Object.entries(patch)) {
76
+ if (v === undefined)
77
+ continue;
78
+ if (v === null) {
79
+ parts.push(`${k}.not.is.null`);
80
+ continue;
81
+ }
82
+ const lit = typeof v === "object" ? JSON.stringify(v) : String(v);
83
+ parts.push(`${k}.is.null`, `${k}.neq.${quote(lit)}`);
84
+ }
85
+ return parts.length ? parts.join(",") : null;
86
+ }
87
+ /**
88
+ * Slaat alleen gewijzigde velden op, met de "alleen als anders"-voorwaarde ook
89
+ * in de database. Geeft het aantal echt bijgewerkte rijen (0 of 1).
90
+ */
91
+ export async function updateOrderIfChanged(supabase, orderId, current, patch) {
92
+ const diff = diffPatch(current, patch);
93
+ const changed = Object.keys(diff);
94
+ if (changed.length === 0)
95
+ return { written: 0, changed };
96
+ const filter = distinctFilter(diff);
97
+ const { data, error } = await supabase.from("orders")
98
+ .update(diff)
99
+ .eq("id", orderId)
100
+ .or(filter)
101
+ .select("id");
102
+ if (error)
103
+ throw new Error(error.message);
104
+ return { written: (data ?? []).length, changed };
105
+ }
@@ -1,33 +1,28 @@
1
+ import { type DepartureView, type OrderDeparture } from "./order-departure.js";
1
2
  export interface PickupMomentOption {
2
- /** Stabiele sleutel: pickupdatum|aanmeldtijd|aanlevertijd. */
3
+ /** Sleutel in Engine-formaat: "dagen@ophaaltijd|dagen@aanmeldtijd". */
3
4
  key: string;
4
- pickupDate: string;
5
- pickupTime: string | null;
6
- signupDate: string | null;
7
- signupTime: string | null;
8
5
  deliveryTime: string | null;
9
6
  label: string;
10
7
  }
11
- export declare function buildPickupOptions(carrier: any | null, deliveryISO: string | null): PickupMomentOption[];
8
+ /** Keuzes uit de vervoerdersmomenten — alleen tijden en dagen, geen datum. */
9
+ export declare function carrierMomentOptions(carrier: any | null): PickupMomentOption[];
12
10
  export declare const getOrderPickupMoment: import("@tanstack/start-client-core").OptionalFetcher<readonly [import("@tanstack/start-client-core").FunctionMiddlewareAfterServer<{}, unknown, undefined, {
13
- supabase: import("../integrations/supabase/auth-middleware").AuthedSupabaseClient;
11
+ supabase: import("../integrations/supabase/auth-middleware.js").AuthedSupabaseClient;
14
12
  userId: string;
15
13
  claims: import("@supabase/auth-js").User;
16
14
  }, undefined, undefined, undefined>], (input: unknown) => {
17
15
  orderId: string;
18
16
  }, Promise<{
19
- selectedKey: null;
20
- selected: null;
21
- options: PickupMomentOption[];
22
- hasCarrier?: undefined;
23
- } | {
24
- selectedKey: string;
25
- selected: PickupMomentOption;
17
+ view: DepartureView;
18
+ departure: OrderDeparture | null;
19
+ selectedKey: string | null;
26
20
  options: PickupMomentOption[];
27
21
  hasCarrier: boolean;
22
+ deliveryTime: string | null;
28
23
  }>>;
29
24
  export declare const setOrderPickupMoment: import("@tanstack/start-client-core").OptionalFetcher<readonly [import("@tanstack/start-client-core").FunctionMiddlewareAfterServer<{}, unknown, undefined, {
30
- supabase: import("../integrations/supabase/auth-middleware").AuthedSupabaseClient;
25
+ supabase: import("../integrations/supabase/auth-middleware.js").AuthedSupabaseClient;
31
26
  userId: string;
32
27
  claims: import("@supabase/auth-js").User;
33
28
  }, undefined, undefined, undefined>], (input: unknown) => {
@@ -1 +1 @@
1
- {"version":3,"file":"order-pickup.functions.d.ts","sourceRoot":"","sources":["../../src/lib/order-pickup.functions.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,kBAAkB;IACjC,8DAA8D;IAC9D,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC;CACf;AAgBD,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,GAAG,GAAG,IAAI,EACnB,WAAW,EAAE,MAAM,GAAG,IAAI,GACzB,kBAAkB,EAAE,CAiDtB;AAqBD,eAAO,MAAM,oBAAoB;;;;8CAEP,OAAO;;;;;aAYgC,kBAAkB,EAAE;;;;;;;GAiCjF,CAAC;AAEL,eAAO,MAAM,oBAAoB;;;;8CAEP,OAAO;;;;;GAqB7B,CAAC"}
1
+ {"version":3,"file":"order-pickup.functions.d.ts","sourceRoot":"","sources":["../../src/lib/order-pickup.functions.ts"],"names":[],"mappings":"AAMA,OAAO,EAAiB,KAAK,aAAa,EAAE,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAG3F,MAAM,WAAW,kBAAkB;IACjC,uEAAuE;IACvE,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC;CACf;AAOD,8EAA8E;AAC9E,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,GAAG,GAAG,IAAI,GAAG,kBAAkB,EAAE,CAoB9E;AAaD,eAAO,MAAM,oBAAoB;;;;8CAEP,OAAO;;;;;;;;;GAyC7B,CAAC;AAEL,eAAO,MAAM,oBAAoB;;;;8CAEP,OAAO;;;;;GAoB7B,CAAC"}
@@ -1,75 +1,47 @@
1
- // Ophaalmoment (pickup moment) van een order lezen en wijzigen.
1
+ // Ophaalmoment van een order: tonen uit de Logistiek Engine, kiezen uit de
2
+ // momenten van de vervoerder. Deze module rekent zelf geen datum uit.
2
3
  import { createServerFn } from "@tanstack/react-start";
3
4
  import { z } from "zod";
4
- import { requireSupabaseAuth } from "../integrations/supabase/auth-middleware";
5
- import { normalizeTime } from "./carrier-availability";
6
- import { assertRowsAffected, resolveOrderRow } from "./order-row.server";
7
- function addDaysISO(iso, n) {
8
- const [y, m, d] = iso.split("-").map(Number);
9
- const dt = new Date(y, (m ?? 1) - 1, d ?? 1);
10
- dt.setDate(dt.getDate() + n);
11
- return `${dt.getFullYear()}-${String(dt.getMonth() + 1).padStart(2, "0")}-${String(dt.getDate()).padStart(2, "0")}`;
5
+ import { requireSupabaseAuth } from "../integrations/supabase/auth-middleware.js";
6
+ import { normalizeTime } from "./carrier-availability.js";
7
+ import { departureView } from "./order-departure.js";
8
+ import { assertRowsAffected, resolveOrderRow } from "./order-row.server.js";
9
+ function daysText(n, what) {
10
+ if (n <= 0)
11
+ return `${what} op de leverdag`;
12
+ return `${what} ${n} werkdag${n === 1 ? "" : "en"} vóór levering`;
12
13
  }
13
- function fmtDate(iso) {
14
- const [y, m, d] = iso.split("-").map(Number);
15
- const dt = new Date(y, (m ?? 1) - 1, d ?? 1);
16
- if (Number.isNaN(dt.getTime()))
17
- return iso;
18
- return dt.toLocaleDateString("nl-NL", { weekday: "short", day: "numeric", month: "short" });
19
- }
20
- export function buildPickupOptions(carrier, deliveryISO) {
21
- if (!carrier || !deliveryISO)
22
- return [];
23
- const raw = Array.isArray(carrier.pickup_moments) ? carrier.pickup_moments : [];
24
- const moments = raw.length > 0
25
- ? raw
26
- : [carrier.signup_time_1, carrier.signup_time_2]
27
- .filter(Boolean)
28
- .map((t) => ({
29
- signup_time: t,
30
- signup_days: carrier.signup_days_before_delivery ?? 0,
31
- delivery_days: carrier.delivery_days ?? 0,
32
- }));
14
+ /** Keuzes uit de vervoerdersmomenten — alleen tijden en dagen, geen datum. */
15
+ export function carrierMomentOptions(carrier) {
16
+ const raw = Array.isArray(carrier?.pickup_moments) ? carrier.pickup_moments : [];
33
17
  const seen = new Set();
34
18
  const out = [];
35
- for (const m of moments) {
36
- const deliveryDays = Math.max(0, Number(m.delivery_days ?? carrier.delivery_days ?? 0) || 0);
37
- const pickupDate = addDaysISO(deliveryISO, -deliveryDays);
38
- const signupDays = Math.max(0, Number(m.signup_days ?? carrier.signup_days_before_delivery ?? 0) || 0);
39
- const signupTime = normalizeTime(m.signup_time);
40
- const signupDate = signupTime ? addDaysISO(pickupDate, -signupDays) : null;
41
- const pickupTime = normalizeTime(m.pickup_time);
42
- const deliveryTime = normalizeTime(m.delivery_time);
43
- const key = `${pickupDate}|${signupTime ?? ""}|${deliveryTime ?? ""}`;
19
+ for (const m of raw) {
20
+ const pt = normalizeTime(m.pickup_time);
21
+ if (!pt)
22
+ continue;
23
+ const pd = Math.max(0, Number(m.pickup_days ?? 0) || 0);
24
+ const st = normalizeTime(m.signup_time);
25
+ const sd = Math.max(0, Number(m.signup_days ?? pd) || 0);
26
+ const key = `${pd}@${pt}${st ? `|${sd}@${st}` : ""}`;
44
27
  if (seen.has(key))
45
28
  continue;
46
29
  seen.add(key);
47
- const parts = [`${fmtDate(pickupDate)}${pickupTime ? ` ${pickupTime}` : ""} ophalen`];
48
- if (signupDate && signupTime)
49
- parts.push(`aanmelden ${fmtDate(signupDate)} ${signupTime}`);
50
- if (deliveryTime)
51
- parts.push(`aanlevering ${deliveryTime}`);
52
- out.push({
53
- key,
54
- pickupDate,
55
- pickupTime,
56
- signupDate,
57
- signupTime,
58
- deliveryTime,
59
- label: parts.join(" · "),
60
- });
30
+ const dt = normalizeTime(m.delivery_time);
31
+ const parts = [`${daysText(pd, "ophalen")} ${pt}`];
32
+ if (st)
33
+ parts.push(`aanmelden ${st}`);
34
+ if (dt)
35
+ parts.push(`aanlevering ${dt}`);
36
+ out.push({ key, deliveryTime: dt, label: parts.join(" · ") });
61
37
  }
62
- out.sort((a, b) => a.pickupDate === b.pickupDate
63
- ? (a.deliveryTime ?? "99:99").localeCompare(b.deliveryTime ?? "99:99")
64
- : a.pickupDate.localeCompare(b.pickupDate));
65
38
  return out;
66
39
  }
67
40
  async function findOrder(supabase, orderId) {
68
- // DTO-id kan een Floriday salesOrderId zijn; resolveOrderRow vertaalt dat.
69
41
  const row = await resolveOrderRow(supabase, orderId);
70
42
  const { data, error } = await supabase
71
43
  .from("orders")
72
- .select("id, buffer_id, delivery_date, custom_fields")
44
+ .select("id, custom_fields")
73
45
  .eq("id", row.id)
74
46
  .maybeSingle();
75
47
  if (error)
@@ -89,48 +61,47 @@ export const getOrderPickupMoment = createServerFn({ method: "GET" })
89
61
  order = null;
90
62
  }
91
63
  if (!order) {
92
- return { selectedKey: null, selected: null, options: [] };
64
+ return {
65
+ view: departureView(null),
66
+ departure: null,
67
+ selectedKey: null,
68
+ options: [],
69
+ hasCarrier: false,
70
+ deliveryTime: null,
71
+ };
93
72
  }
94
73
  const cf = (order.custom_fields ?? {});
95
74
  const carrierId = cf.carrier ? String(cf.carrier) : null;
96
75
  let carrier = null;
97
76
  if (carrierId) {
98
- const { data: c } = await supabase
99
- .from("carriers")
100
- .select("delivery_days, signup_time_1, signup_time_2, signup_days_before_delivery, pickup_weekdays, delivery_weekdays, pickup_moments")
101
- .eq("id", carrierId)
102
- .maybeSingle();
77
+ const { data: c } = await supabase.from("carriers").select("pickup_moments").eq("id", carrierId).maybeSingle();
103
78
  carrier = c ?? null;
104
79
  }
105
- const options = buildPickupOptions(carrier, order.delivery_date);
106
- const storedKey = cf.pickup_moment ? String(cf.pickup_moment) : null;
107
- let selected = (storedKey ? options.find((o) => o.key === storedKey) : undefined) ?? null;
108
- if (!selected && cf.delivery_time) {
109
- const t = normalizeTime(cf.delivery_time);
110
- selected = options.find((o) => o.deliveryTime === t) ?? null;
111
- }
112
- if (!selected)
113
- selected = options[0] ?? null;
80
+ const { loadOrderDepartures } = await import("./order-departure.server.js");
81
+ const departure = (await loadOrderDepartures(supabase, [order.id])).get(order.id) ?? null;
82
+ const options = carrierMomentOptions(carrier);
83
+ const selectedKey = departure?.momentKey ?? (cf.pickup_moment ? String(cf.pickup_moment) : null);
114
84
  return {
115
- selectedKey: selected?.key ?? null,
116
- selected,
85
+ view: departureView(departure),
86
+ departure,
87
+ selectedKey: options.some((o) => o.key === selectedKey) ? selectedKey : null,
117
88
  options,
118
89
  hasCarrier: !!carrier,
90
+ deliveryTime: normalizeTime(cf.delivery_time),
119
91
  };
120
92
  });
121
93
  export const setOrderPickupMoment = createServerFn({ method: "POST" })
122
94
  .middleware([requireSupabaseAuth])
123
- .inputValidator((input) => z.object({ orderId: z.string().min(1), key: z.string().min(1) }).parse(input))
95
+ .inputValidator((input) => z.object({ orderId: z.string().min(1), key: z.string().min(1).max(64) }).parse(input))
124
96
  .handler(async ({ data, context }) => {
125
97
  const supabase = context.supabase;
126
98
  const order = await findOrder(supabase, data.orderId);
127
99
  if (!order)
128
100
  throw new Error("Order niet gevonden");
129
- const deliveryTime = data.key.split("|")[2] || null;
130
101
  const cf = { ...(order.custom_fields ?? {}) };
102
+ if (cf.pickup_moment === data.key)
103
+ return { ok: true };
131
104
  cf.pickup_moment = data.key;
132
- if (deliveryTime)
133
- cf.delivery_time = deliveryTime;
134
105
  const { data: updated, error } = await supabase.from("orders")
135
106
  .update({ custom_fields: cf })
136
107
  .eq("id", order.id)
@@ -138,5 +109,7 @@ export const setOrderPickupMoment = createServerFn({ method: "POST" })
138
109
  if (error)
139
110
  throw new Error(error.message);
140
111
  assertRowsAffected(updated, "Ophaalmoment opslaan");
112
+ const { forgetOrderDeparture } = await import("./order-departure.server.js");
113
+ forgetOrderDeparture(order.id);
141
114
  return { ok: true };
142
115
  });
@@ -1,5 +1,5 @@
1
1
  export declare const listOrderShipments: import("@tanstack/start-client-core").OptionalFetcher<readonly [import("@tanstack/start-client-core").FunctionMiddlewareAfterServer<{}, unknown, undefined, {
2
- supabase: import("../integrations/supabase/auth-middleware").AuthedSupabaseClient;
2
+ supabase: import("../integrations/supabase/auth-middleware.js").AuthedSupabaseClient;
3
3
  userId: string;
4
4
  claims: import("@supabase/auth-js").User;
5
5
  }, undefined, undefined, undefined>], (input: unknown) => {
@@ -40,7 +40,7 @@ export declare const listOrderShipments: import("@tanstack/start-client-core").O
40
40
  }[];
41
41
  }>>;
42
42
  export declare const createShipment: import("@tanstack/start-client-core").OptionalFetcher<readonly [import("@tanstack/start-client-core").FunctionMiddlewareAfterServer<{}, unknown, undefined, {
43
- supabase: import("../integrations/supabase/auth-middleware").AuthedSupabaseClient;
43
+ supabase: import("../integrations/supabase/auth-middleware.js").AuthedSupabaseClient;
44
44
  userId: string;
45
45
  claims: import("@supabase/auth-js").User;
46
46
  }, undefined, undefined, undefined>], (input: unknown) => {
@@ -60,7 +60,7 @@ export declare const createShipment: import("@tanstack/start-client-core").Optio
60
60
  shipmentId: string;
61
61
  }>>;
62
62
  export declare const markShipmentShipped: import("@tanstack/start-client-core").OptionalFetcher<readonly [import("@tanstack/start-client-core").FunctionMiddlewareAfterServer<{}, unknown, undefined, {
63
- supabase: import("../integrations/supabase/auth-middleware").AuthedSupabaseClient;
63
+ supabase: import("../integrations/supabase/auth-middleware.js").AuthedSupabaseClient;
64
64
  userId: string;
65
65
  claims: import("@supabase/auth-js").User;
66
66
  }, undefined, undefined, undefined>], (input: unknown) => {
@@ -69,7 +69,7 @@ export declare const markShipmentShipped: import("@tanstack/start-client-core").
69
69
  ok: true;
70
70
  }>>;
71
71
  export declare const cancelShipment: import("@tanstack/start-client-core").OptionalFetcher<readonly [import("@tanstack/start-client-core").FunctionMiddlewareAfterServer<{}, unknown, undefined, {
72
- supabase: import("../integrations/supabase/auth-middleware").AuthedSupabaseClient;
72
+ supabase: import("../integrations/supabase/auth-middleware.js").AuthedSupabaseClient;
73
73
  userId: string;
74
74
  claims: import("@supabase/auth-js").User;
75
75
  }, undefined, undefined, undefined>], (input: unknown) => {