@flowselections/floriday-afhandeling-module 1.0.35 → 1.0.37
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.
- package/dist-lib/components/afhandeling/PickAgendaView.d.ts.map +1 -1
- package/dist-lib/components/afhandeling/PickAgendaView.js +20 -9
- package/dist-lib/components/afhandeling/VervoerdersPage.js +1 -1
- package/dist-lib/hooks/useOrderPlanning.d.ts +20 -3
- package/dist-lib/hooks/useOrderPlanning.d.ts.map +1 -1
- package/dist-lib/hooks/useOrderPlanning.js +80 -15
- package/dist-lib/integrations/supabase/auth-middleware.d.ts +214 -1
- package/dist-lib/integrations/supabase/auth-middleware.d.ts.map +1 -1
- package/dist-lib/integrations/supabase/client.server.d.ts +214 -1
- package/dist-lib/integrations/supabase/client.server.d.ts.map +1 -1
- package/dist-lib/integrations/supabase/moduleClient.d.ts +214 -1
- package/dist-lib/integrations/supabase/moduleClient.d.ts.map +1 -1
- package/dist-lib/integrations/supabase/types.d.ts +218 -1
- package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
- package/dist-lib/lib/afhandelingSettings.functions.d.ts +428 -2
- package/dist-lib/lib/afhandelingSettings.functions.d.ts.map +1 -1
- package/dist-lib/lib/carriers.functions.d.ts +1070 -5
- package/dist-lib/lib/carriers.functions.d.ts.map +1 -1
- package/dist-lib/lib/cartAssignments.functions.d.ts +1070 -5
- package/dist-lib/lib/cartAssignments.functions.d.ts.map +1 -1
- package/dist-lib/lib/cartControl.functions.d.ts +2140 -10
- package/dist-lib/lib/cartControl.functions.d.ts.map +1 -1
- package/dist-lib/lib/floriday.functions.d.ts +223 -2
- package/dist-lib/lib/floriday.functions.d.ts.map +1 -1
- package/dist-lib/lib/floriday.functions.js +41 -9
- package/dist-lib/lib/logisticsEngine/engine.d.ts +21 -1
- package/dist-lib/lib/logisticsEngine/engine.d.ts.map +1 -1
- package/dist-lib/lib/logisticsEngine/engine.js +81 -19
- package/dist-lib/lib/orderRefs.d.ts +18 -0
- package/dist-lib/lib/orderRefs.d.ts.map +1 -0
- package/dist-lib/lib/orderRefs.js +30 -0
- package/package.json +120 -120
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { createServerFn } from "@tanstack/react-start";
|
|
2
2
|
import { requireSupabaseAuth } from "../integrations/supabase/auth-middleware";
|
|
3
|
+
import { normalizeOrderNumber } from "./orderRefs";
|
|
3
4
|
function pickStr(r, ...keys) {
|
|
4
5
|
if (!r)
|
|
5
6
|
return null;
|
|
@@ -398,20 +399,51 @@ export const getFloridayOrders = createServerFn({ method: "GET" })
|
|
|
398
399
|
city: deliveryLocation?.city ?? null,
|
|
399
400
|
};
|
|
400
401
|
});
|
|
401
|
-
// Verkoop-module schrijft Floriday-orders óók in public.orders
|
|
402
|
-
//
|
|
403
|
-
//
|
|
404
|
-
//
|
|
405
|
-
//
|
|
406
|
-
|
|
402
|
+
// Verkoop-module schrijft Floriday-orders óók in public.orders. Zonder dedup
|
|
403
|
+
// verschijnt elke order dubbel: één keer vanuit de cache, één keer vanuit
|
|
404
|
+
// orders. De orders-versie wint (juist FO-nummer, juiste klantnaam).
|
|
405
|
+
//
|
|
406
|
+
// Dedup op DRIE sleutels, want custom_fields.floriday_sales_order_id is niet
|
|
407
|
+
// gegarandeerd gevuld: (1) floriday_sales_order_id, (2) genormaliseerd
|
|
408
|
+
// ordernummer, (3) orders.id gelijk aan het cache-id. Cache-rijen zonder
|
|
409
|
+
// pendant blijven staan en worden gemarkeerd als niet-gemirrord.
|
|
410
|
+
const manualIdByFloridayId = new Map();
|
|
411
|
+
const manualIdByNumber = new Map();
|
|
412
|
+
const manualIds = new Set();
|
|
407
413
|
for (const row of manualRows ?? []) {
|
|
408
414
|
const fields = (row.custom_fields ?? {});
|
|
409
415
|
const fid = fields.floriday_sales_order_id;
|
|
416
|
+
const rowId = row.id;
|
|
417
|
+
manualIds.add(rowId);
|
|
410
418
|
if (typeof fid === "string" && fid)
|
|
411
|
-
|
|
419
|
+
manualIdByFloridayId.set(fid, rowId);
|
|
420
|
+
const num = normalizeOrderNumber(row.order_number);
|
|
421
|
+
if (num && !manualIdByNumber.has(num))
|
|
422
|
+
manualIdByNumber.set(num, rowId);
|
|
423
|
+
}
|
|
424
|
+
const dedupedFloriday = [];
|
|
425
|
+
for (const o of orders) {
|
|
426
|
+
const mirroredId = manualIdByFloridayId.get(o.id) ??
|
|
427
|
+
manualIdByNumber.get(normalizeOrderNumber(o.orderNumber) ?? "\u0000") ??
|
|
428
|
+
(manualIds.has(o.id) ? o.id : null) ??
|
|
429
|
+
null;
|
|
430
|
+
if (mirroredId)
|
|
431
|
+
continue; // pendant in public.orders bestaat al
|
|
432
|
+
dedupedFloriday.push({ ...o, mirrored: false, mirroredOrderId: null });
|
|
433
|
+
}
|
|
434
|
+
// Laatste net: nooit twee items met dezelfde ref-sleutel.
|
|
435
|
+
const seenRefs = new Set();
|
|
436
|
+
const combined = [];
|
|
437
|
+
for (const o of [
|
|
438
|
+
...manualOrders.map((m) => ({ ...m, mirrored: true, mirroredOrderId: m.id })),
|
|
439
|
+
...dedupedFloriday,
|
|
440
|
+
]) {
|
|
441
|
+
const key = normalizeOrderNumber(o.orderNumber) ?? o.id;
|
|
442
|
+
if (seenRefs.has(key))
|
|
443
|
+
continue;
|
|
444
|
+
seenRefs.add(key);
|
|
445
|
+
combined.push(o);
|
|
412
446
|
}
|
|
413
|
-
const dedupedFloriday = orders.filter((o) => !manualFloridayIds.has(o.id));
|
|
414
|
-
const combined = [...manualOrders, ...dedupedFloriday];
|
|
415
447
|
const nearestDeliveryDate = combined.length === 0 ? await findNearestDeliveryDate(supabase, connectionId, range) : null;
|
|
416
448
|
console.info("[planning-orders] load completed", {
|
|
417
449
|
floridayOrders: orders.length,
|
|
@@ -90,7 +90,13 @@ export declare function emitEngineEvent(params: {
|
|
|
90
90
|
}): Promise<EngineEmitResult>;
|
|
91
91
|
/** Modules waarvan deze agenda taken toont (pick.execute staat op pickschermen). */
|
|
92
92
|
export declare const OWNER_MODULES: string[];
|
|
93
|
-
/**
|
|
93
|
+
/**
|
|
94
|
+
* Haal de taken op die deze module moet uitvoeren.
|
|
95
|
+
*
|
|
96
|
+
* Gepagineerd: een vaste `limit()` sneed bij veel open taken stil de laatste
|
|
97
|
+
* rijen weg (sorteer op planned_start → latere leverdata verloren hun taak en
|
|
98
|
+
* leken "wachtend"). We lezen door tot een pagina niet meer vol is.
|
|
99
|
+
*/
|
|
94
100
|
export declare function listEngineTasks(options?: {
|
|
95
101
|
taskTypes?: string[];
|
|
96
102
|
statuses?: string[];
|
|
@@ -102,6 +108,20 @@ export declare function listEngineTasks(options?: {
|
|
|
102
108
|
includePayload?: boolean;
|
|
103
109
|
limit?: number;
|
|
104
110
|
}): Promise<EngineTask[]>;
|
|
111
|
+
export interface ComposeTaskRef {
|
|
112
|
+
order_ref: string;
|
|
113
|
+
planned_start: string | null;
|
|
114
|
+
status: EngineTaskStatus;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Bestaat er een load.compose-taak voor deze refs? Bewust ZONDER datumvenster:
|
|
118
|
+
* of een order een indeling heeft, mag niet afhangen van waar planned_start
|
|
119
|
+
* valt. Anders lijkt een order die buiten de zichtbare week is ingedeeld
|
|
120
|
+
* "wachtend op de Engine" terwijl zijn taak gewoon bestaat.
|
|
121
|
+
*/
|
|
122
|
+
export declare function listComposeTaskRefs(refs: string[], options?: {
|
|
123
|
+
statuses?: string[];
|
|
124
|
+
}): Promise<Map<string, ComposeTaskRef>>;
|
|
105
125
|
export declare function claimEngineTask(taskId: string, worker?: string): Promise<boolean>;
|
|
106
126
|
/** Rond af op de rule_version van de taak — nooit op een nieuwere versie. */
|
|
107
127
|
export declare function completeEngineTask(task: Pick<EngineTask, "id" | "rule_version">, result?: Record<string, unknown>): Promise<boolean>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../../src/lib/logisticsEngine/engine.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../../src/lib/logisticsEngine/engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -49,28 +49,90 @@ export const OWNER_MODULES = ["afhandeling", "pickschermen"];
|
|
|
49
49
|
/** Lichte kolomset: payload/result zijn tot ~100 kB per rij en niet nodig in lijsten. */
|
|
50
50
|
const TASK_LIST_COLUMNS = "id, task_type, status, order_ref, buffer_ref, owner_module, planned_start, planned_end, due_at, priority, sequence, rule_version, shadow, error, claimed_by, claimed_at, started_at, completed_at, created_at, updated_at";
|
|
51
51
|
const TASK_COLUMNS = `${TASK_LIST_COLUMNS}, payload, result`;
|
|
52
|
-
/**
|
|
52
|
+
/** Paginagrootte voor de takenquery. Een harde limit truncateert stil. */
|
|
53
|
+
const TASK_PAGE_SIZE = 1000;
|
|
54
|
+
/** Bovengrens tegen weglopen; ruim boven het aantal open taken per venster. */
|
|
55
|
+
const TASK_MAX_ROWS = 20000;
|
|
56
|
+
/**
|
|
57
|
+
* Haal de taken op die deze module moet uitvoeren.
|
|
58
|
+
*
|
|
59
|
+
* Gepagineerd: een vaste `limit()` sneed bij veel open taken stil de laatste
|
|
60
|
+
* rijen weg (sorteer op planned_start → latere leverdata verloren hun taak en
|
|
61
|
+
* leken "wachtend"). We lezen door tot een pagina niet meer vol is.
|
|
62
|
+
*/
|
|
53
63
|
export async function listEngineTasks(options) {
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
.
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
64
|
+
const max = options?.limit ?? TASK_MAX_ROWS;
|
|
65
|
+
const all = [];
|
|
66
|
+
for (let offset = 0; offset < max; offset += TASK_PAGE_SIZE) {
|
|
67
|
+
const pageSize = Math.min(TASK_PAGE_SIZE, max - offset);
|
|
68
|
+
let query = supabase
|
|
69
|
+
.from("logistics_tasks")
|
|
70
|
+
.select(options?.includePayload ? TASK_COLUMNS : TASK_LIST_COLUMNS)
|
|
71
|
+
.in("owner_module", options?.ownerModules ?? OWNER_MODULES)
|
|
72
|
+
.order("planned_start", { ascending: true, nullsFirst: false })
|
|
73
|
+
.order("sequence", { ascending: true })
|
|
74
|
+
.order("id", { ascending: true })
|
|
75
|
+
.range(offset, offset + pageSize - 1);
|
|
76
|
+
if (options?.taskTypes?.length)
|
|
77
|
+
query = query.in("task_type", options.taskTypes);
|
|
78
|
+
if (options?.statuses?.length)
|
|
79
|
+
query = query.in("status", options.statuses);
|
|
80
|
+
if (options?.plannedFrom && options?.plannedTo) {
|
|
81
|
+
query = query.or(`planned_start.is.null,and(planned_start.gte.${options.plannedFrom}T00:00:00Z,planned_start.lte.${options.plannedTo}T23:59:59Z)`);
|
|
82
|
+
}
|
|
83
|
+
const { data, error } = await query;
|
|
84
|
+
if (error) {
|
|
85
|
+
console.error("[engine] list tasks failed", { message: error.message, offset });
|
|
86
|
+
return all;
|
|
87
|
+
}
|
|
88
|
+
const rows = (data ?? []);
|
|
89
|
+
all.push(...rows);
|
|
90
|
+
if (rows.length < pageSize)
|
|
91
|
+
break;
|
|
67
92
|
}
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
93
|
+
return all;
|
|
94
|
+
}
|
|
95
|
+
/** Refs per `.in()`-aanroep. Meer geeft te lange URL's (~1000 orders = 2 chunks). */
|
|
96
|
+
const REF_CHUNK_SIZE = 500;
|
|
97
|
+
/**
|
|
98
|
+
* Bestaat er een load.compose-taak voor deze refs? Bewust ZONDER datumvenster:
|
|
99
|
+
* of een order een indeling heeft, mag niet afhangen van waar planned_start
|
|
100
|
+
* valt. Anders lijkt een order die buiten de zichtbare week is ingedeeld
|
|
101
|
+
* "wachtend op de Engine" terwijl zijn taak gewoon bestaat.
|
|
102
|
+
*/
|
|
103
|
+
export async function listComposeTaskRefs(refs, options) {
|
|
104
|
+
const found = new Map();
|
|
105
|
+
const unique = [...new Set(refs.filter(Boolean))];
|
|
106
|
+
if (!unique.length)
|
|
107
|
+
return found;
|
|
108
|
+
for (let i = 0; i < unique.length; i += REF_CHUNK_SIZE) {
|
|
109
|
+
const chunk = unique.slice(i, i + REF_CHUNK_SIZE);
|
|
110
|
+
let query = supabase
|
|
111
|
+
.from("logistics_tasks")
|
|
112
|
+
.select("order_ref, planned_start, status")
|
|
113
|
+
.eq("task_type", "load.compose")
|
|
114
|
+
.in("order_ref", chunk);
|
|
115
|
+
if (options?.statuses?.length)
|
|
116
|
+
query = query.in("status", options.statuses);
|
|
117
|
+
const { data, error } = await query;
|
|
118
|
+
if (error) {
|
|
119
|
+
console.error("[engine] compose task existence check failed", {
|
|
120
|
+
message: error.message,
|
|
121
|
+
chunkSize: chunk.length,
|
|
122
|
+
});
|
|
123
|
+
// Fail-closed op deze chunk: liever geen valse "wachtend" dan verzonnen
|
|
124
|
+
// indelingen. De caller ziet dit als "onbekend" (geen entry).
|
|
125
|
+
continue;
|
|
126
|
+
}
|
|
127
|
+
for (const row of (data ?? [])) {
|
|
128
|
+
const existing = found.get(row.order_ref);
|
|
129
|
+
// Een taak MET starttijd wint van een taak zonder.
|
|
130
|
+
if (!existing || (!existing.planned_start && row.planned_start)) {
|
|
131
|
+
found.set(row.order_ref, row);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
72
134
|
}
|
|
73
|
-
return
|
|
135
|
+
return found;
|
|
74
136
|
}
|
|
75
137
|
export async function claimEngineTask(taskId, worker) {
|
|
76
138
|
const { error } = await supabase.rpc("logistics_claim_task", { p_task_id: taskId, p_worker: worker ?? OWNER_MODULE });
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Eén bron van waarheid voor de refs waarmee een order aan een Engine-taak
|
|
3
|
+
* gekoppeld wordt. De Engine schrijft `order_ref` als `orders.order_number` of
|
|
4
|
+
* als `orders.id::text`; deze module ziet orders uit twee bronnen
|
|
5
|
+
* (floriday_salesorders_cache en public.orders) met verschillende id's.
|
|
6
|
+
*/
|
|
7
|
+
export interface RefLikeOrder {
|
|
8
|
+
id: string;
|
|
9
|
+
orderNumber?: string | null;
|
|
10
|
+
/** Id van de gemirrorde rij in public.orders, indien bekend. */
|
|
11
|
+
mirroredOrderId?: string | null;
|
|
12
|
+
salesOrderId?: string | null;
|
|
13
|
+
}
|
|
14
|
+
/** Normalisatie voor vergelijking van ordernummers (dedup, niet voor lookup). */
|
|
15
|
+
export declare function normalizeOrderNumber(value: string | null | undefined): string | null;
|
|
16
|
+
/** Alle kandidaat-refs voor deze order, in volgorde van betrouwbaarheid. */
|
|
17
|
+
export declare function orderRefsFor(order: RefLikeOrder): string[];
|
|
18
|
+
//# sourceMappingURL=orderRefs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orderRefs.d.ts","sourceRoot":"","sources":["../../src/lib/orderRefs.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,gEAAgE;IAChE,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,iFAAiF;AACjF,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAKpF;AAED,4EAA4E;AAC5E,wBAAgB,YAAY,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,EAAE,CAU1D"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Eén bron van waarheid voor de refs waarmee een order aan een Engine-taak
|
|
3
|
+
* gekoppeld wordt. De Engine schrijft `order_ref` als `orders.order_number` of
|
|
4
|
+
* als `orders.id::text`; deze module ziet orders uit twee bronnen
|
|
5
|
+
* (floriday_salesorders_cache en public.orders) met verschillende id's.
|
|
6
|
+
*/
|
|
7
|
+
/** Normalisatie voor vergelijking van ordernummers (dedup, niet voor lookup). */
|
|
8
|
+
export function normalizeOrderNumber(value) {
|
|
9
|
+
if (!value)
|
|
10
|
+
return null;
|
|
11
|
+
const trimmed = value.trim().toUpperCase();
|
|
12
|
+
if (!trimmed || trimmed === "—" || trimmed === "-")
|
|
13
|
+
return null;
|
|
14
|
+
return trimmed.replace(/\s+/g, "");
|
|
15
|
+
}
|
|
16
|
+
/** Alle kandidaat-refs voor deze order, in volgorde van betrouwbaarheid. */
|
|
17
|
+
export function orderRefsFor(order) {
|
|
18
|
+
const candidates = [order.orderNumber, order.mirroredOrderId, order.id, order.salesOrderId];
|
|
19
|
+
const out = [];
|
|
20
|
+
for (const c of candidates) {
|
|
21
|
+
if (typeof c !== "string")
|
|
22
|
+
continue;
|
|
23
|
+
const v = c.trim();
|
|
24
|
+
if (!v || v === "—" || v === "-")
|
|
25
|
+
continue;
|
|
26
|
+
if (!out.includes(v))
|
|
27
|
+
out.push(v);
|
|
28
|
+
}
|
|
29
|
+
return out;
|
|
30
|
+
}
|
package/package.json
CHANGED
|
@@ -1,120 +1,120 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@flowselections/floriday-afhandeling-module",
|
|
3
|
-
"version": "1.0.
|
|
4
|
-
"private": false,
|
|
5
|
-
"sideEffects": false,
|
|
6
|
-
"type": "module",
|
|
7
|
-
"main": "./dist-lib/index.js",
|
|
8
|
-
"types": "./dist-lib/index.d.ts",
|
|
9
|
-
"exports": {
|
|
10
|
-
".": {
|
|
11
|
-
"types": "./dist-lib/index.d.ts",
|
|
12
|
-
"default": "./dist-lib/index.js"
|
|
13
|
-
},
|
|
14
|
-
"./server-routes": {
|
|
15
|
-
"types": "./dist-lib/lib/serverRoutes/index.d.ts",
|
|
16
|
-
"default": "./dist-lib/lib/serverRoutes/index.js"
|
|
17
|
-
},
|
|
18
|
-
"./styles": "./dist-lib/styles.css"
|
|
19
|
-
},
|
|
20
|
-
"files": [
|
|
21
|
-
"dist-lib"
|
|
22
|
-
],
|
|
23
|
-
"publishConfig": {
|
|
24
|
-
"access": "public"
|
|
25
|
-
},
|
|
26
|
-
"scripts": {
|
|
27
|
-
"dev": "vite dev",
|
|
28
|
-
"build": "vite build",
|
|
29
|
-
"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:watch": "tsc -p tsconfig.build.json --watch",
|
|
31
|
-
"build:dev": "vite build --mode development",
|
|
32
|
-
"preview": "vite preview",
|
|
33
|
-
"lint": "eslint ."
|
|
34
|
-
},
|
|
35
|
-
"peerDependencies": {
|
|
36
|
-
"@flowselections/core": "*",
|
|
37
|
-
"@flowselections/layout-maker": ">=1.7.3",
|
|
38
|
-
"@tanstack/react-query": "^5",
|
|
39
|
-
"react": "^18 || ^19",
|
|
40
|
-
"react-dom": "^18 || ^19"
|
|
41
|
-
},
|
|
42
|
-
"dependencies": {
|
|
43
|
-
"@ai-sdk/openai-compatible": "^3.0.9",
|
|
44
|
-
"@flowselections/layout-maker": "^1.7.3",
|
|
45
|
-
"@supabase/supabase-js": "^2.110.8",
|
|
46
|
-
"ai": "^7.0.26"
|
|
47
|
-
},
|
|
48
|
-
"devDependencies": {
|
|
49
|
-
"@cloudflare/vite-plugin": "^1.25.5",
|
|
50
|
-
"@eslint/js": "^9.32.0",
|
|
51
|
-
"@flowselections/core": "1.0.18",
|
|
52
|
-
"@lovable.dev/vite-tanstack-config": "2.13.1",
|
|
53
|
-
"@rsbuild/core": "^1.0.0",
|
|
54
|
-
"@tailwindcss/vite": "^4.2.1",
|
|
55
|
-
"@tanstack/react-query": "^5.83.0",
|
|
56
|
-
"@tanstack/router-plugin": "^1.167.10",
|
|
57
|
-
"@types/node": "^22.16.5",
|
|
58
|
-
"@types/react": "^19.2.0",
|
|
59
|
-
"@types/react-dom": "^19.2.0",
|
|
60
|
-
"@vitejs/plugin-react": "^5.0.4",
|
|
61
|
-
"eslint": "^9.32.0",
|
|
62
|
-
"eslint-plugin-react-hooks": "^5.2.0",
|
|
63
|
-
"eslint-plugin-react-refresh": "^0.4.20",
|
|
64
|
-
"globals": "^15.15.0",
|
|
65
|
-
"react": "^19.2.0",
|
|
66
|
-
"react-dom": "^19.2.0",
|
|
67
|
-
"tailwindcss": "^4.2.1",
|
|
68
|
-
"tw-animate-css": "^1.3.4",
|
|
69
|
-
"typescript": "^5.8.3",
|
|
70
|
-
"tsc-alias": "^1.8.0",
|
|
71
|
-
"typescript-eslint": "^8.56.1",
|
|
72
|
-
"vite": "^7.3.1",
|
|
73
|
-
"vite-tsconfig-paths": "^6.0.2",
|
|
74
|
-
"nitro": "3.0.260603-beta"
|
|
75
|
-
},
|
|
76
|
-
"flowselections": {
|
|
77
|
-
"moduleId": "Afhandeling",
|
|
78
|
-
"pages": [
|
|
79
|
-
{
|
|
80
|
-
"export": "LeveringenPage",
|
|
81
|
-
"route": "afhandeling/leveringen",
|
|
82
|
-
"title": "Planning en Leveringen"
|
|
83
|
-
},
|
|
84
|
-
{
|
|
85
|
-
"export": "NieuweLeveringPage",
|
|
86
|
-
"route": "afhandeling/leveringen/nieuw",
|
|
87
|
-
"title": "Levering aanmaken",
|
|
88
|
-
"nav": false
|
|
89
|
-
},
|
|
90
|
-
{
|
|
91
|
-
"export": "PickingPage",
|
|
92
|
-
"route": "afhandeling/picking",
|
|
93
|
-
"title": "Pick Agenda"
|
|
94
|
-
},
|
|
95
|
-
{
|
|
96
|
-
"export": "ControlePage",
|
|
97
|
-
"route": "afhandeling/controle",
|
|
98
|
-
"title": "Controle Karren"
|
|
99
|
-
},
|
|
100
|
-
{
|
|
101
|
-
"export": "VervoerdersPage",
|
|
102
|
-
"route": "afhandeling/vervoerders",
|
|
103
|
-
"title": "Vervoerders",
|
|
104
|
-
"nav": false
|
|
105
|
-
},
|
|
106
|
-
{
|
|
107
|
-
"export": "NieuweVervoerderPage",
|
|
108
|
-
"route": "afhandeling/vervoerders/nieuw",
|
|
109
|
-
"title": "Nieuwe vervoerder",
|
|
110
|
-
"nav": false
|
|
111
|
-
},
|
|
112
|
-
{
|
|
113
|
-
"export": "VervoerderBewerkenPage",
|
|
114
|
-
"route": "afhandeling/vervoerders/$carrierId",
|
|
115
|
-
"title": "Vervoerder bewerken",
|
|
116
|
-
"nav": false
|
|
117
|
-
}
|
|
118
|
-
]
|
|
119
|
-
}
|
|
120
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "@flowselections/floriday-afhandeling-module",
|
|
3
|
+
"version": "1.0.37",
|
|
4
|
+
"private": false,
|
|
5
|
+
"sideEffects": false,
|
|
6
|
+
"type": "module",
|
|
7
|
+
"main": "./dist-lib/index.js",
|
|
8
|
+
"types": "./dist-lib/index.d.ts",
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"types": "./dist-lib/index.d.ts",
|
|
12
|
+
"default": "./dist-lib/index.js"
|
|
13
|
+
},
|
|
14
|
+
"./server-routes": {
|
|
15
|
+
"types": "./dist-lib/lib/serverRoutes/index.d.ts",
|
|
16
|
+
"default": "./dist-lib/lib/serverRoutes/index.js"
|
|
17
|
+
},
|
|
18
|
+
"./styles": "./dist-lib/styles.css"
|
|
19
|
+
},
|
|
20
|
+
"files": [
|
|
21
|
+
"dist-lib"
|
|
22
|
+
],
|
|
23
|
+
"publishConfig": {
|
|
24
|
+
"access": "public"
|
|
25
|
+
},
|
|
26
|
+
"scripts": {
|
|
27
|
+
"dev": "vite dev",
|
|
28
|
+
"build": "vite build",
|
|
29
|
+
"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:watch": "tsc -p tsconfig.build.json --watch",
|
|
31
|
+
"build:dev": "vite build --mode development",
|
|
32
|
+
"preview": "vite preview",
|
|
33
|
+
"lint": "eslint ."
|
|
34
|
+
},
|
|
35
|
+
"peerDependencies": {
|
|
36
|
+
"@flowselections/core": "*",
|
|
37
|
+
"@flowselections/layout-maker": ">=1.7.3",
|
|
38
|
+
"@tanstack/react-query": "^5",
|
|
39
|
+
"react": "^18 || ^19",
|
|
40
|
+
"react-dom": "^18 || ^19"
|
|
41
|
+
},
|
|
42
|
+
"dependencies": {
|
|
43
|
+
"@ai-sdk/openai-compatible": "^3.0.9",
|
|
44
|
+
"@flowselections/layout-maker": "^1.7.3",
|
|
45
|
+
"@supabase/supabase-js": "^2.110.8",
|
|
46
|
+
"ai": "^7.0.26"
|
|
47
|
+
},
|
|
48
|
+
"devDependencies": {
|
|
49
|
+
"@cloudflare/vite-plugin": "^1.25.5",
|
|
50
|
+
"@eslint/js": "^9.32.0",
|
|
51
|
+
"@flowselections/core": "1.0.18",
|
|
52
|
+
"@lovable.dev/vite-tanstack-config": "2.13.1",
|
|
53
|
+
"@rsbuild/core": "^1.0.0",
|
|
54
|
+
"@tailwindcss/vite": "^4.2.1",
|
|
55
|
+
"@tanstack/react-query": "^5.83.0",
|
|
56
|
+
"@tanstack/router-plugin": "^1.167.10",
|
|
57
|
+
"@types/node": "^22.16.5",
|
|
58
|
+
"@types/react": "^19.2.0",
|
|
59
|
+
"@types/react-dom": "^19.2.0",
|
|
60
|
+
"@vitejs/plugin-react": "^5.0.4",
|
|
61
|
+
"eslint": "^9.32.0",
|
|
62
|
+
"eslint-plugin-react-hooks": "^5.2.0",
|
|
63
|
+
"eslint-plugin-react-refresh": "^0.4.20",
|
|
64
|
+
"globals": "^15.15.0",
|
|
65
|
+
"react": "^19.2.0",
|
|
66
|
+
"react-dom": "^19.2.0",
|
|
67
|
+
"tailwindcss": "^4.2.1",
|
|
68
|
+
"tw-animate-css": "^1.3.4",
|
|
69
|
+
"typescript": "^5.8.3",
|
|
70
|
+
"tsc-alias": "^1.8.0",
|
|
71
|
+
"typescript-eslint": "^8.56.1",
|
|
72
|
+
"vite": "^7.3.1",
|
|
73
|
+
"vite-tsconfig-paths": "^6.0.2",
|
|
74
|
+
"nitro": "3.0.260603-beta"
|
|
75
|
+
},
|
|
76
|
+
"flowselections": {
|
|
77
|
+
"moduleId": "Afhandeling",
|
|
78
|
+
"pages": [
|
|
79
|
+
{
|
|
80
|
+
"export": "LeveringenPage",
|
|
81
|
+
"route": "afhandeling/leveringen",
|
|
82
|
+
"title": "Planning en Leveringen"
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
"export": "NieuweLeveringPage",
|
|
86
|
+
"route": "afhandeling/leveringen/nieuw",
|
|
87
|
+
"title": "Levering aanmaken",
|
|
88
|
+
"nav": false
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
"export": "PickingPage",
|
|
92
|
+
"route": "afhandeling/picking",
|
|
93
|
+
"title": "Pick Agenda"
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
"export": "ControlePage",
|
|
97
|
+
"route": "afhandeling/controle",
|
|
98
|
+
"title": "Controle Karren"
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
"export": "VervoerdersPage",
|
|
102
|
+
"route": "afhandeling/vervoerders",
|
|
103
|
+
"title": "Vervoerders",
|
|
104
|
+
"nav": false
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
"export": "NieuweVervoerderPage",
|
|
108
|
+
"route": "afhandeling/vervoerders/nieuw",
|
|
109
|
+
"title": "Nieuwe vervoerder",
|
|
110
|
+
"nav": false
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
"export": "VervoerderBewerkenPage",
|
|
114
|
+
"route": "afhandeling/vervoerders/$carrierId",
|
|
115
|
+
"title": "Vervoerder bewerken",
|
|
116
|
+
"nav": false
|
|
117
|
+
}
|
|
118
|
+
]
|
|
119
|
+
}
|
|
120
|
+
}
|