@opencoredev/social-sdk 0.1.0 → 0.1.2
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/README.md +4 -2
- package/package.json +1 -1
- package/dist/cli.d.ts +0 -14
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js +0 -223
- package/dist/cli.js.map +0 -1
- package/dist/cloud/common.d.ts +0 -26
- package/dist/cloud/common.d.ts.map +0 -1
- package/dist/cloud/common.js +0 -307
- package/dist/cloud/common.js.map +0 -1
- package/dist/cloud/lifecycle.d.ts +0 -11
- package/dist/cloud/lifecycle.d.ts.map +0 -1
- package/dist/cloud/lifecycle.js +0 -108
- package/dist/cloud/lifecycle.js.map +0 -1
- package/dist/cloud/media.d.ts +0 -24
- package/dist/cloud/media.d.ts.map +0 -1
- package/dist/cloud/media.js +0 -97
- package/dist/cloud/media.js.map +0 -1
- package/dist/cloud/outcomes.d.ts +0 -10
- package/dist/cloud/outcomes.d.ts.map +0 -1
- package/dist/cloud/outcomes.js +0 -188
- package/dist/cloud/outcomes.js.map +0 -1
- package/dist/cloud/post-for-me.d.ts +0 -70
- package/dist/cloud/post-for-me.d.ts.map +0 -1
- package/dist/cloud/post-for-me.js +0 -326
- package/dist/cloud/post-for-me.js.map +0 -1
- package/dist/cloud/zernio.d.ts +0 -112
- package/dist/cloud/zernio.d.ts.map +0 -1
- package/dist/cloud/zernio.js +0 -542
- package/dist/cloud/zernio.js.map +0 -1
- package/dist/core/adapter.d.ts +0 -118
- package/dist/core/adapter.d.ts.map +0 -1
- package/dist/core/adapter.js +0 -4
- package/dist/core/adapter.js.map +0 -1
- package/dist/core/client.d.ts +0 -108
- package/dist/core/client.d.ts.map +0 -1
- package/dist/core/client.js +0 -893
- package/dist/core/client.js.map +0 -1
- package/dist/core/concurrency.d.ts +0 -10
- package/dist/core/concurrency.d.ts.map +0 -1
- package/dist/core/concurrency.js +0 -78
- package/dist/core/concurrency.js.map +0 -1
- package/dist/core/errors.d.ts +0 -45
- package/dist/core/errors.d.ts.map +0 -1
- package/dist/core/errors.js +0 -44
- package/dist/core/errors.js.map +0 -1
- package/dist/core/idempotency.d.ts +0 -34
- package/dist/core/idempotency.d.ts.map +0 -1
- package/dist/core/idempotency.js +0 -59
- package/dist/core/idempotency.js.map +0 -1
- package/dist/core/index.d.ts +0 -7
- package/dist/core/index.d.ts.map +0 -1
- package/dist/core/index.js +0 -7
- package/dist/core/index.js.map +0 -1
- package/dist/core/pagination.d.ts +0 -12
- package/dist/core/pagination.d.ts.map +0 -1
- package/dist/core/pagination.js +0 -81
- package/dist/core/pagination.js.map +0 -1
- package/dist/core/types.d.ts +0 -329
- package/dist/core/types.d.ts.map +0 -1
- package/dist/core/types.js +0 -7
- package/dist/core/types.js.map +0 -1
- package/dist/index.d.ts +0 -2
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -2
- package/dist/index.js.map +0 -1
- package/dist/platforms/bluesky.d.ts +0 -132
- package/dist/platforms/bluesky.d.ts.map +0 -1
- package/dist/platforms/bluesky.js +0 -1049
- package/dist/platforms/bluesky.js.map +0 -1
- package/dist/platforms/instagram.d.ts +0 -63
- package/dist/platforms/instagram.d.ts.map +0 -1
- package/dist/platforms/instagram.js +0 -676
- package/dist/platforms/instagram.js.map +0 -1
- package/dist/platforms/linkedin.d.ts +0 -54
- package/dist/platforms/linkedin.d.ts.map +0 -1
- package/dist/platforms/linkedin.js +0 -580
- package/dist/platforms/linkedin.js.map +0 -1
- package/dist/platforms/threads.d.ts +0 -102
- package/dist/platforms/threads.d.ts.map +0 -1
- package/dist/platforms/threads.js +0 -571
- package/dist/platforms/threads.js.map +0 -1
- package/dist/platforms/tiktok.d.ts +0 -32
- package/dist/platforms/tiktok.d.ts.map +0 -1
- package/dist/platforms/tiktok.js +0 -511
- package/dist/platforms/tiktok.js.map +0 -1
- package/dist/platforms/x-engagement.d.ts +0 -17
- package/dist/platforms/x-engagement.d.ts.map +0 -1
- package/dist/platforms/x-engagement.js +0 -47
- package/dist/platforms/x-engagement.js.map +0 -1
- package/dist/platforms/x.d.ts +0 -82
- package/dist/platforms/x.d.ts.map +0 -1
- package/dist/platforms/x.js +0 -511
- package/dist/platforms/x.js.map +0 -1
- package/dist/platforms/youtube-upload.d.ts +0 -33
- package/dist/platforms/youtube-upload.d.ts.map +0 -1
- package/dist/platforms/youtube-upload.js +0 -281
- package/dist/platforms/youtube-upload.js.map +0 -1
- package/dist/platforms/youtube.d.ts +0 -55
- package/dist/platforms/youtube.d.ts.map +0 -1
- package/dist/platforms/youtube.js +0 -561
- package/dist/platforms/youtube.js.map +0 -1
- package/dist/server/connections.d.ts +0 -124
- package/dist/server/connections.d.ts.map +0 -1
- package/dist/server/connections.js +0 -334
- package/dist/server/connections.js.map +0 -1
- package/dist/server/credentials.d.ts +0 -52
- package/dist/server/credentials.d.ts.map +0 -1
- package/dist/server/credentials.js +0 -115
- package/dist/server/credentials.js.map +0 -1
- package/dist/server/index.d.ts +0 -5
- package/dist/server/index.d.ts.map +0 -1
- package/dist/server/index.js +0 -5
- package/dist/server/index.js.map +0 -1
- package/dist/server/oauth.d.ts +0 -48
- package/dist/server/oauth.d.ts.map +0 -1
- package/dist/server/oauth.js +0 -483
- package/dist/server/oauth.js.map +0 -1
- package/dist/server/webhooks.d.ts +0 -58
- package/dist/server/webhooks.d.ts.map +0 -1
- package/dist/server/webhooks.js +0 -198
- package/dist/server/webhooks.js.map +0 -1
- package/dist/testing/index.d.ts +0 -47
- package/dist/testing/index.d.ts.map +0 -1
- package/dist/testing/index.js +0 -413
- package/dist/testing/index.js.map +0 -1
- package/dist/testing.d.ts +0 -2
- package/dist/testing.d.ts.map +0 -1
- package/dist/testing.js +0 -2
- package/dist/testing.js.map +0 -1
- package/dist/transport/binary.d.ts +0 -3
- package/dist/transport/binary.d.ts.map +0 -1
- package/dist/transport/binary.js +0 -30
- package/dist/transport/binary.js.map +0 -1
- package/dist/transport/budget.d.ts +0 -4
- package/dist/transport/budget.d.ts.map +0 -1
- package/dist/transport/budget.js +0 -27
- package/dist/transport/budget.js.map +0 -1
- package/dist/transport/http.d.ts +0 -44
- package/dist/transport/http.d.ts.map +0 -1
- package/dist/transport/http.js +0 -230
- package/dist/transport/http.js.map +0 -1
- package/dist/transport/json.d.ts +0 -3
- package/dist/transport/json.d.ts.map +0 -1
- package/dist/transport/json.js +0 -11
- package/dist/transport/json.js.map +0 -1
- package/dist/transport/upload.d.ts +0 -25
- package/dist/transport/upload.d.ts.map +0 -1
- package/dist/transport/upload.js +0 -133
- package/dist/transport/upload.js.map +0 -1
- package/dist/transport/validation.d.ts +0 -6
- package/dist/transport/validation.d.ts.map +0 -1
- package/dist/transport/validation.js +0 -24
- package/dist/transport/validation.js.map +0 -1
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
import type { JsonObject } from "../core/types.js";
|
|
2
|
-
export interface VerifiedWebhook {
|
|
3
|
-
readonly valid: true;
|
|
4
|
-
readonly method: "hmac-sha256" | "shared-secret-header";
|
|
5
|
-
readonly bodyAuthenticated: boolean;
|
|
6
|
-
readonly signedTimestamp: false;
|
|
7
|
-
}
|
|
8
|
-
export declare function verifyZernioWebhook(input: {
|
|
9
|
-
secret: string;
|
|
10
|
-
headers: Headers;
|
|
11
|
-
body: Uint8Array;
|
|
12
|
-
maxBytes?: number;
|
|
13
|
-
}): Promise<VerifiedWebhook>;
|
|
14
|
-
export declare function verifyPostForMeWebhook(input: {
|
|
15
|
-
secret: string;
|
|
16
|
-
headers: Headers;
|
|
17
|
-
body: Uint8Array;
|
|
18
|
-
maxBytes?: number;
|
|
19
|
-
}): Promise<VerifiedWebhook>;
|
|
20
|
-
export interface SocialEvent {
|
|
21
|
-
readonly version: 1;
|
|
22
|
-
readonly id: string;
|
|
23
|
-
readonly backend: string;
|
|
24
|
-
readonly provider: "zernio" | "post-for-me";
|
|
25
|
-
readonly type: "publication.updated" | "post.removed" | "backend-record.deleted" | "account.updated" | "message.received" | "comment.received" | "unknown";
|
|
26
|
-
readonly identity: "provider-event-id" | "body-digest";
|
|
27
|
-
readonly originalType: string;
|
|
28
|
-
readonly occurredAt?: string;
|
|
29
|
-
readonly receivedAt: string;
|
|
30
|
-
readonly accountIds: readonly string[];
|
|
31
|
-
readonly backendRecordId?: string;
|
|
32
|
-
readonly data: JsonObject;
|
|
33
|
-
}
|
|
34
|
-
export declare function decodeWebhook(input: {
|
|
35
|
-
provider: "zernio" | "post-for-me";
|
|
36
|
-
backend: string;
|
|
37
|
-
body: Uint8Array;
|
|
38
|
-
receivedAt?: string;
|
|
39
|
-
}): Promise<SocialEvent>;
|
|
40
|
-
export interface EventInbox {
|
|
41
|
-
/** Atomically persist event, route resolution, and pending processing state. */
|
|
42
|
-
accept(input: {
|
|
43
|
-
key: string;
|
|
44
|
-
event: SocialEvent;
|
|
45
|
-
tenantIds: readonly string[];
|
|
46
|
-
state: "pending" | "quarantined";
|
|
47
|
-
}): Promise<"accepted" | "duplicate">;
|
|
48
|
-
}
|
|
49
|
-
export declare function acceptWebhook(input: {
|
|
50
|
-
event: SocialEvent;
|
|
51
|
-
endpointId: string;
|
|
52
|
-
inbox: EventInbox;
|
|
53
|
-
resolveTenants: (backend: string, accountIds: readonly string[]) => Promise<readonly string[]>;
|
|
54
|
-
}): Promise<{
|
|
55
|
-
state: "accepted" | "duplicate";
|
|
56
|
-
quarantined: boolean;
|
|
57
|
-
}>;
|
|
58
|
-
//# sourceMappingURL=webhooks.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"webhooks.d.ts","sourceRoot":"","sources":["../../src/server/webhooks.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAa,MAAM,kBAAkB,CAAC;AAE9D,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,aAAa,GAAG,sBAAsB,CAAC;IACxD,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAC;IACpC,QAAQ,CAAC,eAAe,EAAE,KAAK,CAAC;CACjC;AAgBD,wBAAsB,mBAAmB,CAAC,KAAK,EAAE;IAC/C,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GAAG,OAAO,CAAC,eAAe,CAAC,CAwB3B;AAED,wBAAsB,sBAAsB,CAAC,KAAK,EAAE;IAClD,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GAAG,OAAO,CAAC,eAAe,CAAC,CAqB3B;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IACpB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,GAAG,aAAa,CAAC;IAC5C,QAAQ,CAAC,IAAI,EACT,qBAAqB,GACrB,cAAc,GACd,wBAAwB,GACxB,iBAAiB,GACjB,kBAAkB,GAClB,kBAAkB,GAClB,SAAS,CAAC;IACd,QAAQ,CAAC,QAAQ,EAAE,mBAAmB,GAAG,aAAa,CAAC;IACvD,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;CAC3B;AAwBD,wBAAsB,aAAa,CAAC,KAAK,EAAE;IACzC,QAAQ,EAAE,QAAQ,GAAG,aAAa,CAAC;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,UAAU,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,OAAO,CAAC,WAAW,CAAC,CAqGvB;AAED,MAAM,WAAW,UAAU;IACzB,gFAAgF;IAChF,MAAM,CAAC,KAAK,EAAE;QACZ,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,WAAW,CAAC;QACnB,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;QAC7B,KAAK,EAAE,SAAS,GAAG,aAAa,CAAC;KAClC,GAAG,OAAO,CAAC,UAAU,GAAG,WAAW,CAAC,CAAC;CACvC;AAED,wBAAsB,aAAa,CAAC,KAAK,EAAE;IACzC,KAAK,EAAE,WAAW,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,UAAU,CAAC;IAClB,cAAc,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,MAAM,EAAE,KAAK,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CAAC;CAChG,GAAG,OAAO,CAAC;IAAE,KAAK,EAAE,UAAU,GAAG,WAAW,CAAC;IAAC,WAAW,EAAE,OAAO,CAAA;CAAE,CAAC,CAgCrE"}
|
package/dist/server/webhooks.js
DELETED
|
@@ -1,198 +0,0 @@
|
|
|
1
|
-
import { parseJson } from "../transport/json.js";
|
|
2
|
-
import { SocialError } from "../core/errors.js";
|
|
3
|
-
import { array, object, optionalString, string } from "../transport/validation.js";
|
|
4
|
-
function denied() {
|
|
5
|
-
throw new SocialError({
|
|
6
|
-
code: "unauthorized",
|
|
7
|
-
operation: "webhooks.verify",
|
|
8
|
-
message: "Webhook authentication failed. Check the configured endpoint secret and preserve the raw request bytes.",
|
|
9
|
-
});
|
|
10
|
-
}
|
|
11
|
-
function checkedBytes(body, maxBytes) {
|
|
12
|
-
if (!Number.isSafeInteger(maxBytes) || maxBytes <= 0 || body.byteLength > maxBytes)
|
|
13
|
-
denied();
|
|
14
|
-
return new Uint8Array(body);
|
|
15
|
-
}
|
|
16
|
-
export async function verifyZernioWebhook(input) {
|
|
17
|
-
if (!input.secret)
|
|
18
|
-
denied();
|
|
19
|
-
const signature = input.headers.get("X-Zernio-Signature");
|
|
20
|
-
if (!signature || !/^[0-9a-f]{64}$/.test(signature))
|
|
21
|
-
denied();
|
|
22
|
-
const bytes = new Uint8Array(32);
|
|
23
|
-
for (let index = 0; index < 32; index++)
|
|
24
|
-
bytes[index] = Number.parseInt(signature.slice(index * 2, index * 2 + 2), 16);
|
|
25
|
-
const key = await crypto.subtle.importKey("raw", new TextEncoder().encode(input.secret), { name: "HMAC", hash: "SHA-256" }, false, ["verify"]);
|
|
26
|
-
if (!(await crypto.subtle.verify("HMAC", key, bytes, checkedBytes(input.body, input.maxBytes ?? 1024 * 1024))))
|
|
27
|
-
denied();
|
|
28
|
-
return { valid: true, method: "hmac-sha256", bodyAuthenticated: true, signedTimestamp: false };
|
|
29
|
-
}
|
|
30
|
-
export async function verifyPostForMeWebhook(input) {
|
|
31
|
-
checkedBytes(input.body, input.maxBytes ?? 1024 * 1024);
|
|
32
|
-
const supplied = input.headers.get("Post-For-Me-Webhook-Secret");
|
|
33
|
-
if (!input.secret || !supplied || supplied.length > 4096)
|
|
34
|
-
denied();
|
|
35
|
-
// WebCrypto verifies fixed-size keyed digests, avoiding a JS early-exit string comparison.
|
|
36
|
-
const key = await crypto.subtle.importKey("raw", new TextEncoder().encode(input.secret), { name: "HMAC", hash: "SHA-256" }, false, ["sign", "verify"]);
|
|
37
|
-
const expected = await crypto.subtle.sign("HMAC", key, new TextEncoder().encode(input.secret));
|
|
38
|
-
if (!(await crypto.subtle.verify("HMAC", key, expected, new TextEncoder().encode(supplied))))
|
|
39
|
-
denied();
|
|
40
|
-
return {
|
|
41
|
-
valid: true,
|
|
42
|
-
method: "shared-secret-header",
|
|
43
|
-
bodyAuthenticated: false,
|
|
44
|
-
signedTimestamp: false,
|
|
45
|
-
};
|
|
46
|
-
}
|
|
47
|
-
const sensitive = /^(access.?token|refresh.?token|authorization|cookie|secret|signature|code|password|signed.?url|upload.?url)$/i;
|
|
48
|
-
function clean(value, depth = 0) {
|
|
49
|
-
if (depth > 32)
|
|
50
|
-
throw new SocialError({
|
|
51
|
-
code: "invalid_input",
|
|
52
|
-
operation: "webhooks.decode",
|
|
53
|
-
message: "Webhook payload nesting exceeds the limit.",
|
|
54
|
-
});
|
|
55
|
-
if (value === null || typeof value === "boolean" || typeof value === "number")
|
|
56
|
-
return value;
|
|
57
|
-
if (typeof value === "string") {
|
|
58
|
-
if (/https:\/\//i.test(value) && /[?&](x-amz-|signature|token|sig|key)=?/i.test(value))
|
|
59
|
-
return "[redacted URL]";
|
|
60
|
-
return value;
|
|
61
|
-
}
|
|
62
|
-
if (Array.isArray(value))
|
|
63
|
-
return value.map((item) => clean(item, depth + 1));
|
|
64
|
-
const result = {};
|
|
65
|
-
for (const [key, entry] of Object.entries(object(value)))
|
|
66
|
-
result[key] = sensitive.test(key) ? "[redacted]" : clean(entry, depth + 1);
|
|
67
|
-
return result;
|
|
68
|
-
}
|
|
69
|
-
export async function decodeWebhook(input) {
|
|
70
|
-
const bytes = checkedBytes(input.body, 1024 * 1024);
|
|
71
|
-
let parsed;
|
|
72
|
-
try {
|
|
73
|
-
parsed = parseJson(new TextDecoder("utf-8", { fatal: true }).decode(bytes));
|
|
74
|
-
}
|
|
75
|
-
catch {
|
|
76
|
-
throw new SocialError({
|
|
77
|
-
code: "invalid_input",
|
|
78
|
-
operation: "webhooks.decode",
|
|
79
|
-
message: "Webhook body is not valid UTF-8 JSON.",
|
|
80
|
-
});
|
|
81
|
-
}
|
|
82
|
-
const payload = object(parsed);
|
|
83
|
-
const providerId = optionalString(payload["id"]);
|
|
84
|
-
// Post for Me's open-source sender omits its internal event ID from the payload.
|
|
85
|
-
// Exact-body deduplication is a weaker fallback, explicitly reported to callers.
|
|
86
|
-
if (input.provider === "zernio" && !providerId)
|
|
87
|
-
denied();
|
|
88
|
-
const id = providerId ??
|
|
89
|
-
Array.from(new Uint8Array(await crypto.subtle.digest("SHA-256", bytes)), (byte) => byte.toString(16).padStart(2, "0")).join("");
|
|
90
|
-
const originalType = string(input.provider === "zernio" ? payload["event"] : payload["event_type"]);
|
|
91
|
-
let type = "unknown";
|
|
92
|
-
if (/^(post\.(scheduled|platform\.published|platform\.failed|tiktok\.url_resolved|published|partial|failed)|social\.post\.(created|updated|result\.created))$/.test(originalType))
|
|
93
|
-
type = "publication.updated";
|
|
94
|
-
else if (/^post\.(platform|external)\.deleted$/.test(originalType))
|
|
95
|
-
type = "post.removed";
|
|
96
|
-
else if (originalType === "social.post.deleted")
|
|
97
|
-
type = "backend-record.deleted";
|
|
98
|
-
else if (/^(account\.(connected|disconnected)|social\.account\.(created|updated))$/.test(originalType))
|
|
99
|
-
type = "account.updated";
|
|
100
|
-
else if (originalType === "message.received")
|
|
101
|
-
type = "message.received";
|
|
102
|
-
else if (originalType === "comment.received")
|
|
103
|
-
type = "comment.received";
|
|
104
|
-
const dataValue = input.provider === "zernio" ? payload : object(payload["data"]);
|
|
105
|
-
const cleaned = clean(dataValue);
|
|
106
|
-
if (typeof cleaned !== "object" || cleaned === null || Array.isArray(cleaned))
|
|
107
|
-
throw new Error("Expected normalized object");
|
|
108
|
-
// IDs only locate application mappings; they never grant tenant ownership.
|
|
109
|
-
const accountIds = [];
|
|
110
|
-
const direct = optionalString(dataValue["accountId"]) ?? optionalString(dataValue["social_account_id"]);
|
|
111
|
-
if (direct)
|
|
112
|
-
accountIds.push(direct);
|
|
113
|
-
if (dataValue["account"] && typeof dataValue["account"] === "object") {
|
|
114
|
-
const account = object(dataValue["account"]);
|
|
115
|
-
const accountId = optionalString(account["accountId"]) ??
|
|
116
|
-
optionalString(account["_id"]) ??
|
|
117
|
-
optionalString(account["id"]);
|
|
118
|
-
if (accountId)
|
|
119
|
-
accountIds.push(accountId);
|
|
120
|
-
}
|
|
121
|
-
if (input.provider === "post-for-me" && originalType.startsWith("social.account."))
|
|
122
|
-
accountIds.push(string(dataValue["id"]));
|
|
123
|
-
if (dataValue["post"] && typeof dataValue["post"] === "object") {
|
|
124
|
-
const post = object(dataValue["post"]);
|
|
125
|
-
if (post["platforms"])
|
|
126
|
-
for (const value of array(post["platforms"])) {
|
|
127
|
-
const entry = object(value);
|
|
128
|
-
const accountId = optionalString(entry["accountId"]);
|
|
129
|
-
if (accountId)
|
|
130
|
-
accountIds.push(accountId);
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
if (input.provider === "post-for-me" && Array.isArray(dataValue["social_accounts"])) {
|
|
134
|
-
for (const item of dataValue["social_accounts"]) {
|
|
135
|
-
const id = typeof item === "string" ? item : optionalString(object(item)["id"]);
|
|
136
|
-
if (id)
|
|
137
|
-
accountIds.push(id);
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
const post = dataValue["post"] && typeof dataValue["post"] === "object"
|
|
141
|
-
? object(dataValue["post"])
|
|
142
|
-
: undefined;
|
|
143
|
-
const backendRecordId = input.provider === "zernio"
|
|
144
|
-
? (optionalString(post?.["id"]) ?? optionalString(post?.["_id"]))
|
|
145
|
-
: originalType === "social.post.result.created"
|
|
146
|
-
? optionalString(dataValue["post_id"])
|
|
147
|
-
: originalType.startsWith("social.post.")
|
|
148
|
-
? optionalString(dataValue["id"])
|
|
149
|
-
: undefined;
|
|
150
|
-
const occurredAt = optionalString(payload["timestamp"]) ?? optionalString(payload["created_at"]);
|
|
151
|
-
return {
|
|
152
|
-
version: 1,
|
|
153
|
-
id,
|
|
154
|
-
identity: providerId ? "provider-event-id" : "body-digest",
|
|
155
|
-
backend: input.backend,
|
|
156
|
-
provider: input.provider,
|
|
157
|
-
type,
|
|
158
|
-
originalType,
|
|
159
|
-
receivedAt: input.receivedAt ?? new Date().toISOString(),
|
|
160
|
-
accountIds: [...new Set(accountIds)],
|
|
161
|
-
data: cleaned,
|
|
162
|
-
...(backendRecordId ? { backendRecordId } : {}),
|
|
163
|
-
...(occurredAt === undefined ? {} : { occurredAt }),
|
|
164
|
-
};
|
|
165
|
-
}
|
|
166
|
-
export async function acceptWebhook(input) {
|
|
167
|
-
// Resolve every account independently. A union lookup cannot distinguish a
|
|
168
|
-
// fully mapped event from one containing both known and unknown accounts.
|
|
169
|
-
let commonTenants;
|
|
170
|
-
for (const accountId of new Set(input.event.accountIds)) {
|
|
171
|
-
const tenants = new Set((await input.resolveTenants(input.event.backend, [accountId])).filter(Boolean));
|
|
172
|
-
commonTenants =
|
|
173
|
-
commonTenants === undefined
|
|
174
|
-
? tenants
|
|
175
|
-
: new Set([...commonTenants].filter((tenant) => tenants.has(tenant)));
|
|
176
|
-
if (commonTenants.size === 0)
|
|
177
|
-
break;
|
|
178
|
-
}
|
|
179
|
-
// The full event may contain data about every account. Only tenants authorized
|
|
180
|
-
// for every account may receive it; unrelated tenants must never share payloads.
|
|
181
|
-
const tenantIds = [...(commonTenants ?? [])];
|
|
182
|
-
const quarantined = tenantIds.length === 0;
|
|
183
|
-
const key = JSON.stringify([
|
|
184
|
-
1,
|
|
185
|
-
input.event.provider,
|
|
186
|
-
input.event.backend,
|
|
187
|
-
input.endpointId,
|
|
188
|
-
input.event.id,
|
|
189
|
-
]);
|
|
190
|
-
const state = await input.inbox.accept({
|
|
191
|
-
key,
|
|
192
|
-
event: input.event,
|
|
193
|
-
tenantIds,
|
|
194
|
-
state: quarantined ? "quarantined" : "pending",
|
|
195
|
-
});
|
|
196
|
-
return { state, quarantined };
|
|
197
|
-
}
|
|
198
|
-
//# sourceMappingURL=webhooks.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"webhooks.js","sourceRoot":"","sources":["../../src/server/webhooks.ts"],"names":[],"mappings":"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"}
|
package/dist/testing/index.d.ts
DELETED
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import { type AuthorizationPolicy, type ConnectedAccountRef, type DeliveryOutcome, type IdempotencyClaim, type IdempotencyClaimInput, type IdempotencyStore, type SocialAdapter } from "../core/index.js";
|
|
2
|
-
export type MockScenario = "immediate-text-success" | "media-processing-then-success" | "mixed-success-failure" | "expired-permission" | "reconnect-required" | "unsupported-feature" | "account-selection-cancellation" | "rate-limited" | "accepted-response-lost" | "duplicate-webhook" | "out-of-order-event" | "invalid-webhook" | "no-metric-available" | "provider-state-unknown" | "failed-upload-finalization" | "expired-media-url" | "cancelled-polling" | "shared-account-membership";
|
|
3
|
-
export interface MockHistoryEntry {
|
|
4
|
-
readonly sequence: number;
|
|
5
|
-
readonly operation: string;
|
|
6
|
-
readonly backend: string;
|
|
7
|
-
readonly account?: ConnectedAccountRef;
|
|
8
|
-
readonly idempotencyKey?: string;
|
|
9
|
-
}
|
|
10
|
-
export interface MockController {
|
|
11
|
-
history(): readonly MockHistoryEntry[];
|
|
12
|
-
reset(): void;
|
|
13
|
-
advanceProcessing(): void;
|
|
14
|
-
setScenario(scenario: MockScenario): void;
|
|
15
|
-
readonly webhookFixtures: readonly MockWebhookFixture[];
|
|
16
|
-
}
|
|
17
|
-
export interface MockWebhookFixture {
|
|
18
|
-
readonly name: "valid" | "duplicate" | "out-of-order" | "invalid";
|
|
19
|
-
readonly headers: Readonly<Record<string, string>>;
|
|
20
|
-
readonly body: Uint8Array;
|
|
21
|
-
}
|
|
22
|
-
export interface MockNative {
|
|
23
|
-
scenario(): MockScenario;
|
|
24
|
-
}
|
|
25
|
-
export interface MockSocialAdapter extends SocialAdapter<MockNative> {
|
|
26
|
-
readonly testing: MockController;
|
|
27
|
-
}
|
|
28
|
-
export interface MockBackendOptions {
|
|
29
|
-
readonly scenario?: MockScenario;
|
|
30
|
-
readonly backendInstance?: string;
|
|
31
|
-
readonly clock?: () => Date;
|
|
32
|
-
}
|
|
33
|
-
export declare function mockBackend(options?: MockBackendOptions): MockSocialAdapter;
|
|
34
|
-
export declare class MemoryIdempotencyStore implements IdempotencyStore {
|
|
35
|
-
#private;
|
|
36
|
-
claim(input: IdempotencyClaimInput): Promise<IdempotencyClaim>;
|
|
37
|
-
saveOutcome(input: {
|
|
38
|
-
readonly claimId: string;
|
|
39
|
-
readonly targetKey: string;
|
|
40
|
-
readonly outcome: DeliveryOutcome;
|
|
41
|
-
}): Promise<void>;
|
|
42
|
-
reset(): void;
|
|
43
|
-
}
|
|
44
|
-
export declare function mockSharedAccountAuthorization(input: {
|
|
45
|
-
readonly memberships: Readonly<Record<string, readonly string[]>>;
|
|
46
|
-
}): AuthorizationPolicy;
|
|
47
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/testing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,mBAAmB,EAGxB,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,EAC1B,KAAK,gBAAgB,EAErB,KAAK,aAAa,EACnB,MAAM,kBAAkB,CAAC;AAE1B,MAAM,MAAM,YAAY,GACpB,wBAAwB,GACxB,+BAA+B,GAC/B,uBAAuB,GACvB,oBAAoB,GACpB,oBAAoB,GACpB,qBAAqB,GACrB,gCAAgC,GAChC,cAAc,GACd,wBAAwB,GACxB,mBAAmB,GACnB,oBAAoB,GACpB,iBAAiB,GACjB,qBAAqB,GACrB,wBAAwB,GACxB,4BAA4B,GAC5B,mBAAmB,GACnB,mBAAmB,GACnB,2BAA2B,CAAC;AAEhC,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,CAAC,EAAE,mBAAmB,CAAC;IACvC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;CAClC;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,IAAI,SAAS,gBAAgB,EAAE,CAAC;IACvC,KAAK,IAAI,IAAI,CAAC;IACd,iBAAiB,IAAI,IAAI,CAAC;IAC1B,WAAW,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI,CAAC;IAC1C,QAAQ,CAAC,eAAe,EAAE,SAAS,kBAAkB,EAAE,CAAC;CACzD;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,WAAW,GAAG,cAAc,GAAG,SAAS,CAAC;IAClE,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACnD,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;CAC3B;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,IAAI,YAAY,CAAC;CAC1B;AAED,MAAM,WAAW,iBAAkB,SAAQ,aAAa,CAAC,UAAU,CAAC;IAClE,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;CAClC;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,QAAQ,CAAC,EAAE,YAAY,CAAC;IACjC,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,IAAI,CAAC;CAC7B;AAwCD,wBAAgB,WAAW,CAAC,OAAO,GAAE,kBAAuB,GAAG,iBAAiB,CA8V/E;AASD,qBAAa,sBAAuB,YAAW,gBAAgB;;IAKvD,KAAK,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IA0B9D,WAAW,CAAC,KAAK,EAAE;QACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC;KACnC,GAAG,OAAO,CAAC,IAAI,CAAC;IASjB,KAAK,IAAI,IAAI;CAKd;AAED,wBAAgB,8BAA8B,CAAC,KAAK,EAAE;IACpD,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC,CAAC;CACnE,GAAG,mBAAmB,CAYtB"}
|