Sign In

@linkedctl/core

Package Overview
Dependencies
Maintainers
1
Versions
7
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@linkedctl/core - npm Package Compare versions

Comparing version
0.4.0
to
0.5.0
+26
dist/config/products.d.ts
/**
* 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"}
+4
-0

@@ -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

@@ -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"}

@@ -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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"}

@@ -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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"}
// 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"}
{
"name": "@linkedctl/core",
"version": "0.4.0",
"version": "0.5.0",
"description": "Core library for LinkedIn API integration",

@@ -5,0 +5,0 @@ "type": "module",