@lucern/events 0.3.0-alpha.9 → 1.0.1

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.
@@ -0,0 +1,110 @@
1
+ import * as xstate from 'xstate';
2
+
3
+ type WebhookDeliveryLifecycleState = "pending" | "delivering" | "delivered" | "dead_letter";
4
+ type WebhookDeliveryMachineEvent = {
5
+ type: "START";
6
+ now?: number;
7
+ } | {
8
+ type: "RESUME";
9
+ now?: number;
10
+ } | {
11
+ type: "ATTEMPT_SUCCEEDED";
12
+ now?: number;
13
+ } | {
14
+ type: "ATTEMPT_RETRYABLE_FAILED";
15
+ reason?: string;
16
+ now?: number;
17
+ statusCode?: number;
18
+ } | {
19
+ type: "ATTEMPT_FAILED";
20
+ reason?: string;
21
+ now?: number;
22
+ statusCode?: number;
23
+ } | {
24
+ type: "REPLAY";
25
+ now?: number;
26
+ };
27
+ type WebhookDeliveryMachineContext = {
28
+ attemptCount: number;
29
+ maxAttempts: number;
30
+ retryDelaysMs: readonly number[];
31
+ nextAttemptAt?: number;
32
+ lastAttemptAt?: number;
33
+ lastStatusCode?: number;
34
+ lastError?: string;
35
+ deliveredAt?: number;
36
+ };
37
+ type WebhookDeliveryMachineSnapshot = {
38
+ value: WebhookDeliveryLifecycleState;
39
+ context: WebhookDeliveryMachineContext;
40
+ };
41
+ type NextAttemptInput = {
42
+ attemptCount: number;
43
+ maxAttempts: number;
44
+ retryDelaysMs: readonly number[];
45
+ now: number;
46
+ };
47
+ declare function computeWebhookNextAttemptAt({ attemptCount, maxAttempts, retryDelaysMs, now, }: NextAttemptInput): number | undefined;
48
+ declare function createWebhookDeliveryMachineContext(params?: Partial<Pick<WebhookDeliveryMachineContext, "attemptCount" | "maxAttempts" | "retryDelaysMs" | "nextAttemptAt" | "lastAttemptAt" | "lastError" | "lastStatusCode" | "deliveredAt">>): WebhookDeliveryMachineContext;
49
+ declare const webhookDeliveryMachine: xstate.StateMachine<WebhookDeliveryMachineContext, {
50
+ type: "START";
51
+ now?: number;
52
+ } | {
53
+ type: "RESUME";
54
+ now?: number;
55
+ } | {
56
+ type: "ATTEMPT_SUCCEEDED";
57
+ now?: number;
58
+ } | {
59
+ type: "ATTEMPT_RETRYABLE_FAILED";
60
+ reason?: string;
61
+ now?: number;
62
+ statusCode?: number;
63
+ } | {
64
+ type: "ATTEMPT_FAILED";
65
+ reason?: string;
66
+ now?: number;
67
+ statusCode?: number;
68
+ } | {
69
+ type: "REPLAY";
70
+ now?: number;
71
+ }, {}, never, {
72
+ type: "markStart";
73
+ params: xstate.NonReducibleUnknown;
74
+ } | {
75
+ type: "registerRetryableFailure";
76
+ params: xstate.NonReducibleUnknown;
77
+ } | {
78
+ type: "registerFatalFailure";
79
+ params: xstate.NonReducibleUnknown;
80
+ } | {
81
+ type: "markDelivered";
82
+ params: xstate.NonReducibleUnknown;
83
+ } | {
84
+ type: "markReplay";
85
+ params: xstate.NonReducibleUnknown;
86
+ }, {
87
+ type: "canStart";
88
+ params: unknown;
89
+ } | {
90
+ type: "canRetry";
91
+ params: unknown;
92
+ }, never, "pending" | "delivering" | "delivered" | "dead_letter", string, xstate.NonReducibleUnknown, xstate.NonReducibleUnknown, xstate.EventObject, xstate.MetaObject, {
93
+ id: "lucern.webhookDeliveryMachine";
94
+ states: {
95
+ readonly pending: {};
96
+ readonly delivering: {};
97
+ readonly delivered: {};
98
+ readonly dead_letter: {};
99
+ };
100
+ }>;
101
+ type WebhookDeliveryMachine = typeof webhookDeliveryMachine;
102
+ declare function evaluateWebhookDeliveryTransition(state: WebhookDeliveryLifecycleState, context: WebhookDeliveryMachineContext, event: WebhookDeliveryMachineEvent): {
103
+ allowed: boolean;
104
+ to: WebhookDeliveryLifecycleState;
105
+ context: WebhookDeliveryMachineContext;
106
+ from: WebhookDeliveryLifecycleState;
107
+ };
108
+ declare function normalizeWebhookDeliveryLifecycleState(status: string | undefined): WebhookDeliveryLifecycleState;
109
+
110
+ export { type WebhookDeliveryLifecycleState, type WebhookDeliveryMachine, type WebhookDeliveryMachineContext, type WebhookDeliveryMachineEvent, type WebhookDeliveryMachineSnapshot, computeWebhookNextAttemptAt, createWebhookDeliveryMachineContext, evaluateWebhookDeliveryTransition, normalizeWebhookDeliveryLifecycleState, webhookDeliveryMachine };