@flowselections/mailbox-orders 1.0.25 → 1.0.27

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 (44) hide show
  1. package/dist-lib/components/CartAssignmentWizard.d.ts +6 -0
  2. package/dist-lib/components/CartAssignmentWizard.d.ts.map +1 -0
  3. package/dist-lib/components/CartAssignmentWizard.js +199 -0
  4. package/dist-lib/components/MailboxInboxPage.d.ts +2 -0
  5. package/dist-lib/components/MailboxInboxPage.d.ts.map +1 -0
  6. package/dist-lib/components/MailboxInboxPage.js +120 -0
  7. package/dist-lib/components/MailboxProcessedPage.js +1 -1
  8. package/dist-lib/components/MailboxProposalsPage.js +5 -5
  9. package/dist-lib/components/settings/ImapAccountsCard.d.ts +2 -0
  10. package/dist-lib/components/settings/ImapAccountsCard.d.ts.map +1 -0
  11. package/dist-lib/components/settings/ImapAccountsCard.js +136 -0
  12. package/dist-lib/components/settings/ImapProfilesCard.d.ts +2 -0
  13. package/dist-lib/components/settings/ImapProfilesCard.d.ts.map +1 -0
  14. package/dist-lib/components/settings/ImapProfilesCard.js +101 -0
  15. package/dist-lib/components/settings/MailboxAiPromptCard.js +2 -2
  16. package/dist-lib/components/settings/MailboxOrderTemplateCard.js +1 -1
  17. package/dist-lib/components/settings/MailboxSettingsCard.d.ts +2 -0
  18. package/dist-lib/components/settings/MailboxSettingsCard.d.ts.map +1 -0
  19. package/dist-lib/components/settings/MailboxSettingsCard.js +85 -0
  20. package/dist-lib/integrations/supabase/client.server.js +1 -1
  21. package/dist-lib/integrations/supabase/types.d.ts +2746 -7
  22. package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
  23. package/dist-lib/integrations/supabase/types.js +1 -0
  24. package/dist-lib/lib/ai-config.server.d.ts +1 -1
  25. package/dist-lib/lib/imap.functions.d.ts +32852 -0
  26. package/dist-lib/lib/imap.functions.d.ts.map +1 -0
  27. package/dist-lib/lib/imap.functions.js +235 -0
  28. package/dist-lib/lib/mailbox-ai-settings.functions.d.ts +2 -2
  29. package/dist-lib/lib/mailbox-ai-settings.functions.js +1 -1
  30. package/dist-lib/lib/mailbox-ai.server.d.ts +1 -1
  31. package/dist-lib/lib/mailbox-auto.server.d.ts +9 -0
  32. package/dist-lib/lib/mailbox-auto.server.d.ts.map +1 -0
  33. package/dist-lib/lib/mailbox-auto.server.js +198 -0
  34. package/dist-lib/lib/mailbox-ingest.server.d.ts +1 -1
  35. package/dist-lib/lib/mailbox-ingest.server.js +1 -1
  36. package/dist-lib/lib/mailbox-template.functions.d.ts +6 -6
  37. package/dist-lib/lib/mailbox-template.functions.js +1 -1
  38. package/dist-lib/lib/mailbox.functions.d.ts +25 -24
  39. package/dist-lib/lib/mailbox.functions.d.ts.map +1 -1
  40. package/dist-lib/lib/mailbox.functions.js +22 -22
  41. package/dist-lib/server-routes.d.ts +9 -0
  42. package/dist-lib/server-routes.d.ts.map +1 -0
  43. package/dist-lib/server-routes.js +34 -0
  44. package/package.json +38 -6
@@ -34,7 +34,7 @@ export declare const getActiveOrdersMailbox: import("@tanstack/start-client-core
34
34
  }>>;
35
35
  export declare const syncMailboxNow: import("@tanstack/start-client-core").OptionalFetcher<undefined, (input: unknown) => {
36
36
  trigger: "realtime" | "manual";
37
- }, Promise<import("./mailbox-ingest.server.js").IngestRunResult | {
37
+ }, Promise<import("../lib/mailbox-ingest.server").IngestRunResult | {
38
38
  ok: false;
39
39
  error: string;
40
40
  processed: 0;
@@ -42,7 +42,7 @@ export declare const syncMailboxNow: import("@tanstack/start-client-core").Optio
42
42
  errors: 1;
43
43
  }>>;
44
44
  export declare const getLastIngestRun: import("@tanstack/start-client-core").OptionalFetcher<readonly [import("@tanstack/start-client-core").FunctionMiddlewareAfterServer<{}, unknown, undefined, {
45
- supabase: import("../integrations/supabase/auth-middleware.js").AuthedSupabaseClient;
45
+ supabase: import("../integrations/supabase/auth-middleware").AuthedSupabaseClient;
46
46
  userId: string;
47
47
  claims: import("@supabase/auth-js").User;
48
48
  }, undefined, undefined, undefined>], undefined, Promise<{
@@ -59,7 +59,7 @@ export declare const getLastIngestRun: import("@tanstack/start-client-core").Opt
59
59
  }>>;
60
60
  /** Handmatig één voorstel opnieuw laten analyseren met de huidige AI-agent. */
61
61
  export declare const reparseProposalNow: import("@tanstack/start-client-core").OptionalFetcher<readonly [import("@tanstack/start-client-core").FunctionMiddlewareAfterServer<{}, unknown, undefined, {
62
- supabase: import("../integrations/supabase/auth-middleware.js").AuthedSupabaseClient;
62
+ supabase: import("../integrations/supabase/auth-middleware").AuthedSupabaseClient;
63
63
  userId: string;
64
64
  claims: import("@supabase/auth-js").User;
65
65
  }, undefined, undefined, undefined>], (input: unknown) => {
@@ -70,7 +70,7 @@ export declare const reparseProposalNow: import("@tanstack/start-client-core").O
70
70
  }>>;
71
71
  /** Detecteert een gewijzigde AI-agent en herverwerkt openstaande voorstellen. */
