@flowselections/floriday-authenticatie-module 1.0.39 → 1.0.41
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/assets/floriday-logo.png.asset.json +11 -0
- package/dist-lib/components/TemplatePage.d.ts +1 -1
- package/dist-lib/components/TemplatePage.d.ts.map +1 -1
- package/dist-lib/components/floriday/FlorydayConnectionPage.d.ts +1 -1
- package/dist-lib/components/floriday/FlorydayConnectionPage.d.ts.map +1 -1
- package/dist-lib/components/floriday/FlorydaySyncHealthBanner.d.ts +1 -1
- package/dist-lib/components/floriday/FlorydaySyncHealthBanner.d.ts.map +1 -1
- package/dist-lib/components/floriday/FlorydaySyncJobsCard.d.ts +1 -1
- package/dist-lib/components/floriday/FlorydaySyncJobsCard.d.ts.map +1 -1
- package/dist-lib/components/floriday/TokenHealthCard.d.ts +1 -1
- package/dist-lib/components/floriday/TokenHealthCard.d.ts.map +1 -1
- package/dist-lib/components/settings/FloricodeSettingsCard.d.ts +1 -1
- package/dist-lib/components/settings/FloricodeSettingsCard.d.ts.map +1 -1
- package/dist-lib/components/settings/FlorydaySettingsCard.d.ts +1 -1
- package/dist-lib/components/settings/FlorydaySettingsCard.d.ts.map +1 -1
- package/dist-lib/integrations/supabase/auth-middleware.d.ts +374 -0
- package/dist-lib/integrations/supabase/auth-middleware.d.ts.map +1 -1
- package/dist-lib/integrations/supabase/client.d.ts +374 -0
- package/dist-lib/integrations/supabase/client.d.ts.map +1 -1
- package/dist-lib/integrations/supabase/client.server.d.ts +374 -0
- package/dist-lib/integrations/supabase/client.server.d.ts.map +1 -1
- package/dist-lib/integrations/supabase/types.d.ts +381 -0
- package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
- package/dist-lib/lib/cron/process-stock-queue.js +2 -2
- package/dist-lib/lib/error-page.js +30 -30
- package/dist-lib/lib/floricode.functions.d.ts +2618 -0
- package/dist-lib/lib/floricode.functions.d.ts.map +1 -1
- package/dist-lib/lib/floriday-auction-letters.functions.d.ts +374 -0
- package/dist-lib/lib/floriday-auction-letters.functions.d.ts.map +1 -1
- package/dist-lib/lib/floriday-auto-process.server.d.ts +2 -0
- package/dist-lib/lib/floriday-auto-process.server.d.ts.map +1 -1
- package/dist-lib/lib/floriday-auto-process.server.js +64 -33
- package/dist-lib/lib/floriday-labels.functions.d.ts +374 -0
- package/dist-lib/lib/floriday-labels.functions.d.ts.map +1 -1
- package/dist-lib/lib/floriday-public.functions.d.ts +2244 -0
- package/dist-lib/lib/floriday-public.functions.d.ts.map +1 -1
- package/dist-lib/lib/floriday-stickers.functions.d.ts +374 -0
- package/dist-lib/lib/floriday-stickers.functions.d.ts.map +1 -1
- package/dist-lib/lib/floriday-sync.functions.d.ts +11778 -184
- package/dist-lib/lib/floriday-sync.functions.d.ts.map +1 -1
- package/dist-lib/lib/floriday-writes.functions.d.ts +2250 -6
- package/dist-lib/lib/floriday-writes.functions.d.ts.map +1 -1
- package/dist-lib/lib/floriday.functions.d.ts +7201 -92
- package/dist-lib/lib/floriday.functions.d.ts.map +1 -1
- package/dist-lib/lib/floriday.functions.js +46 -3
- package/dist-lib/lib/gateway/fulfillment-order-body.d.ts +57 -0
- package/dist-lib/lib/gateway/fulfillment-order-body.d.ts.map +1 -0
- package/dist-lib/lib/gateway/fulfillment-order-body.js +350 -0
- package/dist-lib/lib/gateway/fulfillment-order-send.d.ts.map +1 -1
- package/dist-lib/lib/gateway/fulfillment-order-send.js +94 -67
- package/dist-lib/lib/gateway/index.d.ts +1 -0
- package/dist-lib/lib/gateway/index.d.ts.map +1 -1
- package/dist-lib/lib/gateway/index.js +1 -0
- package/package.json +1 -1
|
@@ -2,20 +2,7 @@
|
|
|
2
2
|
// Spiegel van src/routes/api/public/gateway/fulfillment-order.send.ts.
|
|
3
3
|
import { resolveGatewayEnvironment } from "./shared.js";
|
|
4
4
|
import { florydayWrite, getActiveFlorydayCredentials } from "../floriday.functions.js";
|
|
5
|
-
|
|
6
|
-
const candidates = [
|
|
7
|
-
req?.numberOfPackages,
|
|
8
|
-
req?.packageCount,
|
|
9
|
-
req?.numberOfLoadCarriers,
|
|
10
|
-
req?.quantity,
|
|
11
|
-
];
|
|
12
|
-
for (const c of candidates) {
|
|
13
|
-
const n = Number(c);
|
|
14
|
-
if (Number.isFinite(n) && n > 0)
|
|
15
|
-
return n;
|
|
16
|
-
}
|
|
17
|
-
return 1;
|
|
18
|
-
}
|
|
5
|
+
import { buildFulfillmentOrderBody, detectFulfillmentState, } from "./fulfillment-order-body.js";
|
|
19
6
|
export async function runFulfillmentOrderSend(supabase, body, caller) {
|
|
20
7
|
const deliveryOrderId = String(body?.deliveryOrderId ?? "").trim();
|
|
21
8
|
const explicitLoadCarrierItems = Array.isArray(body?.loadCarrierItems)
|
|
@@ -29,28 +16,53 @@ export async function runFulfillmentOrderSend(supabase, body, caller) {
|
|
|
29
16
|
payload: { ok: false, error: `Geen actieve Floriday-koppeling voor ${env}` },
|
|
30
17
|
};
|
|
31
18
|
}
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
19
|
+
const fulfillmentRequestIds = Array.isArray(body?.fulfillmentRequestIds)
|
|
20
|
+
? body.fulfillmentRequestIds.map((s) => String(s))
|
|
21
|
+
: null;
|
|
22
|
+
// Detectie "al afgehandeld" — één functie, twee bronnen, één uitkomst.
|
|
23
|
+
// Deze check geldt voor BEIDE paden: ook een caller die zelf
|
|
24
|
+
// `loadCarrierItems` meestuurt (passthrough) komt hier langs, zodat er langs
|
|
25
|
+
// geen enkel pad een dubbele fulfillment-order bij Floriday kan ontstaan.
|
|
26
|
+
const detection = await detectFulfillmentState(supabase, {
|
|
27
|
+
connectionId: conn.id,
|
|
28
|
+
deliveryOrderId,
|
|
29
|
+
fulfillmentRequestIds,
|
|
30
|
+
});
|
|
31
|
+
if (detection.code === "already_fulfilled") {
|
|
32
|
+
return {
|
|
33
|
+
status: 200,
|
|
34
|
+
payload: {
|
|
35
|
+
ok: true,
|
|
36
|
+
code: "already_fulfilled",
|
|
37
|
+
// `skipped` blijft staan als alias van het codeveld.
|
|
38
|
+
skipped: true,
|
|
39
|
+
source: detection.source,
|
|
40
|
+
reason: detection.message,
|
|
41
|
+
fulfillmentOrderId: detection.fulfillmentOrderId,
|
|
42
|
+
skippedRequests: detection.skipped,
|
|
43
|
+
},
|
|
44
|
+
};
|
|
50
45
|
}
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
46
|
+
if (detection.code === "delivery_order_not_cached") {
|
|
47
|
+
// Niet stilzwijgend versturen: zonder cache kan de claim-check niet worden
|
|
48
|
+
// uitgevoerd, ook niet op het passthrough-pad.
|
|
49
|
+
return {
|
|
50
|
+
status: 409,
|
|
51
|
+
payload: {
|
|
52
|
+
ok: false,
|
|
53
|
+
code: "delivery_order_not_cached",
|
|
54
|
+
error: detection.message,
|
|
55
|
+
},
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
// Body opbouwen — hetzij passthrough (caller geeft zelf loadCarrierItems),
|
|
59
|
+
// hetzij via de gedeelde bodybouwer vanuit de cache.
|
|
60
|
+
let writeBody;
|
|
61
|
+
let skipped = [];
|
|
62
|
+
if (explicitLoadCarrierItems) {
|
|
63
|
+
writeBody = { loadCarrierItems: explicitLoadCarrierItems };
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
54
66
|
const { data: doRow } = await supabase
|
|
55
67
|
.from("floriday_delivery_orders_cache")
|
|
56
68
|
.select("floriday_id, data")
|
|
@@ -59,49 +71,49 @@ export async function runFulfillmentOrderSend(supabase, body, caller) {
|
|
|
59
71
|
.maybeSingle();
|
|
60
72
|
if (!doRow) {
|
|
61
73
|
return {
|
|
62
|
-
status:
|
|
63
|
-
payload: {
|
|
74
|
+
status: 409,
|
|
75
|
+
payload: {
|
|
76
|
+
ok: false,
|
|
77
|
+
code: "delivery_order_not_cached",
|
|
78
|
+
error: "Delivery-order niet in cache — sync eerst",
|
|
79
|
+
},
|
|
64
80
|
};
|
|
65
81
|
}
|
|
66
|
-
const
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
.filter((r) => {
|
|
74
|
-
const id = r?.fulfillmentRequestId ?? r?.id;
|
|
75
|
-
return !filterIds || filterIds.includes(String(id));
|
|
76
|
-
})
|
|
77
|
-
.map((r) => {
|
|
78
|
-
const id = r?.fulfillmentRequestId ?? r?.id;
|
|
79
|
-
if (!id)
|
|
80
|
-
return null;
|
|
82
|
+
const built = await buildFulfillmentOrderBody(supabase, {
|
|
83
|
+
connectionId: conn.id,
|
|
84
|
+
deliveryOrderId,
|
|
85
|
+
deliveryOrderData: doRow.data,
|
|
86
|
+
fulfillmentRequestIds,
|
|
87
|
+
});
|
|
88
|
+
if (built.kind === "already_fulfilled") {
|
|
81
89
|
return {
|
|
82
|
-
|
|
83
|
-
fulfillmentRequestId: id,
|
|
84
|
-
numberOfPackages: extractPackageCount(r),
|
|
85
|
-
};
|
|
86
|
-
})
|
|
87
|
-
.filter(Boolean);
|
|
88
|
-
if (requests.length === 0) {
|
|
89
|
-
return {
|
|
90
|
-
status: 400,
|
|
90
|
+
status: 200,
|
|
91
91
|
payload: {
|
|
92
|
-
ok:
|
|
93
|
-
|
|
92
|
+
ok: true,
|
|
93
|
+
code: "already_fulfilled",
|
|
94
|
+
skipped: true,
|
|
95
|
+
source: built.source,
|
|
96
|
+
reason: built.message,
|
|
97
|
+
fulfillmentOrderId: built.fulfillmentOrderId,
|
|
98
|
+
skippedRequests: built.skipped,
|
|
94
99
|
},
|
|
95
100
|
};
|
|
96
101
|
}
|
|
97
|
-
|
|
102
|
+
if (built.kind === "error") {
|
|
103
|
+
return {
|
|
104
|
+
status: built.permanent ? 400 : 409,
|
|
105
|
+
payload: { ok: false, error: built.error },
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
writeBody = built.body;
|
|
109
|
+
skipped = built.skipped;
|
|
98
110
|
}
|
|
99
111
|
const result = await florydayWrite(supabase, env, {
|
|
100
112
|
module: "auto-process",
|
|
101
113
|
action: "send-fulfillment-order",
|
|
102
114
|
method: "POST",
|
|
103
115
|
path: "/fulfillment-orders",
|
|
104
|
-
body:
|
|
116
|
+
body: writeBody,
|
|
105
117
|
referenceId: deliveryOrderId || "batch",
|
|
106
118
|
idempotencyKey: deliveryOrderId
|
|
107
119
|
? `do:${deliveryOrderId}:fulfillment-order`
|
|
@@ -111,11 +123,26 @@ export async function runFulfillmentOrderSend(supabase, body, caller) {
|
|
|
111
123
|
const fulfillmentOrderId = result.data?.fulfillmentOrderId ??
|
|
112
124
|
result.data?.id ??
|
|
113
125
|
result.data?.floridayId;
|
|
126
|
+
if (result.ok) {
|
|
127
|
+
// Geen `error` in een ok:true-payload.
|
|
128
|
+
return {
|
|
129
|
+
status: 200,
|
|
130
|
+
payload: {
|
|
131
|
+
ok: true,
|
|
132
|
+
code: "created",
|
|
133
|
+
skipped: false,
|
|
134
|
+
skippedRequests: skipped,
|
|
135
|
+
fulfillmentOrderId,
|
|
136
|
+
},
|
|
137
|
+
};
|
|
138
|
+
}
|
|
114
139
|
return {
|
|
115
|
-
status:
|
|
140
|
+
status: 502,
|
|
116
141
|
payload: {
|
|
117
|
-
ok:
|
|
142
|
+
ok: false,
|
|
143
|
+
code: "write_failed",
|
|
118
144
|
skipped: false,
|
|
145
|
+
skippedRequests: skipped,
|
|
119
146
|
fulfillmentOrderId,
|
|
120
147
|
error: result.error,
|
|
121
148
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/gateway/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;AAC3B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/gateway/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;AAC3B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,6BAA6B,CAAC"}
|