@flowselections/floriday-verkoop-module 1.0.86 → 1.0.90

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 (127) hide show
  1. package/dist-lib/components/verkoop/CreateOrderPage.js +1 -1
  2. package/dist-lib/components/verkoop/DiagnoseConnectionDialog.js +1 -1
  3. package/dist-lib/components/verkoop/EditLocalOrderDialog.js +3 -3
  4. package/dist-lib/components/verkoop/OrderControlStatusCard.js +1 -1
  5. package/dist-lib/components/verkoop/OrderKarindelingCard.js +2 -2
  6. package/dist-lib/components/verkoop/OrderLinePackingCard.js +1 -1
  7. package/dist-lib/components/verkoop/OrderShipmentsCard.js +1 -1
  8. package/dist-lib/components/verkoop/ProductDimensionsSettings.js +1 -1
  9. package/dist-lib/components/verkoop/SalesOrderDetailView.d.ts +1 -1
  10. package/dist-lib/components/verkoop/SalesOrderDetailView.js +12 -12
  11. package/dist-lib/components/verkoop/SalesOrdersFilterPanel.d.ts +1 -1
  12. package/dist-lib/components/verkoop/SalesOrdersFilters.js +1 -1
  13. package/dist-lib/components/verkoop/SalesOrdersTable.d.ts +1 -1
  14. package/dist-lib/components/verkoop/SalesOrdersTable.js +2 -2
  15. package/dist-lib/components/verkoop/StockConsumptionAlertsBanner.js +1 -1
  16. package/dist-lib/components/verkoop/VerkoopOrdersPage.js +15 -15
  17. package/dist-lib/index.d.ts +4 -5
  18. package/dist-lib/index.d.ts.map +1 -1
  19. package/dist-lib/index.js +5 -6
  20. package/dist-lib/integrations/supabase/auth-middleware.d.ts +1 -1
  21. package/dist-lib/integrations/supabase/client.d.ts +1 -1
  22. package/dist-lib/integrations/supabase/client.server.d.ts +1 -1
  23. package/dist-lib/integrations/supabase/types.d.ts +346 -0
  24. package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
  25. package/dist-lib/lib/belading.server.js +1 -1
  26. package/dist-lib/lib/buffer-events.functions.d.ts +1 -1
  27. package/dist-lib/lib/buffer-events.functions.js +1 -1
  28. package/dist-lib/lib/cart-layers.functions.d.ts +4 -4
  29. package/dist-lib/lib/cart-layers.functions.js +2 -2
  30. package/dist-lib/lib/cart-lock.functions.d.ts +1 -1
  31. package/dist-lib/lib/cart-lock.functions.js +2 -2
  32. package/dist-lib/lib/cart-planning-settings.functions.d.ts +11 -11
  33. package/dist-lib/lib/cart-planning-settings.functions.js +1 -1
  34. package/dist-lib/lib/cart-replan.functions.d.ts +4 -4
  35. package/dist-lib/lib/cart-replan.functions.js +9 -9
  36. package/dist-lib/lib/create-order.functions.d.ts +18 -18
  37. package/dist-lib/lib/create-order.functions.js +15 -15
  38. package/dist-lib/lib/cron/index.d.ts +3 -3
  39. package/dist-lib/lib/cron/index.js +3 -3
  40. package/dist-lib/lib/cron/invoice-due.js +1 -1
  41. package/dist-lib/lib/cron/sync-salesorders.js +2 -2
  42. package/dist-lib/lib/cron/sync-tradeitems.js +1 -1
  43. package/dist-lib/lib/engine-block-alerts.server.js +4 -4
  44. package/dist-lib/lib/expand-group-order-items.d.ts +1 -1
  45. package/dist-lib/lib/floriday-change-diff.check.js +2 -2
  46. package/dist-lib/lib/floriday-gateway.server.d.ts +1 -1
  47. package/dist-lib/lib/floriday-gateway.server.js +2 -2
  48. package/dist-lib/lib/floriday-logistic-labels.functions.d.ts +2 -2
  49. package/dist-lib/lib/floriday-logistic-labels.functions.js +5 -5
  50. package/dist-lib/lib/floriday-mirror.functions.d.ts +1 -1
  51. package/dist-lib/lib/floriday-mirror.functions.d.ts.map +1 -1
  52. package/dist-lib/lib/floriday-mirror.functions.js +19 -12
  53. package/dist-lib/lib/floriday-public.functions.d.ts +7 -7
  54. package/dist-lib/lib/floriday-public.functions.js +2 -2
  55. package/dist-lib/lib/floriday-status.d.ts +1 -1
  56. package/dist-lib/lib/floriday-status.server.d.ts +1 -1
  57. package/dist-lib/lib/floriday-status.server.js +2 -2
  58. package/dist-lib/lib/floriday-sync.js +1 -1
  59. package/dist-lib/lib/floriday-unlinked-products.js +1 -1
  60. package/dist-lib/lib/floriday-writes.functions.d.ts +3 -3
  61. package/dist-lib/lib/floriday-writes.functions.js +3 -3
  62. package/dist-lib/lib/invoice-timing.functions.d.ts +5 -5
  63. package/dist-lib/lib/invoice-timing.functions.js +8 -8
  64. package/dist-lib/lib/invoice-timing.server.d.ts +8 -3
  65. package/dist-lib/lib/invoice-timing.server.d.ts.map +1 -1
  66. package/dist-lib/lib/invoice-timing.server.js +70 -34
  67. package/dist-lib/lib/load-carriers.functions.d.ts +2 -2
  68. package/dist-lib/lib/load-carriers.functions.js +2 -2
  69. package/dist-lib/lib/load-carriers.server.d.ts +1 -1
  70. package/dist-lib/lib/load-carriers.server.js +1 -1
  71. package/dist-lib/lib/logistics-buffer.server.js +1 -1
  72. package/dist-lib/lib/logistics-engine.functions.d.ts +8 -8
  73. package/dist-lib/lib/logistics-engine.functions.js +6 -6
  74. package/dist-lib/lib/logistics-engine.server.d.ts +1 -1
  75. package/dist-lib/lib/logistics-engine.server.js +4 -4
  76. package/dist-lib/lib/logistics-stock.functions.d.ts +3 -3
  77. package/dist-lib/lib/logistics-stock.functions.js +3 -3
  78. package/dist-lib/lib/order-addresses.functions.d.ts +1 -1
  79. package/dist-lib/lib/order-addresses.functions.js +2 -2
  80. package/dist-lib/lib/order-block-mail.server.js +3 -3
  81. package/dist-lib/lib/order-buffers.functions.d.ts +3 -3
  82. package/dist-lib/lib/order-buffers.functions.js +3 -3
  83. package/dist-lib/lib/order-cancel.server.js +6 -6
  84. package/dist-lib/lib/order-carrier.functions.d.ts +2 -2
  85. package/dist-lib/lib/order-carrier.functions.js +2 -2
  86. package/dist-lib/lib/order-fulfill.functions.d.ts +1 -1
  87. package/dist-lib/lib/order-fulfill.functions.js +3 -3
  88. package/dist-lib/lib/order-item-packing.functions.d.ts +3 -3
  89. package/dist-lib/lib/order-item-packing.functions.js +3 -3
  90. package/dist-lib/lib/order-patch.check.d.ts +2 -0
  91. package/dist-lib/lib/order-patch.check.d.ts.map +1 -0
  92. package/dist-lib/lib/order-patch.check.js +40 -0
  93. package/dist-lib/lib/order-patch.d.ts +18 -0
  94. package/dist-lib/lib/order-patch.d.ts.map +1 -0
  95. package/dist-lib/lib/order-patch.js +105 -0
  96. package/dist-lib/lib/order-pickup.functions.d.ts +2 -2
  97. package/dist-lib/lib/order-pickup.functions.js +3 -3
  98. package/dist-lib/lib/order-shipments.functions.d.ts +4 -4
  99. package/dist-lib/lib/order-shipments.functions.js +6 -6
  100. package/dist-lib/lib/plan-coverage.check.js +1 -1
  101. package/dist-lib/lib/plan-coverage.server.d.ts +1 -1
  102. package/dist-lib/lib/plan-coverage.server.js +1 -1
  103. package/dist-lib/lib/product-dimensions.functions.d.ts +2 -2
  104. package/dist-lib/lib/product-dimensions.functions.js +1 -1
  105. package/dist-lib/lib/salesorders-list.functions.d.ts +5 -5
  106. package/dist-lib/lib/salesorders-list.functions.js +4 -4
  107. package/dist-lib/lib/salesorders-list.server.d.ts +2 -2
  108. package/dist-lib/lib/salesorders-list.server.js +17 -17
  109. package/dist-lib/lib/salesorders-mapping.d.ts +3 -3
  110. package/dist-lib/lib/salesorders-mapping.js +2 -2
  111. package/dist-lib/lib/salesorders.functions.d.ts +7 -7
  112. package/dist-lib/lib/salesorders.functions.js +20 -20
  113. package/dist-lib/lib/stock-consumption-alerts.functions.d.ts +2 -2
  114. package/dist-lib/lib/stock-consumption-alerts.functions.js +1 -1
  115. package/dist-lib/lib/tradeitems.functions.d.ts +1068 -1068
  116. package/dist-lib/lib/tradeitems.functions.js +3 -3
  117. package/dist-lib/lib/useAllowedLoadCarriers.d.ts +1 -1
  118. package/dist-lib/lib/useAllowedLoadCarriers.js +1 -1
  119. package/dist-lib/lib/useBufferEvents.d.ts +1 -1
  120. package/dist-lib/lib/useBufferEvents.js +2 -2
  121. package/dist-lib/lib/useLocalSalesOrderDetailQuery.d.ts +2 -2
  122. package/dist-lib/lib/useLocalSalesOrderDetailQuery.js +2 -2
  123. package/dist-lib/lib/useSalesOrderDetailQuery.d.ts +1 -1
  124. package/dist-lib/lib/useSalesOrderDetailQuery.js +2 -2
  125. package/dist-lib/lib/useSalesOrdersQuery.d.ts +2 -2
  126. package/dist-lib/lib/useSalesOrdersQuery.js +3 -3
  127. package/package.json +2 -2