72
72
  export declare const refreshProposalsForAgentChange: import("@tanstack/start-client-core").OptionalFetcher<readonly [import("@tanstack/start-client-core").FunctionMiddlewareAfterServer<{}, unknown, undefined, {
73
- supabase: import("../integrations/supabase/auth-middleware.js").AuthedSupabaseClient;
73
+ supabase: import("../integrations/supabase/auth-middleware").AuthedSupabaseClient;
74
74
  userId: string;
75
75
  claims: import("@supabase/auth-js").User;
76
76
  }, undefined, undefined, undefined>], undefined, Promise<{
@@ -80,7 +80,7 @@ export declare const refreshProposalsForAgentChange: import("@tanstack/start-cli
80
80
  fingerprint: string | null;
81
81
  }>>;
82
82
  export declare const listMessages: import("@tanstack/start-client-core").OptionalFetcher<readonly [import("@tanstack/start-client-core").FunctionMiddlewareAfterServer<{}, unknown, undefined, {
83
- supabase: import("../integrations/supabase/auth-middleware.js").AuthedSupabaseClient;
83
+ supabase: import("../integrations/supabase/auth-middleware").AuthedSupabaseClient;
84
84
  userId: string;
85
85
  claims: import("@supabase/auth-js").User;
86
86
  }, undefined, undefined, undefined>], undefined, Promise<{
@@ -97,7 +97,7 @@ export declare const listMessages: import("@tanstack/start-client-core").Optiona
97
97
  }[];
98
98
  }>>;
99
99
  export declare const parseMessage: import("@tanstack/start-client-core").OptionalFetcher<readonly [import("@tanstack/start-client-core").FunctionMiddlewareAfterServer<{}, unknown, undefined, {
100
- supabase: import("../integrations/supabase/auth-middleware.js").AuthedSupabaseClient;
100
+ supabase: import("../integrations/supabase/auth-middleware").AuthedSupabaseClient;
101
101
  userId: string;
102
102
  claims: import("@supabase/auth-js").User;
103
103
  }, undefined, undefined, undefined>], (input: unknown) => {
@@ -106,7 +106,7 @@ export declare const parseMessage: import("@tanstack/start-client-core").Optiona
106
106
  ok: true;
107
107
  }>>;
108
108
  export declare const listProposals: import("@tanstack/start-client-core").OptionalFetcher<readonly [import("@tanstack/start-client-core").FunctionMiddlewareAfterServer<{}, unknown, undefined, {
109
- supabase: import("../integrations/supabase/auth-middleware.js").AuthedSupabaseClient;
109
+ supabase: import("../integrations/supabase/auth-middleware").AuthedSupabaseClient;
110
110
  userId: string;
111
111
  claims: import("@supabase/auth-js").User;
112
112
  }, undefined, undefined, undefined>], (input: unknown) => {
@@ -116,7 +116,7 @@ export declare const listProposals: import("@tanstack/start-client-core").Option
116
116
  }>>;
117
117
  /** Eén voorstel volledig: mailtekst, bestelregels en veldwaarden. */
118
118
  export declare const getProposalDetail: import("@tanstack/start-client-core").OptionalFetcher<readonly [import("@tanstack/start-client-core").FunctionMiddlewareAfterServer<{}, unknown, undefined, {
119
- supabase: import("../integrations/supabase/auth-middleware.js").AuthedSupabaseClient;
119
+ supabase: import("../integrations/supabase/auth-middleware").AuthedSupabaseClient;
120
120
  userId: string;
121
121
  claims: import("@supabase/auth-js").User;
122
122
  }, undefined, undefined, undefined>], (input: unknown) => {
@@ -125,7 +125,7 @@ export declare const getProposalDetail: import("@tanstack/start-client-core").Op
125
125
  item: any;
126
126
  }>>;
