@offnominal/ndb2-api-types 0.3.0 → 0.4.0
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/v2/webhooks.d.ts +8 -2
- package/dist/v2/webhooks.js +33 -0
- package/dist/v2/webhooks.js.map +1 -1
- package/package.json +1 -1
- package/src/v2/webhooks.ts +50 -2
package/dist/v2/webhooks.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Prediction } from "./entities/predictions";
|
|
2
|
-
|
|
2
|
+
declare const WEBHOOK_EVENTS: readonly ["untriggered_prediction", "triggered_prediction"];
|
|
3
|
+
export type WebhookEvent = (typeof WEBHOOK_EVENTS)[number];
|
|
3
4
|
export type BasePayload<E extends WebhookEvent, D> = {
|
|
4
5
|
event_name: E;
|
|
5
6
|
version: 2;
|
|
@@ -10,5 +11,10 @@ export declare namespace Events {
|
|
|
10
11
|
type UntriggeredPrediction = BasePayload<"untriggered_prediction", {
|
|
11
12
|
prediction: Prediction;
|
|
12
13
|
}>;
|
|
14
|
+
type TriggeredPrediction = BasePayload<"triggered_prediction", {
|
|
15
|
+
prediction: Prediction;
|
|
16
|
+
}>;
|
|
13
17
|
}
|
|
14
|
-
export type Payload = Events.UntriggeredPrediction;
|
|
18
|
+
export type Payload = Events.UntriggeredPrediction | Events.TriggeredPrediction;
|
|
19
|
+
export declare const isWebhookPayloadV2: (payload: any) => payload is Payload;
|
|
20
|
+
export {};
|
package/dist/v2/webhooks.js
CHANGED
|
@@ -1,3 +1,36 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isWebhookPayloadV2 = void 0;
|
|
4
|
+
// Single source of truth for webhook events
|
|
5
|
+
const WEBHOOK_EVENTS = [
|
|
6
|
+
"untriggered_prediction",
|
|
7
|
+
"triggered_prediction",
|
|
8
|
+
];
|
|
9
|
+
const isWebhookPayloadV2 = (payload) => {
|
|
10
|
+
if (!payload || typeof payload !== "object") {
|
|
11
|
+
return false;
|
|
12
|
+
}
|
|
13
|
+
// Validate event_name against WebhookEvent type
|
|
14
|
+
if (typeof payload.event_name !== "string" ||
|
|
15
|
+
!WEBHOOK_EVENTS.includes(payload.event_name)) {
|
|
16
|
+
return false;
|
|
17
|
+
}
|
|
18
|
+
// Validate version
|
|
19
|
+
if (payload.version !== 2) {
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
22
|
+
// Validate date (can be Date object or string that parses to valid date)
|
|
23
|
+
if (!payload.date) {
|
|
24
|
+
return false;
|
|
25
|
+
}
|
|
26
|
+
const date = payload.date instanceof Date ? payload.date : new Date(payload.date);
|
|
27
|
+
if (isNaN(date.getTime())) {
|
|
28
|
+
return false;
|
|
29
|
+
}
|
|
30
|
+
if (payload.data === undefined) {
|
|
31
|
+
return false;
|
|
32
|
+
}
|
|
33
|
+
return true;
|
|
34
|
+
};
|
|
35
|
+
exports.isWebhookPayloadV2 = isWebhookPayloadV2;
|
|
3
36
|
//# sourceMappingURL=webhooks.js.map
|
package/dist/v2/webhooks.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webhooks.js","sourceRoot":"","sources":["../../src/v2/webhooks.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"webhooks.js","sourceRoot":"","sources":["../../src/v2/webhooks.ts"],"names":[],"mappings":";;;AAEA,4CAA4C;AAC5C,MAAM,cAAc,GAAG;IACrB,wBAAwB;IACxB,sBAAsB;CACd,CAAC;AA6BJ,MAAM,kBAAkB,GAAG,CAAC,OAAY,EAAsB,EAAE;IACrE,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC5C,OAAO,KAAK,CAAC;IACf,CAAC;IAED,gDAAgD;IAChD,IACE,OAAO,OAAO,CAAC,UAAU,KAAK,QAAQ;QACtC,CAAC,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,UAA0B,CAAC,EAC5D,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,mBAAmB;IACnB,IAAI,OAAO,CAAC,OAAO,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,yEAAyE;IACzE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAClB,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,IAAI,GACR,OAAO,CAAC,IAAI,YAAY,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACvE,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;QAC1B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAjCW,QAAA,kBAAkB,sBAiC7B"}
|
package/package.json
CHANGED
package/src/v2/webhooks.ts
CHANGED
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
import { Prediction } from "./entities/predictions";
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
// Single source of truth for webhook events
|
|
4
|
+
const WEBHOOK_EVENTS = [
|
|
5
|
+
"untriggered_prediction",
|
|
6
|
+
"triggered_prediction",
|
|
7
|
+
] as const;
|
|
8
|
+
|
|
9
|
+
// Derive the type from the array
|
|
10
|
+
export type WebhookEvent = (typeof WEBHOOK_EVENTS)[number];
|
|
4
11
|
|
|
5
12
|
export type BasePayload<E extends WebhookEvent, D> = {
|
|
6
13
|
event_name: E;
|
|
@@ -16,6 +23,47 @@ export namespace Events {
|
|
|
16
23
|
prediction: Prediction;
|
|
17
24
|
}
|
|
18
25
|
>;
|
|
26
|
+
export type TriggeredPrediction = BasePayload<
|
|
27
|
+
"triggered_prediction",
|
|
28
|
+
{
|
|
29
|
+
prediction: Prediction;
|
|
30
|
+
}
|
|
31
|
+
>;
|
|
19
32
|
}
|
|
20
33
|
|
|
21
|
-
export type Payload = Events.UntriggeredPrediction;
|
|
34
|
+
export type Payload = Events.UntriggeredPrediction | Events.TriggeredPrediction;
|
|
35
|
+
|
|
36
|
+
export const isWebhookPayloadV2 = (payload: any): payload is Payload => {
|
|
37
|
+
if (!payload || typeof payload !== "object") {
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
// Validate event_name against WebhookEvent type
|
|
42
|
+
if (
|
|
43
|
+
typeof payload.event_name !== "string" ||
|
|
44
|
+
!WEBHOOK_EVENTS.includes(payload.event_name as WebhookEvent)
|
|
45
|
+
) {
|
|
46
|
+
return false;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
// Validate version
|
|
50
|
+
if (payload.version !== 2) {
|
|
51
|
+
return false;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
// Validate date (can be Date object or string that parses to valid date)
|
|
55
|
+
if (!payload.date) {
|
|
56
|
+
return false;
|
|
57
|
+
}
|
|
58
|
+
const date =
|
|
59
|
+
payload.date instanceof Date ? payload.date : new Date(payload.date);
|
|
60
|
+
if (isNaN(date.getTime())) {
|
|
61
|
+
return false;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
if (payload.data === undefined) {
|
|
65
|
+
return false;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
return true;
|
|
69
|
+
};
|