Sign In

@linkedctl/cli

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/cli - npm Package Compare versions

Comparing version
0.4.0
to
0.5.0
+38
dist/commands/stats/helpers.d.ts
import type { AnalyticsDate, PostAnalytics } from "@linkedctl/core";
/**
* Print warnings to stderr for any unavailable or excluded metrics.
*/
export declare function warnUnavailableMetrics(analytics: PostAnalytics): void;
/**
* Build table rows for TOTAL aggregation: one row per successful metric.
*/
export declare function buildTotalRows(analytics: PostAnalytics): {
metric: string;
count: number;
}[];
/**
* Build table rows for DAILY aggregation: one row per date with metric columns.
*/
export declare function buildDailyRows(analytics: PostAnalytics): Record<string, unknown>[];
/**
* Parse a YYYY-MM-DD string into an AnalyticsDate.
*/
export declare function parseDate(value: string): AnalyticsDate;
/**
* Format an AnalyticsDate as YYYY-MM-DD.
*/
export declare function formatDate(date: AnalyticsDate): string;
/**
* Add one day to an AnalyticsDate, handling month/year boundaries.
* Used to convert an inclusive --to date to the API's exclusive end date.
*/
export declare function addDay(date: AnalyticsDate): AnalyticsDate;
/**
* Enhance a ConfigError for analytics scope requirements.
*
* When the error is about missing `r_member_postAnalytics`, throws a new
* ConfigError with additional guidance about product exclusivity and
* a suggested dedicated analytics profile name.
*/
export declare function enhanceAnalyticsScopeError(error: unknown, profile: string | undefined): void;
//# sourceMappingURL=helpers.d.ts.map
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/commands/stats/helpers.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAgB,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAalF;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,aAAa,GAAG,IAAI,CAYrE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,aAAa,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE,CAS5F;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAsBlF;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,CAkBtD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,CAEtD;AAED;;;GAGG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE,aAAa,GAAG,aAAa,CAOzD;AAED;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAW5F"}
// SPDX-License-Identifier: AGPL-3.0-only
// Copyright (C) 2026 Oleksii PELYKH
import { ConfigError } from "@linkedctl/core";
/**
* Human-readable labels for each metric key.
*/
const METRIC_LABELS = {
impressions: "Impressions",
membersReached: "Members reached",
reactions: "Reactions",
comments: "Comments",
reshares: "Reshares",
};
/**
* Print warnings to stderr for any unavailable or excluded metrics.
*/
export function warnUnavailableMetrics(analytics) {
const warnings = [];
for (const [key, result] of Object.entries(analytics)) {
if (result.status === "unavailable") {
warnings.push(`${METRIC_LABELS[key]}: ${result.reason}`);
}
else if (result.status === "excluded") {
warnings.push(`${METRIC_LABELS[key]}: ${result.reason}`);
}
}
if (warnings.length > 0) {
console.error(`warning: Some metrics are unavailable:\n${warnings.map((w) => ` - ${w}`).join("\n")}`);
}
}
/**
* Build table rows for TOTAL aggregation: one row per successful metric.
*/
export function buildTotalRows(analytics) {
const rows = [];
for (const [key, result] of Object.entries(analytics)) {
if (result.status === "success") {
const total = result.dataPoints.reduce((sum, dp) => sum + dp.count, 0);
rows.push({ metric: METRIC_LABELS[key], count: total });
}
}
return rows;
}
/**
* Build table rows for DAILY aggregation: one row per date with metric columns.
*/
export function buildDailyRows(analytics) {
const dateMap = new Map();
for (const [key, result] of Object.entries(analytics)) {
if (result.status !== "success")
continue;
for (const dp of result.dataPoints) {
if (dp.dateRange?.start === undefined)
continue;
const dateStr = formatDate(dp.dateRange.start);
let row = dateMap.get(dateStr);
if (row === undefined) {
row = { date: dateStr };
dateMap.set(dateStr, row);
}
row[METRIC_LABELS[key]] = dp.count;
}
}
const sortedDates = [...dateMap.keys()].sort();
return sortedDates.flatMap((date) => {
const row = dateMap.get(date);
return row !== undefined ? [row] : [];
});
}
/**
* Parse a YYYY-MM-DD string into an AnalyticsDate.
*/
export function parseDate(value) {
const match = /^(\d{4})-(\d{2})-(\d{2})$/.exec(value);
if (match === null) {
throw new Error(`Invalid date format: "${value}". Expected YYYY-MM-DD.`);
}
const [, yearStr, monthStr, dayStr] = match;
if (yearStr === undefined || monthStr === undefined || dayStr === undefined) {
throw new Error(`Invalid date format: "${value}". Expected YYYY-MM-DD.`);
}
const year = parseInt(yearStr, 10);
const month = parseInt(monthStr, 10);
const day = parseInt(dayStr, 10);
if (month < 1 || month > 12 || day < 1 || day > 31) {
throw new Error(`Invalid date: "${value}". Month must be 1-12, day must be 1-31.`);
}
return { year, month, day };
}
/**
* Format an AnalyticsDate as YYYY-MM-DD.
*/
export function formatDate(date) {
return `${String(date.year)}-${String(date.month).padStart(2, "0")}-${String(date.day).padStart(2, "0")}`;
}
/**
* Add one day to an AnalyticsDate, handling month/year boundaries.
* Used to convert an inclusive --to date to the API's exclusive end date.
*/
export function addDay(date) {
const d = new Date(date.year, date.month - 1, date.day + 1);
return {
year: d.getFullYear(),
month: d.getMonth() + 1,
day: d.getDate(),
};
}
/**
* Enhance a ConfigError for analytics scope requirements.
*
* When the error is about missing `r_member_postAnalytics`, throws a new
* ConfigError with additional guidance about product exclusivity and
* a suggested dedicated analytics profile name.
*/
export function enhanceAnalyticsScopeError(error, profile) {
if (!(error instanceof ConfigError))
return;
if (!error.message.includes("r_member_postAnalytics"))
return;
const profileName = profile !== undefined ? `${profile}-analytics` : "analytics";
throw new ConfigError(error.message +
` LinkedIn's Community Management API requires a dedicated Developer App` +
` that cannot share scopes with other products.` +
` Consider a dedicated analytics profile: linkedctl auth setup --product community-management --profile ${profileName}`);
}
//# sourceMappingURL=helpers.js.map
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/commands/stats/helpers.ts"],"names":[],"mappings":"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"}
import { Command } from "commander";
export declare function statsCommand(): Command;
//# sourceMappingURL=index.d.ts.map
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/stats/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,YAAY,IAAI,OAAO,CAsBtC"}
// SPDX-License-Identifier: AGPL-3.0-only
// Copyright (C) 2026 Oleksii PELYKH
import { Command } from "commander";
import { orgCommand } from "./org.js";
import { postCommand } from "./post.js";
import { meCommand } from "./me.js";
export function statsCommand() {
const cmd = new Command("stats");
cmd.description("View analytics and statistics");
cmd.addHelpText("after", `
Examples:
linkedctl stats post urn:li:share:123
linkedctl stats post urn:li:share:123 --org 12345
linkedctl stats me
linkedctl stats me --from 2024-05-01 --to 2024-05-31
linkedctl stats org 12345
linkedctl stats org 12345 --from 2025-01-01 --to 2025-06-01
linkedctl stats org 12345 --from 2025-01-01 --to 2025-02-01 --granularity day`);
cmd.addCommand(postCommand());
cmd.addCommand(meCommand());
cmd.addCommand(orgCommand());
return cmd;
}
//# sourceMappingURL=index.js.map
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/stats/index.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,oCAAoC;AAEpC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEpC,MAAM,UAAU,YAAY;IAC1B,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IACjC,GAAG,CAAC,WAAW,CAAC,+BAA+B,CAAC,CAAC;IAEjD,GAAG,CAAC,WAAW,CACb,OAAO,EACP;;;;;;;;gFAQ4E,CAC7E,CAAC;IAEF,GAAG,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;IAC9B,GAAG,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC,CAAC;IAC5B,GAAG,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,CAAC;IAE7B,OAAO,GAAG,CAAC;AACb,CAAC"}
import { Command } from "commander";
export declare function meCommand(): Command;
//# sourceMappingURL=me.d.ts.map
{"version":3,"file":"me.d.ts","sourceRoot":"","sources":["../../../src/commands/stats/me.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAa5C,wBAAgB,SAAS,IAAI,OAAO,CAuEnC"}
// SPDX-License-Identifier: AGPL-3.0-only
// Copyright (C) 2026 Oleksii PELYKH
import { Command, Option } from "commander";
import { resolveConfig, LinkedInClient, getMemberAnalytics, LinkedInApiError } from "@linkedctl/core";
import { resolveFormat, formatOutput } from "../../output/index.js";
import { warnUnavailableMetrics, buildTotalRows, buildDailyRows, parseDate, addDay, enhanceAnalyticsScopeError, } from "./helpers.js";
export function meCommand() {
const cmd = new Command("me");
cmd.description("Get aggregated analytics across all your posts");
cmd.option("--from <date>", "start date for daily breakdown (YYYY-MM-DD, inclusive)");
cmd.option("--to <date>", "end date for daily breakdown (YYYY-MM-DD, inclusive)");
cmd.addOption(new Option("--format <format>", "output format (json or table)").choices(["json", "table"]));
cmd.action(async (opts, actionCmd) => {
const globals = actionCmd.optsWithGlobals();
const from = opts["from"];
const to = opts["to"];
if ((from === undefined) !== (to === undefined)) {
throw new Error("--from and --to must be used together");
}
try {
const { config } = await resolveConfig({
profile: globals.profile,
requiredScopes: ["r_member_postAnalytics"],
});
const accessToken = config.oauth?.accessToken ?? "";
const apiVersion = config.apiVersion ?? "";
const client = new LinkedInClient({ accessToken, apiVersion });
const hasDateRange = from !== undefined && to !== undefined;
const analytics = await getMemberAnalytics(client, hasDateRange
? {
aggregation: "DAILY",
dateRange: {
start: parseDate(from),
end: addDay(parseDate(to)),
},
}
: undefined);
warnUnavailableMetrics(analytics);
const format = resolveFormat(opts["format"], process.stdout, globals.json === true);
if (format === "json") {
console.log(formatOutput(analytics, format));
}
else if (hasDateRange) {
const rows = buildDailyRows(analytics);
if (rows.length === 0) {
console.log("No data available for the specified date range.");
return;
}
console.log(formatOutput(rows, format));
}
else {
const rows = buildTotalRows(analytics);
if (rows.length === 0) {
console.log("No metrics available.");
return;
}
console.log(formatOutput(rows, format));
}
}
catch (error) {
enhanceAnalyticsScopeError(error, globals.profile);
if (error instanceof LinkedInApiError) {
throw new Error(`Failed to get member analytics: ${error.message}`);
}
throw error;
}
});
return cmd;
}
//# sourceMappingURL=me.js.map
{"version":3,"file":"me.js","sourceRoot":"","sources":["../../../src/commands/stats/me.ts"],"names":[],"mappings":"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"}
import { Command } from "commander";
export declare function orgCommand(): Command;
//# sourceMappingURL=org.d.ts.map
{"version":3,"file":"org.d.ts","sourceRoot":"","sources":["../../../src/commands/stats/org.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AA0B5C,wBAAgB,UAAU,IAAI,OAAO,CAmEpC"}
// SPDX-License-Identifier: AGPL-3.0-only
// Copyright (C) 2026 Oleksii PELYKH
import { Command, Option } from "commander";
import { resolveConfig, LinkedInClient, getOrgStats, LinkedInApiError } from "@linkedctl/core";
import { resolveFormat, formatOutput } from "../../output/index.js";
function formatDate(ms) {
return new Date(ms).toISOString().slice(0, 10);
}
function formatStatsRow(el) {
const s = el.totalShareStatistics;
const row = {};
if (el.timeRange !== undefined) {
row["period"] = `${formatDate(el.timeRange.start)} - ${formatDate(el.timeRange.end)}`;
}
row["impressions"] = s.impressionCount;
row["uniqueImpressions"] = s.uniqueImpressionsCount;
row["clicks"] = s.clickCount;
row["likes"] = s.likeCount;
row["comments"] = s.commentCount;
row["shares"] = s.shareCount;
row["engagement"] = s.engagement;
return row;
}
export function orgCommand() {
const cmd = new Command("org");
cmd.description("Get organization share statistics");
cmd.argument("<id>", "organization ID (numeric, e.g. 12345)");
cmd.option("--from <date>", "start date for time-bound stats (ISO 8601, e.g. 2025-01-01)");
cmd.option("--to <date>", "end date for time-bound stats (ISO 8601, e.g. 2025-06-01)");
cmd.addOption(new Option("--granularity <granularity>", "time granularity for bucketed results")
.choices(["day", "month"])
.default("month"));
cmd.addOption(new Option("--format <format>", "output format (json or table)").choices(["json", "table"]));
cmd.action(async (id, opts, actionCmd) => {
const globals = actionCmd.optsWithGlobals();
const from = opts["from"];
const to = opts["to"];
const granularity = opts["granularity"];
if ((from === undefined) !== (to === undefined)) {
throw new Error("Both --from and --to must be specified together.");
}
if (from === undefined && to === undefined && granularity !== "month") {
throw new Error("--granularity requires --from and --to.");
}
const { config } = await resolveConfig({
profile: globals.profile,
requiredScopes: ["rw_organization_admin"],
});
const accessToken = config.oauth?.accessToken ?? "";
const apiVersion = config.apiVersion ?? "";
const client = new LinkedInClient({ accessToken, apiVersion });
try {
const organizationUrn = `urn:li:organization:${id}`;
const options = { organizationUrn };
if (from !== undefined && to !== undefined) {
options.timeGranularity = granularity.toUpperCase();
options.timeRange = {
start: new Date(from).getTime(),
end: new Date(to).getTime(),
};
}
const response = await getOrgStats(client, options);
const format = resolveFormat(opts["format"], process.stdout, globals.json === true);
if (format === "json") {
console.log(formatOutput(response, format));
}
else {
const rows = response.elements.map(formatStatsRow);
const data = rows.length === 1 ? rows[0] : rows;
console.log(formatOutput(data, format));
}
}
catch (error) {
if (error instanceof LinkedInApiError) {
throw new Error(`Failed to get organization statistics: ${error.message}`);
}
throw error;
}
});
return cmd;
}
//# sourceMappingURL=org.js.map
{"version":3,"file":"org.js","sourceRoot":"","sources":["../../../src/commands/stats/org.ts"],"names":[],"mappings":"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"}
import { Command } from "commander";
export declare function postCommand(): Command;
//# sourceMappingURL=post.d.ts.map
{"version":3,"file":"post.d.ts","sourceRoot":"","sources":["../../../src/commands/stats/post.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAM5C,wBAAgB,WAAW,IAAI,OAAO,CAmBrC"}
// SPDX-License-Identifier: AGPL-3.0-only
// Copyright (C) 2026 Oleksii PELYKH
import { Command, Option } from "commander";
import { resolveConfig, LinkedInClient, getPostAnalytics, getOrgStats, LinkedInApiError } from "@linkedctl/core";
import { resolveFormat, formatOutput } from "../../output/index.js";
import { warnUnavailableMetrics, buildTotalRows, enhanceAnalyticsScopeError } from "./helpers.js";
export function postCommand() {
const cmd = new Command("post");
cmd.description("Get analytics for a LinkedIn post");
cmd.argument("<urn>", "post URN (e.g. urn:li:share:123 or urn:li:ugcPost:123)");
cmd.option("--org <id>", "organization ID for org share statistics (numeric, e.g. 12345)");
cmd.addOption(new Option("--format <format>", "output format (json or table)").choices(["json", "table"]));
cmd.action(async (urn, opts, actionCmd) => {
const globals = actionCmd.optsWithGlobals();
const orgId = opts["org"];
if (orgId !== undefined) {
await handleOrgPostStats(urn, orgId, opts, globals);
}
else {
await handleMemberPostStats(urn, opts, globals);
}
});
return cmd;
}
async function handleMemberPostStats(urn, opts, globals) {
try {
const { config } = await resolveConfig({
profile: globals.profile,
requiredScopes: ["r_member_postAnalytics"],
});
const accessToken = config.oauth?.accessToken ?? "";
const apiVersion = config.apiVersion ?? "";
const client = new LinkedInClient({ accessToken, apiVersion });
const analytics = await getPostAnalytics(client, { postUrn: urn });
warnUnavailableMetrics(analytics);
const format = resolveFormat(opts["format"], process.stdout, globals.json === true);
if (format === "json") {
console.log(formatOutput(analytics, format));
}
else {
const rows = buildTotalRows(analytics);
if (rows.length === 0) {
console.log("No metrics available.");
return;
}
console.log(formatOutput(rows, format));
}
}
catch (error) {
enhanceAnalyticsScopeError(error, globals.profile);
if (error instanceof LinkedInApiError) {
throw new Error(`Failed to get post analytics: ${error.message}`);
}
throw error;
}
}
async function handleOrgPostStats(urn, orgId, opts, globals) {
const { config } = await resolveConfig({
profile: globals.profile,
requiredScopes: ["rw_organization_admin"],
});
const accessToken = config.oauth?.accessToken ?? "";
const apiVersion = config.apiVersion ?? "";
const client = new LinkedInClient({ accessToken, apiVersion });
try {
const organizationUrn = `urn:li:organization:${orgId}`;
const response = await getOrgStats(client, {
organizationUrn,
shares: [urn],
});
const format = resolveFormat(opts["format"], process.stdout, globals.json === true);
if (format === "json") {
console.log(formatOutput(response, format));
}
else {
const el = response.elements[0];
if (el === undefined) {
console.log("No statistics found for this post.");
return;
}
const s = el.totalShareStatistics;
console.log(formatOutput({
post: el.share ?? urn,
impressions: s.impressionCount,
uniqueImpressions: s.uniqueImpressionsCount,
clicks: s.clickCount,
likes: s.likeCount,
comments: s.commentCount,
shares: s.shareCount,
engagement: s.engagement,
}, format));
}
}
catch (error) {
if (error instanceof LinkedInApiError) {
throw new Error(`Failed to get post statistics: ${error.message}`);
}
throw error;
}
}
//# sourceMappingURL=post.js.map
{"version":3,"file":"post.js","sourceRoot":"","sources":["../../../src/commands/stats/post.ts"],"names":[],"mappings":"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"}
+1
-1

@@ -1,1 +0,1 @@

{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../../src/commands/auth/setup.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAWpC,wBAAgB,YAAY,IAAI,OAAO,CAiItC"}
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../../src/commands/auth/setup.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAa5C,wBAAgB,YAAY,IAAI,OAAO,CAqHtC"}

@@ -8,4 +8,4 @@ // SPDX-License-Identifier: AGPL-3.0-only

import { createInterface } from "node:readline/promises";
import { Command } from "commander";
import { saveOAuthClientCredentials, saveOAuthScope, saveOAuthPkce, saveApiVersion, DEFAULT_API_VERSION, } from "@linkedctl/core";
import { Command, Option } from "commander";
import { saveOAuthClientCredentials, saveOAuthScope, saveOAuthPkce, saveApiVersion, DEFAULT_API_VERSION, PRODUCT_NAMES, resolveProductScopes, } from "@linkedctl/core";
import { DEFAULT_REDIRECT_PORT } from "./login.js";

@@ -16,3 +16,4 @@ export function setupCommand() {

cmd.addHelpText("after", "\nLinkedIn Developer Portal: https://www.linkedin.com/developers/apps");
cmd.action(async () => {
cmd.addOption(new Option("--product <product>", "pre-select a LinkedIn product (skips interactive product selection)").choices(PRODUCT_NAMES));
cmd.action(async (opts) => {
const program = cmd.parent?.parent;

@@ -52,3 +53,3 @@ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment

process.stderr.write('5. Under "Products", request access to the products you need\n');
process.stderr.write(" (e.g. Share on LinkedIn, Sign In with LinkedIn using OpenID Connect)\n");
process.stderr.write(" (e.g. Share on LinkedIn, Sign In with LinkedIn using OpenID Connect, Community Management API)\n");
process.stderr.write("6. Copy the Client ID and Client Secret below\n");

@@ -69,27 +70,16 @@ process.stderr.write("\n");

await saveOAuthClientCredentials({ clientId: clientId.trim(), clientSecret: clientSecret.trim() }, writeOpts);
process.stderr.write("\n");
process.stderr.write("Which LinkedIn products have you enabled for this app?\n");
process.stderr.write("\n");
const scopes = [];
const signIn = await rl.question("Sign In with LinkedIn using OpenID Connect? [y/N] ");
if (signIn.trim().toLowerCase() === "y" || signIn.trim().toLowerCase() === "yes") {
scopes.push("openid", "profile", "email");
}
const share = await rl.question("Share on LinkedIn? [y/N] ");
if (share.trim().toLowerCase() === "y" || share.trim().toLowerCase() === "yes") {
scopes.push("w_member_social");
// Posting requires the author's person URN, which is only available via
// the /v2/userinfo endpoint. That endpoint needs openid scopes, so we
// force-enable them when Share on LinkedIn is selected.
if (!scopes.includes("openid")) {
scopes.push("openid", "profile", "email");
process.stderr.write(' → Also enabling "Sign In with LinkedIn" scopes (required to resolve author identity for posts)\n');
let scope;
if (opts.product !== undefined) {
// Non-interactive: resolve scopes from the product preset
const productScope = resolveProductScopes(opts.product);
if (productScope === undefined) {
throw new Error(`Unknown product: ${opts.product}. Valid products: ${PRODUCT_NAMES.join(", ")}`);
}
scope = productScope;
process.stderr.write(`\nProduct "${opts.product}" selected — scopes: ${scope}\n`);
}
if (scopes.length === 0) {
throw new Error("At least one LinkedIn product must be enabled for OAuth to work. " +
'Enable products under the "Products" tab of your app at https://www.linkedin.com/developers/apps ' +
"and then re-run this setup.");
else {
// Interactive product selection
scope = await interactiveProductSelection(rl);
}
const scope = [...new Set(scopes)].join(" ");
await saveOAuthScope(scope, writeOpts);

@@ -124,2 +114,48 @@ process.stderr.write("\n");

}
/**
* Walk the user through interactive product selection.
*
* Asks about each LinkedIn product and collects the corresponding scopes.
* Warns when mutually exclusive products are selected together.
*/
async function interactiveProductSelection(rl) {
process.stderr.write("\n");
process.stderr.write("Which LinkedIn products have you enabled for this app?\n");
process.stderr.write("\n");
const scopes = [];
let hasCommunityManagement = false;
const signIn = await rl.question("Sign In with LinkedIn using OpenID Connect? [y/N] ");
if (signIn.trim().toLowerCase() === "y" || signIn.trim().toLowerCase() === "yes") {
scopes.push("openid", "profile", "email");
}
const share = await rl.question("Share on LinkedIn? [y/N] ");
if (share.trim().toLowerCase() === "y" || share.trim().toLowerCase() === "yes") {
scopes.push("w_member_social");
// Posting requires the author's person URN, which is only available via
// the /v2/userinfo endpoint. That endpoint needs openid scopes, so we
// force-enable them when Share on LinkedIn is selected.
if (!scopes.includes("openid")) {
scopes.push("openid", "profile", "email");
process.stderr.write(' → Also enabling "Sign In with LinkedIn" scopes (required to resolve author identity for posts)\n');
}
}
const communityManagement = await rl.question("Community Management API? [y/N] ");
if (communityManagement.trim().toLowerCase() === "y" || communityManagement.trim().toLowerCase() === "yes") {
scopes.push("r_member_postAnalytics");
hasCommunityManagement = true;
}
if (scopes.length === 0) {
throw new Error("At least one LinkedIn product must be enabled for OAuth to work. " +
'Enable products under the "Products" tab of your app at https://www.linkedin.com/developers/apps ' +
"and then re-run this setup.");
}
// Warn about product exclusivity
if (hasCommunityManagement && scopes.includes("w_member_social")) {
process.stderr.write("\n");
process.stderr.write(" ⚠ Warning: Community Management API must be the sole product on a LinkedIn Developer App.\n");
process.stderr.write(" Using it alongside Share on LinkedIn requires separate apps and separate profiles.\n");
process.stderr.write(' Consider running "linkedctl auth setup --profile analytics" for a dedicated profile.\n');
}
return [...new Set(scopes)].join(" ");
}
//# sourceMappingURL=setup.js.map

@@ -1,1 +0,1 @@

{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../src/commands/auth/setup.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../src/commands/auth/setup.ts"],"names":[],"mappings":"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"}

@@ -1,1 +0,1 @@

{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/commands/profile/list.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAwE5C,wBAAgB,WAAW,IAAI,OAAO,CAqCrC"}
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/commands/profile/list.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AA4E5C,wBAAgB,WAAW,IAAI,OAAO,CAuCrC"}

@@ -39,8 +39,9 @@ // SPDX-License-Identifier: AGPL-3.0-only

const { config } = validateConfig(raw);
const scope = config.oauth?.scope;
if (config.oauth?.accessToken === undefined || config.oauth.accessToken === "") {
return { name, status: "not configured" };
return { name, status: "not configured", scope };
}
const expiry = getTokenExpiry(config.oauth.accessToken);
if (expiry === undefined) {
return { name, status: "authenticated" };
return { name, status: "authenticated", scope };
}

@@ -51,2 +52,3 @@ if (expiry.isExpired) {

status: "expired",
scope,
expiresAt: expiry.expiresAt.toISOString(),

@@ -59,2 +61,3 @@ expires: formatTimeDelta(expiry.expiresAt),

status: "authenticated",
scope,
expiresAt: expiry.expiresAt.toISOString(),

@@ -89,3 +92,5 @@ expires: formatTimeDelta(expiry.expiresAt),

const format = resolveFormat(opts["format"], process.stdout, globalJson);
const data = format === "json" ? profiles : profiles.map((p) => ({ name: p.name, status: p.status, expires: p.expires }));
const data = format === "json"
? profiles
: profiles.map((p) => ({ name: p.name, status: p.status, scope: p.scope ?? "-", expires: p.expires }));
console.log(formatOutput(data, format));

@@ -92,0 +97,0 @@ });

@@ -1,1 +0,1 @@

{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/profile/list.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/profile/list.ts"],"names":[],"mappings":"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"}

@@ -1,1 +0,1 @@

{"version":3,"file":"program.d.ts","sourceRoot":"","sources":["../src/program.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAWpC;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CA0CvD"}
{"version":3,"file":"program.d.ts","sourceRoot":"","sources":["../src/program.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAYpC;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CA2CvD"}

@@ -12,2 +12,3 @@ // SPDX-License-Identifier: AGPL-3.0-only

import { reactionCommand } from "./commands/reaction/index.js";
import { statsCommand } from "./commands/stats/index.js";
import { whoamiCommand } from "./commands/whoami.js";

@@ -43,2 +44,3 @@ /**

program.addCommand(reactionCommand());
program.addCommand(statsCommand());
program.addCommand(whoamiCommand());

@@ -45,0 +47,0 @@ program.exitOverride();

@@ -1,1 +0,1 @@

{"version":3,"file":"program.js","sourceRoot":"","sources":["../src/program.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,oCAAoC;AAEpC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,OAAgB;IAC5C,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC;IACzC,OAAO,CAAC,WAAW,CAAC,0BAA0B,CAAC,CAAC;IAChD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;IACD,OAAO,CAAC,uBAAuB,EAAE,CAAC;IAClC,OAAO,CAAC,MAAM,CAAC,kBAAkB,EAAE,iCAAiC,CAAC,CAAC;IACtE,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,kDAAkD,CAAC,CAAC;IAC7E,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,+BAA+B,CAAC,CAAC;IAC/D,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,sBAAsB,CAAC,CAAC;IAErD,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,WAAoB,EAAE,EAAE;QACjD,MAAM,IAAI,GAAG,WAAW,CAAC,eAAe,EAAuB,CAAC;QAChE,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;YACxB,OAAO,CAAC,KAAK,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;YACzB,OAAO,CAAC,IAAI,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;IAClC,OAAO,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC,CAAC;IACrC,OAAO,CAAC,UAAU,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC;IAC/C,OAAO,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC,CAAC;IACnC,OAAO,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,CAAC;IACjC,OAAO,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;IAClC,OAAO,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC,CAAC;IACrC,OAAO,CAAC,UAAU,CAAC,eAAe,EAAE,CAAC,CAAC;IACtC,OAAO,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,CAAC;IAEpC,OAAO,CAAC,YAAY,EAAE,CAAC;IAEvB,OAAO,CAAC,WAAW,CACjB,OAAO,EACP,qCAAqC;QACnC,iBAAiB;QACjB,iBAAiB;QACjB,oDAAoD;QACpD,oDAAoD,CACvD,CAAC;IAEF,OAAO,OAAO,CAAC;AACjB,CAAC"}
{"version":3,"file":"program.js","sourceRoot":"","sources":["../src/program.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,oCAAoC;AAEpC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,OAAgB;IAC5C,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC;IACzC,OAAO,CAAC,WAAW,CAAC,0BAA0B,CAAC,CAAC;IAChD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;IACD,OAAO,CAAC,uBAAuB,EAAE,CAAC;IAClC,OAAO,CAAC,MAAM,CAAC,kBAAkB,EAAE,iCAAiC,CAAC,CAAC;IACtE,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,kDAAkD,CAAC,CAAC;IAC7E,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,+BAA+B,CAAC,CAAC;IAC/D,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,sBAAsB,CAAC,CAAC;IAErD,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,WAAoB,EAAE,EAAE;QACjD,MAAM,IAAI,GAAG,WAAW,CAAC,eAAe,EAAuB,CAAC;QAChE,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;YACxB,OAAO,CAAC,KAAK,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;YACzB,OAAO,CAAC,IAAI,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;IAClC,OAAO,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC,CAAC;IACrC,OAAO,CAAC,UAAU,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC;IAC/C,OAAO,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC,CAAC;IACnC,OAAO,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,CAAC;IACjC,OAAO,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;IAClC,OAAO,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC,CAAC;IACrC,OAAO,CAAC,UAAU,CAAC,eAAe,EAAE,CAAC,CAAC;IACtC,OAAO,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC,CAAC;IACnC,OAAO,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,CAAC;IAEpC,OAAO,CAAC,YAAY,EAAE,CAAC;IAEvB,OAAO,CAAC,WAAW,CACjB,OAAO,EACP,qCAAqC;QACnC,iBAAiB;QACjB,iBAAiB;QACjB,oDAAoD;QACpD,oDAAoD,CACvD,CAAC;IAEF,OAAO,OAAO,CAAC;AACjB,CAAC"}
{
"name": "@linkedctl/cli",
"version": "0.4.0",
"version": "0.5.0",
"description": "CLI for LinkedIn API integration",

@@ -44,3 +44,3 @@ "type": "module",

"commander": "^14.0.3",
"@linkedctl/core": "^0.4.0"
"@linkedctl/core": "^0.5.0"
},

@@ -47,0 +47,0 @@ "devDependencies": {