127
127
  export declare const listAllowedLoadCarriers: import("@tanstack/start-client-core").OptionalFetcher<readonly [import("@tanstack/start-client-core").FunctionMiddlewareAfterServer<{}, unknown, undefined, {
128
- supabase: import("../integrations/supabase/auth-middleware.js").AuthedSupabaseClient;
128
+ supabase: import("../integrations/supabase/auth-middleware").AuthedSupabaseClient;
129
129
  userId: string;
130
130
  claims: import("@supabase/auth-js").User;
131
131
  }, undefined, undefined, undefined>], undefined, Promise<{
@@ -135,7 +135,7 @@ export declare const listAllowedLoadCarriers: import("@tanstack/start-client-cor
135
135
  carriers: import("./load-carriers").EngineLoadCarrier[];
136
136
  }>>;
137
137
  export declare const approveProposal: import("@tanstack/start-client-core").OptionalFetcher<readonly [import("@tanstack/start-client-core").FunctionMiddlewareAfterServer<{}, unknown, undefined, {
138
- supabase: import("../integrations/supabase/auth-middleware.js").AuthedSupabaseClient;
138
+ supabase: import("../integrations/supabase/auth-middleware").AuthedSupabaseClient;
139
139
  userId: string;
140
140
  claims: import("@supabase/auth-js").User;
141
141
  }, undefined, undefined, undefined>], (input: unknown) => {
@@ -163,7 +163,7 @@ export declare const approveProposal: import("@tanstack/start-client-core").Opti
163
163
  shortages: any[];
164
164
  }>>;
165
165
  export declare const rejectProposal: import("@tanstack/start-client-core").OptionalFetcher<readonly [import("@tanstack/start-client-core").FunctionMiddlewareAfterServer<{}, unknown, undefined, {
166
- supabase: import("../integrations/supabase/auth-middleware.js").AuthedSupabaseClient;
166
+ supabase: import("../integrations/supabase/auth-middleware").AuthedSupabaseClient;
167
167
  userId: string;
168
168
  claims: import("@supabase/auth-js").User;
169
169
  }, undefined, undefined, undefined>], (input: unknown) => {
@@ -173,7 +173,7 @@ export declare const rejectProposal: import("@tanstack/start-client-core").Optio
173
173
  ok: true;
174
174
  }>>;
175
175
  export declare const reopenProposal: import("@tanstack/start-client-core").OptionalFetcher<readonly [import("@tanstack/start-client-core").FunctionMiddlewareAfterServer<{}, unknown, undefined, {
176
- supabase: import("../integrations/supabase/auth-middleware.js").AuthedSupabaseClient;
176
+ supabase: import("../integrations/supabase/auth-middleware").AuthedSupabaseClient;
177
177
  userId: string;
178
178
  claims: import("@supabase/auth-js").User;
179
179
  }, undefined, undefined, undefined>], (input: unknown) => {
@@ -182,14 +182,14 @@ export declare const reopenProposal: import("@tanstack/start-client-core").Optio
182
182
  ok: true;
183
183
  }>>;
184
184
  export declare const listCustomersForPicker: import("@tanstack/start-client-core").OptionalFetcher<readonly [import("@tanstack/start-client-core").FunctionMiddlewareAfterServer<{}, unknown, undefined, {
185
- supabase: import("../integrations/supabase/auth-middleware.js").AuthedSupabaseClient;
185
+ supabase: import("../integrations/supabase/auth-middleware").AuthedSupabaseClient;
186
186
  userId: string;
187
187
  claims: import("@supabase/auth-js").User;
188
188
  }, undefined, undefined, undefined>], undefined, Promise<{
189
189
  items: any[];
190
190
  }>>;
191
191
  export declare const createCustomerFromGroup: import("@tanstack/start-client-core").OptionalFetcher<readonly [import("@tanstack/start-client-core").FunctionMiddlewareAfterServer<{}, unknown, undefined, {
192
- supabase: import("../integrations/supabase/auth-middleware.js").AuthedSupabaseClient;
192
+ supabase: import("../integrations/supabase/auth-middleware").AuthedSupabaseClient;
193
193
  userId: string;
194
194
  claims: import("@supabase/auth-js").User;
195
195
  }, undefined, undefined, undefined>], (input: unknown) => {
@@ -211,7 +211,7 @@ export declare const createCustomerFromGroup: import("@tanstack/start-client-cor
211
211
  created: true;
212
212
  }>>;
213
213
  export declare const listProductsForPicker: import("@tanstack/start-client-core").OptionalFetcher<readonly [import("@tanstack/start-client-core").FunctionMiddlewareAfterServer<{}, unknown, undefined, {
214
- supabase: import("../integrations/supabase/auth-middleware.js").AuthedSupabaseClient;
214
+ supabase: import("../integrations/supabase/auth-middleware").AuthedSupabaseClient;
215
215
  userId: string;
216
216
  claims: import("@supabase/auth-js").User;
217
217
  }, undefined, undefined, undefined>], undefined, Promise<{
@@ -219,7 +219,7 @@ export declare const listProductsForPicker: import("@tanstack/start-client-core"
219
219
  allowBackorder: boolean;
220
220
  }>>;
221
221
  export declare const planAndSaveAutoCarts: import("@tanstack/start-client-core").OptionalFetcher<readonly [import("@tanstack/start-client-core").FunctionMiddlewareAfterServer<{}, unknown, undefined, {
222
- supabase: import("../integrations/supabase/auth-middleware.js").AuthedSupabaseClient;
222
+ supabase: import("../integrations/supabase/auth-middleware").AuthedSupabaseClient;
223
223
  userId: string;
224
224
  claims: import("@supabase/auth-js").User;
225
225
  }, undefined, undefined, undefined>], (input: unknown) => {
@@ -250,7 +250,7 @@ export declare const planAndSaveAutoCarts: import("@tanstack/start-client-core")
250
250
  nextCartNumber: number;
251
251
  }>>;
252
252
  export declare const saveManualCarts: import("@tanstack/start-client-core").OptionalFetcher<readonly [import("@tanstack/start-client-core").FunctionMiddlewareAfterServer<{}, unknown, undefined, {
253
- supabase: import("../integrations/supabase/auth-middleware.js").AuthedSupabaseClient;
253
+ supabase: import("../integrations/supabase/auth-middleware").AuthedSupabaseClient;
254
254
  userId: string;
255
255
  claims: import("@supabase/auth-js").User;
256
256
  }, undefined, undefined, undefined>], (input: unknown) => {
@@ -271,7 +271,7 @@ export declare const saveManualCarts: import("@tanstack/start-client-core").Opti
271
271
  ok: true;
272
272
  }>>;
273
273
  export declare const listOrderCarts: import("@tanstack/start-client-core").RequiredFetcher<readonly [import("@tanstack/start-client-core").FunctionMiddlewareAfterServer<{}, unknown, undefined, {
274
- supabase: import("../integrations/supabase/auth-middleware.js").AuthedSupabaseClient;
274
+ supabase: import("../integrations/supabase/auth-middleware").AuthedSupabaseClient;
275
275
  userId: string;
276
276
  claims: import("@supabase/auth-js").User;
277
277
  }, undefined, undefined, undefined>], (d: {
@@ -288,6 +288,7 @@ export declare const listOrderCarts: import("@tanstack/start-client-core").Requi
288
288
  order_cart_items: {
289
289
  boxes: number | null;
290
290
  cart_id: string;
291
+ components: import("../integrations/supabase/types").Json | null;
291
292
  crates: number;
292
293
  crates_in_layer: number | null;
293
294
  crates_per_layer: number;
@@ -306,7 +307,7 @@ export declare const listOrderCarts: import("@tanstack/start-client-core").Requi
306
307
  }[];
307
308
  }>>;
308
309
  export declare const listDeliveryLocationsForCustomer: import("@tanstack/start-client-core").RequiredFetcher<readonly [import("@tanstack/start-client-core").FunctionMiddlewareAfterServer<{}, unknown, undefined, {
309
- supabase: import("../integrations/supabase/auth-middleware.js").AuthedSupabaseClient;
310
+ supabase: import("../integrations/supabase/auth-middleware").AuthedSupabaseClient;
310
311
  userId: string;
311
312
  claims: import("@supabase/auth-js").User;
312
313
  }, undefined, undefined, undefined>], (d: {
@@ -333,7 +334,7 @@ export declare const listDeliveryLocationsForCustomer: import("@tanstack/start-c
333
334
  }[];
334
335
  }>>;
335
336
  export declare const listPickupLocations: import("@tanstack/start-client-core").OptionalFetcher<readonly [import("@tanstack/start-client-core").FunctionMiddlewareAfterServer<{}, unknown, undefined, {
336
- supabase: import("../integrations/supabase/auth-middleware.js").AuthedSupabaseClient;
337
+ supabase: import("../integrations/supabase/auth-middleware").AuthedSupabaseClient;
337
338
  userId: string;
338
339
  claims: import("@supabase/auth-js").User;
339
340
  }, undefined, undefined, undefined>], undefined, Promise<{
@@ -345,7 +346,7 @@ export declare const listPickupLocations: import("@tanstack/start-client-core").
345
346
  }[];
346
347
  }>>;
347
348
  export declare const listCarriersForPicker: import("@tanstack/start-client-core").OptionalFetcher<readonly [import("@tanstack/start-client-core").FunctionMiddlewareAfterServer<{}, unknown, undefined, {
348
- supabase: import("../integrations/supabase/auth-middleware.js").AuthedSupabaseClient;
349
+ supabase: import("../integrations/supabase/auth-middleware").AuthedSupabaseClient;
349
350
  userId: string;
350
351
  claims: import("@supabase/auth-js").User;
351
352
  }, undefined, undefined, undefined>], undefined, Promise<{
@@ -357,18 +358,18 @@ export declare const listCarriersForPicker: import("@tanstack/start-client-core"
357
358
  delivery_days: number | null;
358
359
  pickup_weekdays: number[];
359
360
  delivery_weekdays: number[];
360
- pickup_moments: import("../integrations/supabase/types.js").Json;
361
+ pickup_moments: import("../integrations/supabase/types").Json;
361
362
  }[];
362
363
  }>>;
363
364
  export declare const getOrderPickDays: import("@tanstack/start-client-core").OptionalFetcher<readonly [import("@tanstack/start-client-core").FunctionMiddlewareAfterServer<{}, unknown, undefined, {
364
- supabase: import("../integrations/supabase/auth-middleware.js").AuthedSupabaseClient;
365
+ supabase: import("../integrations/supabase/auth-middleware").AuthedSupabaseClient;
365
366
  userId: string;
366
367
  claims: import("@supabase/auth-js").User;
367
368
  }, undefined, undefined, undefined>], undefined, Promise<{
368
369
  pickDays: number;
369
370
  }>>;
370
371
  export declare const listBeladingOptionsForProducts: import("@tanstack/start-client-core").OptionalFetcher<readonly [import("@tanstack/start-client-core").FunctionMiddlewareAfterServer<{}, unknown, undefined, {
371
- supabase: import("../integrations/supabase/auth-middleware.js").AuthedSupabaseClient;
372
+ supabase: import("../integrations/supabase/auth-middleware").AuthedSupabaseClient;
372
373
  userId: string;
373
374
  claims: import("@supabase/auth-js").User;
374
375
  }, undefined, undefined, undefined>], (input: unknown) => {
@@ -1 +1 @@
1
- {"version":3,"file":"mailbox.functions.d.ts","sourceRoot":"","sources":["../../src/lib/mailbox.functions.ts"],"names":[],"mappings":"AA6BA,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;QAiBf,MAAM;cACM,MAAM;mBACI,MAAM;kBACE,MAAM,GAAG,IAAI;YACzB,MAAM,GAAG,IAAI;gBACL,MAAM,GAAG,IAAI;sBACD,MAAM,GAAG,IAAI;;;GAGnE,CAAC;AAWL,eAAO,MAAM,cAAc,2EACD,OAAO;;;;;;;;GA+B7B,CAAC;AAGL,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;GAWzB,CAAC;AAEL,+EAA+E;AAC/E,eAAO,MAAM,kBAAkB;;;;8CAEL,OAAO;;;;;GAK7B,CAAC;AAEL,iFAAiF;AACjF,eAAO,MAAM,8BAA8B;;;;;;;;;GAMvC,CAAC;AAML,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;GAWrB,CAAC;AAEL,eAAO,MAAM,YAAY;;;;8CAEC,OAAO;;;;GAa7B,CAAC;AAKL,eAAO,MAAM,aAAa;;;;8CAEA,OAAO;;;;GAmC7B,CAAC;AAIL,qEAAqE;AACrE,eAAO,MAAM,iBAAiB;;;;8CAEJ,OAAO;;;;GAyC7B,CAAC;AASL,eAAO,MAAM,uBAAuB;;;;;WAO+B,MAAM,GAAG,IAAI;;;;GAC5E,CAAC;AAgBL,eAAO,MAAM,eAAe;;;;8CAEF,OAAO;;;;;;;;;;;;;;;;;;;;;;;GA4K7B,CAAC;AAEL,eAAO,MAAM,cAAc;;;;8CAED,OAAO;;;;;GAY7B,CAAC;AAGL,eAAO,MAAM,cAAc;;;;8CAED,OAAO;;;;GAW7B,CAAC;AAQL,eAAO,MAAM,sBAAsB;;;;;;GAiD/B,CAAC;AAIL,eAAO,MAAM,uBAAuB;;;;8CAEV,OAAO;;;;;;;;;;;;QAyBiB,MAAM;;;QAoBxB,MAAM;;GAClC,CAAC;AAKL,eAAO,MAAM,qBAAqB;;;;;;;GAiH9B,CAAC;AAiBL,eAAO,MAAM,oBAAoB;;;;8CAEP,OAAO;;;;;qBAqBS,MAAM;sBAAgB,MAAM;gBAAU,MAAM;gBAAU,MAAM;kBAAY,MAAM;;;;uBAhCvG,MAAM;oBACT,MAAM,GAAG,IAAI;sBACX,MAAM;0BAEF,MAAM;0BACN,MAAM;yBACP,MAAM;;;qBA0FW,MAAM;eAClB,MAAM,GAAG,IAAI;;;;GAoBjC,CAAC;AAiBL,eAAO,MAAM,eAAe;;;;8CAEF,OAAO;;;;;;;;;;;;;;;;GAuC7B,CAAC;AAEL,eAAO,MAAM,cAAc;;;;0CAEL;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE;aAAR,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;GAQnC,CAAC;AAEL,eAAO,MAAM,gCAAgC;;;;0CAEvB;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE;gBAAR,MAAM;;;;;;;;;;;;;;;;;;;GAUtC,CAAC;AAKL,eAAO,MAAM,mBAAmB;;;;;;YAqBD,MAAM;;;;;GAQjC,CAAC;AAEL,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;GAS9B,CAAC;AAGL,eAAO,MAAM,gBAAgB;;;;;;GAUzB,CAAC;AAiBL,eAAO,MAAM,8BAA8B;;;;8CAEjB,OAAO;;;;0BAOT,MAAM;0BAAoB,MAAM;yBAAmB,MAAM;oBAC/D,OAAO;oBACP,MAAM,GAAG,IAAI;oBAAc,MAAM,GAAG,IAAI;sBACtC,MAAM,GAAG,IAAI;sBAAgB,MAAM,GAAG,IAAI;;yBAEO,MAAM;yBAAmB,MAAM;;;0BAL5E,MAAM;0BAAoB,MAAM;yBAAmB,MAAM;oBAC/D,OAAO;oBACP,MAAM,GAAG,IAAI;oBAAc,MAAM,GAAG,IAAI;sBACtC,MAAM,GAAG,IAAI;sBAAgB,MAAM,GAAG,IAAI;;;;;GAsM1D,CAAC"}
1
+ {"version":3,"file":"mailbox.functions.d.ts","sourceRoot":"","sources":["../../src/lib/mailbox.functions.ts"],"names":[],"mappings":"AA6BA,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;QAiBf,MAAM;cACM,MAAM;mBACI,MAAM;kBACE,MAAM,GAAG,IAAI;YACzB,MAAM,GAAG,IAAI;gBACL,MAAM,GAAG,IAAI;sBACD,MAAM,GAAG,IAAI;;;GAGnE,CAAC;AAWL,eAAO,MAAM,cAAc,2EACD,OAAO;;;;;;;;GA+B7B,CAAC;AAGL,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;GAWzB,CAAC;AAEL,+EAA+E;AAC/E,eAAO,MAAM,kBAAkB;;;;8CAEL,OAAO;;;;;GAK7B,CAAC;AAEL,iFAAiF;AACjF,eAAO,MAAM,8BAA8B;;;;;;;;;GAMvC,CAAC;AAML,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;GAWrB,CAAC;AAEL,eAAO,MAAM,YAAY;;;;8CAEC,OAAO;;;;GAa7B,CAAC;AAKL,eAAO,MAAM,aAAa;;;;8CAEA,OAAO;;;;GAmC7B,CAAC;AAIL,qEAAqE;AACrE,eAAO,MAAM,iBAAiB;;;;8CAEJ,OAAO;;;;GAyC7B,CAAC;AASL,eAAO,MAAM,uBAAuB;;;;;WAO+B,MAAM,GAAG,IAAI;;;;GAC5E,CAAC;AAgBL,eAAO,MAAM,eAAe;;;;8CAEF,OAAO;;;;;;;;;;;;;;;;;;;;;;;GA4K7B,CAAC;AAEL,eAAO,MAAM,cAAc;;;;8CAED,OAAO;;;;;GAY7B,CAAC;AAGL,eAAO,MAAM,cAAc;;;;8CAED,OAAO;;;;GAW7B,CAAC;AAQL,eAAO,MAAM,sBAAsB;;;;;;GAiD/B,CAAC;AAIL,eAAO,MAAM,uBAAuB;;;;8CAEV,OAAO;;;;;;;;;;;;QAyBiB,MAAM;;;QAoBxB,MAAM;;GAClC,CAAC;AAKL,eAAO,MAAM,qBAAqB;;;;;;;GAiH9B,CAAC;AAiBL,eAAO,MAAM,oBAAoB;;;;8CAEP,OAAO;;;;;qBAqBS,MAAM;sBAAgB,MAAM;gBAAU,MAAM;gBAAU,MAAM;kBAAY,MAAM;;;;uBAhCvG,MAAM;oBACT,MAAM,GAAG,IAAI;sBACX,MAAM;0BAEF,MAAM;0BACN,MAAM;yBACP,MAAM;;;qBA0FW,MAAM;eAClB,MAAM,GAAG,IAAI;;;;GAoBjC,CAAC;AAiBL,eAAO,MAAM,eAAe;;;;8CAEF,OAAO;;;;;;;;;;;;;;;;GAuC7B,CAAC;AAEL,eAAO,MAAM,cAAc;;;;0CAEL;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE;aAAR,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAQnC,CAAC;AAEL,eAAO,MAAM,gCAAgC;;;;0CAEvB;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE;gBAAR,MAAM;;;;;;;;;;;;;;;;;;;GAUtC,CAAC;AAKL,eAAO,MAAM,mBAAmB;;;;;;YAqBD,MAAM;;;;;GAQjC,CAAC;AAEL,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;GAS9B,CAAC;AAGL,eAAO,MAAM,gBAAgB;;;;;;GAUzB,CAAC;AAiBL,eAAO,MAAM,8BAA8B;;;;8CAEjB,OAAO;;;;0BAOT,MAAM;0BAAoB,MAAM;yBAAmB,MAAM;oBAC/D,OAAO;oBACP,MAAM,GAAG,IAAI;oBAAc,MAAM,GAAG,IAAI;sBACtC,MAAM,GAAG,IAAI;sBAAgB,MAAM,GAAG,IAAI;;yBAEO,MAAM;yBAAmB,MAAM;;;0BAL5E,MAAM;0BAAoB,MAAM;yBAAmB,MAAM;oBAC/D,OAAO;oBACP,MAAM,GAAG,IAAI;oBAAc,MAAM,GAAG,IAAI;sBACtC,MAAM,GAAG,IAAI;sBAAgB,MAAM,GAAG,IAAI;;;;;GAsM1D,CAAC"}
@@ -1,9 +1,9 @@
1
1
  // Server functions voor de Mailbox-bestellingen module
2
2
  import { createServerFn } from "@tanstack/react-start";
3
- import { requireSupabaseAuth } from "../integrations/supabase/auth-middleware.js";
3
+ import { requireSupabaseAuth } from "../integrations/supabase/auth-middleware";
4
4
  import { createClient } from "@supabase/supabase-js";
5
5
  import { z } from "zod";
6
- import { computeEarliestDelivery } from "./delivery-date.js";
6
+ import { computeEarliestDelivery } from "../lib/delivery-date";
7
7
  import { emailBodyText, inlineCidImages, normalizeAddressList, normalizeAttachments, sanitizeEmailHtml, stripInvisible, } from "./mailbox-body";
8
8
  import { EMPTY_LOAD_CARRIERS, isLoadCarrierAllowed, loadCarrierLabel, normalizeAllowedLoadCarriers, } from "./load-carriers";
9
9
  // ─── Actieve mailbox (uit gedeelde e-mail-auth module) ──────────────────────
@@ -66,7 +66,7 @@ export const syncMailboxNow = createServerFn({ method: "POST" })
66
66
  if (userErr || !userData?.user) {
67
67
  return { ok: false, error: "unauthorized", processed: 0, inserted: 0, errors: 1 };
68
68
  }
69
- const { runIngest } = await import("./mailbox-ingest.server.js");
69
+ const { runIngest } = await import("../lib/mailbox-ingest.server");
70
70
  return await runIngest(data.trigger);
71
71
  }
72
72
  catch (e) {
@@ -82,7 +82,7 @@ export const syncMailboxNow = createServerFn({ method: "POST" })
82
82
  export const getLastIngestRun = createServerFn({ method: "GET" })
83
83
  .middleware([requireSupabaseAuth])
84
84
  .handler(async () => {
85
- const { supabaseAdmin } = await import("../integrations/supabase/client.server.js");
85
+ const { supabaseAdmin } = await import("../integrations/supabase/client.server");
86
86
  const { data } = await supabaseAdmin
87
87
  .from("mailbox_ingest_runs")
88
88
  .select("id, trigger, started_at, finished_at, processed, inserted, errors, error_sample")
@@ -96,23 +96,23 @@ export const reparseProposalNow = createServerFn({ method: "POST" })
96
96
  .middleware([requireSupabaseAuth])
97
97
  .inputValidator((input) => z.object({ proposalId: z.string().uuid() }).parse(input))
98
98
  .handler(async ({ data }) => {
99
- const { supabaseAdmin } = await import("../integrations/supabase/client.server.js");
100
- const { reparseProposal } = await import("./mailbox-ingest.server.js");
99
+ const { supabaseAdmin } = await import("../integrations/supabase/client.server");
100
+ const { reparseProposal } = await import("../lib/mailbox-ingest.server");
101
101
  return reparseProposal(supabaseAdmin, data.proposalId);
102
102
  });
103
103
  /** Detecteert een gewijzigde AI-agent en herverwerkt openstaande voorstellen. */
104
104
  export const refreshProposalsForAgentChange = createServerFn({ method: "POST" })
105
105
  .middleware([requireSupabaseAuth])
106
106
  .handler(async () => {
107
- const { supabaseAdmin } = await import("../integrations/supabase/client.server.js");
108
- const { reparseChangedAgentProposals } = await import("./mailbox-ingest.server.js");
107
+ const { supabaseAdmin } = await import("../integrations/supabase/client.server");
108
+ const { reparseChangedAgentProposals } = await import("../lib/mailbox-ingest.server");
109
109
  return reparseChangedAgentProposals(supabaseAdmin);
110
110
  });
111
111
  // ─── Messages & Proposals ────────────────────────────────────────────────────
112
112
  export const listMessages = createServerFn({ method: "GET" })
113
113
  .middleware([requireSupabaseAuth])
114
114
  .handler(async () => {
115
- const { supabaseAdmin } = await import("../integrations/supabase/client.server.js");
115
+ const { supabaseAdmin } = await import("../integrations/supabase/client.server");
116
116
  const { data, error } = await supabaseAdmin
117
117
  .from("mailbox_messages")
118
118
  .select("id, uid, from_email, from_name, subject, received_at, status, error_message, created_at")
@@ -126,8 +126,8 @@ export const parseMessage = createServerFn({ method: "POST" })
126
126
  .middleware([requireSupabaseAuth])
127
127
  .inputValidator((input) => z.object({ messageId: z.string().uuid() }).parse(input))
128
128
  .handler(async ({ data }) => {
129
- const { supabaseAdmin } = await import("../integrations/supabase/client.server.js");
130
- const { createStubProposal } = await import("./mailbox-ingest.server.js");
129
+ const { supabaseAdmin } = await import("../integrations/supabase/client.server");
130
+ const { createStubProposal } = await import("../lib/mailbox-ingest.server");
131
131
  const { data: msg, error: msgErr } = await supabaseAdmin
132
132
  .from("mailbox_messages").select("*").eq("id", data.messageId).single();
133
133
  if (msgErr || !msg)
@@ -142,7 +142,7 @@ export const listProposals = createServerFn({ method: "GET" })
142
142
  .middleware([requireSupabaseAuth])
143
143
  .inputValidator((input) => z.object({ status: z.enum(["pending", "approved", "rejected"]).optional() }).parse(input ?? {}))
144
144
  .handler(async ({ data }) => {
145
- const { supabaseAdmin } = await import("../integrations/supabase/client.server.js");
145
+ const { supabaseAdmin } = await import("../integrations/supabase/client.server");
146
146
  // Alleen de kolommen die de lijstweergave toont. De mailtekst (body_text /
147
147
  // body_html) en de bestelregels zijn bewust NIET opgenomen: die worden pas
148
148
  // opgehaald zodra een voorstel geopend wordt (`getProposalDetail`).
@@ -178,7 +178,7 @@ export const getProposalDetail = createServerFn({ method: "GET" })
178
178
  .middleware([requireSupabaseAuth])
179
179
  .inputValidator((input) => z.object({ proposalId: z.string().uuid() }).parse(input))
180
180
  .handler(async ({ data }) => {
181
- const { supabaseAdmin } = await import("../integrations/supabase/client.server.js");
181
+ const { supabaseAdmin } = await import("../integrations/supabase/client.server");
182
182
  const sel = (s) => s;
183
183
  const { data: row, error } = await supabaseAdmin
184
184
  .from("mailbox_order_proposals")
@@ -252,7 +252,7 @@ export const approveProposal = createServerFn({ method: "POST" })
252
252
  fieldValues: z.array(FieldValueInput).max(100).optional(),
253
253
  }).parse(input))
254
254
  .handler(async ({ data, context }) => {
255
- const { supabaseAdmin } = await import("../integrations/supabase/client.server.js");
255
+ const { supabaseAdmin } = await import("../integrations/supabase/client.server");
256
256
  const customFields = {};
257
257
  (data.fieldValues ?? []).forEach((fv) => {
258
258
  customFields[fv.field_key] = fv.value;
@@ -384,7 +384,7 @@ export const rejectProposal = createServerFn({ method: "POST" })
384
384
  .middleware([requireSupabaseAuth])
385
385
  .inputValidator((input) => z.object({ proposalId: z.string().uuid(), reason: z.string().max(500).optional() }).parse(input))
386
386
  .handler(async ({ data, context }) => {
387
- const { supabaseAdmin } = await import("../integrations/supabase/client.server.js");
387
+ const { supabaseAdmin } = await import("../integrations/supabase/client.server");
388
388
  await supabaseAdmin.from("mailbox_order_proposals").update({
389
389
  status: "rejected",
390
390
  reviewed_by: context.userId,
@@ -398,7 +398,7 @@ export const reopenProposal = createServerFn({ method: "POST" })
398
398
  .middleware([requireSupabaseAuth])
399
399
  .inputValidator((input) => z.object({ proposalId: z.string().uuid() }).parse(input))
400
400
  .handler(async ({ data }) => {
401
- const { supabaseAdmin } = await import("../integrations/supabase/client.server.js");
401
+ const { supabaseAdmin } = await import("../integrations/supabase/client.server");
402
402
  await supabaseAdmin.from("mailbox_order_proposals").update({
403
403
  status: "pending",
404
404
  reviewed_by: null,
@@ -413,7 +413,7 @@ export const reopenProposal = createServerFn({ method: "POST" })
413
413
  export const listCustomersForPicker = createServerFn({ method: "GET" })
414
414
  .middleware([requireSupabaseAuth])
415
415
  .handler(async () => {
416
- const { supabaseAdmin } = await import("../integrations/supabase/client.server.js");
416
+ const { supabaseAdmin } = await import("../integrations/supabase/client.server");
417
417
  const sb = supabaseAdmin;
418
418
  const { data: grouped } = await sb
419
419
  .from("external_customers_grouped")
@@ -474,7 +474,7 @@ export const createCustomerFromGroup = createServerFn({ method: "POST" })
474
474
  phone: z.string().max(50).nullable().optional(),
475
475
  }).parse(input))
476
476
  .handler(async ({ data }) => {
477
- const { supabaseAdmin } = await import("../integrations/supabase/client.server.js");
477
+ const { supabaseAdmin } = await import("../integrations/supabase/client.server");
478
478
  const sb = supabaseAdmin;
479
479
  const email = (data.email ?? "").trim().toLowerCase() || null;
480
480
  const name = data.companyName.trim();
@@ -512,7 +512,7 @@ export const createCustomerFromGroup = createServerFn({ method: "POST" })
512
512
  export const listProductsForPicker = createServerFn({ method: "GET" })
513
513
  .middleware([requireSupabaseAuth])
514
514
  .handler(async ({ context }) => {
515
- const { supabaseAdmin } = await import("../integrations/supabase/client.server.js");
515
+ const { supabaseAdmin } = await import("../integrations/supabase/client.server");
516
516
  // ── 1. Voorraad verzamelen ──────────────────────────────────────────────
517
517
  const { data: stockRows } = await supabaseAdmin
518
518
  .from("trade_item_stock")
@@ -633,7 +633,7 @@ export const planAndSaveAutoCarts = createServerFn({ method: "POST" })
633
633
  .eq("order_id", data.orderId);
634
634
  if (itErr)
635
635
  throw new Error(itErr.message);
636
- const { supabaseAdmin } = await import("../integrations/supabase/client.server.js");
636
+ const { supabaseAdmin } = await import("../integrations/supabase/client.server");
637
637
  // Reset eventuele eerdere auto-karren (idempotent)
638
638
  await supabaseAdmin.from("order_carts").delete().eq("order_id", data.orderId).eq("is_auto", true);
639
639
  let cartNumber = 1;
@@ -743,7 +743,7 @@ export const saveManualCarts = createServerFn({ method: "POST" })
743
743
  .middleware([requireSupabaseAuth])
744
744
  .inputValidator((input) => z.object({ orderId: z.string().uuid(), carts: z.array(ManualCart) }).parse(input))
745
745
  .handler(async ({ data }) => {
746
- const { supabaseAdmin } = await import("../integrations/supabase/client.server.js");
746
+ const { supabaseAdmin } = await import("../integrations/supabase/client.server");
747
747
  // Verwijder eerdere handmatige karren (replace strategy)
748
748
  await supabaseAdmin.from("order_carts").delete()
749
749
  .eq("order_id", data.orderId).eq("is_auto", false);
@@ -875,7 +875,7 @@ export const listBeladingOptionsForProducts = createServerFn({ method: "POST" })
875
875
  .middleware([requireSupabaseAuth])
876
876
  .inputValidator((input) => z.object({ productIds: z.array(z.string()).max(200) }).parse(input))
877
877
  .handler(async ({ data }) => {
878
- const { supabaseAdmin } = await import("../integrations/supabase/client.server.js");
878
+ const { supabaseAdmin } = await import("../integrations/supabase/client.server");
879
879
  const ids = Array.from(new Set((data.productIds ?? []).filter(Boolean)));
880
880
  const byProduct = {};
881
881
  function sortCombos(list) {
@@ -0,0 +1,9 @@
1
+ /** POST /api/public/mailbox-orders/process-events (pg_cron, elke minuut). */
2
+ export declare function processEvents({ request }: {
3
+ request: Request;
4
+ }): Promise<Response>;
5
+ /** POST /api/public/mailbox-orders/webhook-ingest (directe webhook-trigger). */
6
+ export declare function webhookIngest({ request }: {
7
+ request: Request;
8
+ }): Promise<Response>;
9
+ //# sourceMappingURL=server-routes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server-routes.d.ts","sourceRoot":"","sources":["../src/server-routes.ts"],"names":[],"mappings":"AAgCA,6EAA6E;AAC7E,wBAAsB,aAAa,CAAC,EAAE,OAAO,EAAE,EAAE;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,CAExF;AAED,gFAAgF;AAChF,wBAAsB,aAAa,CAAC,EAAE,OAAO,EAAE,EAAE;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,CAExF"}
@@ -0,0 +1,34 @@
1
+ // Server-route handlers voor de shell (flowselections.serverRoutes).
2
+ // Geen client-code en geen React. Authenticatie via `apikey` header tegen de
3
+ // Supabase publishable/anon key (fail closed als die ontbreekt).
4
+ function json(body, status) {
5
+ return new Response(JSON.stringify(body), {
6
+ status,
7
+ headers: { "Content-Type": "application/json" },
8
+ });
9
+ }
10
+ async function handle(request, trigger) {
11
+ const providedKey = request.headers.get("apikey");
12
+ const expectedKey = process.env.SUPABASE_PUBLISHABLE_KEY ?? process.env.SUPABASE_ANON_KEY;
13
+ if (!expectedKey)
14
+ return json({ ok: false, error: "server_misconfigured" }, 500);
15
+ if (!providedKey || providedKey !== expectedKey) {
16
+ return json({ ok: false, error: "unauthorized" }, 401);
17
+ }
18
+ try {
19
+ const { runIngest } = await import("./lib/mailbox-ingest.server.js");
20
+ const result = await runIngest(trigger);
21
+ return json(result, 200);
22
+ }
23
+ catch (e) {
24
+ return json({ ok: false, error: String(e?.message ?? e) }, 500);
25
+ }
26
+ }
27
+ /** POST /api/public/mailbox-orders/process-events (pg_cron, elke minuut). */
28
+ export async function processEvents({ request }) {
29
+ return handle(request, "cron");
30
+ }
31
+ /** POST /api/public/mailbox-orders/webhook-ingest (directe webhook-trigger). */
32
+ export async function webhookIngest({ request }) {
33
+ return handle(request, "realtime");
34
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flowselections/mailbox-orders",
3
- "version": "1.0.25",
3
+ "version": "1.0.27",
4
4
  "private": false,
5
5
  "sideEffects": false,
6
6
  "type": "module",
@@ -11,7 +11,11 @@
11
11
  "types": "./dist-lib/index.d.ts",
12
12
  "default": "./dist-lib/index.js"
13
13
  },
14
- "./styles": "./dist-lib/styles.css"
14
+ "./styles": "./dist-lib/styles.css",
15
+ "./server-routes": {
16
+ "types": "./dist-lib/server-routes.d.ts",
17
+ "default": "./dist-lib/server-routes.js"
18
+ }
15
19
  },
16
20
  "files": [
17
21
  "dist-lib",
@@ -47,13 +51,13 @@
47
51
  "@cloudflare/vite-plugin": "^1.25.5",
48
52
  "@eslint/js": "^9.32.0",
49
53
  "@flowselections/core": "1.0.29",
50
- "@lovable.dev/vite-tanstack-config": "2.25.3",
54
+ "@lovable.dev/vite-tanstack-config": "2.26.5",
51
55
  "@rsbuild/core": "^1.0.0",
52
56
  "@tailwindcss/vite": "^4.2.1",
53
57
  "@tanstack/react-query": "^5.83.0",
54
- "@tanstack/react-router": "^1.168.0",
55
- "@tanstack/react-start": "^1.167.14",
56
- "@tanstack/router-plugin": "^1.167.10",
58
+ "@tanstack/react-router": "1.169.1",
59
+ "@tanstack/react-start": "1.167.63",
60
+ "@tanstack/router-plugin": "1.167.33",
57
61
  "@types/node": "^22.16.5",
58
62
  "@types/react": "^19.2.0",
59
63
  "@types/react-dom": "^19.2.0",
@@ -88,6 +92,34 @@
88
92
  "route": "mailbox-orders/verwerkt",
89
93
  "title": "Verwerkt"
90
94
  }
95
+ ],
96
+ "serverRoutes": [
97
+ {
98
+ "routePath": "/api/public/mailbox-orders/process-events",
99
+ "import": "@flowselections/mailbox-orders/server-routes",
100
+ "handler": "processEvents",
101
+ "methods": [
102
+ "POST"
103
+ ]
104
+ },
105
+ {
106
+ "routePath": "/api/public/mailbox-orders/webhook-ingest",
107
+ "import": "@flowselections/mailbox-orders/server-routes",
108
+ "handler": "webhookIngest",
109
+ "methods": [
110
+ "POST"
111
+ ]
112
+ }
113
+ ],
114
+ "crons": [
115
+ {
116
+ "name": "mailbox-orders-process-events",
117
+ "schedule": "* * * * *",
118
+ "kind": "http",
119
+ "path": "/api/public/mailbox-orders/process-events",
120
+ "auth": "anon",
121
+ "timeoutMs": 30000
122
+ }
91
123
  ]
92
124
  }
93
125
  }