@linkedctl/core
Advanced tools
| /** | ||
| * A LinkedIn product preset that maps a product name to the OAuth scopes it requires. | ||
| */ | ||
| export interface ProductPreset { | ||
| /** Human-readable product name. */ | ||
| readonly label: string; | ||
| /** OAuth scopes required by this product. */ | ||
| readonly scopes: readonly string[]; | ||
| } | ||
| /** | ||
| * Known LinkedIn product presets. | ||
| * | ||
| * Each key is a CLI-friendly product identifier; the value describes the | ||
| * scopes that must be requested when configuring OAuth for that product. | ||
| */ | ||
| export declare const PRODUCT_PRESETS: Readonly<Record<string, ProductPreset>>; | ||
| /** | ||
| * Valid product identifiers accepted by `--product`. | ||
| */ | ||
| export declare const PRODUCT_NAMES: string[]; | ||
| /** | ||
| * Resolve a product identifier to its scope string. | ||
| * Returns `undefined` when the identifier is not recognised. | ||
| */ | ||
| export declare function resolveProductScopes(product: string): string | undefined; | ||
| //# sourceMappingURL=products.d.ts.map |
| {"version":3,"file":"products.d.ts","sourceRoot":"","sources":["../../src/config/products.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,mCAAmC;IACnC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,6CAA6C;IAC7C,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC;AAED;;;;;GAKG;AACH,eAAO,MAAM,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CASnE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,aAAa,UAA+B,CAAC;AAE1D;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAMxE"} |
| // SPDX-License-Identifier: AGPL-3.0-only | ||
| // Copyright (C) 2026 Oleksii PELYKH | ||
| /** | ||
| * Known LinkedIn product presets. | ||
| * | ||
| * Each key is a CLI-friendly product identifier; the value describes the | ||
| * scopes that must be requested when configuring OAuth for that product. | ||
| */ | ||
| export const PRODUCT_PRESETS = { | ||
| share: { | ||
| label: "Share on LinkedIn", | ||
| scopes: ["openid", "profile", "w_member_social"], | ||
| }, | ||
| "community-management": { | ||
| label: "Community Management API", | ||
| scopes: ["r_member_postAnalytics"], | ||
| }, | ||
| }; | ||
| /** | ||
| * Valid product identifiers accepted by `--product`. | ||
| */ | ||
| export const PRODUCT_NAMES = Object.keys(PRODUCT_PRESETS); | ||
| /** | ||
| * Resolve a product identifier to its scope string. | ||
| * Returns `undefined` when the identifier is not recognised. | ||
| */ | ||
| export function resolveProductScopes(product) { | ||
| const preset = PRODUCT_PRESETS[product]; | ||
| if (preset === undefined) { | ||
| return undefined; | ||
| } | ||
| return preset.scopes.join(" "); | ||
| } | ||
| //# sourceMappingURL=products.js.map |
| {"version":3,"file":"products.js","sourceRoot":"","sources":["../../src/config/products.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,oCAAoC;AAYpC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,eAAe,GAA4C;IACtE,KAAK,EAAE;QACL,KAAK,EAAE,mBAAmB;QAC1B,MAAM,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,iBAAiB,CAAC;KACjD;IACD,sBAAsB,EAAE;QACtB,KAAK,EAAE,0BAA0B;QACjC,MAAM,EAAE,CAAC,wBAAwB,CAAC;KACnC;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AAE1D;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAe;IAClD,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IACxC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACjC,CAAC"} |
| /** | ||
| * Summary of a profile's configured OAuth scopes. | ||
| */ | ||
| export interface ProfileScopeSummary { | ||
| /** Profile name (filename without `.yaml` extension). */ | ||
| name: string; | ||
| /** Space-separated scope string, or `undefined` when not configured. */ | ||
| scope: string | undefined; | ||
| } | ||
| /** | ||
| * List all profiles and their configured scopes. | ||
| * | ||
| * Reads `~/.linkedctl/*.yaml` and extracts the `oauth.scope` value from each. | ||
| * Profiles that fail to load or validate are silently skipped. | ||
| */ | ||
| export declare function listProfileScopes(options?: { | ||
| home?: string | undefined; | ||
| }): Promise<ProfileScopeSummary[]>; | ||
| /** | ||
| * Find profiles whose configured scopes include all of the given required scopes. | ||
| */ | ||
| export declare function findProfilesWithScopes(requiredScopes: string[], options?: { | ||
| home?: string | undefined; | ||
| excludeProfile?: string | undefined; | ||
| }): Promise<string[]>; | ||
| //# sourceMappingURL=profiles.d.ts.map |
| {"version":3,"file":"profiles.d.ts","sourceRoot":"","sources":["../../src/config/profiles.ts"],"names":[],"mappings":"AAWA;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,yDAAyD;IACzD,IAAI,EAAE,MAAM,CAAC;IACb,wEAAwE;IACxE,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;CAC3B;AAED;;;;;GAKG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC,CA+B/G;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,cAAc,EAAE,MAAM,EAAE,EACxB,OAAO,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,GAC3E,OAAO,CAAC,MAAM,EAAE,CAAC,CAkBnB"} |
| // SPDX-License-Identifier: AGPL-3.0-only | ||
| // Copyright (C) 2026 Oleksii PELYKH | ||
| import { readdir } from "node:fs/promises"; | ||
| import { join } from "node:path"; | ||
| import { homedir } from "node:os"; | ||
| import { CONFIG_DIR } from "./loader.js"; | ||
| import { loadConfigFile } from "./loader.js"; | ||
| import { validateConfig } from "./validate.js"; | ||
| /** | ||
| * List all profiles and their configured scopes. | ||
| * | ||
| * Reads `~/.linkedctl/*.yaml` and extracts the `oauth.scope` value from each. | ||
| * Profiles that fail to load or validate are silently skipped. | ||
| */ | ||
| export async function listProfileScopes(options) { | ||
| const home = options?.home ?? homedir(); | ||
| const profileDir = join(home, CONFIG_DIR); | ||
| let entries; | ||
| try { | ||
| entries = await readdir(profileDir); | ||
| } | ||
| catch (error) { | ||
| if (error instanceof Error && "code" in error && error.code === "ENOENT") { | ||
| return []; | ||
| } | ||
| throw error; | ||
| } | ||
| const names = entries.filter((e) => e.endsWith(".yaml")).map((e) => e.replace(/\.yaml$/, "")); | ||
| const results = []; | ||
| for (const name of names) { | ||
| try { | ||
| const { raw } = await loadConfigFile({ profile: name, home }); | ||
| if (raw === undefined) { | ||
| continue; | ||
| } | ||
| const { config } = validateConfig(raw); | ||
| results.push({ name, scope: config.oauth?.scope }); | ||
| } | ||
| catch { | ||
| // Skip profiles that cannot be loaded or validated. | ||
| } | ||
| } | ||
| return results; | ||
| } | ||
| /** | ||
| * Find profiles whose configured scopes include all of the given required scopes. | ||
| */ | ||
| export async function findProfilesWithScopes(requiredScopes, options) { | ||
| const profiles = await listProfileScopes({ home: options?.home }); | ||
| const matching = []; | ||
| for (const profile of profiles) { | ||
| if (options?.excludeProfile !== undefined && profile.name === options.excludeProfile) { | ||
| continue; | ||
| } | ||
| if (profile.scope === undefined) { | ||
| continue; | ||
| } | ||
| const granted = profile.scope.split(" "); | ||
| if (requiredScopes.every((s) => granted.includes(s))) { | ||
| matching.push(profile.name); | ||
| } | ||
| } | ||
| return matching; | ||
| } | ||
| //# sourceMappingURL=profiles.js.map |
| {"version":3,"file":"profiles.js","sourceRoot":"","sources":["../../src/config/profiles.ts"],"names":[],"mappings":"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"} |
| import type { LinkedInClient } from "../http/linkedin-client.js"; | ||
| import type { AnalyticsAggregation, AnalyticsDateRange, PostAnalytics } from "./types.js"; | ||
| /** | ||
| * Options for fetching analytics for a single post. | ||
| */ | ||
| export interface GetPostAnalyticsOptions { | ||
| /** Post URN (e.g. `urn:li:share:123` or `urn:li:ugcPost:123`). */ | ||
| postUrn: string; | ||
| /** Aggregation mode. Defaults to `"TOTAL"`. */ | ||
| aggregation?: AnalyticsAggregation | undefined; | ||
| /** Optional date range filter. If omitted, lifetime stats are returned. */ | ||
| dateRange?: AnalyticsDateRange | undefined; | ||
| } | ||
| /** | ||
| * Options for fetching aggregated analytics across all member posts. | ||
| */ | ||
| export interface GetMemberAnalyticsOptions { | ||
| /** Aggregation mode. Defaults to `"TOTAL"`. */ | ||
| aggregation?: AnalyticsAggregation | undefined; | ||
| /** Optional date range filter. If omitted, lifetime stats are returned. */ | ||
| dateRange?: AnalyticsDateRange | undefined; | ||
| } | ||
| /** | ||
| * Fetch analytics for a single post across all 5 metric types. | ||
| * | ||
| * Calls are made serially to avoid thundering herd on rate limits. | ||
| * Partial failures are tolerated: successful metrics are returned | ||
| * alongside failed ones marked as unavailable. | ||
| * | ||
| * @throws {LinkedInRateLimitError} If rate limiting persists after retries. | ||
| * @throws {Error} If all metric requests fail. | ||
| */ | ||
| export declare function getPostAnalytics(client: LinkedInClient, options: GetPostAnalyticsOptions): Promise<PostAnalytics>; | ||
| /** | ||
| * Fetch aggregated analytics across all member posts for all 5 metric types. | ||
| * | ||
| * Calls are made serially to avoid thundering herd on rate limits. | ||
| * Partial failures are tolerated: successful metrics are returned | ||
| * alongside failed ones marked as unavailable. | ||
| * | ||
| * @throws {LinkedInRateLimitError} If rate limiting persists after retries. | ||
| * @throws {Error} If all metric requests fail. | ||
| */ | ||
| export declare function getMemberAnalytics(client: LinkedInClient, options?: GetMemberAnalyticsOptions): Promise<PostAnalytics>; | ||
| //# sourceMappingURL=member-stats-service.d.ts.map |
| {"version":3,"file":"member-stats-service.d.ts","sourceRoot":"","sources":["../../src/member-stats/member-stats-service.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,KAAK,EACV,oBAAoB,EAEpB,kBAAkB,EAKlB,aAAa,EACd,MAAM,YAAY,CAAC;AAGpB;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,kEAAkE;IAClE,OAAO,EAAE,MAAM,CAAC;IAChB,+CAA+C;IAC/C,WAAW,CAAC,EAAE,oBAAoB,GAAG,SAAS,CAAC;IAC/C,2EAA2E;IAC3E,SAAS,CAAC,EAAE,kBAAkB,GAAG,SAAS,CAAC;CAC5C;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,+CAA+C;IAC/C,WAAW,CAAC,EAAE,oBAAoB,GAAG,SAAS,CAAC;IAC/C,2EAA2E;IAC3E,SAAS,CAAC,EAAE,kBAAkB,GAAG,SAAS,CAAC;CAC5C;AAED;;;;;;;;;GASG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,aAAa,CAAC,CAGxB;AAED;;;;;;;;;GASG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,cAAc,EACtB,OAAO,CAAC,EAAE,yBAAyB,GAClC,OAAO,CAAC,aAAa,CAAC,CAGxB"} |
| // SPDX-License-Identifier: AGPL-3.0-only | ||
| // Copyright (C) 2026 Oleksii PELYKH | ||
| import { LinkedInRateLimitError } from "../http/errors.js"; | ||
| import { ANALYTICS_METRIC_TYPES } from "./types.js"; | ||
| /** | ||
| * Fetch analytics for a single post across all 5 metric types. | ||
| * | ||
| * Calls are made serially to avoid thundering herd on rate limits. | ||
| * Partial failures are tolerated: successful metrics are returned | ||
| * alongside failed ones marked as unavailable. | ||
| * | ||
| * @throws {LinkedInRateLimitError} If rate limiting persists after retries. | ||
| * @throws {Error} If all metric requests fail. | ||
| */ | ||
| export async function getPostAnalytics(client, options) { | ||
| const aggregation = options.aggregation ?? "TOTAL"; | ||
| return fetchAllMetrics(client, "entity", aggregation, options.dateRange, options.postUrn); | ||
| } | ||
| /** | ||
| * Fetch aggregated analytics across all member posts for all 5 metric types. | ||
| * | ||
| * Calls are made serially to avoid thundering herd on rate limits. | ||
| * Partial failures are tolerated: successful metrics are returned | ||
| * alongside failed ones marked as unavailable. | ||
| * | ||
| * @throws {LinkedInRateLimitError} If rate limiting persists after retries. | ||
| * @throws {Error} If all metric requests fail. | ||
| */ | ||
| export async function getMemberAnalytics(client, options) { | ||
| const aggregation = options?.aggregation ?? "TOTAL"; | ||
| return fetchAllMetrics(client, "me", aggregation, options?.dateRange); | ||
| } | ||
| /** | ||
| * Serial fan-out across all metric types with partial failure handling. | ||
| */ | ||
| async function fetchAllMetrics(client, finder, aggregation, dateRange, postUrn) { | ||
| const results = new Map(); | ||
| for (const metricType of ANALYTICS_METRIC_TYPES) { | ||
| // MEMBERS_REACHED + DAILY is not supported by the API | ||
| if (metricType === "MEMBERS_REACHED" && aggregation === "DAILY") { | ||
| results.set(metricType, { | ||
| status: "excluded", | ||
| reason: "MEMBERS_REACHED with DAILY aggregation is not supported by the LinkedIn API", | ||
| }); | ||
| continue; | ||
| } | ||
| // IMPRESSION + DAILY is not supported for single post analytics (q=entity) | ||
| if (metricType === "IMPRESSION" && aggregation === "DAILY" && finder === "entity") { | ||
| results.set(metricType, { | ||
| status: "excluded", | ||
| reason: "IMPRESSION with DAILY aggregation is not supported for single post analytics", | ||
| }); | ||
| continue; | ||
| } | ||
| try { | ||
| const url = buildMetricUrl(finder, metricType, aggregation, dateRange, postUrn); | ||
| const response = await client.request(url); | ||
| results.set(metricType, { | ||
| status: "success", | ||
| dataPoints: response.elements.map(mapDataPoint), | ||
| }); | ||
| } | ||
| catch (error) { | ||
| // Rate limit errors indicate a systemic issue; stop execution and propagate. | ||
| if (error instanceof LinkedInRateLimitError) { | ||
| throw error; | ||
| } | ||
| const message = error instanceof Error ? error.message : String(error); | ||
| results.set(metricType, { | ||
| status: "unavailable", | ||
| reason: message, | ||
| }); | ||
| } | ||
| } | ||
| // If no metrics succeeded and at least one was attempted (unavailable), throw. | ||
| const hasSuccess = ANALYTICS_METRIC_TYPES.some((m) => results.get(m)?.status === "success"); | ||
| const hasUnavailable = ANALYTICS_METRIC_TYPES.some((m) => results.get(m)?.status === "unavailable"); | ||
| if (!hasSuccess && hasUnavailable) { | ||
| throw new Error("All metric requests failed"); | ||
| } | ||
| return { | ||
| impressions: getMetricResult(results, "IMPRESSION"), | ||
| membersReached: getMetricResult(results, "MEMBERS_REACHED"), | ||
| reactions: getMetricResult(results, "REACTION"), | ||
| comments: getMetricResult(results, "COMMENT"), | ||
| reshares: getMetricResult(results, "RESHARE"), | ||
| }; | ||
| } | ||
| function getMetricResult(results, key) { | ||
| const result = results.get(key); | ||
| if (result === undefined) { | ||
| throw new Error(`Missing metric result for ${key}`); | ||
| } | ||
| return result; | ||
| } | ||
| /** | ||
| * Build the request URL for a single metric query. | ||
| */ | ||
| function buildMetricUrl(finder, queryType, aggregation, dateRange, postUrn) { | ||
| const parts = [`q=${finder}`, `queryType=${queryType}`, `aggregation=${aggregation}`]; | ||
| if (finder === "entity" && postUrn !== undefined) { | ||
| parts.push(`entity=${encodeEntityUrn(postUrn)}`); | ||
| } | ||
| if (dateRange !== undefined) { | ||
| parts.push(`dateRange=${encodeDateRange(dateRange)}`); | ||
| } | ||
| return `/rest/memberCreatorPostAnalytics?${parts.join("&")}`; | ||
| } | ||
| /** | ||
| * Encode a post URN into REST.li compound key format for the entity parameter. | ||
| * | ||
| * - `urn:li:share:123` → `(share:urn%3Ali%3Ashare%3A123)` | ||
| * - `urn:li:ugcPost:123` → `(ugc:urn%3Ali%3AugcPost%3A123)` | ||
| */ | ||
| function encodeEntityUrn(urn) { | ||
| const encodedUrn = urn.replaceAll(":", "%3A"); | ||
| if (urn.startsWith("urn:li:ugcPost:")) { | ||
| return `(ugc:${encodedUrn})`; | ||
| } | ||
| return `(share:${encodedUrn})`; | ||
| } | ||
| /** | ||
| * Encode a date range into REST.li record literal format. | ||
| * | ||
| * Example: `(start:(day:4,month:5,year:2024),end:(day:6,month:5,year:2024))` | ||
| */ | ||
| function encodeDateRange(dateRange) { | ||
| const parts = []; | ||
| if (dateRange.start !== undefined) { | ||
| parts.push(`start:(day:${String(dateRange.start.day)},month:${String(dateRange.start.month)},year:${String(dateRange.start.year)})`); | ||
| } | ||
| if (dateRange.end !== undefined) { | ||
| parts.push(`end:(day:${String(dateRange.end.day)},month:${String(dateRange.end.month)},year:${String(dateRange.end.year)})`); | ||
| } | ||
| return `(${parts.join(",")})`; | ||
| } | ||
| /** | ||
| * Map an API response element to a public data point. | ||
| */ | ||
| function mapDataPoint(element) { | ||
| const dataPoint = { | ||
| count: element.count, | ||
| }; | ||
| if (element.dateRange !== undefined) { | ||
| dataPoint.dateRange = { | ||
| start: element.dateRange.start, | ||
| end: element.dateRange.end, | ||
| }; | ||
| } | ||
| return dataPoint; | ||
| } | ||
| //# sourceMappingURL=member-stats-service.js.map |
| {"version":3,"file":"member-stats-service.js","sourceRoot":"","sources":["../../src/member-stats/member-stats-service.ts"],"names":[],"mappings":"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"} |
| /** | ||
| * Metric types available for the memberCreatorPostAnalytics endpoint. | ||
| */ | ||
| export type AnalyticsMetricType = "IMPRESSION" | "MEMBERS_REACHED" | "REACTION" | "COMMENT" | "RESHARE"; | ||
| /** | ||
| * All available analytics metric types. | ||
| */ | ||
| export declare const ANALYTICS_METRIC_TYPES: readonly AnalyticsMetricType[]; | ||
| /** | ||
| * Aggregation mode for analytics queries. | ||
| */ | ||
| export type AnalyticsAggregation = "DAILY" | "TOTAL"; | ||
| /** | ||
| * A calendar date used in analytics date ranges. | ||
| */ | ||
| export interface AnalyticsDate { | ||
| year: number; | ||
| month: number; | ||
| day: number; | ||
| } | ||
| /** | ||
| * A date range for filtering analytics data. | ||
| * Start is inclusive, end is exclusive. | ||
| */ | ||
| export interface AnalyticsDateRange { | ||
| /** Inclusive start date. */ | ||
| start?: AnalyticsDate | undefined; | ||
| /** Exclusive end date. */ | ||
| end?: AnalyticsDate | undefined; | ||
| } | ||
| /** | ||
| * A single analytics data point returned by the API. | ||
| */ | ||
| export interface AnalyticsDataPoint { | ||
| /** The metric count value. */ | ||
| count: number; | ||
| /** The date range this data point covers. */ | ||
| dateRange?: AnalyticsDateRange | undefined; | ||
| } | ||
| /** | ||
| * A metric that was successfully fetched. | ||
| */ | ||
| export interface MetricSuccess { | ||
| status: "success"; | ||
| /** One or more data points for this metric. */ | ||
| dataPoints: AnalyticsDataPoint[]; | ||
| } | ||
| /** | ||
| * A metric that failed to fetch due to an API error. | ||
| */ | ||
| export interface MetricUnavailable { | ||
| status: "unavailable"; | ||
| /** Description of why the metric is unavailable. */ | ||
| reason: string; | ||
| } | ||
| /** | ||
| * A metric that was excluded because the requested combination is not supported. | ||
| */ | ||
| export interface MetricExcluded { | ||
| status: "excluded"; | ||
| /** Description of why the metric was excluded. */ | ||
| reason: string; | ||
| } | ||
| /** | ||
| * The result of fetching a single metric type. | ||
| */ | ||
| export type MetricResult = MetricSuccess | MetricUnavailable | MetricExcluded; | ||
| /** | ||
| * Unified analytics results across all 5 metric types. | ||
| */ | ||
| export interface PostAnalytics { | ||
| impressions: MetricResult; | ||
| membersReached: MetricResult; | ||
| reactions: MetricResult; | ||
| comments: MetricResult; | ||
| reshares: MetricResult; | ||
| } | ||
| /** | ||
| * Internal API response element from the memberCreatorPostAnalytics endpoint. | ||
| * @internal | ||
| */ | ||
| export interface MemberCreatorPostAnalyticsApiElement { | ||
| count: number; | ||
| metricType: { | ||
| "com.linkedin.adsexternalapi.memberanalytics.v1.CreatorPostAnalyticsMetricTypeV1": string; | ||
| }; | ||
| targetEntity?: Record<string, string> | undefined; | ||
| dateRange?: { | ||
| start: AnalyticsDate; | ||
| end: AnalyticsDate; | ||
| } | undefined; | ||
| } | ||
| /** | ||
| * Internal API response from the memberCreatorPostAnalytics endpoint. | ||
| * @internal | ||
| */ | ||
| export interface MemberCreatorPostAnalyticsApiResponse { | ||
| elements: MemberCreatorPostAnalyticsApiElement[]; | ||
| paging: { | ||
| count: number; | ||
| start: number; | ||
| links: unknown[]; | ||
| }; | ||
| } | ||
| //# sourceMappingURL=types.d.ts.map |
| {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/member-stats/types.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG,YAAY,GAAG,iBAAiB,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,CAAC;AAExG;;GAEG;AACH,eAAO,MAAM,sBAAsB,EAAE,SAAS,mBAAmB,EAMvD,CAAC;AAEX;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG,OAAO,GAAG,OAAO,CAAC;AAErD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,4BAA4B;IAC5B,KAAK,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;IAClC,0BAA0B;IAC1B,GAAG,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,8BAA8B;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,6CAA6C;IAC7C,SAAS,CAAC,EAAE,kBAAkB,GAAG,SAAS,CAAC;CAC5C;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,SAAS,CAAC;IAClB,+CAA+C;IAC/C,UAAU,EAAE,kBAAkB,EAAE,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,aAAa,CAAC;IACtB,oDAAoD;IACpD,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,UAAU,CAAC;IACnB,kDAAkD;IAClD,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,aAAa,GAAG,iBAAiB,GAAG,cAAc,CAAC;AAE9E;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,YAAY,CAAC;IAC1B,cAAc,EAAE,YAAY,CAAC;IAC7B,SAAS,EAAE,YAAY,CAAC;IACxB,QAAQ,EAAE,YAAY,CAAC;IACvB,QAAQ,EAAE,YAAY,CAAC;CACxB;AAED;;;GAGG;AACH,MAAM,WAAW,oCAAoC;IACnD,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE;QACV,iFAAiF,EAAE,MAAM,CAAC;KAC3F,CAAC;IACF,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;IAClD,SAAS,CAAC,EACN;QACE,KAAK,EAAE,aAAa,CAAC;QACrB,GAAG,EAAE,aAAa,CAAC;KACpB,GACD,SAAS,CAAC;CACf;AAED;;;GAGG;AACH,MAAM,WAAW,qCAAqC;IACpD,QAAQ,EAAE,oCAAoC,EAAE,CAAC;IACjD,MAAM,EAAE;QACN,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,OAAO,EAAE,CAAC;KAClB,CAAC;CACH"} |
| // SPDX-License-Identifier: AGPL-3.0-only | ||
| // Copyright (C) 2026 Oleksii PELYKH | ||
| /** | ||
| * All available analytics metric types. | ||
| */ | ||
| export const ANALYTICS_METRIC_TYPES = [ | ||
| "IMPRESSION", | ||
| "MEMBERS_REACHED", | ||
| "REACTION", | ||
| "COMMENT", | ||
| "RESHARE", | ||
| ]; | ||
| //# sourceMappingURL=types.js.map |
| {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/member-stats/types.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,oCAAoC;AAOpC;;GAEG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAmC;IACpE,YAAY;IACZ,iBAAiB;IACjB,UAAU;IACV,SAAS;IACT,SAAS;CACD,CAAC"} |
| import type { LinkedInClient } from "../http/linkedin-client.js"; | ||
| import type { OrgStatsResponse, OrgStatsTimeGranularity, TimeRange } from "./types.js"; | ||
| /** | ||
| * Options for fetching organization share statistics. | ||
| */ | ||
| export interface GetOrgStatsOptions { | ||
| /** Organization URN (e.g. `urn:li:organization:123`). */ | ||
| organizationUrn: string; | ||
| /** Time granularity for bucketed results. Requires {@link timeRange}. */ | ||
| timeGranularity?: OrgStatsTimeGranularity | undefined; | ||
| /** Time range to filter statistics. Requires {@link timeGranularity}. */ | ||
| timeRange?: TimeRange | undefined; | ||
| /** Share URNs to filter statistics for specific posts. */ | ||
| shares?: string[] | undefined; | ||
| } | ||
| /** | ||
| * Fetch organization share statistics from the LinkedIn API. | ||
| * | ||
| * Returns lifetime aggregate statistics by default. When {@link GetOrgStatsOptions.timeRange} | ||
| * and {@link GetOrgStatsOptions.timeGranularity} are provided, returns time-bucketed statistics. | ||
| * When {@link GetOrgStatsOptions.shares} are provided, returns per-share statistics. | ||
| * | ||
| * @param client - Authenticated LinkedIn API client. | ||
| * @param options - Query options for the statistics endpoint. | ||
| * @returns Organization share statistics response. | ||
| */ | ||
| export declare function getOrgStats(client: LinkedInClient, options: GetOrgStatsOptions): Promise<OrgStatsResponse>; | ||
| //# sourceMappingURL=org-stats-service.d.ts.map |
| {"version":3,"file":"org-stats-service.d.ts","sourceRoot":"","sources":["../../src/org-stats/org-stats-service.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,KAAK,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvF;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,yDAAyD;IACzD,eAAe,EAAE,MAAM,CAAC;IACxB,yEAAyE;IACzE,eAAe,CAAC,EAAE,uBAAuB,GAAG,SAAS,CAAC;IACtD,yEAAyE;IACzE,SAAS,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAClC,0DAA0D;IAC1D,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;CAC/B;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,WAAW,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAkBhH"} |
| // SPDX-License-Identifier: AGPL-3.0-only | ||
| // Copyright (C) 2026 Oleksii PELYKH | ||
| /** | ||
| * Fetch organization share statistics from the LinkedIn API. | ||
| * | ||
| * Returns lifetime aggregate statistics by default. When {@link GetOrgStatsOptions.timeRange} | ||
| * and {@link GetOrgStatsOptions.timeGranularity} are provided, returns time-bucketed statistics. | ||
| * When {@link GetOrgStatsOptions.shares} are provided, returns per-share statistics. | ||
| * | ||
| * @param client - Authenticated LinkedIn API client. | ||
| * @param options - Query options for the statistics endpoint. | ||
| * @returns Organization share statistics response. | ||
| */ | ||
| export async function getOrgStats(client, options) { | ||
| const params = new URLSearchParams(); | ||
| params.set("q", "organizationalEntity"); | ||
| params.set("organizationalEntity", options.organizationUrn); | ||
| if (options.timeGranularity !== undefined && options.timeRange !== undefined) { | ||
| params.set("timeIntervals.timeGranularityType", options.timeGranularity); | ||
| params.set("timeIntervals.timeRange.start", String(options.timeRange.start)); | ||
| params.set("timeIntervals.timeRange.end", String(options.timeRange.end)); | ||
| } | ||
| if (options.shares !== undefined) { | ||
| for (const [i, share] of options.shares.entries()) { | ||
| params.set(`shares[${String(i)}]`, share); | ||
| } | ||
| } | ||
| return client.request(`/rest/organizationalEntityShareStatistics?${params.toString()}`); | ||
| } | ||
| //# sourceMappingURL=org-stats-service.js.map |
| {"version":3,"file":"org-stats-service.js","sourceRoot":"","sources":["../../src/org-stats/org-stats-service.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,oCAAoC;AAmBpC;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,MAAsB,EAAE,OAA2B;IACnF,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;IACrC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,sBAAsB,CAAC,CAAC;IACxC,MAAM,CAAC,GAAG,CAAC,sBAAsB,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;IAE5D,IAAI,OAAO,CAAC,eAAe,KAAK,SAAS,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QAC7E,MAAM,CAAC,GAAG,CAAC,mCAAmC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;QACzE,MAAM,CAAC,GAAG,CAAC,+BAA+B,EAAE,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;QAC7E,MAAM,CAAC,GAAG,CAAC,6BAA6B,EAAE,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3E,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QACjC,KAAK,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;YAClD,MAAM,CAAC,GAAG,CAAC,UAAU,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC,OAAO,CAAmB,6CAA6C,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AAC5G,CAAC"} |
| /** | ||
| * Time granularity for organization share statistics time intervals. | ||
| */ | ||
| export type OrgStatsTimeGranularity = "DAY" | "MONTH"; | ||
| /** | ||
| * A time range with start and end timestamps (milliseconds since epoch). | ||
| */ | ||
| export interface TimeRange { | ||
| /** Start of the time range (ms since epoch, inclusive). */ | ||
| start: number; | ||
| /** End of the time range (ms since epoch, exclusive). */ | ||
| end: number; | ||
| } | ||
| /** | ||
| * Aggregate share statistics for an organization or a specific share. | ||
| */ | ||
| export interface ShareStatistics { | ||
| /** Number of clicks on the share. */ | ||
| clickCount: number; | ||
| /** Number of comments on the share. */ | ||
| commentCount: number; | ||
| /** Engagement rate (interactions / impressions). */ | ||
| engagement: number; | ||
| /** Number of impressions (total views). */ | ||
| impressionCount: number; | ||
| /** Number of likes (reactions) on the share. */ | ||
| likeCount: number; | ||
| /** Number of times the share was re-shared. */ | ||
| shareCount: number; | ||
| /** Number of unique impressions (unique viewers). */ | ||
| uniqueImpressionsCount: number; | ||
| } | ||
| /** | ||
| * A single element in the organization share statistics response. | ||
| */ | ||
| export interface OrgStatsElement { | ||
| /** Organization URN (e.g. `urn:li:organization:123`). */ | ||
| organizationalEntity: string; | ||
| /** Share URN, present when filtering by specific share. */ | ||
| share?: string | undefined; | ||
| /** Aggregate share statistics. */ | ||
| totalShareStatistics: ShareStatistics; | ||
| /** Time range for this statistics bucket (present for time-bound queries). */ | ||
| timeRange?: TimeRange | undefined; | ||
| } | ||
| /** | ||
| * Response from the organizationalEntityShareStatistics endpoint. | ||
| */ | ||
| export interface OrgStatsResponse { | ||
| /** Array of statistics elements. */ | ||
| elements: OrgStatsElement[]; | ||
| /** Paging metadata. */ | ||
| paging: { | ||
| /** Number of results returned. */ | ||
| count: number; | ||
| /** Starting index. */ | ||
| start: number; | ||
| /** Total number of results available. */ | ||
| total?: number | undefined; | ||
| }; | ||
| } | ||
| //# sourceMappingURL=types.d.ts.map |
| {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/org-stats/types.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG,KAAK,GAAG,OAAO,CAAC;AAEtD;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,2DAA2D;IAC3D,KAAK,EAAE,MAAM,CAAC;IACd,yDAAyD;IACzD,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,qCAAqC;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,uCAAuC;IACvC,YAAY,EAAE,MAAM,CAAC;IACrB,oDAAoD;IACpD,UAAU,EAAE,MAAM,CAAC;IACnB,2CAA2C;IAC3C,eAAe,EAAE,MAAM,CAAC;IACxB,gDAAgD;IAChD,SAAS,EAAE,MAAM,CAAC;IAClB,+CAA+C;IAC/C,UAAU,EAAE,MAAM,CAAC;IACnB,qDAAqD;IACrD,sBAAsB,EAAE,MAAM,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,yDAAyD;IACzD,oBAAoB,EAAE,MAAM,CAAC;IAC7B,2DAA2D;IAC3D,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,kCAAkC;IAClC,oBAAoB,EAAE,eAAe,CAAC;IACtC,8EAA8E;IAC9E,SAAS,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,oCAAoC;IACpC,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,uBAAuB;IACvB,MAAM,EAAE;QACN,kCAAkC;QAClC,KAAK,EAAE,MAAM,CAAC;QACd,sBAAsB;QACtB,KAAK,EAAE,MAAM,CAAC;QACd,yCAAyC;QACzC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;KAC5B,CAAC;CACH"} |
| // SPDX-License-Identifier: AGPL-3.0-only | ||
| // Copyright (C) 2026 Oleksii PELYKH | ||
| export {}; | ||
| //# sourceMappingURL=types.js.map |
| {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/org-stats/types.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,oCAAoC"} |
@@ -9,2 +9,6 @@ export type { OAuthCredentials, LinkedctlConfig, ConfigResult, ResolveOptions } from "./types.js"; | ||
| export { resolveConfig, ConfigError } from "./resolve.js"; | ||
| export { PRODUCT_PRESETS, PRODUCT_NAMES, resolveProductScopes } from "./products.js"; | ||
| export type { ProductPreset } from "./products.js"; | ||
| export { listProfileScopes, findProfilesWithScopes } from "./profiles.js"; | ||
| export type { ProfileScopeSummary } from "./profiles.js"; | ||
| //# sourceMappingURL=index.d.ts.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAGA,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAClG,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAC9E,YAAY,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnE,YAAY,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EACL,eAAe,EACf,0BAA0B,EAC1B,cAAc,EACd,aAAa,EACb,cAAc,EACd,gBAAgB,GACjB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC"} | ||
| {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAGA,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAClG,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAC9E,YAAY,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnE,YAAY,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EACL,eAAe,EACf,0BAA0B,EAC1B,cAAc,EACd,aAAa,EACb,cAAc,EACd,gBAAgB,GACjB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrF,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAC1E,YAAY,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC"} |
@@ -8,2 +8,4 @@ // SPDX-License-Identifier: AGPL-3.0-only | ||
| export { resolveConfig, ConfigError } from "./resolve.js"; | ||
| export { PRODUCT_PRESETS, PRODUCT_NAMES, resolveProductScopes } from "./products.js"; | ||
| export { listProfileScopes, findProfilesWithScopes } from "./profiles.js"; | ||
| //# sourceMappingURL=index.js.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,oCAAoC;AAGpC,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAE9E,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAEnE,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EACL,eAAe,EACf,0BAA0B,EAC1B,cAAc,EACd,aAAa,EACb,cAAc,EACd,gBAAgB,GACjB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC"} | ||
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,oCAAoC;AAGpC,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAE9E,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAEnE,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EACL,eAAe,EACf,0BAA0B,EAC1B,cAAc,EACd,aAAa,EACb,cAAc,EACd,gBAAgB,GACjB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAErF,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC"} |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../src/config/resolve.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAK/D;;GAEG;AACH,qBAAa,WAAY,SAAQ,KAAK;gBACxB,OAAO,EAAE,MAAM;CAI5B;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,aAAa,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,YAAY,CAAC,CAwDnF"} | ||
| {"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../src/config/resolve.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAO/D;;GAEG;AACH,qBAAa,WAAY,SAAQ,KAAK;gBACxB,OAAO,EAAE,MAAM;CAI5B;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,aAAa,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,YAAY,CAAC,CA0DnF"} |
@@ -6,2 +6,4 @@ // SPDX-License-Identifier: AGPL-3.0-only | ||
| import { applyEnvOverlay } from "./env.js"; | ||
| import { findProfilesWithScopes } from "./profiles.js"; | ||
| import { PRODUCT_PRESETS } from "./products.js"; | ||
| /** | ||
@@ -64,3 +66,7 @@ * Error thrown when configuration is invalid or incomplete. | ||
| if (missingScopes.length > 0) { | ||
| throw new ConfigError(`Missing required OAuth scopes: ${missingScopes.join(", ")}. Re-run "linkedctl auth setup" to configure the required scopes, then "linkedctl auth login" to re-authenticate.`); | ||
| const message = await buildScopeMismatchMessage(missingScopes, requiredScopes, { | ||
| profile: options?.profile, | ||
| home: options?.home, | ||
| }); | ||
| throw new ConfigError(message); | ||
| } | ||
@@ -76,2 +82,64 @@ } | ||
| } | ||
| /** | ||
| * Build a helpful scope-mismatch error message. | ||
| * | ||
| * When other profiles already have the required scopes, suggests `--profile`. | ||
| * Otherwise, suggests the exact `auth setup` command to create a new profile. | ||
| * Also explains LinkedIn's product exclusivity constraint when relevant. | ||
| */ | ||
| async function buildScopeMismatchMessage(missingScopes, requiredScopes, options) { | ||
| const parts = [`Missing required OAuth scopes: ${missingScopes.join(", ")}.`]; | ||
| // Check if any existing profile already has the required scopes | ||
| let matchingProfiles = []; | ||
| try { | ||
| matchingProfiles = await findProfilesWithScopes(requiredScopes, { | ||
| home: options?.home, | ||
| excludeProfile: options?.profile, | ||
| }); | ||
| } | ||
| catch { | ||
| // If profile scanning fails, fall through to generic advice. | ||
| } | ||
| if (matchingProfiles.length > 0) { | ||
| const profileList = matchingProfiles.map((p) => `--profile ${p}`).join(", "); | ||
| parts.push(`Other profiles already have the required scopes: ${profileList}.`); | ||
| } | ||
| else { | ||
| // Suggest the right auth setup command based on missing scopes | ||
| const setupHint = suggestSetupCommand(missingScopes, options?.profile); | ||
| parts.push(setupHint); | ||
| } | ||
| // Explain product exclusivity when scopes span multiple exclusive products | ||
| if (involvesExclusiveProducts(requiredScopes)) { | ||
| parts.push("Note: LinkedIn enforces product exclusivity — the Community Management API " + | ||
| "must be the sole product on a Developer App. Use separate profiles for " + | ||
| "separate apps (e.g. --profile analytics)."); | ||
| } | ||
| return parts.join(" "); | ||
| } | ||
| /** | ||
| * Suggest the appropriate `auth setup` command for the missing scopes. | ||
| */ | ||
| function suggestSetupCommand(missingScopes, currentProfile) { | ||
| // Find a product preset that covers all missing scopes | ||
| for (const [productId, preset] of Object.entries(PRODUCT_PRESETS)) { | ||
| if (missingScopes.every((s) => preset.scopes.includes(s))) { | ||
| const profileArg = currentProfile !== undefined ? ` --profile ${currentProfile}` : ""; | ||
| return `Run: linkedctl auth setup --product ${productId}${profileArg}`; | ||
| } | ||
| } | ||
| // Generic fallback | ||
| const profileArg = currentProfile !== undefined ? ` --profile ${currentProfile}` : ""; | ||
| return `Re-run "linkedctl auth setup${profileArg}" to configure the required scopes, then "linkedctl auth login" to re-authenticate.`; | ||
| } | ||
| /** | ||
| * Check whether the required scopes span multiple exclusive LinkedIn products. | ||
| * The Community Management API (`r_member_postAnalytics`) is exclusive and | ||
| * cannot coexist with Share (`w_member_social`) on the same Developer App. | ||
| */ | ||
| function involvesExclusiveProducts(scopes) { | ||
| const hasCommunityManagement = scopes.includes("r_member_postAnalytics"); | ||
| const hasShare = scopes.includes("w_member_social"); | ||
| return hasCommunityManagement && hasShare; | ||
| } | ||
| //# sourceMappingURL=resolve.js.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../src/config/resolve.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../src/config/resolve.ts"],"names":[],"mappings":"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"} |
@@ -16,2 +16,12 @@ /** | ||
| /** | ||
| * Thrown on HTTP 403 — the request is forbidden. | ||
| * | ||
| * This typically means the OAuth access token does not have the required | ||
| * permissions, or the LinkedIn Developer App does not have the necessary | ||
| * product enabled. | ||
| */ | ||
| export declare class LinkedInForbiddenError extends LinkedInApiError { | ||
| constructor(message: string, responseBody?: unknown); | ||
| } | ||
| /** | ||
| * Thrown on HTTP 429 when all retry attempts have been exhausted. | ||
@@ -18,0 +28,0 @@ */ |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/http/errors.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,KAAK;IACzC,SAAgB,MAAM,EAAE,MAAM,CAAC;IAC/B,SAAgB,YAAY,EAAE,OAAO,CAAC;gBAE1B,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,OAAO;CAMpE;AAED;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,gBAAgB;gBACzC,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,OAAO;CAIpD;AAED;;GAEG;AACH,qBAAa,sBAAuB,SAAQ,gBAAgB;IAC1D,SAAgB,gBAAgB,EAAE,MAAM,CAAC;gBAE7B,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,OAAO;CAK9E;AAED;;GAEG;AACH,qBAAa,4BAA6B,SAAQ,gBAAgB;gBACpD,UAAU,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,OAAO;CASvD;AAED;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,gBAAgB;gBAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,OAAO;CAIpE"} | ||
| {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/http/errors.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,KAAK;IACzC,SAAgB,MAAM,EAAE,MAAM,CAAC;IAC/B,SAAgB,YAAY,EAAE,OAAO,CAAC;gBAE1B,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,OAAO;CAMpE;AAED;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,gBAAgB;gBACzC,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,OAAO;CAIpD;AAED;;;;;;GAMG;AACH,qBAAa,sBAAuB,SAAQ,gBAAgB;gBAC9C,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,OAAO;CAIpD;AAED;;GAEG;AACH,qBAAa,sBAAuB,SAAQ,gBAAgB;IAC1D,SAAgB,gBAAgB,EAAE,MAAM,CAAC;gBAE7B,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,OAAO;CAK9E;AAED;;GAEG;AACH,qBAAa,4BAA6B,SAAQ,gBAAgB;gBACpD,UAAU,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,OAAO;CASvD;AAED;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,gBAAgB;gBAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,OAAO;CAIpE"} |
+13
-0
@@ -26,2 +26,15 @@ // SPDX-License-Identifier: AGPL-3.0-only | ||
| /** | ||
| * Thrown on HTTP 403 — the request is forbidden. | ||
| * | ||
| * This typically means the OAuth access token does not have the required | ||
| * permissions, or the LinkedIn Developer App does not have the necessary | ||
| * product enabled. | ||
| */ | ||
| export class LinkedInForbiddenError extends LinkedInApiError { | ||
| constructor(message, responseBody) { | ||
| super(message, 403, responseBody); | ||
| this.name = "LinkedInForbiddenError"; | ||
| } | ||
| } | ||
| /** | ||
| * Thrown on HTTP 429 when all retry attempts have been exhausted. | ||
@@ -28,0 +41,0 @@ */ |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/http/errors.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,oCAAoC;AAEpC;;GAEG;AACH,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IACzB,MAAM,CAAS;IACf,YAAY,CAAU;IAEtC,YAAY,OAAe,EAAE,MAAc,EAAE,YAAsB;QACjE,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;QAC/B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,iBAAkB,SAAQ,gBAAgB;IACrD,YAAY,OAAe,EAAE,YAAsB;QACjD,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,YAAY,CAAC,CAAC;QAClC,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,sBAAuB,SAAQ,gBAAgB;IAC1C,gBAAgB,CAAS;IAEzC,YAAY,OAAe,EAAE,gBAAwB,EAAE,YAAsB;QAC3E,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,YAAY,CAAC,CAAC;QAClC,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;QACrC,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;IAC3C,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,4BAA6B,SAAQ,gBAAgB;IAChE,YAAY,UAAkB,EAAE,YAAsB;QACpD,KAAK,CACH,yBAAyB,UAAU,4BAA4B;YAC7D,2GAA2G,EAC7G,GAAG,EACH,YAAY,CACb,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,8BAA8B,CAAC;IAC7C,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,mBAAoB,SAAQ,gBAAgB;IACvD,YAAY,OAAe,EAAE,MAAc,EAAE,YAAsB;QACjE,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;QACrC,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF"} | ||
| {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/http/errors.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,oCAAoC;AAEpC;;GAEG;AACH,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IACzB,MAAM,CAAS;IACf,YAAY,CAAU;IAEtC,YAAY,OAAe,EAAE,MAAc,EAAE,YAAsB;QACjE,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;QAC/B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,iBAAkB,SAAQ,gBAAgB;IACrD,YAAY,OAAe,EAAE,YAAsB;QACjD,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,YAAY,CAAC,CAAC;QAClC,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF;AAED;;;;;;GAMG;AACH,MAAM,OAAO,sBAAuB,SAAQ,gBAAgB;IAC1D,YAAY,OAAe,EAAE,YAAsB;QACjD,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,YAAY,CAAC,CAAC;QAClC,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;IACvC,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,sBAAuB,SAAQ,gBAAgB;IAC1C,gBAAgB,CAAS;IAEzC,YAAY,OAAe,EAAE,gBAAwB,EAAE,YAAsB;QAC3E,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,YAAY,CAAC,CAAC;QAClC,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;QACrC,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;IAC3C,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,4BAA6B,SAAQ,gBAAgB;IAChE,YAAY,UAAkB,EAAE,YAAsB;QACpD,KAAK,CACH,yBAAyB,UAAU,4BAA4B;YAC7D,2GAA2G,EAC7G,GAAG,EACH,YAAY,CACb,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,8BAA8B,CAAC;IAC7C,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,mBAAoB,SAAQ,gBAAgB;IACvD,YAAY,OAAe,EAAE,MAAc,EAAE,YAAsB;QACjE,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;QACrC,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF"} |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"linkedin-client.d.ts","sourceRoot":"","sources":["../../src/http/linkedin-client.ts"],"names":[],"mappings":"AAiBA,MAAM,WAAW,qBAAqB;IACpC,2BAA2B;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,uDAAuD;IACvD,UAAU,EAAE,MAAM,CAAC;IACnB,qCAAqC;IACrC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,2CAA2C;IAC3C,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,mEAAmE;IACnE,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACjC;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;gBAExB,OAAO,EAAE,qBAAqB;IAQ1C;;;;;OAKG;IACG,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC;IAQ9D;;;;;OAKG;IACG,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;IASxD;;;OAGG;IACG,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAa1D;;OAEG;IACG,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzC;;;;;OAKG;IACG,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,SAA6B,GAAG,OAAO,CAAC,IAAI,CAAC;IAQpG;;;;;;OAMG;IACG,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAoBhE;;;OAGG;YACW,WAAW;IA+CzB,OAAO,CAAC,YAAY;IASpB,uFAAuF;IACvF,OAAO,CAAC,gBAAgB;YAOV,WAAW;IAazB,OAAO,CAAC,KAAK;CAGd"} | ||
| {"version":3,"file":"linkedin-client.d.ts","sourceRoot":"","sources":["../../src/http/linkedin-client.ts"],"names":[],"mappings":"AAkBA,MAAM,WAAW,qBAAqB;IACpC,2BAA2B;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,uDAAuD;IACvD,UAAU,EAAE,MAAM,CAAC;IACnB,qCAAqC;IACrC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,2CAA2C;IAC3C,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,mEAAmE;IACnE,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACjC;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;gBAExB,OAAO,EAAE,qBAAqB;IAQ1C;;;;;OAKG;IACG,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC;IAQ9D;;;;;OAKG;IACG,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;IASxD;;;OAGG;IACG,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAa1D;;OAEG;IACG,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzC;;;;;OAKG;IACG,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,SAA6B,GAAG,OAAO,CAAC,IAAI,CAAC;IAQpG;;;;;;OAMG;IACG,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAoBhE;;;OAGG;YACW,WAAW;IAwDzB,OAAO,CAAC,YAAY;IASpB,uFAAuF;IACvF,OAAO,CAAC,gBAAgB;YAOV,WAAW;IAazB,OAAO,CAAC,KAAK;CAGd"} |
| // SPDX-License-Identifier: AGPL-3.0-only | ||
| // Copyright (C) 2026 Oleksii PELYKH | ||
| import { LinkedInApiError, LinkedInAuthError, LinkedInRateLimitError, LinkedInServerError, LinkedInUpgradeRequiredError, } from "./errors.js"; | ||
| import { LinkedInApiError, LinkedInAuthError, LinkedInForbiddenError, LinkedInRateLimitError, LinkedInServerError, LinkedInUpgradeRequiredError, } from "./errors.js"; | ||
| const RESTLI_PROTOCOL_VERSION = "2.0.0"; | ||
@@ -135,2 +135,7 @@ const DEFAULT_BASE_URL = "https://api.linkedin.com"; | ||
| } | ||
| if (response.status === 403) { | ||
| throw new LinkedInForbiddenError("LinkedIn API request forbidden (HTTP 403). " + | ||
| "Verify that your LinkedIn Developer App has the correct product enabled " + | ||
| "and that the OAuth scopes match the product's requirements.", body); | ||
| } | ||
| if (response.status === 401) { | ||
@@ -137,0 +142,0 @@ throw new LinkedInAuthError("LinkedIn API authentication failed — please re-authenticate", body); |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"linkedin-client.js","sourceRoot":"","sources":["../../src/http/linkedin-client.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"linkedin-client.js","sourceRoot":"","sources":["../../src/http/linkedin-client.ts"],"names":[],"mappings":"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"} |
+10
-3
@@ -1,6 +0,6 @@ | ||
| export { loadConfigFile, CONFIG_DIR, DEFAULT_API_VERSION, validateConfig, isValidProfileName, applyEnvOverlay, saveOAuthTokens, saveOAuthClientCredentials, saveOAuthScope, saveOAuthPkce, saveApiVersion, clearOAuthTokens, resolveConfig, ConfigError, } from "./config/index.js"; | ||
| export type { OAuthCredentials, LinkedctlConfig, ConfigResult, ResolveOptions, LoadResult, ValidationResult, } from "./config/index.js"; | ||
| export { loadConfigFile, CONFIG_DIR, DEFAULT_API_VERSION, validateConfig, isValidProfileName, applyEnvOverlay, saveOAuthTokens, saveOAuthClientCredentials, saveOAuthScope, saveOAuthPkce, saveApiVersion, clearOAuthTokens, resolveConfig, ConfigError, PRODUCT_PRESETS, PRODUCT_NAMES, resolveProductScopes, listProfileScopes, findProfilesWithScopes, } from "./config/index.js"; | ||
| export type { OAuthCredentials, LinkedctlConfig, ConfigResult, ResolveOptions, LoadResult, ValidationResult, ProductPreset, ProfileScopeSummary, } from "./config/index.js"; | ||
| export { getTokenExpiry } from "./auth/token-introspection.js"; | ||
| export type { TokenExpiry } from "./auth/token-introspection.js"; | ||
| export { LinkedInApiError, LinkedInAuthError, LinkedInRateLimitError, LinkedInServerError, LinkedInUpgradeRequiredError, } from "./http/errors.js"; | ||
| export { LinkedInApiError, LinkedInAuthError, LinkedInForbiddenError, LinkedInRateLimitError, LinkedInServerError, LinkedInUpgradeRequiredError, } from "./http/errors.js"; | ||
| export { LinkedInClient } from "./http/linkedin-client.js"; | ||
@@ -34,2 +34,9 @@ export type { LinkedInClientOptions } from "./http/linkedin-client.js"; | ||
| export type { Comment } from "./comments/types.js"; | ||
| export { getPostAnalytics, getMemberAnalytics } from "./member-stats/member-stats-service.js"; | ||
| export type { GetPostAnalyticsOptions, GetMemberAnalyticsOptions } from "./member-stats/member-stats-service.js"; | ||
| export { ANALYTICS_METRIC_TYPES } from "./member-stats/types.js"; | ||
| export type { AnalyticsMetricType, AnalyticsAggregation, AnalyticsDate, AnalyticsDateRange, AnalyticsDataPoint, MetricSuccess, MetricUnavailable, MetricExcluded, MetricResult, PostAnalytics, } from "./member-stats/types.js"; | ||
| export { getOrgStats } from "./org-stats/org-stats-service.js"; | ||
| export type { GetOrgStatsOptions } from "./org-stats/org-stats-service.js"; | ||
| export type { OrgStatsTimeGranularity, TimeRange, ShareStatistics, OrgStatsElement, OrgStatsResponse, } from "./org-stats/types.js"; | ||
| //# sourceMappingURL=index.d.ts.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"} |
+5
-2
| // SPDX-License-Identifier: AGPL-3.0-only | ||
| // Copyright (C) 2026 Oleksii PELYKH | ||
| export { loadConfigFile, CONFIG_DIR, DEFAULT_API_VERSION, validateConfig, isValidProfileName, applyEnvOverlay, saveOAuthTokens, saveOAuthClientCredentials, saveOAuthScope, saveOAuthPkce, saveApiVersion, clearOAuthTokens, resolveConfig, ConfigError, } from "./config/index.js"; | ||
| export { loadConfigFile, CONFIG_DIR, DEFAULT_API_VERSION, validateConfig, isValidProfileName, applyEnvOverlay, saveOAuthTokens, saveOAuthClientCredentials, saveOAuthScope, saveOAuthPkce, saveApiVersion, clearOAuthTokens, resolveConfig, ConfigError, PRODUCT_PRESETS, PRODUCT_NAMES, resolveProductScopes, listProfileScopes, findProfilesWithScopes, } from "./config/index.js"; | ||
| export { getTokenExpiry } from "./auth/token-introspection.js"; | ||
| export { LinkedInApiError, LinkedInAuthError, LinkedInRateLimitError, LinkedInServerError, LinkedInUpgradeRequiredError, } from "./http/errors.js"; | ||
| export { LinkedInApiError, LinkedInAuthError, LinkedInForbiddenError, LinkedInRateLimitError, LinkedInServerError, LinkedInUpgradeRequiredError, } from "./http/errors.js"; | ||
| export { LinkedInClient } from "./http/linkedin-client.js"; | ||
@@ -21,2 +21,5 @@ export { buildAuthorizationUrl, exchangeAuthorizationCode, refreshAccessToken, revokeAccessToken, } from "./oauth2/oauth2-client.js"; | ||
| export { createComment, listComments, getComment, deleteComment } from "./comments/comments-service.js"; | ||
| export { getPostAnalytics, getMemberAnalytics } from "./member-stats/member-stats-service.js"; | ||
| export { ANALYTICS_METRIC_TYPES } from "./member-stats/types.js"; | ||
| export { getOrgStats } from "./org-stats/org-stats-service.js"; | ||
| //# sourceMappingURL=index.js.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,oCAAoC;AAEpC,OAAO,EACL,cAAc,EACd,UAAU,EACV,mBAAmB,EACnB,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,eAAe,EACf,0BAA0B,EAC1B,cAAc,EACd,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,aAAa,EACb,WAAW,GACZ,MAAM,mBAAmB,CAAC;AAS3B,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,sBAAsB,EACtB,mBAAmB,EACnB,4BAA4B,GAC7B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAE3D,OAAO,EACL,qBAAqB,EACrB,yBAAyB,EACzB,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAE9E,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAoBlH,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAQrH,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAEpF,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,4BAA4B,GAC7B,MAAM,0CAA0C,CAAC;AAUlD,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AACjG,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAQtD,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC"} | ||
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,oCAAoC;AAEpC,OAAO,EACL,cAAc,EACd,UAAU,EACV,mBAAmB,EACnB,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,eAAe,EACf,0BAA0B,EAC1B,cAAc,EACd,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,aAAa,EACb,WAAW,EACX,eAAe,EACf,aAAa,EACb,oBAAoB,EACpB,iBAAiB,EACjB,sBAAsB,GACvB,MAAM,mBAAmB,CAAC;AAW3B,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,sBAAsB,EACtB,sBAAsB,EACtB,mBAAmB,EACnB,4BAA4B,GAC7B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAE3D,OAAO,EACL,qBAAqB,EACrB,yBAAyB,EACzB,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAE9E,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAoBlH,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAQrH,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAEpF,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,4BAA4B,GAC7B,MAAM,0CAA0C,CAAC;AAUlD,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AACjG,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAQtD,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAQxG,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AAE9F,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAajE,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC"} |
+1
-1
| { | ||
| "name": "@linkedctl/core", | ||
| "version": "0.4.0", | ||
| "version": "0.5.0", | ||
| "description": "Core library for LinkedIn API integration", | ||
@@ -5,0 +5,0 @@ "type": "module", |
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
225364
24.72%147
19.51%2873
31.61%6
20%