openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
108 lines (107 loc) • 4.07 kB
JavaScript
import { a as tryReadSecretFileSync } from "./secret-file-PClaG9G0.js";
import { n as normalizeAccountId$1, r as normalizeOptionalAccountId, t as DEFAULT_ACCOUNT_ID } from "./account-id-Df9e41E6.js";
import { t as resolveAccountEntry } from "./account-lookup-DL1YTqjF.js";
import "./core-DSxVv-v1.js";
import "./account-resolution-DBB0e3KP.js";
//#region extensions/line/src/accounts.ts
function readFileIfExists(filePath) {
return tryReadSecretFileSync(filePath, "LINE credential file", { rejectSymlink: true });
}
function resolveToken(params) {
const { accountId, baseConfig, accountConfig } = params;
if (accountConfig?.channelAccessToken?.trim()) return {
token: accountConfig.channelAccessToken.trim(),
tokenSource: "config"
};
const accountFileToken = readFileIfExists(accountConfig?.tokenFile);
if (accountFileToken) return {
token: accountFileToken,
tokenSource: "file"
};
if (accountId === "default") {
if (baseConfig?.channelAccessToken?.trim()) return {
token: baseConfig.channelAccessToken.trim(),
tokenSource: "config"
};
const baseFileToken = readFileIfExists(baseConfig?.tokenFile);
if (baseFileToken) return {
token: baseFileToken,
tokenSource: "file"
};
const envToken = process.env.LINE_CHANNEL_ACCESS_TOKEN?.trim();
if (envToken) return {
token: envToken,
tokenSource: "env"
};
}
return {
token: "",
tokenSource: "none"
};
}
function resolveSecret(params) {
const { accountId, baseConfig, accountConfig } = params;
if (accountConfig?.channelSecret?.trim()) return accountConfig.channelSecret.trim();
const accountFileSecret = readFileIfExists(accountConfig?.secretFile);
if (accountFileSecret) return accountFileSecret;
if (accountId === "default") {
if (baseConfig?.channelSecret?.trim()) return baseConfig.channelSecret.trim();
const baseFileSecret = readFileIfExists(baseConfig?.secretFile);
if (baseFileSecret) return baseFileSecret;
const envSecret = process.env.LINE_CHANNEL_SECRET?.trim();
if (envSecret) return envSecret;
}
return "";
}
function resolveLineAccount(params) {
const cfg = params.cfg;
const accountId = normalizeAccountId$1(params.accountId ?? resolveDefaultLineAccountId(cfg));
const lineConfig = cfg.channels?.line;
const accounts = lineConfig?.accounts;
const accountConfig = accountId !== "default" ? resolveAccountEntry(accounts, accountId) : void 0;
const { token, tokenSource } = resolveToken({
accountId,
baseConfig: lineConfig,
accountConfig
});
const secret = resolveSecret({
accountId,
baseConfig: lineConfig,
accountConfig
});
const { accounts: _ignoredAccounts, defaultAccount: _ignoredDefaultAccount, ...lineBase } = lineConfig ?? {};
const mergedConfig = {
...lineBase,
...accountConfig
};
const enabled = accountConfig?.enabled ?? (accountId === "default" ? lineConfig?.enabled ?? true : false);
return {
accountId,
name: accountConfig?.name ?? (accountId === "default" ? lineConfig?.name : void 0),
enabled,
channelAccessToken: token,
channelSecret: secret,
tokenSource,
config: mergedConfig
};
}
function listLineAccountIds(cfg) {
const lineConfig = cfg.channels?.line;
const accounts = lineConfig?.accounts;
const ids = /* @__PURE__ */ new Set();
if (lineConfig?.channelAccessToken?.trim() || lineConfig?.tokenFile || process.env.LINE_CHANNEL_ACCESS_TOKEN?.trim()) ids.add(DEFAULT_ACCOUNT_ID);
if (accounts) for (const id of Object.keys(accounts)) ids.add(id);
return Array.from(ids);
}
function resolveDefaultLineAccountId(cfg) {
const preferred = normalizeOptionalAccountId((cfg.channels?.line)?.defaultAccount);
if (preferred && listLineAccountIds(cfg).some((accountId) => normalizeAccountId$1(accountId) === preferred)) return preferred;
const ids = listLineAccountIds(cfg);
if (ids.includes("default")) return DEFAULT_ACCOUNT_ID;
return ids[0] ?? "default";
}
function normalizeAccountId(accountId) {
return normalizeAccountId$1(accountId);
}
//#endregion
export { resolveLineAccount as i, normalizeAccountId as n, resolveDefaultLineAccountId as r, listLineAccountIds as t };