{"version":3,"sources":["../../../src/readable/content/index.ts"],"names":["handleMetadata"],"mappings":"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","file":"index.cjs","sourcesContent":["import type { Action, Activity, SocialPost } from \"@rss3/api-core\";\n\nimport { handleMetadata } from \"../../metadata/index.js\";\n\nexport type Content = {\n\tauthorUrl?: string;\n\thandle?: string;\n\taddress?: string;\n\tprofileId?: string | number | null;\n\ttitle?: string;\n\tbody?: string;\n\tmedia?: SocialPost[\"media\"];\n};\n\nexport type PostContent = Content & {\n\ttarget?: Content;\n};\n\nexport function formatContent(activity: Activity) {\n\tconst [action] = activity.actions ?? [];\n\treturn action ? extractContent(activity, action) : undefined;\n}\n\nexport function extractContent(\n\tactivity: Activity,\n\taction: Action,\n): PostContent | undefined {\n\tlet content: PostContent | undefined;\n\thandleMetadata(action, {\n\t\t\"social-post\": (metadata) => {\n\t\t\tcontent = extractSocialPost(activity, action, metadata);\n\t\t},\n\t\t\"social-comment\": (metadata) => {\n\t\t\tcontent = extractSocialPost(activity, action, metadata);\n\t\t},\n\t\t\"social-mint\": (metadata) => {\n\t\t\tcontent = extractSocialPost(activity, action, metadata);\n\t\t},\n\t\t\"social-share\": (metadata) => {\n\t\t\tcontent = extractSocialPost(activity, action, metadata);\n\t\t},\n\t\t\"social-revise\": (metadata) => {\n\t\t\tcontent = extractSocialPost(activity, action, metadata);\n\t\t},\n\t\t\"social-delete\": (metadata) => {\n\t\t\tcontent = extractSocialPost(activity, action, metadata);\n\t\t},\n\t});\n\treturn content;\n}\n\n/**\n * The special case for lens post, which will use the first sentence of the body as the title\n */\nexport function formatTitle(title?: string, body?: string) {\n\tif (!title) return title;\n\n\tconst _title = title.replaceAll(\"…\", \"\");\n\n\treturn body?.startsWith(_title) ? undefined : _title;\n}\n\nexport function checkTargetExist(\n\ttarget?: Pick<Content, \"body\" | \"media\" | \"title\">,\n) {\n\tif (!target) return false;\n\tif (!!target.body || !!target.media || !!target.title) return true;\n\treturn false;\n}\n\nfunction extractSocialPost(\n\tactivity: Activity,\n\taction: Action,\n\tmetadata: SocialPost,\n): PostContent {\n\tconst raw = metadata.target;\n\tconst target = raw\n\t\t? {\n\t\t\t\tauthorUrl: raw.authorUrl,\n\t\t\t\thandle: raw.handle,\n\t\t\t\taddress: action.to,\n\t\t\t\tprofileId: raw.profileId,\n\t\t\t\ttitle: formatTitle(raw.title, raw.body),\n\t\t\t\tbody: raw.body,\n\t\t\t\tmedia: raw.media,\n\t\t\t}\n\t\t: undefined;\n\t// remove the first media, which is the avatar of the author\n\t// this case only happens in mastodon\n\tif (target?.media && activity.network?.toLowerCase() === \"mastodon\") {\n\t\ttarget.media = target.media.slice(1);\n\t}\n\tconst res = {\n\t\tauthorUrl: metadata.authorUrl,\n\t\thandle: metadata.handle,\n\t\taddress: action.from,\n\t\tprofileId: metadata.profileId,\n\t\ttitle: formatTitle(metadata.title, metadata.body),\n\t\tbody: metadata.body,\n\t\tmedia: metadata.media,\n\t\ttarget: target,\n\t};\n\t// the same as the target\n\tif (res.media && activity.network?.toLowerCase() === \"mastodon\") {\n\t\tres.media = res.media.slice(1);\n\t}\n\treturn res;\n}\n"]}