@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.
Files changed (154) hide show
  1. package/README.md +4 -2
  2. package/package.json +1 -1
  3. package/dist/cli.d.ts +0 -14
  4. package/dist/cli.d.ts.map +0 -1
  5. package/dist/cli.js +0 -223
  6. package/dist/cli.js.map +0 -1
  7. package/dist/cloud/common.d.ts +0 -26
  8. package/dist/cloud/common.d.ts.map +0 -1
  9. package/dist/cloud/common.js +0 -307
  10. package/dist/cloud/common.js.map +0 -1
  11. package/dist/cloud/lifecycle.d.ts +0 -11
  12. package/dist/cloud/lifecycle.d.ts.map +0 -1
  13. package/dist/cloud/lifecycle.js +0 -108
  14. package/dist/cloud/lifecycle.js.map +0 -1
  15. package/dist/cloud/media.d.ts +0 -24
  16. package/dist/cloud/media.d.ts.map +0 -1
  17. package/dist/cloud/media.js +0 -97
  18. package/dist/cloud/media.js.map +0 -1
  19. package/dist/cloud/outcomes.d.ts +0 -10
  20. package/dist/cloud/outcomes.d.ts.map +0 -1
  21. package/dist/cloud/outcomes.js +0 -188
  22. package/dist/cloud/outcomes.js.map +0 -1
  23. package/dist/cloud/post-for-me.d.ts +0 -70
  24. package/dist/cloud/post-for-me.d.ts.map +0 -1
  25. package/dist/cloud/post-for-me.js +0 -326
  26. package/dist/cloud/post-for-me.js.map +0 -1
  27. package/dist/cloud/zernio.d.ts +0 -112
  28. package/dist/cloud/zernio.d.ts.map +0 -1
  29. package/dist/cloud/zernio.js +0 -542
  30. package/dist/cloud/zernio.js.map +0 -1
  31. package/dist/core/adapter.d.ts +0 -118
  32. package/dist/core/adapter.d.ts.map +0 -1
  33. package/dist/core/adapter.js +0 -4
  34. package/dist/core/adapter.js.map +0 -1
  35. package/dist/core/client.d.ts +0 -108
  36. package/dist/core/client.d.ts.map +0 -1
  37. package/dist/core/client.js +0 -893
  38. package/dist/core/client.js.map +0 -1
  39. package/dist/core/concurrency.d.ts +0 -10
  40. package/dist/core/concurrency.d.ts.map +0 -1
  41. package/dist/core/concurrency.js +0 -78
  42. package/dist/core/concurrency.js.map +0 -1
  43. package/dist/core/errors.d.ts +0 -45
  44. package/dist/core/errors.d.ts.map +0 -1
  45. package/dist/core/errors.js +0 -44
  46. package/dist/core/errors.js.map +0 -1
  47. package/dist/core/idempotency.d.ts +0 -34
  48. package/dist/core/idempotency.d.ts.map +0 -1
  49. package/dist/core/idempotency.js +0 -59
  50. package/dist/core/idempotency.js.map +0 -1
  51. package/dist/core/index.d.ts +0 -7
  52. package/dist/core/index.d.ts.map +0 -1
  53. package/dist/core/index.js +0 -7
  54. package/dist/core/index.js.map +0 -1
  55. package/dist/core/pagination.d.ts +0 -12
  56. package/dist/core/pagination.d.ts.map +0 -1
  57. package/dist/core/pagination.js +0 -81
  58. package/dist/core/pagination.js.map +0 -1
  59. package/dist/core/types.d.ts +0 -329
  60. package/dist/core/types.d.ts.map +0 -1
  61. package/dist/core/types.js +0 -7
  62. package/dist/core/types.js.map +0 -1
  63. package/dist/index.d.ts +0 -2
  64. package/dist/index.d.ts.map +0 -1
  65. package/dist/index.js +0 -2
  66. package/dist/index.js.map +0 -1
  67. package/dist/platforms/bluesky.d.ts +0 -132
  68. package/dist/platforms/bluesky.d.ts.map +0 -1
  69. package/dist/platforms/bluesky.js +0 -1049
  70. package/dist/platforms/bluesky.js.map +0 -1
  71. package/dist/platforms/instagram.d.ts +0 -63
  72. package/dist/platforms/instagram.d.ts.map +0 -1
  73. package/dist/platforms/instagram.js +0 -676
  74. package/dist/platforms/instagram.js.map +0 -1
  75. package/dist/platforms/linkedin.d.ts +0 -54
  76. package/dist/platforms/linkedin.d.ts.map +0 -1
  77. package/dist/platforms/linkedin.js +0 -580
  78. package/dist/platforms/linkedin.js.map +0 -1
  79. package/dist/platforms/threads.d.ts +0 -102
  80. package/dist/platforms/threads.d.ts.map +0 -1
  81. package/dist/platforms/threads.js +0 -571
  82. package/dist/platforms/threads.js.map +0 -1
  83. package/dist/platforms/tiktok.d.ts +0 -32
  84. package/dist/platforms/tiktok.d.ts.map +0 -1
  85. package/dist/platforms/tiktok.js +0 -511
  86. package/dist/platforms/tiktok.js.map +0 -1
  87. package/dist/platforms/x-engagement.d.ts +0 -17
  88. package/dist/platforms/x-engagement.d.ts.map +0 -1
  89. package/dist/platforms/x-engagement.js +0 -47
  90. package/dist/platforms/x-engagement.js.map +0 -1
  91. package/dist/platforms/x.d.ts +0 -82
  92. package/dist/platforms/x.d.ts.map +0 -1
  93. package/dist/platforms/x.js +0 -511
  94. package/dist/platforms/x.js.map +0 -1
  95. package/dist/platforms/youtube-upload.d.ts +0 -33
  96. package/dist/platforms/youtube-upload.d.ts.map +0 -1
  97. package/dist/platforms/youtube-upload.js +0 -281
  98. package/dist/platforms/youtube-upload.js.map +0 -1
  99. package/dist/platforms/youtube.d.ts +0 -55
  100. package/dist/platforms/youtube.d.ts.map +0 -1
  101. package/dist/platforms/youtube.js +0 -561
  102. package/dist/platforms/youtube.js.map +0 -1
  103. package/dist/server/connections.d.ts +0 -124
  104. package/dist/server/connections.d.ts.map +0 -1
  105. package/dist/server/connections.js +0 -334
  106. package/dist/server/connections.js.map +0 -1
  107. package/dist/server/credentials.d.ts +0 -52
  108. package/dist/server/credentials.d.ts.map +0 -1
  109. package/dist/server/credentials.js +0 -115
  110. package/dist/server/credentials.js.map +0 -1
  111. package/dist/server/index.d.ts +0 -5
  112. package/dist/server/index.d.ts.map +0 -1
  113. package/dist/server/index.js +0 -5
  114. package/dist/server/index.js.map +0 -1
  115. package/dist/server/oauth.d.ts +0 -48
  116. package/dist/server/oauth.d.ts.map +0 -1
  117. package/dist/server/oauth.js +0 -483
  118. package/dist/server/oauth.js.map +0 -1
  119. package/dist/server/webhooks.d.ts +0 -58
  120. package/dist/server/webhooks.d.ts.map +0 -1
  121. package/dist/server/webhooks.js +0 -198
  122. package/dist/server/webhooks.js.map +0 -1
  123. package/dist/testing/index.d.ts +0 -47
  124. package/dist/testing/index.d.ts.map +0 -1
  125. package/dist/testing/index.js +0 -413
  126. package/dist/testing/index.js.map +0 -1
  127. package/dist/testing.d.ts +0 -2
  128. package/dist/testing.d.ts.map +0 -1
  129. package/dist/testing.js +0 -2
  130. package/dist/testing.js.map +0 -1
  131. package/dist/transport/binary.d.ts +0 -3
  132. package/dist/transport/binary.d.ts.map +0 -1
  133. package/dist/transport/binary.js +0 -30
  134. package/dist/transport/binary.js.map +0 -1
  135. package/dist/transport/budget.d.ts +0 -4
  136. package/dist/transport/budget.d.ts.map +0 -1
  137. package/dist/transport/budget.js +0 -27
  138. package/dist/transport/budget.js.map +0 -1
  139. package/dist/transport/http.d.ts +0 -44
  140. package/dist/transport/http.d.ts.map +0 -1
  141. package/dist/transport/http.js +0 -230
  142. package/dist/transport/http.js.map +0 -1
  143. package/dist/transport/json.d.ts +0 -3
  144. package/dist/transport/json.d.ts.map +0 -1
  145. package/dist/transport/json.js +0 -11
  146. package/dist/transport/json.js.map +0 -1
  147. package/dist/transport/upload.d.ts +0 -25
  148. package/dist/transport/upload.d.ts.map +0 -1
  149. package/dist/transport/upload.js +0 -133
  150. package/dist/transport/upload.js.map +0 -1
  151. package/dist/transport/validation.d.ts +0 -6
  152. package/dist/transport/validation.d.ts.map +0 -1
  153. package/dist/transport/validation.js +0 -24
  154. package/dist/transport/validation.js.map +0 -1
