@flowselections/mailbox-orders 1.0.26 → 1.0.28

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.
@@ -39,6 +39,7 @@ export const Constants = {
39
39
  "veilingbon",
40
40
  "afleverbrief",
41
41
  "veilingbrief",
42
+ "traysticker",
42
43
  ],
43
44
  doc_orientation: ["portrait", "landscape"],
44
45
  exact_env: ["staging", "live"],
@@ -2,7 +2,7 @@
2
2
  import { createServerFn } from "@tanstack/react-start";
3
3
  import { requireSupabaseAuth } from "../integrations/supabase/auth-middleware.js";
4
4
  import { z } from "zod";
5
- import { DEFAULT_MAILBOX_SYSTEM_PROMPT, DEFAULT_REQUIRED_FIELDS } from "./mailbox-ai-prompt";
5
+ import { DEFAULT_MAILBOX_SYSTEM_PROMPT, DEFAULT_REQUIRED_FIELDS } from "./mailbox-ai-prompt.js";
6
6
  export const getMailboxAiSettings = createServerFn({ method: "GET" })
7
7
  .middleware([requireSupabaseAuth])
8
8
  .handler(async ({ context }) => {
@@ -1,6 +1,6 @@
1
1
  import type { SupabaseClient } from "@supabase/supabase-js";
2
2
  import type { Database } from "../integrations/supabase/types.js";
3
- import { DEFAULT_MAILBOX_SYSTEM_PROMPT } from "./mailbox-ai-prompt";
3
+ import { DEFAULT_MAILBOX_SYSTEM_PROMPT } from "./mailbox-ai-prompt.js";
4
4
  export { DEFAULT_MAILBOX_SYSTEM_PROMPT };
5
5
  type AdminClient = SupabaseClient<Database>;
6
6
  export declare const MAILBOX_AI_MODULE_KEY = "mailbox-bestellingen";
@@ -1,8 +1,8 @@
1
1
  // AI-parsing van bestelmails. De provider, het model en de API-sleutel komen
2
2
  // uit de centrale AI-Authenticatie module (zie ai-config.server.ts).
3
3
  // Er wordt GEEN gebruik gemaakt van Lovable AI / de Lovable AI Gateway.
4
- import { resolveModuleAi, logAiCall } from "./ai-config.server";
5
- import { DEFAULT_MAILBOX_SYSTEM_PROMPT } from "./mailbox-ai-prompt";
4
+ import { resolveModuleAi, logAiCall } from "./ai-config.server.js";
5
+ import { DEFAULT_MAILBOX_SYSTEM_PROMPT } from "./mailbox-ai-prompt.js";
6
6
  export { DEFAULT_MAILBOX_SYSTEM_PROMPT };
7
7
  export const MAILBOX_AI_MODULE_KEY = "mailbox-bestellingen";
8
8
  /** Huidige vingerafdruk van de gekoppelde AI-agent, of null als AI niet beschikbaar is. */
@@ -261,7 +261,7 @@ export class AiUnavailableError extends Error {
261
261
  }
262
262
  }
263
263
  export async function parseOrderEmail(admin, args) {
264
- const { resolveModuleAiAll } = await import("./ai-config.server");
264
+ const { resolveModuleAiAll } = await import("./ai-config.server.js");
265
265
  const resolution = await resolveModuleAiAll(admin, MAILBOX_AI_MODULE_KEY);
266
266
  if (!resolution.ok)
267
267
  throw new AiUnavailableError(resolution.reason, false, 0);
@@ -11,7 +11,7 @@ export declare function loadMailboxAiSettings(admin: AdminClient): Promise<{
11
11
  * verplichte velden. Ontbrekende of onzekere gegevens worden expliciet
12
12
  * benoemd in plaats van stilzwijgend leeg gelaten.
13
13
  */
14
- export declare function computeValidation(parsed: import("./mailbox-ai.server").ParsedOrder, requiredFields: string[], extra: {
14
+ export declare function computeValidation(parsed: import("./mailbox-ai.server.js").ParsedOrder, requiredFields: string[], extra: {
15
15
  customerId: string | null;
16
16
  }): {
17
17
  missing: string[];
@@ -8,8 +8,8 @@
8
8
  // GEEN imports van "@/integrations/supabase/client.server" op module-scope —
9
9
  // die worden per aanroep dynamisch geladen (client-reachable modules mogen
10
10
  // server-only helpers niet direct binnenhalen).
11
- import { emailBodyText } from "./mailbox-body";
12
- import { detectLoadCarrierInText, isLoadCarrierAllowed, loadCarrierLabel, normalizeAllowedLoadCarriers, } from "./load-carriers";
11
+ import { emailBodyText } from "./mailbox-body.js";
12
+ import { detectLoadCarrierInText, isLoadCarrierAllowed, loadCarrierLabel, normalizeAllowedLoadCarriers, } from "./load-carriers.js";
13
13
  /**
14
14
  * Ladingdragers komen live uit de Logistics Engine — nooit cachen, nooit een
15
15
  * eigen lijst bijhouden.
@@ -216,7 +216,7 @@ async function aiParseMessage(admin, messageId, customerId) {
216
216
  if (!bodyText.trim())
217
217
  throw new Error("Bericht bevat geen tekst om te lezen.");
218
218
  const ctx = await buildAiContext(admin, customerId);
219
- const { parseOrderEmail } = await import("./mailbox-ai.server");
219
+ const { parseOrderEmail } = await import("./mailbox-ai.server.js");
220
220
  const res = await parseOrderEmail(admin, {
221
221
  bodyText,
222
222
  subject: msg?.subject ?? "",
@@ -231,7 +231,7 @@ async function aiParseMessage(admin, messageId, customerId) {
231
231
  }
232
232
  catch (e) {
233
233
  const msg = String(e?.message ?? e);
234
- const { isTransientAiError } = await import("./mailbox-ai.server");
234
+ const { isTransientAiError } = await import("./mailbox-ai.server.js");
235
235
  const transient = e?.name === "AiUnavailableError" ? Boolean(e.transient) : isTransientAiError(msg);
236
236
  return { parsed: null, meta: null, error: msg.slice(0, 500), transient, requiredFields: [] };
237
237
  }
@@ -426,7 +426,7 @@ export async function createStubProposal(admin, messageId, fromEmail) {
426
426
  auto_match_candidates: matchResult.candidates,
427
427
  };
428
428
  // --- AI-parse (best effort) ---------------------------------------------
429
- const { currentAiFingerprint } = await import("./mailbox-ai.server");
429
+ const { currentAiFingerprint } = await import("./mailbox-ai.server.js");
430
430
  const fingerprint = await currentAiFingerprint(admin).catch(() => null);
431
431
  const attempt = await aiParseMessage(admin, messageId, matchResult.customerId);
432
432
  const parsed = attempt.parsed;
@@ -557,7 +557,7 @@ export async function reparseProposal(admin, proposalId) {
557
557
  const rematch = matchedCustomerId ? null : await matchCustomerByEmail(admin, senderEmail);
558
558
  if (rematch?.customerId)
559
559
  matchedCustomerId = rematch.customerId;
560
- const { currentAiFingerprint } = await import("./mailbox-ai.server");
560
+ const { currentAiFingerprint } = await import("./mailbox-ai.server.js");
561
561
  const fingerprint = await currentAiFingerprint(admin).catch(() => null);
562
562
  const attempt = await aiParseMessage(admin, prop.message_id, matchedCustomerId);
563
563
  const prevBase = (prop.parsed_payload && typeof prop.parsed_payload === "object" ? prop.parsed_payload : {});
@@ -663,7 +663,7 @@ export async function reparseProposal(admin, proposalId) {
663
663
  * opgeslagen vingerafdruk afwijkt van de huidige worden opnieuw geanalyseerd.
664
664
  */
665
665
  export async function reparseChangedAgentProposals(admin, limit = 25) {
666
- const { currentAiFingerprint } = await import("./mailbox-ai.server");
666
+ const { currentAiFingerprint } = await import("./mailbox-ai.server.js");
667
667
  const fingerprint = await currentAiFingerprint(admin).catch(() => null);
668
668
  if (!fingerprint)
669
669
  return { checked: 0, reparsed: 0, failed: 0, fingerprint: null };
@@ -7,12 +7,12 @@ export declare const listTemplateFields: import("@tanstack/start-client-core").O
7
7
  ai_enabled: boolean;
8
8
  ai_hint: string | null;
9
9
  created_at: string;
10
- default_value: import("../integrations/supabase/types").Json | null;
10
+ default_value: import("../integrations/supabase/types.js").Json | null;
11
11
  field_type: string;
12
12
  id: string;
13
13
  key: string;
14
14
  label: string;
15
- options: import("../integrations/supabase/types").Json | null;
15
+ options: import("../integrations/supabase/types.js").Json | null;
16
16
  required: boolean;
17
17
  sort_order: number;
18
18
  source: string;
@@ -132,7 +132,7 @@ export declare const listAllowedLoadCarriers: import("@tanstack/start-client-cor
132
132
  error: string | null;
133
133
  allowed: string[];
134
134
  default: string | null;
135
- carriers: import("./load-carriers").EngineLoadCarrier[];
135
+ carriers: import("./load-carriers.js").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
138
  supabase: import("../integrations/supabase/auth-middleware.js").AuthedSupabaseClient;
@@ -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.js").Json | null;
291
292
  crates: number;
292
293
  crates_in_layer: number | null;
293
294
  crates_per_layer: number;
@@ -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"}
@@ -4,8 +4,8 @@ import { requireSupabaseAuth } from "../integrations/supabase/auth-middleware.js
4
4
  import { createClient } from "@supabase/supabase-js";
5
5
  import { z } from "zod";
6
6
  import { computeEarliestDelivery } from "./delivery-date.js";
7
- import { emailBodyText, inlineCidImages, normalizeAddressList, normalizeAttachments, sanitizeEmailHtml, stripInvisible, } from "./mailbox-body";
8
- import { EMPTY_LOAD_CARRIERS, isLoadCarrierAllowed, loadCarrierLabel, normalizeAllowedLoadCarriers, } from "./load-carriers";
7
+ import { emailBodyText, inlineCidImages, normalizeAddressList, normalizeAttachments, sanitizeEmailHtml, stripInvisible, } from "./mailbox-body.js";
8
+ import { EMPTY_LOAD_CARRIERS, isLoadCarrierAllowed, loadCarrierLabel, normalizeAllowedLoadCarriers, } from "./load-carriers.js";
9
9
  // ─── Actieve mailbox (uit gedeelde e-mail-auth module) ──────────────────────
10
10
  // Geen auth-middleware: de RPC is SECURITY DEFINER en EXECUTE staat ook aan
11
11
  // `anon`. Zo blijft de status-banner werken als de bearer-token tijdelijk
@@ -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.26",
3
+ "version": "1.0.28",
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",
@@ -23,7 +27,7 @@
23
27
  "scripts": {
24
28
  "dev": "vite dev",
25
29
  "build": "vite build",
26
- "build:lib": "tsc -p tsconfig.build.json && tsc-alias -p tsconfig.build.json && node -e \"require('fs').writeFileSync('dist-lib/styles.css', '@source \\\"./\\\";\\n')\"",
30
+ "build:lib": "tsc -p tsconfig.build.json && tsc-alias -p tsconfig.build.json --resolve-full-paths && node -e \"require('fs').writeFileSync('dist-lib/styles.css', '@source \\\"./\\\";\\n')\"",
27
31
  "build:lib:watch": "tsc -p tsconfig.build.json --watch",
28
32
  "build:dev": "vite build --mode development",
29
33
  "preview": "vite preview",
@@ -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
  }