@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,580 +0,0 @@
1
- import { remainingBudget } from "../transport/budget.js";
2
- import { defineAdapter } from "../core/adapter.js";
3
- import { SocialError } from "../core/errors.js";
4
- import { createHttp, HttpError } from "../transport/http.js";
5
- import { array, object, string, optionalString, optionalNumber } from "../transport/validation.js";
6
- import { upload } from "../transport/upload.js";
7
- import { publicFields } from "../cloud/common.js";
8
- export function linkedin(options) {
9
- if (!options.auth.accessToken.trim() ||
10
- !/^urn:li:(person|organization):[a-zA-Z0-9_-]+$/.test(options.auth.author) ||
11
- !/^20\d{2}(0[1-9]|1[0-2])$/.test(options.apiVersion)) {
12
- throw new SocialError({
13
- code: "invalid_config",
14
- operation: "createAdapter",
15
- message: "Provide a LinkedIn access token, member/organization author URN and explicit YYYYMM API version.",
16
- });
17
- }
18
- const http = createHttp(options.fetch ? { fetch: options.fetch } : {});
19
- const now = () => (options.clock?.() ?? new Date()).toISOString();
20
- const authorize = (ref, context) => {
21
- if (ref.backend !== context.backendInstance ||
22
- ref.platform !== "linkedin" ||
23
- ref.accountId !== options.auth.author)
24
- throw new SocialError({
25
- code: "unauthorized",
26
- operation: "linkedin",
27
- message: "Reference does not belong to this LinkedIn author authorization.",
28
- });
29
- };
30
- async function request(path, context, body, selectedHeaders, method = body === undefined ? "GET" : "POST") {
31
- try {
32
- return await http({
33
- timeoutMs: remainingBudget(context),
34
- url: new URL(`https://api.linkedin.com${path}`),
35
- headers: {
36
- Authorization: `Bearer ${options.auth.accessToken}`,
37
- "Content-Type": "application/json",
38
- "Linkedin-Version": options.apiVersion,
39
- "X-Restli-Protocol-Version": "2.0.0",
40
- },
41
- method,
42
- ...(body === undefined ? {} : { body: JSON.stringify(body) }),
43
- ...(context.signal ? { signal: context.signal } : {}),
44
- ...(selectedHeaders ? { responseHeaders: selectedHeaders } : {}),
45
- maxAttempts: method === "GET" ? Math.min(5, context.retryBudget.maxAttempts) : 1,
46
- });
47
- }
48
- catch (error) {
49
- if (!(error instanceof HttpError))
50
- throw error;
51
- const ambiguous = body !== undefined &&
52
- error.dispatched &&
53
- (error.kind !== "http" || (error.status ?? 0) >= 500);
54
- throw new SocialError({
55
- code: ambiguous
56
- ? "ambiguous_outcome"
57
- : error.status === 401
58
- ? "reconnect_required"
59
- : error.status === 403
60
- ? "missing_permission"
61
- : error.status === 429
62
- ? "rate_limited"
63
- : "upstream_failure",
64
- operation: path,
65
- message: error.message,
66
- upstreamStatus: error.status,
67
- retryDisposition: ambiguous ? { kind: "reconcile-first" } : { kind: "never" },
68
- });
69
- }
70
- }
71
- async function readPost(ref, context) {
72
- authorize(ref, context);
73
- const result = object(await request(`/rest/posts/${encodeURIComponent(ref.postId)}`, context));
74
- if (result["author"] !== ref.accountId)
75
- throw new SocialError({
76
- code: "unauthorized",
77
- operation: "posts.read",
78
- message: "LinkedIn post belongs to a different author.",
79
- });
80
- return result;
81
- }
82
- async function readCommentablePost(ref, context) {
83
- authorize(ref, context);
84
- const result = object(await request(`/rest/posts/${encodeURIComponent(ref.postId)}`, context));
85
- if (result["id"] !== undefined && result["id"] !== ref.postId)
86
- throw new SocialError({
87
- code: "unauthorized",
88
- operation: "comments.write",
89
- message: "LinkedIn returned a different post than the declared parent.",
90
- });
91
- return result;
92
- }
93
- async function uploadImage(media, account, context) {
94
- authorize(account, context);
95
- const source = media.source;
96
- if (media.kind !== "image" ||
97
- !["image/jpeg", "image/png", "image/gif"].includes(media.mimeType ?? "") ||
98
- (source.kind !== "blob" && source.kind !== "stream"))
99
- throw new SocialError({
100
- code: "invalid_input",
101
- operation: "media.upload",
102
- message: "Provide JPEG, PNG or GIF bytes as a Blob or replayable stream.",
103
- });
104
- const initialized = object(object(await request("/rest/images?action=initializeUpload", context, {
105
- initializeUploadRequest: { owner: account.accountId },
106
- }))["value"]);
107
- const mediaId = string(initialized["image"]);
108
- if (!/^urn:li:image:[a-zA-Z0-9_-]+$/.test(mediaId))
109
- throw new SocialError({
110
- code: "media_error",
111
- operation: "media.upload",
112
- message: "LinkedIn returned an invalid image identifier.",
113
- });
114
- const size = media.byteSize ?? (source.kind === "blob" ? source.blob.size : undefined);
115
- await upload({
116
- url: string(initialized["uploadUrl"]),
117
- source: {
118
- mimeType: media.mimeType,
119
- ...(size === undefined ? {} : { size }),
120
- open: source.kind === "blob" ? () => source.blob.stream() : source.open,
121
- },
122
- allowHost: (host) => host === "www.linkedin.com",
123
- maxBytes: 20 * 1024 * 1024,
124
- ...(options.fetch ? { fetch: options.fetch } : {}),
125
- ...(context.signal ? { signal: context.signal } : {}),
126
- });
127
- return {
128
- kind: "media",
129
- version: 1,
130
- backend: account.backend,
131
- platform: "linkedin",
132
- accountId: account.accountId,
133
- mediaId,
134
- };
135
- }
136
- return defineAdapter({
137
- id: "linkedin",
138
- capabilities: {
139
- schemaVersion: 1,
140
- backend: "linkedin",
141
- apiRevision: options.apiVersion,
142
- runtime: ["node22", "node24", "bun"],
143
- capabilities: [
144
- {
145
- platform: "linkedin",
146
- operation: "posts.publish",
147
- availability: "available",
148
- formats: ["text", "image"],
149
- requiredScopes: [
150
- options.auth.author.startsWith("urn:li:organization:")
151
- ? "w_organization_social"
152
- : "w_member_social",
153
- ],
154
- notes: "Explicit author URN and public visibility. Organization role and app product approval required. Registered images must be AVAILABLE before creating a post.",
155
- },
156
- {
157
- platform: "linkedin",
158
- operation: "posts.read",
159
- availability: "available",
160
- requiredScopes: [
161
- options.auth.author.startsWith("urn:li:organization:")
162
- ? "r_organization_social"
163
- : "r_member_social",
164
- ],
165
- notes: "Member read access is restricted. Publication permission does not grant read permission.",
166
- },
167
- {
168
- platform: "linkedin",
169
- operation: "posts.multi-image",
170
- availability: "available",
171
- formats: ["carousel"],
172
- },
173
- {
174
- platform: "linkedin",
175
- operation: "posts.video",
176
- availability: "available",
177
- formats: ["video"],
178
- },
179
- { platform: "linkedin", operation: "posts.document", availability: "available" },
180
- { platform: "linkedin", operation: "polls.create", availability: "available" },
181
- { platform: "linkedin", operation: "reactions.write", availability: "available" },
182
- { platform: "linkedin", operation: "reshares.write", availability: "available" },
183
- { platform: "linkedin", operation: "posts.update", availability: "available" },
184
- { platform: "linkedin", operation: "posts.delete", availability: "available" },
185
- {
186
- platform: "linkedin",
187
- operation: "analytics.organization.read",
188
- availability: "permission-required",
189
- },
190
- {
191
- platform: "linkedin",
192
- operation: "articles.create",
193
- availability: "approval-dependent",
194
- },
195
- {
196
- platform: "linkedin",
197
- operation: "messages.write",
198
- availability: "unsupported-by-platform",
199
- },
200
- {
201
- platform: "linkedin",
202
- operation: "analytics.account.read",
203
- availability: options.auth.author.startsWith("urn:li:organization:")
204
- ? "available"
205
- : "account-ineligible",
206
- requiredScopes: ["rw_organization_admin"],
207
- notes: "Organization total followers only; authenticated member must administer the organization. No member-profile analytics claimed.",
208
- },
209
- {
210
- platform: "linkedin",
211
- operation: "posts.list",
212
- availability: "available",
213
- requiredScopes: [
214
- options.auth.author.startsWith("urn:li:organization:")
215
- ? "r_organization_social"
216
- : "r_member_social",
217
- ],
218
- notes: "Author feed requires approved read access for the configured author.",
219
- },
220
- {
221
- platform: "linkedin",
222
- operation: "media.upload",
223
- availability: "available",
224
- formats: ["image"],
225
- },
226
- ...["comments.read", "comments.write", "analytics.read"].map((operation) => ({
227
- platform: "linkedin",
228
- operation,
229
- availability: "available",
230
- notes: "Community Management product permissions and author post read access required. Analytics contains returned social-action counts only.",
231
- })),
232
- ],
233
- },
234
- media: { upload: uploadImage },
235
- posts: {
236
- prepareTarget(target) {
237
- const issues = [];
238
- const fail = (code, message) => issues.push({ code, message, severity: "error", targetIndex: target.targetIndex });
239
- if (target.account.platform !== "linkedin" ||
240
- target.account.accountId !== options.auth.author)
241
- fail("linkedin.author", "Select the configured member or organization author URN.");
242
- if ((target.content.text?.length ?? 0) > 3000)
243
- fail("linkedin.text", "LinkedIn commentary exceeds 3,000 characters.");
244
- if (target.schedule || target.replyTo || target.content.link)
245
- fail("linkedin.operation", "Scheduling, reply posts and structured links are not supported by this publishing slice.");
246
- if (target.options !== undefined) {
247
- const settings = object(target.options);
248
- if (Object.keys(settings).some((key) => key !== "visibility") ||
249
- (settings["visibility"] !== undefined && settings["visibility"] !== "public"))
250
- fail("linkedin.options", "This slice supports public visibility only; other native options require explicit implementation.");
251
- }
252
- const media = target.content.media ?? [];
253
- if (media.length > 1)
254
- fail("linkedin.media_count", "This slice accepts one registered image per post.");
255
- for (const item of media) {
256
- if (item.kind !== "image" || item.source.kind !== "media-ref")
257
- fail("linkedin.media", "Upload an image first with media.upload, then publish its account-bound reference.");
258
- else if (item.source.ref.backend !== target.account.backend ||
259
- item.source.ref.accountId !== target.account.accountId ||
260
- item.source.ref.platform !== "linkedin" ||
261
- !/^urn:li:image:[a-zA-Z0-9_-]+$/.test(item.source.ref.mediaId))
262
- fail("linkedin.media_owner", "Image reference belongs to another author/backend or has an invalid URN.");
263
- }
264
- return issues;
265
- },
266
- async publishTarget(target, context) {
267
- authorize(target.account, context);
268
- const media = target.content.media?.[0];
269
- let content;
270
- if (media?.source.kind === "media-ref") {
271
- authorize(media.source.ref, context);
272
- const image = object(await request(`/rest/images/${encodeURIComponent(media.source.ref.mediaId)}`, context));
273
- if (image["owner"] !== target.account.accountId)
274
- throw new SocialError({
275
- code: "unauthorized",
276
- operation: "posts.publish",
277
- message: "LinkedIn image belongs to a different author.",
278
- });
279
- if (image["status"] !== "AVAILABLE")
280
- throw new SocialError({
281
- code: "media_error",
282
- operation: "posts.publish",
283
- message: "Image is not AVAILABLE. Check its status explicitly before publishing.",
284
- });
285
- content = {
286
- media: {
287
- id: media.source.ref.mediaId,
288
- ...(media.altText ? { altText: media.altText } : {}),
289
- },
290
- };
291
- }
292
- const result = object(await request("/rest/posts", context, {
293
- author: target.account.accountId,
294
- commentary: target.content.text ?? "",
295
- visibility: "PUBLIC",
296
- distribution: {
297
- feedDistribution: "MAIN_FEED",
298
- targetEntities: [],
299
- thirdPartyDistributionChannels: [],
300
- },
301
- lifecycleState: "PUBLISHED",
302
- isReshareDisabledByAuthor: false,
303
- ...(content ? { content } : {}),
304
- }, ["x-restli-id"]));
305
- const id = optionalString(object(result["headers"])["x-restli-id"]);
306
- const base = {
307
- account: target.account,
308
- targetIndex: target.targetIndex,
309
- observedAt: now(),
310
- };
311
- if (!id || !/^urn:li:(share|ugcPost):[0-9]+$/.test(id))
312
- return {
313
- ...base,
314
- state: "unknown",
315
- reason: "unmapped-state",
316
- diagnostic: "LinkedIn accepted the create request without a valid native post identifier. Do not repeat it automatically.",
317
- };
318
- return {
319
- ...base,
320
- state: "published",
321
- post: {
322
- kind: "platform-post",
323
- version: 1,
324
- backend: target.account.backend,
325
- platform: "linkedin",
326
- accountId: target.account.accountId,
327
- postId: id,
328
- },
329
- };
330
- },
331
- async get(ref, context) {
332
- return publicFields(await readPost(ref, context), [
333
- "id",
334
- "author",
335
- "commentary",
336
- "visibility",
337
- "lifecycleState",
338
- "createdAt",
339
- "lastModifiedAt",
340
- ]);
341
- },
342
- async list(account, input, context) {
343
- authorize(account, context);
344
- const start = input.cursor === undefined ? 0 : Number(input.cursor);
345
- const count = input.limit ?? 25;
346
- if (!Number.isSafeInteger(start) ||
347
- start < 0 ||
348
- input.cursor === "" ||
349
- !Number.isSafeInteger(count) ||
350
- count < 1 ||
351
- count > 100)
352
- throw new SocialError({
353
- code: "invalid_input",
354
- operation: "posts.read",
355
- message: "LinkedIn requires a nonnegative offset and page size from 1 to 100.",
356
- });
357
- const result = object(await request(`/rest/posts?q=author&author=${encodeURIComponent(options.auth.author)}&start=${start}&count=${count}&sortBy=LAST_MODIFIED`, context));
358
- const rows = array(result["elements"]).map(object);
359
- if (rows.some((row) => row["author"] !== options.auth.author))
360
- throw new SocialError({
361
- code: "unauthorized",
362
- operation: "posts.read",
363
- message: "LinkedIn returned a post from another author.",
364
- });
365
- const items = rows.map((row) => publicFields(row, [
366
- "id",
367
- "author",
368
- "commentary",
369
- "visibility",
370
- "lifecycleState",
371
- "createdAt",
372
- "lastModifiedAt",
373
- ]));
374
- const paging = result["paging"] === undefined ? {} : object(result["paging"]);
375
- const total = optionalNumber(paging["total"]);
376
- const hasNext = array(paging["links"] ?? []).some((link) => object(link)["rel"] === "next");
377
- return {
378
- items,
379
- ...(items.length > 0 && (hasNext || (total !== undefined && start + items.length < total))
380
- ? { nextCursor: String(start + items.length) }
381
- : {}),
382
- };
383
- },
384
- },
385
- comments: {
386
- async list(ref, input, context) {
387
- await readPost(ref, context);
388
- const start = input.cursor === undefined ? 0 : Number(input.cursor);
389
- const count = input.limit ?? 25;
390
- if (!Number.isSafeInteger(start) ||
391
- start < 0 ||
392
- !Number.isSafeInteger(count) ||
393
- count < 1 ||
394
- count > 100)
395
- throw new SocialError({
396
- code: "invalid_input",
397
- operation: "comments.read",
398
- message: "LinkedIn comment pagination requires a returned offset and a page size from 1 to 100.",
399
- });
400
- const result = object(await request(`/rest/socialActions/${encodeURIComponent(ref.postId)}/comments?start=${start}&count=${count}`, context));
401
- const items = array(result["elements"]).map((value) => {
402
- const row = object(value);
403
- return {
404
- ...publicFields(row, ["id", "actor", "commentUrn", "object"]),
405
- text: string(object(row["message"])["text"]),
406
- };
407
- });
408
- const paging = result["paging"] === undefined ? {} : object(result["paging"]);
409
- const total = optionalNumber(paging["total"]);
410
- const next = total !== undefined && start + items.length < total
411
- ? String(start + items.length)
412
- : undefined;
413
- return { items, ...(next === undefined ? {} : { nextCursor: next }) };
414
- },
415
- async reply(ref, content, context) {
416
- if (!content.text.trim() || content.text.length > 1250)
417
- throw new SocialError({
418
- code: "invalid_input",
419
- operation: "comments.write",
420
- message: "Provide a comment of 1 to 1,250 characters.",
421
- });
422
- await readCommentablePost({ ...ref, kind: "platform-post" }, context);
423
- const match = /^urn:li:comment:\(urn:li:activity:\d+,(\d+)\)$/.exec(ref.commentId);
424
- if (!match)
425
- throw new SocialError({
426
- code: "invalid_input",
427
- operation: "comments.write",
428
- message: "Use the complete commentUrn returned by LinkedIn comment reads.",
429
- });
430
- const parent = object(await request(`/rest/socialActions/${encodeURIComponent(ref.postId)}/comments/${match[1]}`, context));
431
- if (parent["commentUrn"] !== ref.commentId)
432
- throw new SocialError({
433
- code: "unauthorized",
434
- operation: "comments.write",
435
- message: "Comment does not belong to the supplied post.",
436
- });
437
- if (typeof parent["object"] === "string" && parent["object"] !== ref.postId)
438
- throw new SocialError({
439
- code: "unauthorized",
440
- operation: "comments.write",
441
- message: "Comment parent object does not match the supplied post.",
442
- });
443
- const response = object(await request(`/rest/socialActions/${encodeURIComponent(ref.commentId)}/comments`, context, {
444
- actor: ref.accountId,
445
- message: { text: content.text },
446
- object: ref.postId,
447
- parentComment: ref.commentId,
448
- }));
449
- const commentId = optionalString(response["commentUrn"]);
450
- if (!commentId)
451
- throw new SocialError({
452
- code: "ambiguous_outcome",
453
- operation: "comments.write",
454
- message: "LinkedIn accepted the comment without returning its composite URN. Reconcile before retrying.",
455
- retryDisposition: { kind: "reconcile-first" },
456
- });
457
- return { ...ref, commentId };
458
- },
459
- },
460
- analytics: {
461
- async getAccountMetrics(account, context) {
462
- authorize(account, context);
463
- if (!options.auth.author.startsWith("urn:li:organization:"))
464
- throw new SocialError({
465
- code: "unsupported_capability",
466
- operation: "analytics.account.read",
467
- message: "LinkedIn organization follower counts require an organization author and administrator access.",
468
- });
469
- const response = object(await request(`/rest/networkSizes/${encodeURIComponent(options.auth.author)}?edgeType=COMPANY_FOLLOWED_BY_MEMBER`, context));
470
- const value = optionalNumber(response["firstDegreeSize"]);
471
- return value === undefined
472
- ? []
473
- : [
474
- {
475
- name: "followers",
476
- value,
477
- unit: "count",
478
- period: "lifetime",
479
- fetchedAt: now(),
480
- freshness: "unknown",
481
- source: `linkedin:${options.apiVersion}:networkSizes`,
482
- },
483
- ];
484
- },
485
- async getPostMetrics(ref, context) {
486
- await readPost(ref, context);
487
- const result = object(await request(`/rest/socialActions/${encodeURIComponent(ref.postId)}`, context));
488
- if (result["target"] !== undefined && result["target"] !== ref.postId)
489
- throw new SocialError({
490
- code: "unauthorized",
491
- operation: "analytics.read",
492
- message: "LinkedIn returned social actions for a different post.",
493
- });
494
- const metrics = [];
495
- for (const [summary, field, name] of [
496
- ["likesSummary", "totalLikes", "likes"],
497
- ["commentsSummary", "totalFirstLevelComments", "comments"],
498
- ]) {
499
- if (result[summary] === undefined)
500
- continue;
501
- const value = optionalNumber(object(result[summary])[field]);
502
- if (value !== undefined)
503
- metrics.push({
504
- name,
505
- value,
506
- unit: "count",
507
- period: "lifetime",
508
- fetchedAt: now(),
509
- freshness: "unknown",
510
- source: `linkedin:${options.apiVersion}:socialActions`,
511
- });
512
- }
513
- return metrics;
514
- },
515
- },
516
- native: {
517
- async imageStatus(ref, context) {
518
- authorize(ref, context);
519
- const image = object(await request(`/rest/images/${encodeURIComponent(ref.mediaId)}`, context));
520
- if (image["owner"] !== ref.accountId)
521
- throw new SocialError({
522
- code: "unauthorized",
523
- operation: "media.read",
524
- message: "LinkedIn image belongs to another author.",
525
- });
526
- return publicFields(image, ["id", "owner", "status"]);
527
- },
528
- async registerVideo({ account, byteSize, context }) {
529
- authorize(account, context);
530
- return (await request("/rest/videos?action=initializeUpload", context, {
531
- initializeUploadRequest: { owner: account.accountId, fileSizeBytes: byteSize },
532
- }));
533
- },
534
- async createPoll({ account, text, options: pollOptions, context }) {
535
- authorize(account, context);
536
- return (await request("/rest/posts", context, {
537
- author: account.accountId,
538
- commentary: text,
539
- distribution: { feedDistribution: "MAIN_FEED" },
540
- content: { poll: { question: text, options: [...pollOptions] } },
541
- }));
542
- },
543
- async react({ account, postId, reaction, context }) {
544
- authorize(account, context);
545
- await request(`/rest/reactions`, context, {
546
- root: postId,
547
- reactionType: reaction,
548
- actor: account.accountId,
549
- });
550
- },
551
- async reshare({ account, postId, context }) {
552
- authorize(account, context);
553
- return (await request("/rest/posts", context, {
554
- author: account.accountId,
555
- resharedPost: postId,
556
- commentary: "",
557
- }));
558
- },
559
- async updatePost({ account, postId, body, context }) {
560
- authorize(account, context);
561
- return (await request(`/rest/posts/${encodeURIComponent(postId)}`, context, body, undefined, "PUT"));
562
- },
563
- async deletePost({ account, postId, context }) {
564
- authorize(account, context);
565
- await request(`/rest/posts/${encodeURIComponent(postId)}`, context, undefined, undefined, "DELETE");
566
- },
567
- async organizationAnalytics({ account, query, context }) {
568
- authorize(account, context);
569
- if (!account.accountId.startsWith("urn:li:organization:"))
570
- throw new SocialError({
571
- code: "unsupported_capability",
572
- operation: "analytics.organization.read",
573
- message: "Organization analytics requires an organization author.",
574
- });
575
- return (await request(`/rest/organizationalEntityShareStatistics?q=organizationalEntity&organizationalEntity=${encodeURIComponent(account.accountId)}`, context, query));
576
- },
577
- },
578
- });
579
- }
580
- //# sourceMappingURL=linkedin.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"linkedin.js","sourceRoot":"","sources":["../../src/platforms/linkedin.ts"],"names":[],"mappings":"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"}