@@ -1,11 +0,0 @@
1
- import type { AdapterOperationContext, BackendPostRef, PlatformPostRef, ScheduleCancellation, ScheduledJobRef } from "../core/types.js";
2
- import { type managedHttp } from "./common.js";
3
- type Request = ReturnType<typeof managedHttp>;
4
- /** Mutations affect whole provider records. Reject records shared by destinations. */
5
- export declare function managedLifecycle(provider: "zernio" | "post-for-me", request: Request, now: () => string): {
6
- removeFromPlatform?: (ref: PlatformPostRef, context: AdapterOperationContext) => Promise<void>;
7
- cancelScheduled(ref: ScheduledJobRef, context: AdapterOperationContext): Promise<ScheduleCancellation>;
8
- deleteBackendRecord(ref: BackendPostRef, context: AdapterOperationContext): Promise<void>;
9
- };
10
- export {};
11
- //# sourceMappingURL=lifecycle.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../../src/cloud/lifecycle.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,uBAAuB,EACvB,cAAc,EAEd,eAAe,EACf,oBAAoB,EACpB,eAAe,EAChB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAkB,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAG/D,KAAK,OAAO,GAAG,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC;AAa9C,sFAAsF;AACtF,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,QAAQ,GAAG,aAAa,EAClC,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,MAAM,MAAM;+BA+FF,eAAe,WACX,uBAAuB,KAC/B,OAAO,CAAC,IAAI,CAAC;yBAtDf,eAAe,WACX,uBAAuB,GAC/B,OAAO,CAAC,oBAAoB,CAAC;6BAqCzB,cAAc,WACV,uBAAuB,GAC/B,OAAO,CAAC,IAAI,CAAC;EAiCnB"}
@@ -1,108 +0,0 @@
1
- import { SocialError } from "../core/errors.js";
2
- import { array, object, string } from "../transport/validation.js";
3
- import { accountMatches } from "./common.js";
4
- const reject = (message) => {
5
- throw new SocialError({ code: "invalid_input", operation: "posts.lifecycle", message });
6
- };
7
- const unconfirmed = () => {
8
- throw new SocialError({
9
- code: "ambiguous_outcome",
10
- operation: "posts.lifecycle",
11
- message: "The provider did not confirm the mutation. Reconcile before retrying.",
12
- retryDisposition: { kind: "reconcile-first" },
13
- });
14
- };
15
- /** Mutations affect whole provider records. Reject records shared by destinations. */
16
- export function managedLifecycle(provider, request, now) {
17
- const path = (id) => `${provider === "zernio" ? "/v1/posts" : "/v1/social-posts"}/${encodeURIComponent(id)}`;
18
- async function owned(ref, id, context) {
19
- accountMatches(ref, context);
20
- if (!id)
21
- reject("A backend record identifier is required.");
22
- const response = object(await request(path(id), context));
23
- const record = object(response["post"] ?? response);
24
- if (record[provider === "zernio" ? "_id" : "id"] !== id)
25
- reject("Provider returned a different backend record.");
26
- const entries = array(record[provider === "zernio" ? "platforms" : "social_accounts"]).map(object);
27
- if (entries.length !== 1)
28
- reject("This operation requires a backend record with exactly one destination.");
29
- const entry = entries[0];
30
- const rawId = provider === "zernio" ? entry["accountId"] : entry["id"];
31
- const accountId = typeof rawId === "string" ? rawId : object(rawId)["_id"];
32
- const platform = entry["platform"] === "twitter" ? "x" : entry["platform"];
33
- if (accountId !== ref.accountId || platform !== ref.platform)
34
- throw new SocialError({
35
- code: "unauthorized",
36
- operation: "posts.lifecycle",
37
- message: "Backend record does not belong to the authorized account and platform.",
38
- });
39
- return record;
40
- }
41
- async function deleteRecord(id, context) {
42
- const response = object(await request(path(id), context, undefined, {}, "DELETE"));
43
- if (provider === "post-for-me"
44
- ? response["success"] !== true
45
- : response["message"] !== "Post deleted successfully")
46
- unconfirmed();
47
- }
48
- return {
49
- async cancelScheduled(ref, context) {
50
- const record = await owned(ref, ref.jobId, context);
51
- const scheduledAt = record[provider === "zernio" ? "scheduledFor" : "scheduled_at"];
52
- if (record["status"] !== "scheduled" ||
53
- typeof scheduledAt !== "string" ||
54
- !Number.isFinite(Date.parse(scheduledAt)) ||
55
- Date.parse(scheduledAt) <= Date.parse(now()))
56
- reject("Only a future scheduled record can be cancelled. Reconcile a due or dispatched post.");
57
- if (provider === "zernio") {
58
- await deleteRecord(ref.jobId, context);
59
- return { state: "cancelled", backendRecord: "deleted" };
60
- }
61
- // A missing/null scheduled_at means publish immediately. Keep the timestamp.
62
- const body = {
63
- caption: string(record["caption"]),
64
- social_accounts: [ref.accountId],
65
- scheduled_at: string(scheduledAt),
66
- isDraft: true,
67
- };
68
- for (const key of [
69
- "media",
70
- "platform_configurations",
71
- "account_configurations",
72
- "external_id",
73
- ]) {
74
- if (record[key] !== undefined && record[key] !== null)
75
- body[key] = record[key];
76
- }
77
- const result = object(await request(path(ref.jobId), context, body, {}, "PUT"));
78
- if (result["id"] !== ref.jobId || result["status"] !== "draft")
79
- unconfirmed();
80
- return { state: "cancelled", backendRecord: "retained" };
81
- },
82
- async deleteBackendRecord(ref, context) {
83
- const record = await owned(ref, ref.recordId, context);
84
- if (record["status"] !== "draft")
85
- reject("Delete only a draft backend record. Cancel a future schedule explicitly; never infer native deletion.");
86
- await deleteRecord(ref.recordId, context);
87
- },
88
- ...(provider === "zernio"
89
- ? {
90
- async removeFromPlatform(ref, context) {
91
- if (!["x", "threads", "bluesky", "youtube", "linkedin", "facebook"].includes(ref.platform))
92
- reject("Zernio does not support native removal for this platform.");
93
- const id = string(ref.native?.["backendRecordId"]);
94
- const record = await owned(ref, id, context);
95
- const entry = object(array(record["platforms"])[0]);
96
- if (entry["status"] !== "published" || entry["platformPostId"] !== ref.postId)
97
- reject("The backend record does not identify this published native post.");
98
- const result = object(await request(`${path(id)}/unpublish`, context, {
99
- platform: ref.platform === "x" ? "twitter" : ref.platform,
100
- }));
101
- if (result["success"] !== true)
102
- unconfirmed();
103
- },
104
- }
105
- : {}),
106
- };
107
- }
108
- //# sourceMappingURL=lifecycle.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../src/cloud/lifecycle.ts"],"names":[],"mappings":"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"}
@@ -1,24 +0,0 @@
1
- import type { AdapterOperationContext, ConnectedAccountRef, JsonObject, MediaAttachment, MediaRef } from "../core/types.js";
2
- import { type ManagedOptions } from "./common.js";
3
- /** Keep this record server-side. A provider storage URL may grant access to the asset. */
4
- export interface ManagedMediaRecord {
5
- readonly ref: MediaRef;
6
- readonly publicUrl: string;
7
- readonly expiresAt?: string;
8
- readonly kind: "image" | "video";
9
- readonly mimeType: string;
10
- }
11
- export interface ManagedMediaStore {
12
- put(record: ManagedMediaRecord): Promise<void>;
13
- get(mediaId: string): Promise<ManagedMediaRecord | undefined>;
14
- }
15
- export declare class MemoryManagedMediaStore implements ManagedMediaStore {
16
- private readonly records;
17
- put(record: ManagedMediaRecord): Promise<void>;
18
- get(mediaId: string): Promise<ManagedMediaRecord | undefined>;
19
- }
20
- export declare function managedMedia(provider: "zernio" | "post-for-me", options: ManagedOptions, presign: (body: JsonObject, context: AdapterOperationContext) => Promise<unknown>): {
21
- resolve: (item: MediaAttachment, account: ConnectedAccountRef, context: AdapterOperationContext) => Promise<string>;
22
- upload(item: MediaAttachment, account: ConnectedAccountRef, context: AdapterOperationContext): Promise<MediaRef>;
23
- };
24
- //# sourceMappingURL=media.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"media.d.ts","sourceRoot":"","sources":["../../src/cloud/media.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,uBAAuB,EACvB,mBAAmB,EACnB,UAAU,EACV,eAAe,EACf,QAAQ,EACT,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAsC,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAEtF,0FAA0F;AAC1F,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;IACjC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AACD,MAAM,WAAW,iBAAiB;IAChC,GAAG,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC,CAAC;CAC/D;AACD,qBAAa,uBAAwB,YAAW,iBAAiB;IAC/D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyC;IAC3D,GAAG,CAAC,MAAM,EAAE,kBAAkB;IAG9B,GAAG,CAAC,OAAO,EAAE,MAAM;CAI1B;AACD,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,QAAQ,GAAG,aAAa,EAClC,OAAO,EAAE,cAAc,EACvB,OAAO,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,uBAAuB,KAAK,OAAO,CAAC,OAAO,CAAC;oBAIzE,eAAe,WACZ,mBAAmB,WACnB,uBAAuB,KAC/B,OAAO,CAAC,MAAM,CAAC;iBAsDR,eAAe,WACZ,mBAAmB,WACnB,uBAAuB,GAC/B,OAAO,CAAC,QAAQ,CAAC;EAsCvB"}
@@ -1,97 +0,0 @@
1
- import { SocialError } from "../core/errors.js";
2
- import { accountMatches, uploadManagedMedia } from "./common.js";
3
- export class MemoryManagedMediaStore {
4
- records = new Map();
5
- async put(record) {
6
- this.records.set(record.ref.mediaId, structuredClone(record));
7
- }
8
- async get(mediaId) {
9
- const record = this.records.get(mediaId);
10
- return record ? structuredClone(record) : undefined;
11
- }
12
- }
13
- export function managedMedia(provider, options, presign) {
14
- const store = options.mediaStore ?? new MemoryManagedMediaStore();
15
- async function resolve(item, account, context) {
16
- accountMatches(account, context);
17
- if (item.source.kind !== "media-ref")
18
- return uploadManagedMedia(item, (body) => presign(body, context), {
19
- options,
20
- context,
21
- provider,
22
- });
23
- const ref = item.source.ref;
24
- if (ref.backend !== account.backend ||
25
- ref.accountId !== account.accountId ||
26
- ref.platform !== account.platform)
27
- throw new SocialError({
28
- code: "unauthorized",
29
- operation: "media.resolve",
30
- message: "Media reference belongs to another account or backend.",
31
- });
32
- const record = await store.get(ref.mediaId);
33
- if (!record ||
34
- record.ref.backend !== ref.backend ||
35
- record.ref.accountId !== ref.accountId ||
36
- record.ref.platform !== ref.platform)
37
- throw new SocialError({
38
- code: "media_error",
39
- operation: "media.resolve",
40
- message: "Media reference is unknown to this server-side store.",
41
- });
42
- if (record.expiresAt &&
43
- Date.parse(record.expiresAt) <= (options.clock?.() ?? new Date()).getTime())
44
- throw new SocialError({
45
- code: "media_error",
46
- operation: "media.resolve",
47
- message: "Stored media has expired. Upload a new asset explicitly.",
48
- });
49
- if (record.kind !== item.kind ||
50
- (item.mimeType !== undefined && item.mimeType !== record.mimeType))
51
- throw new SocialError({
52
- code: "media_error",
53
- operation: "media.resolve",
54
- message: "Media kind or MIME type differs from the stored asset.",
55
- });
56
- return record.publicUrl;
57
- }
58
- return {
59
- resolve,
60
- async upload(item, account, context) {
61
- accountMatches(account, context);
62
- if (item.source.kind === "media-ref") {
63
- await resolve(item, account, context);
64
- return item.source.ref;
65
- }
66
- if (!item.mimeType)
67
- throw new SocialError({
68
- code: "invalid_input",
69
- operation: "media.upload",
70
- message: "Provide the asset MIME type.",
71
- });
72
- const publicUrl = await resolve(item, account, context);
73
- const ref = {
74
- kind: "media",
75
- version: 1,
76
- backend: account.backend,
77
- platform: account.platform,
78
- accountId: account.accountId,
79
- mediaId: crypto.randomUUID(),
80
- };
81
- const uploaded = item.source.kind !== "https-url";
82
- await store.put({
83
- ref,
84
- publicUrl,
85
- kind: item.kind,
86
- mimeType: item.mimeType,
87
- ...(provider === "zernio" && uploaded
88
- ? {
89
- expiresAt: new Date((options.clock?.() ?? new Date()).getTime() + 7 * 86400_000).toISOString(),
90
- }
91
- : {}),
92
- });
93
- return ref;
94
- },
95
- };
96
- }
97
- //# sourceMappingURL=media.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"media.js","sourceRoot":"","sources":["../../src/cloud/media.ts"],"names":[],"mappings":"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"}
@@ -1,10 +0,0 @@
1
- import type { ConnectedAccountRef, DeliveryOutcome } from "../core/types.js";
2
- export interface OutcomeContext {
3
- account: ConnectedAccountRef;
4
- targetIndex: number;
5
- observedAt: string;
6
- }
7
- /** Never infer destination success from the aggregate HTTP/parent status. */
8
- export declare function zernioOutcome(value: unknown, context: OutcomeContext): DeliveryOutcome;
9
- export declare function postForMeOutcome(parentValue: unknown, resultsValue: unknown | undefined, context: OutcomeContext): DeliveryOutcome;
10
- //# sourceMappingURL=outcomes.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"outcomes.d.ts","sourceRoot":"","sources":["../../src/cloud/outcomes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,eAAe,EAAe,MAAM,kBAAkB,CAAC;AAG1F,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,mBAAmB,CAAC;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AAaD,6EAA6E;AAC7E,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,GAAG,eAAe,CA4FtF;AAED,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,OAAO,EACpB,YAAY,EAAE,OAAO,GAAG,SAAS,EACjC,OAAO,EAAE,cAAc,GACtB,eAAe,CAuFjB"}
@@ -1,188 +0,0 @@
1
- import { array, object, optionalString, string } from "../transport/validation.js";
2
- function delivery(context, deliveryId) {
3
- return {
4
- kind: "delivery",
5
- version: 1,
6
- backend: context.account.backend,
7
- platform: context.account.platform,
8
- accountId: context.account.accountId,
9
- deliveryId,
10
- };
11
- }
12
- /** Never infer destination success from the aggregate HTTP/parent status. */
13
- export function zernioOutcome(value, context) {
14
- const response = object(value);
15
- const post = object(response["post"] ?? response["existingPost"] ?? response);
16
- const postId = string(post["_id"]);
17
- const platform = context.account.platform === "x" ? "twitter" : context.account.platform;
18
- const entries = array(post["platforms"]).map(object);
19
- const matches = entries.filter((entry) => {
20
- const accountId = typeof entry["accountId"] === "string"
21
- ? entry["accountId"]
22
- : entry["accountId"] && typeof entry["accountId"] === "object"
23
- ? optionalString(object(entry["accountId"])["_id"])
24
- : undefined;
25
- return entry["platform"] === platform && accountId === context.account.accountId;
26
- });
27
- const base = { ...context, delivery: delivery(context, postId) };
28
- if (matches.length !== 1)
29
- return {
30
- ...base,
31
- state: "unknown",
32
- reason: "unmapped-state",
33
- diagnostic: "Response has no unique matching account outcome.",
34
- };
35
- const entry = matches[0];
36
- if (!entry)
37
- throw new Error("Missing matched outcome");
38
- const status = optionalString(entry["status"]) ?? "unknown";
39
- const stateBase = { ...base, backendState: status };
40
- switch (status) {
41
- case "published": {
42
- const nativeId = optionalString(entry["platformPostId"]);
43
- if (!nativeId)
44
- return {
45
- ...stateBase,
46
- state: "unknown",
47
- reason: "unmapped-state",
48
- diagnostic: "Provider reports publication without a native identifier; reconcile to resolve the native post.",
49
- };
50
- const url = optionalString(entry["platformPostUrl"]);
51
- return {
52
- ...stateBase,
53
- state: "published",
54
- post: {
55
- kind: "platform-post",
56
- version: 1,
57
- backend: context.account.backend,
58
- platform: context.account.platform,
59
- accountId: context.account.accountId,
60
- postId: nativeId,
61
- native: { backendRecordId: postId },
62
- },
63
- ...(url ? { url } : {}),
64
- };
65
- }
66
- case "failed":
67
- return {
68
- ...stateBase,
69
- state: "failed",
70
- code: optionalString(entry["errorCategory"]) ?? "upstream_failure",
71
- message: "Zernio reports that this destination failed. Inspect account permissions and sanitized provider diagnostics.",
72
- retryDisposition: entry["errorCategory"] === "auth_expired"
73
- ? { kind: "after-reconnect" }
74
- : { kind: "never" },
75
- };
76
- case "processing":
77
- case "uploading":
78
- return { ...stateBase, state: "processing" };
79
- case "pending":
80
- return post["status"] === "scheduled"
81
- ? {
82
- ...stateBase,
83
- state: "scheduled",
84
- job: {
85
- kind: "scheduled-job",
86
- version: 1,
87
- backend: context.account.backend,
88
- platform: context.account.platform,
89
- accountId: context.account.accountId,
90
- jobId: postId,
91
- },
92
- }
93
- : { ...stateBase, state: "accepted" };
94
- default:
95
- return {
96
- ...stateBase,
97
- state: "unknown",
98
- reason: "unmapped-state",
99
- diagnostic: "Unmapped destination status; no success or cancellation inferred.",
100
- };
101
- }
102
- }
103
- export function postForMeOutcome(parentValue, resultsValue, context) {
104
- const parent = object(parentValue);
105
- const postId = string(parent["id"]);
106
- const backendState = optionalString(parent["status"]) ?? "unknown";
107
- const base = { ...context, delivery: delivery(context, postId), backendState };
108
- if (resultsValue !== undefined) {
109
- const results = array(object(resultsValue)["data"]).map(object);
110
- const matches = results.filter((result) => result["post_id"] === postId && result["social_account_id"] === context.account.accountId);
111
- if (matches.length > 1)
112
- return {
113
- ...base,
114
- state: "unknown",
115
- reason: "unmapped-state",
116
- diagnostic: "More than one result exists for the target; reconcile the provider records.",
117
- };
118
- const result = matches[0];
119
- if (result) {
120
- if (result["success"] === false)
121
- return {
122
- ...base,
123
- state: "failed",
124
- code: "upstream_failure",
125
- message: "Post for Me reports that this account's attempt failed.",
126
- retryDisposition: { kind: "never" },
127
- };
128
- if (result["success"] === true) {
129
- const data = object(result["platform_data"]);
130
- const postId = optionalString(data["id"]);
131
- if (postId) {
132
- const url = optionalString(data["url"]);
133
- return {
134
- ...base,
135
- state: "published",
136
- post: {
137
- kind: "platform-post",
138
- version: 1,
139
- backend: context.account.backend,
140
- platform: context.account.platform,
141
- accountId: context.account.accountId,
142
- postId,
143
- },
144
- ...(url ? { url } : {}),
145
- };
146
- }
147
- }
148
- return {
149
- ...base,
150
- state: "unknown",
151
- reason: "unmapped-state",
152
- diagnostic: "Destination result lacks a confirmed native post identifier.",
153
- };
154
- }
155
- }
156
- switch (backendState) {
157
- case "scheduled":
158
- return {
159
- ...base,
160
- state: "scheduled",
161
- job: {
162
- kind: "scheduled-job",
163
- version: 1,
164
- backend: context.account.backend,
165
- platform: context.account.platform,
166
- accountId: context.account.accountId,
167
- jobId: postId,
168
- },
169
- };
170
- case "processing":
171
- return { ...base, state: "processing" };
172
- case "processed":
173
- return {
174
- ...base,
175
- state: "unknown",
176
- reason: "unmapped-state",
177
- diagnostic: "The parent is processed, but this account has no confirmed result.",
178
- };
179
- default:
180
- return {
181
- ...base,
182
- state: "unknown",
183
- reason: "unmapped-state",
184
- diagnostic: "Unmapped parent status; no destination success inferred.",
185
- };
186
- }
187
- }
188
- //# sourceMappingURL=outcomes.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"outcomes.js","sourceRoot":"","sources":["../../src/cloud/outcomes.ts"],"names":[],"mappings":"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"}
@@ -1,70 +0,0 @@
1
- export { MemoryManagedMediaStore, type ManagedMediaStore, type ManagedMediaRecord, } from "./media.js";
2
- import type { AccountRecord, AdapterOperationContext, ConnectedAccountRef, JsonObject, MetricValue, PlatformPostRef } from "../core/types.js";
3
- import { managedPreparation, type ManagedOptions } from "./common.js";
4
- export interface PostForMeConnectionOptions {
5
- platform: string;
6
- externalId: string;
7
- permissions: readonly ("posts" | "feeds")[];
8
- redirectUrl?: string;
9
- }
10
- export declare function postForMe(options: ManagedOptions): {
11
- id: string;
12
- capabilities: import("../index.js").CapabilityManifest;
13
- media: {
14
- upload: (item: import("../index.js").MediaAttachment, account: ConnectedAccountRef, context: AdapterOperationContext) => Promise<import("../index.js").MediaRef>;
15
- };
16
- accounts: {
17
- list(input: {
18
- cursor?: string;
19
- limit?: number;
20
- }, context: AdapterOperationContext): Promise<{
21
- nextCursor?: string;
22
- items: AccountRecord[];
23
- }>;
24
- get(ref: ConnectedAccountRef, context: AdapterOperationContext): Promise<AccountRecord>;
25
- };
26
- posts: {
27
- list(account: ConnectedAccountRef, input: {
28
- readonly cursor?: string;
29
- readonly limit?: number;
30
- }, context: AdapterOperationContext): Promise<{
31
- nextCursor?: string;
32
- items: JsonObject[];
33
- }>;
34
- prepareTarget(target: Parameters<typeof managedPreparation>[0]): import("../index.js").PreparationIssue[];
35
- publishTarget(target: Parameters<typeof managedPreparation>[0], context: AdapterOperationContext): Promise<import("../index.js").DeliveryOutcome>;
36
- getDelivery(ref: {
37
- deliveryId: string;
38
- accountId: string;
39
- platform: string;
40
- backend: string;
41
- }, context: AdapterOperationContext): Promise<import("../index.js").DeliveryOutcome>;
42
- get(ref: PlatformPostRef, context: AdapterOperationContext): Promise<JsonObject>;
43
- removeFromPlatform?: (ref: PlatformPostRef, context: AdapterOperationContext) => Promise<void>;
44
- cancelScheduled(ref: import("../index.js").ScheduledJobRef, context: AdapterOperationContext): Promise<import("../index.js").ScheduleCancellation>;
45
- deleteBackendRecord(ref: import("../index.js").BackendPostRef, context: AdapterOperationContext): Promise<void>;
46
- };
47
- analytics: {
48
- getPostMetrics(ref: PlatformPostRef, context: AdapterOperationContext): Promise<readonly MetricValue[]>;
49
- };
50
- webhooks: {
51
- verify(input: {
52
- headers: Headers;
53
- body: Uint8Array;
54
- }): Promise<{
55
- valid: true;
56
- method: "shared-secret";
57
- }>;
58
- decode(input: {
59
- headers: Headers;
60
- body: Uint8Array;
61
- }, context: AdapterOperationContext): Promise<JsonObject>;
62
- };
63
- native: {
64
- createConnection(input: PostForMeConnectionOptions, context: AdapterOperationContext): Promise<{
65
- url: string;
66
- platform: string;
67
- }>;
68
- };
69
- };
70
- //# sourceMappingURL=post-for-me.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"post-for-me.d.ts","sourceRoot":"","sources":["../../src/cloud/post-for-me.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,uBAAuB,EACvB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,GACxB,MAAM,YAAY,CAAC;AAGpB,OAAO,KAAK,EACV,aAAa,EACb,uBAAuB,EACvB,mBAAmB,EACnB,UAAU,EAEV,WAAW,EACX,eAAe,EAChB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAIL,kBAAkB,EAKlB,KAAK,cAAc,EACpB,MAAM,aAAa,CAAC;AAGrB,MAAM,WAAW,0BAA0B;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,SAAS,CAAC,OAAO,GAAG,OAAO,CAAC,EAAE,CAAC;IAC5C,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,cAAc;;;;;;;oBAuEzB;YAAE,MAAM,CAAC,EAAE,MAAM,CAAC;YAAC,KAAK,CAAC,EAAE,MAAM,CAAA;SAAE,WAAW,uBAAuB;;;;iBA6BxE,mBAAmB,WAAW,uBAAuB;;;sBAkBzD,mBAAmB,SACrB;YAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;YAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;SAAE,WACnD,uBAAuB;;mBAiDR,UAAU,EAAE;;8BAEhB,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC,CAAC,CAAC;8BA4BpD,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC,CAAC,CAAC,WACvC,uBAAuB;yBAkE3B;YAAE,UAAU,EAAE,MAAM,CAAC;YAAC,SAAS,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,WACxE,uBAAuB;iBAqBnB,eAAe,WAAW,uBAAuB;;;;;;4BAazD,eAAe,WACX,uBAAuB,GAC/B,OAAO,CAAC,SAAS,WAAW,EAAE,CAAC;;;sBAoCd;YAAE,OAAO,EAAE,OAAO,CAAC;YAAC,IAAI,EAAE,UAAU,CAAA;SAAE;;;;sBAKjD;YAAE,OAAO,EAAE,OAAO,CAAC;YAAC,IAAI,EAAE,UAAU,CAAA;SAAE,WACpC,uBAAuB,GAC/B,OAAO,CAAC,UAAU,CAAC;;;gCAWQ,0BAA0B,WAAW,uBAAuB;;;;;EAe/F"}