@@ -3,7 +3,7 @@
3
3
  // met de reden van de Engine.
4
4
  // - Open alarm sluit vanzelf zodra de Engine definitief = false en status "done" meldt.
5
5
  // - Fail closed: lukt een vraag niet, dan geen mail en niets vrijgeven.
6
- import { decideAlertAction, parseDefinitiveBlock } from "./engine-block-alerts";
6
+ import { decideAlertAction, parseDefinitiveBlock } from "./engine-block-alerts.js";
7
7
  export const ENGINE_BLOCK_REASON_KEY = "engine_definitief";
8
8
  const MAX_CHECKS = 200;
9
9
  export async function checkDefinitiveBlocks() {
@@ -11,7 +11,7 @@ export async function checkDefinitiveBlocks() {
11
11
  let mailed = 0;
12
12
  let closed = 0;
13
13
  try {
14
- const { supabaseAdmin } = await import("../integrations/supabase/client.server");
14
+ const { supabaseAdmin } = await import("../integrations/supabase/client.server.js");
15
15
  const sb = supabaseAdmin;
16
16
  // Open alarmen (op order-id).
17
17
  const { data: openRows, error: openErr } = await sb
@@ -32,7 +32,7 @@ export async function checkDefinitiveBlocks() {
32
32
  if (oErr)
33
33
  throw new Error(oErr.message);
34
34
  const candidateIds = (orders ?? []).map((o) => String(o.id));
35
- const { loadPlanCoverage } = await import("./plan-coverage.server");
35
+ const { loadPlanCoverage } = await import("./plan-coverage.server.js");
36
36
  const coverage = candidateIds.length ? await loadPlanCoverage(sb, candidateIds, "list") : new Map();
37
37
  const toCheck = new Set(openIds);
38
38
  for (const id of candidateIds) {
@@ -41,7 +41,7 @@ export async function checkDefinitiveBlocks() {
41
41
  toCheck.add(id);
42
42
  }
43
43
  }
44
- const { notifyOrderBlocked, clearOrderBlockNotifications } = await import("./order-block-mail.server");
44
+ const { notifyOrderBlocked, clearOrderBlockNotifications } = await import("./order-block-mail.server.js");
45
45
  for (const orderId of Array.from(toCheck).slice(0, MAX_CHECKS)) {
46
46
  const { data, error } = await sb.rpc("logistics_order_definitively_blocked", { p_order_id: orderId });
47
47
  if (error) {
@@ -1,5 +1,5 @@
1
1
  import type { SupabaseClient } from "@supabase/supabase-js";
2
- import type { PlannerInputItem } from "./cart-planner";
2
+ import type { PlannerInputItem } from "./cart-planner.js";
3
3
  export interface RawOrderItem {
4
4
  id: string;
5
5
  product_id: string | null;
@@ -1,6 +1,6 @@
1
1
  // Controle zonder testomgeving: `bun src/lib/floriday-change-diff.check.ts`.
2
- import { diffBuyerChanges } from "./floriday-change-diff";
3
- import { notReportedState } from "./floriday-status";
2
+ import { diffBuyerChanges } from "./floriday-change-diff.js";
3
+ import { notReportedState } from "./floriday-status.js";
4
4
  let failed = 0;
5
5
  const eq = (name, got, want) => {
6
6
  const ok = JSON.stringify(got) === JSON.stringify(want);
@@ -1,5 +1,5 @@
1
1
  import type { SupabaseClient } from "@supabase/supabase-js";
2
- import { type FloridayConnectionRow } from "./floriday-sync";
2
+ import { type FloridayConnectionRow } from "./floriday-sync.js";
3
3
  export type FlorydayEnvironment = "staging" | "live";
4
4
  export declare function apiBaseFor(env: FlorydayEnvironment | string | null | undefined): string;
5
5
  export declare function pickActiveConnection(supabase: SupabaseClient, env: FlorydayEnvironment | string): Promise<FloridayConnectionRow & {
@@ -1,5 +1,5 @@
1
- import { FLORIDAY_API_BASES } from "./floriday-sync";
2
- import { getFlorydayTokenFromCentral } from "./floriday-central-token.server";
1
+ import { FLORIDAY_API_BASES } from "./floriday-sync.js";
2
+ import { getFlorydayTokenFromCentral } from "./floriday-central-token.server.js";
3
3
  export function apiBaseFor(env) {
4
4
  return env === "live" || env === "production" || env === "prod"
5
5
  ? FLORIDAY_API_BASES.production
@@ -14,7 +14,7 @@ export interface DeliveryNoteDTO {
14
14
  errorMessage: string | null;
15
15
  }
16
16
  export declare const listLogisticLabelsForOrder: 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>], (d: unknown) => {
@@ -24,7 +24,7 @@ export declare const listLogisticLabelsForOrder: import("@tanstack/start-client-
24
24
  orderNumber: string | null;
25
25
  }>>;
26
26
  export declare const registerDeliveryNote: 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>], (d: unknown) => {
@@ -13,9 +13,9 @@
13
13
  // komen mee naar de UI (423 = levering nog in concept, 404 = niet gevonden).
14
14
  import { createServerFn } from "@tanstack/react-start";
15
15
  import { z } from "zod";
16
- import { requireSupabaseAuth } from "../integrations/supabase/auth-middleware";
17
- import { florydayFetchBinary } from "./floriday-gateway.server";
18
- import { resolveOrderRow } from "./order-row.server";
16
+ import { requireSupabaseAuth } from "../integrations/supabase/auth-middleware.js";
17
+ import { florydayFetchBinary } from "./floriday-gateway.server.js";
18
+ import { resolveOrderRow } from "./order-row.server.js";
19
19
  const BUCKET = "delivery-notes";
20
20
  function foutTekst(status, detail) {
21
21
  if (status === 423) {
@@ -109,7 +109,7 @@ export const listLogisticLabelsForOrder = createServerFn({ method: "POST" })
109
109
  .inputValidator((d) => ListSchema.parse(d))
110
110
  .handler(async ({ data, context }) => {
111
111
  const supabase = context.supabase;
112
- const { supabaseAdmin } = await import("../integrations/supabase/client.server");
112
+ const { supabaseAdmin } = await import("../integrations/supabase/client.server.js");
113
113
  // 1. Onze eigen order erbij zoeken (lokaal ordernummer koppelen).
114
114
  let orderId = null;
115
115
  let orderNumber = null;
@@ -265,7 +265,7 @@ export const registerDeliveryNote = createServerFn({ method: "POST" })
265
265
  .handler(async ({ data, context }) => {
266
266
  const supabase = context.supabase;
267
267
  const order = await resolveOrderRow(supabase, data.orderId);
268
- const { supabaseAdmin } = await import("../integrations/supabase/client.server");
268
+ const { supabaseAdmin } = await import("../integrations/supabase/client.server.js");
269
269
  const binair = atob(data.pdfBase64);
270
270
  const bytes = new Uint8Array(binair.length);
271
271
  for (let i = 0; i < binair.length; i++)
@@ -17,7 +17,7 @@ interface MirrorResult {
17
17
  }
18
18
  export declare function mirrorFloridayOrdersFromCron(limit?: number): Promise<MirrorResult>;
19
19
  export declare const mirrorFloridayOrders: import("@tanstack/start-client-core").OptionalFetcher<readonly [import("@tanstack/start-client-core").FunctionMiddlewareAfterServer<{}, unknown, undefined, {
20
- supabase: import("../integrations/supabase/auth-middleware").AuthedSupabaseClient;
20
+ supabase: import("../integrations/supabase/auth-middleware.js").AuthedSupabaseClient;
21
21
  userId: string;
22
22
  claims: import("@supabase/auth-js").User;
23
23
  }, undefined, undefined, undefined>], (input: unknown) => {
@@ -1 +1 @@
1
- {"version":3,"file":"floriday-mirror.functions.d.ts","sourceRoot":"","sources":["../../src/lib/floriday-mirror.functions.ts"],"names":[],"mappings":"AA+IA,UAAU,YAAY;IACpB,EAAE,EAAE,OAAO,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,0DAA0D;IAC1D,OAAO,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE,EAAE,CAAC;IACnD,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAg3CD,wBAAsB,4BAA4B,CAAC,KAAK,SAAgB,yBAEvE;AAED,eAAO,MAAM,oBAAoB;;;;8CAEP,OAAO;;yBAG0C,CAAC"}
1
+ {"version":3,"file":"floriday-mirror.functions.d.ts","sourceRoot":"","sources":["../../src/lib/floriday-mirror.functions.ts"],"names":[],"mappings":"AA+IA,UAAU,YAAY;IACpB,EAAE,EAAE,OAAO,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,0DAA0D;IAC1D,OAAO,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE,EAAE,CAAC;IACnD,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAs3CD,wBAAsB,4BAA4B,CAAC,KAAK,SAAgB,yBAEvE;AAED,eAAO,MAAM,oBAAoB;;;;8CAEP,OAAO;;yBAG0C,CAAC"}
@@ -1,4 +1,4 @@
1
- import { diffBuyerChanges } from "./floriday-change-diff";
1
+ import { diffBuyerChanges } from "./floriday-change-diff.js";
2
2
  // Spiegelt Floriday-verkooporders (FO's) uit `floriday_salesorders_cache`
3
3
  // naar de lokale `orders`-tabel, zodat ze via `resolveBufferForOrderInternal`
4
4
  // in dezelfde buffer terechtkomen als lokale orders en gedeelde karren
@@ -11,10 +11,10 @@ import { diffBuyerChanges } from "./floriday-change-diff";
11
11
  // nooit tegelijk dezelfde orders verwerken.
12
12
  import { createServerFn } from "@tanstack/react-start";
13
13
  import { z } from "zod";
14
- import { deriveOrderLevel } from "./floriday-order-level";
15
- import { productNameForStorage } from "./product-name";
16
- import { requireSupabaseAuth } from "../integrations/supabase/auth-middleware";
17
- import { resolveBufferForOrderInternal } from "./order-buffers.functions";
14
+ import { deriveOrderLevel } from "./floriday-order-level.js";
15
+ import { productNameForStorage } from "./product-name.js";
16
+ import { requireSupabaseAuth } from "../integrations/supabase/auth-middleware.js";
17
+ import { resolveBufferForOrderInternal } from "./order-buffers.functions.js";
18
18
  const LOOKBACK_DAYS = 14;
19
19
  const DEFAULT_BATCH = 200;
20
20
  /** Onbekend blijft onbekend: geen stilzwijgende 1. Zelfde helper als de planner. */
@@ -68,7 +68,7 @@ function buyerOrgIdOf(row) {
68
68
  * Maakt nooit klanten aan en overschrijft nooit een bestaande koppeling.
69
69
  */
70
70
  async function linkCustomersForFloridayOrders() {
71
- const { supabaseAdmin } = await import("../integrations/supabase/client.server");
71
+ const { supabaseAdmin } = await import("../integrations/supabase/client.server.js");
72
72
  const { data: custs, error: cErr } = await supabaseAdmin
73
73
  .from("customers")
74
74
  .select("id, floriday_organization_id")
@@ -135,7 +135,7 @@ function pickString(value) {
135
135
  const MIRROR_LOCK_KEY = "verkoop:floriday-mirror";
136
136
  const MIRROR_LOCK_SECONDS = 600;
137
137
  async function mirrorInternal(limit) {
138
- const { supabaseAdmin } = await import("../integrations/supabase/client.server");
138
+ const { supabaseAdmin } = await import("../integrations/supabase/client.server.js");
139
139
  const empty = (reason, ok) => ({
140
140
  ok, processed: 0, inserted: 0, updated: 0, skipped: 0, failed: 0, errors: ok ? [] : [reason], skipped_reason: reason,
141
141
  });
@@ -157,8 +157,8 @@ async function mirrorInternal(limit) {
157
157
  }
158
158
  }
159
159
  async function mirrorUnlocked(limit) {
160
- const { supabaseAdmin } = await import("../integrations/supabase/client.server");
161
- const { loadFloridayFulfillmentStates, expectedPackagesFromSalesOrder, isFullyFulfilled, } = await import("./floriday-fulfillment-status.server");
160
+ const { supabaseAdmin } = await import("../integrations/supabase/client.server.js");
161
+ const { loadFloridayFulfillmentStates, expectedPackagesFromSalesOrder, isFullyFulfilled, } = await import("./floriday-fulfillment-status.server.js");
162
162
  const cutoffIso = new Date(Date.now() - LOOKBACK_DAYS * 24 * 60 * 60 * 1000).toISOString();
163
163
  // Recente/toekomstige FO's uit de cache.
164
164
  const { data: cacheRows, error: cacheErr } = await supabaseAdmin
@@ -1081,9 +1081,16 @@ async function mirrorUnlocked(limit) {
1081
1081
  orderId = target.id;
1082
1082
  handledOrderIds.add(orderId);
1083
1083
  if (changedKeys.length > 0) {
1084
+ // Alleen gewijzigde velden, en ook in de database "alleen als anders"
1085
+ // (IS DISTINCT FROM): een gelijktijdige ronde schrijft dan niets.
1086
+ const { distinctFilter } = await import("./order-patch.js");
1087
+ const diff = {};
1088
+ for (const k of changedKeys)
1089
+ diff[k] = patch[k];
1084
1090
  const { error: uErr } = await supabaseAdmin.from("orders")
1085
- .update(patch)
1086
- .eq("id", orderId);
1091
+ .update(diff)
1092
+ .eq("id", orderId)
1093
+ .or(distinctFilter(diff));
1087
1094
  if (uErr)
1088
1095
  throw new Error(uErr.message);
1089
1096
  updated++;
@@ -1341,7 +1348,7 @@ async function mirrorUnlocked(limit) {
1341
1348
  // Annuleringen uit Floriday afhandelen (koppelprompt 1.0.77).
1342
1349
  for (const cid of Array.from(new Set(floridayCancelIds))) {
1343
1350
  try {
1344
- const { handleFloridayCancellation } = await import("./order-cancel.server");
1351
+ const { handleFloridayCancellation } = await import("./order-cancel.server.js");
1345
1352
  const res = await handleFloridayCancellation(cid);
1346
1353
  if (res !== "cancelled")
1347
1354
  errors.push(`${cid}: ${res}`);
@@ -1,5 +1,5 @@
1
1
  export declare const getFlorydayCachedList: 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>], (d: unknown) => {
@@ -14,7 +14,7 @@ export declare const getFlorydayCachedList: import("@tanstack/start-client-core"
14
14
  rows: any;
15
15
  }>>;
16
16
  export declare const getFlorydayCodeList: 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>], (d: unknown) => {
@@ -25,7 +25,7 @@ export declare const getFlorydayCodeList: import("@tanstack/start-client-core").
25
25
  items: any;
26
26
  }>>;
27
27
  export declare const getFlorydayAllowedValues: import("@tanstack/start-client-core").OptionalFetcher<readonly [import("@tanstack/start-client-core").FunctionMiddlewareAfterServer<{}, unknown, undefined, {
28
- supabase: import("../integrations/supabase/auth-middleware").AuthedSupabaseClient;
28
+ supabase: import("../integrations/supabase/auth-middleware.js").AuthedSupabaseClient;
29
29
  userId: string;
30
30
  claims: import("@supabase/auth-js").User;
31
31
  }, undefined, undefined, undefined>], (d: unknown) => {
@@ -36,7 +36,7 @@ export declare const getFlorydayAllowedValues: import("@tanstack/start-client-co
36
36
  values: any;
37
37
  }>>;
38
38
  export declare const assertFlorydayValue: import("@tanstack/start-client-core").OptionalFetcher<readonly [import("@tanstack/start-client-core").FunctionMiddlewareAfterServer<{}, unknown, undefined, {
39
- supabase: import("../integrations/supabase/auth-middleware").AuthedSupabaseClient;
39
+ supabase: import("../integrations/supabase/auth-middleware.js").AuthedSupabaseClient;
40
40
  userId: string;
41
41
  claims: import("@supabase/auth-js").User;
42
42
  }, undefined, undefined, undefined>], (d: unknown) => {
@@ -57,7 +57,7 @@ export declare const assertFlorydayValue: import("@tanstack/start-client-core").
57
57
  allowed: any;
58
58
  }>>;
59
59
  export declare const getFlorydayVbnProduct: import("@tanstack/start-client-core").OptionalFetcher<readonly [import("@tanstack/start-client-core").FunctionMiddlewareAfterServer<{}, unknown, undefined, {
60
- supabase: import("../integrations/supabase/auth-middleware").AuthedSupabaseClient;
60
+ supabase: import("../integrations/supabase/auth-middleware.js").AuthedSupabaseClient;
61
61
  userId: string;
62
62
  claims: import("@supabase/auth-js").User;
63
63
  }, undefined, undefined, undefined>], (d: unknown) => {
@@ -68,7 +68,7 @@ export declare const getFlorydayVbnProduct: import("@tanstack/start-client-core"
68
68
  items: any;
69
69
  }>>;
70
70
  export declare const getFlorydayResourceSchema: import("@tanstack/start-client-core").OptionalFetcher<readonly [import("@tanstack/start-client-core").FunctionMiddlewareAfterServer<{}, unknown, undefined, {
71
- supabase: import("../integrations/supabase/auth-middleware").AuthedSupabaseClient;
71
+ supabase: import("../integrations/supabase/auth-middleware.js").AuthedSupabaseClient;
72
72
  userId: string;
73
73
  claims: import("@supabase/auth-js").User;
74
74
  }, undefined, undefined, undefined>], (d: unknown) => {
@@ -76,7 +76,7 @@ export declare const getFlorydayResourceSchema: import("@tanstack/start-client-c
76
76
  version?: string | undefined;
77
77
  }, Promise<any>>;
78
78
  export declare const getActiveFloridayEnvironment: import("@tanstack/start-client-core").OptionalFetcher<readonly [import("@tanstack/start-client-core").FunctionMiddlewareAfterServer<{}, unknown, undefined, {
79
- supabase: import("../integrations/supabase/auth-middleware").AuthedSupabaseClient;
79
+ supabase: import("../integrations/supabase/auth-middleware.js").AuthedSupabaseClient;
80
80
  userId: string;
81
81
  claims: import("@supabase/auth-js").User;
82
82
  }, undefined, undefined, undefined>], undefined, Promise<{
@@ -2,7 +2,7 @@
2
2
  // Reads gaan via de lokale Supabase-cache; geen directe Floriday API-calls.
3
3
  import { createServerFn } from "@tanstack/react-start";
4
4
  import { z } from "zod";
5
- import { requireSupabaseAuth } from "../integrations/supabase/auth-middleware";
5
+ import { requireSupabaseAuth } from "../integrations/supabase/auth-middleware.js";
6
6
  const EnvSchema = z.enum(["staging", "live"]);
7
7
  // Toegestane cache-entities en hun tabel-mapping.
8
8
  const ENTITY_TABLE = {
@@ -272,7 +272,7 @@ export const getFlorydayResourceSchema = createServerFn({ method: "POST" })
272
272
  export const getActiveFloridayEnvironment = createServerFn({ method: "GET" })
273
273
  .middleware([requireSupabaseAuth])
274
274
  .handler(async () => {
275
- const { supabaseAdmin } = await import("../integrations/supabase/client.server");
275
+ const { supabaseAdmin } = await import("../integrations/supabase/client.server.js");
276
276
  const { data } = await supabaseAdmin
277
277
  .from("floriday_settings")
278
278
  .select("active_environment")
@@ -1,4 +1,4 @@
1
- import type { OrderStage } from "./order-status";
1
+ import type { OrderStage } from "./order-status.js";
2
2
  export type FloridayStage = "open" | "partially_fulfilled" | "fulfilled" | "cancelled" | "expired" | "unknown";
3
3
  export interface FloridayStatusEntry {
4
4
  salesOrderId: string;
@@ -1,4 +1,4 @@
1
- import { type FloridayStatusEntry } from "./floriday-status";
1
+ import { type FloridayStatusEntry } from "./floriday-status.js";
2
2
  export interface FloridayStatusResult {
3
3
  entries: Map<string, FloridayStatusEntry>;
4
4
  error: string | null;
@@ -5,7 +5,7 @@
5
5
  // precies `${timestamp}.${body}`, header `x-floriday-signature: sha256=<hex>`.
6
6
  // - Max 100 id's per verzoek, kort geheugen (30 s) per id.
7
7
  // - Fail closed: bij een fout geen stand, wel de foutcode (bv. invalid_signature).
8
- import { parseFloridayStatusEntry } from "./floriday-status";
8
+ import { parseFloridayStatusEntry } from "./floriday-status.js";
9
9
  const TTL_MS = 30000;
10
10
  const MAX_IDS = 100;
11
11
  const cache = new Map();
@@ -31,7 +31,7 @@ export async function loadFloridayStatuses(salesOrderIds) {
31
31
  return { entries, error: null };
32
32
  let error = null;
33
33
  try {
34
- const { getFloridayGatewaySecret, getGatewayBaseUrl } = await import("./central-secrets.server");
34
+ const { getFloridayGatewaySecret, getGatewayBaseUrl } = await import("./central-secrets.server.js");
35
35
  const secret = await getFloridayGatewaySecret();
36
36
  const base = await getGatewayBaseUrl();
37
37
  for (let i = 0; i < wanted.length; i += MAX_IDS) {
@@ -36,7 +36,7 @@ async function markSyncSuccess(supabase, connectionId, entityType) {
36
36
  }
37
37
  export async function syncBySequence(supabase, opts) {
38
38
  // Lazy import vermijdt circular dependency tussen sync en gateway.
39
- const { florydayFetch } = await import("./floriday-gateway.server");
39
+ const { florydayFetch } = await import("./floriday-gateway.server.js");
40
40
  const { connection, entityType, maxEndpoint, syncEndpointBase, cacheTable, conflictTarget, mapRow } = opts;
41
41
  let active = connection;
42
42
  const maxCall = await florydayFetch(supabase, active, {
@@ -2,7 +2,7 @@
2
2
  // De synchronisatie koppelt uitsluitend op trade-item-id; lukt dat niet, dan
3
3
  // blijft product_id leeg. Deze helper maakt dat zichtbaar — er wordt niets
4
4
  // geschreven en de regel wordt niet apart gezet.
5
- import { resolveProductName } from "./product-name";
5
+ import { resolveProductName } from "./product-name.js";
6
6
  export function unlinkedFloridayProducts(row) {
7
7
  const cf = (row?.custom_fields ?? {});
8
8
  if (cf.source !== "floriday")
@@ -1,6 +1,6 @@
1
- import type { FlorydayWriteResult } from "./floriday-gateway.server";
1
+ import type { FlorydayWriteResult } from "./floriday-gateway.server.js";
2
2
  export declare const publishTradeItem: import("@tanstack/start-client-core").OptionalFetcher<readonly [import("@tanstack/start-client-core").FunctionMiddlewareAfterServer<{}, unknown, undefined, {
3
- supabase: import("../integrations/supabase/auth-middleware").AuthedSupabaseClient;
3
+ supabase: import("../integrations/supabase/auth-middleware.js").AuthedSupabaseClient;
4
4
  userId: string;
5
5
  claims: import("@supabase/auth-js").User;
6
6
  }, undefined, undefined, undefined>], (d: unknown) => {
@@ -9,7 +9,7 @@ export declare const publishTradeItem: import("@tanstack/start-client-core").Opt
9
9
  payload: Record<string, any>;
10
10
  }, Promise<FlorydayWriteResult>>;
11
11
  export declare const upsertSupplyLine: import("@tanstack/start-client-core").OptionalFetcher<readonly [import("@tanstack/start-client-core").FunctionMiddlewareAfterServer<{}, unknown, undefined, {
12
- supabase: import("../integrations/supabase/auth-middleware").AuthedSupabaseClient;
12
+ supabase: import("../integrations/supabase/auth-middleware.js").AuthedSupabaseClient;
13
13
  userId: string;
14
14
  claims: import("@supabase/auth-js").User;
15
15
  }, undefined, undefined, undefined>], (d: unknown) => {
@@ -2,11 +2,11 @@
2
2
  // Niemand mag fetch met Authorization-header zelf bouwen.
3
3
  import { createServerFn } from "@tanstack/react-start";
4
4
  import { z } from "zod";
5
- import { requireSupabaseAuth } from "../integrations/supabase/auth-middleware";
5
+ import { requireSupabaseAuth } from "../integrations/supabase/auth-middleware.js";
6
6
  const EnvSchema = z.enum(["staging", "live"]);
7
7
  async function callGateway(env, args, userId) {
8
- const { supabaseAdmin } = await import("../integrations/supabase/client.server");
9
- const { florydayWrite } = await import("./floriday-gateway.server");
8
+ const { supabaseAdmin } = await import("../integrations/supabase/client.server.js");
9
+ const { florydayWrite } = await import("./floriday-gateway.server.js");
10
10
  return florydayWrite(supabaseAdmin, env, args, userId);
11
11
  }
12
12
  // ─── Orderstatussen ───────────────────────────────────────────────────────
@@ -1,11 +1,11 @@
1
- import { type InvoiceTimingSettings } from "./invoice-timing";
1
+ import { type InvoiceTimingSettings } from "./invoice-timing.js";
2
2
  export declare const getInvoiceTimingSettings: import("@tanstack/start-client-core").OptionalFetcher<readonly [import("@tanstack/start-client-core").FunctionMiddlewareAfterServer<{}, unknown, undefined, {
3
- supabase: import("../integrations/supabase/auth-middleware").AuthedSupabaseClient;
3
+ supabase: import("../integrations/supabase/auth-middleware.js").AuthedSupabaseClient;
4
4
  userId: string;
5
5
  claims: import("@supabase/auth-js").User;
6
6
  }, undefined, undefined, undefined>], undefined, Promise<InvoiceTimingSettings>>;
7
7
  export declare const saveInvoiceTimingSettings: import("@tanstack/start-client-core").OptionalFetcher<readonly [import("@tanstack/start-client-core").FunctionMiddlewareAfterServer<{}, unknown, undefined, {
8
- supabase: import("../integrations/supabase/auth-middleware").AuthedSupabaseClient;
8
+ supabase: import("../integrations/supabase/auth-middleware.js").AuthedSupabaseClient;
9
9
  userId: string;
10
10
  claims: import("@supabase/auth-js").User;
11
11
  }, undefined, undefined, undefined>], (input: unknown) => {
@@ -23,7 +23,7 @@ export declare const saveInvoiceTimingSettings: import("@tanstack/start-client-c
23
23
  recomputed: number;
24
24
  }>>;
25
25
  export declare const recomputeInvoiceDueForOrder: import("@tanstack/start-client-core").OptionalFetcher<readonly [import("@tanstack/start-client-core").FunctionMiddlewareAfterServer<{}, unknown, undefined, {
26
- supabase: import("../integrations/supabase/auth-middleware").AuthedSupabaseClient;
26
+ supabase: import("../integrations/supabase/auth-middleware.js").AuthedSupabaseClient;
27
27
  userId: string;
28
28
  claims: import("@supabase/auth-js").User;
29
29
  }, undefined, undefined, undefined>], (input: unknown) => {
@@ -32,7 +32,7 @@ export declare const recomputeInvoiceDueForOrder: import("@tanstack/start-client
32
32
  invoiceDueAt: any;
33
33
  }>>;
34
34
  export declare const getOrderInvoiceMoment: import("@tanstack/start-client-core").OptionalFetcher<readonly [import("@tanstack/start-client-core").FunctionMiddlewareAfterServer<{}, unknown, undefined, {
35
- supabase: import("../integrations/supabase/auth-middleware").AuthedSupabaseClient;
35
+ supabase: import("../integrations/supabase/auth-middleware.js").AuthedSupabaseClient;
36
36
  userId: string;
37
37
  claims: import("@supabase/auth-js").User;
38
38
  }, undefined, undefined, undefined>], (input: unknown) => {
@@ -1,9 +1,9 @@
1
1
  // Server functions voor het instelbare factuurmoment.
2
2
  import { createServerFn } from "@tanstack/react-start";
3
3
  import { z } from "zod";
4
- import { requireSupabaseAuth } from "../integrations/supabase/auth-middleware";
5
- import { resolveOrderRow, assertRowsAffected } from "./order-row.server";
6
- import { DEFAULT_INVOICE_TIMING, normalizeTimeOfDay, } from "./invoice-timing";
4
+ import { requireSupabaseAuth } from "../integrations/supabase/auth-middleware.js";
5
+ import { resolveOrderRow, assertRowsAffected } from "./order-row.server.js";
6
+ import { DEFAULT_INVOICE_TIMING, normalizeTimeOfDay, } from "./invoice-timing.js";
7
7
  const ANCHORS = [
8
8
  "order_created",
9
9
  "confirmed",
@@ -27,7 +27,7 @@ const settingsSchema = z.object({
27
27
  export const getInvoiceTimingSettings = createServerFn({ method: "GET" })
28
28
  .middleware([requireSupabaseAuth])
29
29
  .handler(async ({ context }) => {
30
- const { loadInvoiceTimingSettings } = await import("./invoice-timing.server");
30
+ const { loadInvoiceTimingSettings } = await import("./invoice-timing.server.js");
31
31
  return loadInvoiceTimingSettings(context.supabase);
32
32
  });
33
33
  export const saveInvoiceTimingSettings = createServerFn({ method: "POST" })
@@ -53,8 +53,8 @@ export const saveInvoiceTimingSettings = createServerFn({ method: "POST" })
53
53
  if (error)
54
54
  throw new Error(error.message);
55
55
  // Direct doorrekenen zodat de orders het nieuwe moment tonen.
56
- const { recomputeInvoiceDueDates } = await import("./invoice-timing.server");
57
- const { updated } = await recomputeInvoiceDueDates(supabase, { limit: 500 });
56
+ const { recomputeInvoiceDueDates } = await import("./invoice-timing.server.js");
57
+ const { updated } = await recomputeInvoiceDueDates(supabase);
58
58
  return { ok: true, recomputed: updated };
59
59
  });
60
60
  export const recomputeInvoiceDueForOrder = createServerFn({ method: "POST" })
@@ -63,7 +63,7 @@ export const recomputeInvoiceDueForOrder = createServerFn({ method: "POST" })
63
63
  .handler(async ({ data, context }) => {
64
64
  // DTO-id kan een Floriday salesOrderId zijn.
65
65
  const order = await resolveOrderRow(context.supabase, data.orderId);
66
- const { recomputeInvoiceDueDates } = await import("./invoice-timing.server");
66
+ const { recomputeInvoiceDueDates } = await import("./invoice-timing.server.js");
67
67
  await recomputeInvoiceDueDates(context.supabase, { orderIds: [order.id] });
68
68
  const { data: row } = await context.supabase
69
69
  .from("orders")
@@ -79,7 +79,7 @@ export const getOrderInvoiceMoment = createServerFn({ method: "GET" })
79
79
  .handler(async ({ data, context }) => {
80
80
  // DTO-id kan een Floriday salesOrderId zijn.
81
81
  const order = await resolveOrderRow(context.supabase, data.orderId);
82
- const { loadInvoiceTimingSettings } = await import("./invoice-timing.server");
82
+ const { loadInvoiceTimingSettings } = await import("./invoice-timing.server.js");
83
83
  const settings = await loadInvoiceTimingSettings(context.supabase).catch(() => DEFAULT_INVOICE_TIMING);
84
84
  const { data: row } = await context.supabase
85
85
  .from("orders")
@@ -1,13 +1,18 @@
1
- import { type InvoiceTimingSettings } from "./invoice-timing";
1
+ import { type InvoiceTimingSettings } from "./invoice-timing.js";
2
2
  /** Status die de facturatiemodule oppakt zodra het factuurmoment is bereikt. */
3
3
  export declare const INVOICE_READY_STATUS = "Gereed voor facturatie";
4
4
  export declare function loadInvoiceTimingSettings(supabase: any): Promise<InvoiceTimingSettings>;
5
- /** Herberekent `invoice_due_at` voor de meegegeven orders (of alle open orders). */
5
+ /**
6
+ * Herberekent `invoice_due_at` voor de meegegeven orders, of voor álle orders
7
+ * die nog niet gefactureerd, niet geannuleerd en niet verwijderd zijn (in delen
8
+ * van 200). Slaat alleen op als het moment echt verandert, met dezelfde
9
+ * voorwaarde ook in de database.
10
+ */
6
11
  export declare function recomputeInvoiceDueDates(supabase: any, options?: {
7
12
  orderIds?: string[];
8
- limit?: number;
9
13
  }): Promise<{
10
14
  updated: number;
15
+ checked: number;
11
16
  }>;
12
17
  /** Zet orders waarvan het factuurmoment is bereikt op de facturatiestatus. */
13
18
  export declare function releaseDueInvoices(supabase: any, limit?: number): Promise<{
@@ -1 +1 @@
1
- {"version":3,"file":"invoice-timing.server.d.ts","sourceRoot":"","sources":["../../src/lib/invoice-timing.server.ts"],"names":[],"mappings":"AACA,OAAO,EAML,KAAK,qBAAqB,EAC3B,MAAM,kBAAkB,CAAC;AAE1B,gFAAgF;AAChF,eAAO,MAAM,oBAAoB,2BAA2B,CAAC;AAE7D,wBAAsB,yBAAyB,CAAC,QAAQ,EAAE,GAAG,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAkB7F;AAyED,oFAAoF;AACpF,wBAAsB,wBAAwB,CAC5C,QAAQ,EAAE,GAAG,EACb,OAAO,GAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,GACpD,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CA4B9B;AAED,8EAA8E;AAC9E,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,GAAG,EACb,KAAK,SAAM,GACV,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CA8BnD;AAED,8DAA8D;AAC9D,wBAAsB,qBAAqB,IAAI,OAAO,CAAC;IACrD,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC,CAKD"}
1
+ {"version":3,"file":"invoice-timing.server.d.ts","sourceRoot":"","sources":["../../src/lib/invoice-timing.server.ts"],"names":[],"mappings":"AACA,OAAO,EAML,KAAK,qBAAqB,EAC3B,MAAM,kBAAkB,CAAC;AAE1B,gFAAgF;AAChF,eAAO,MAAM,oBAAoB,2BAA2B,CAAC;AAE7D,wBAAsB,yBAAyB,CAAC,QAAQ,EAAE,GAAG,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAkB7F;AA6ED;;;;;GAKG;AACH,wBAAsB,wBAAwB,CAC5C,QAAQ,EAAE,GAAG,EACb,OAAO,GAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;CAAO,GACpC,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAmD/C;AAED,8EAA8E;AAC9E,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,GAAG,EACb,KAAK,SAAM,GACV,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAgCnD;AAED,8DAA8D;AAC9D,wBAAsB,qBAAqB,IAAI,OAAO,CAAC;IACrD,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC,CAKD"}