apaas-fed-client 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +42 -0
- package/dist/index.cjs +837 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.mjs +805 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +46 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../src/common/fieldMapper.js","../src/common/excelParse.js","../src/common/bitableParse.js","../src/pipe/index.js","../src/sdk/lark/baseSDK.js","../src/sdk/lark/bitable.js","../src/sdk/index.js"],"sourcesContent":["import dayjs from \"dayjs\";\n\nclass FieldMapper {\n constructor(options = {}) {\n this.options = options;\n }\n\n normalizeFormat(fmt) {\n return String(fmt)\n .replace(/yyyy/g, \"YYYY\")\n .replace(/dd/g, \"DD\")\n .replace(/hh/g, \"HH\");\n }\n\n normalizeFieldConfig(excelKey, desc) {\n if (typeof desc === \"string\")\n return {\n excelKey,\n type: \"string\",\n name: desc,\n required: false,\n default: undefined,\n primaryKey: false,\n format: undefined,\n preprocess: [\"trim\"],\n };\n const cfg = {\n excelKey,\n optionName: desc?.optionName,\n type: desc.type || \"string\",\n name: desc.name || excelKey,\n required: !!desc.required,\n default: desc.default,\n primaryKey: !!desc.primaryKey,\n format: desc.format,\n preprocess: Array.isArray(desc.preprocess)\n ? desc.preprocess\n : desc.preprocess\n ? [desc.preprocess]\n : [\"trim\"],\n maxLength:\n typeof desc.maxLength === \"number\" ? desc.maxLength : undefined,\n minLength:\n typeof desc.minLength === \"number\" ? desc.minLength : undefined,\n enum: Array.isArray(desc.enum) ? desc.enum : undefined,\n pattern: desc.pattern ? new RegExp(desc.pattern) : undefined,\n };\n return cfg;\n }\n\n applyFieldRules(raw, cfg, { optionMapping, userMapping } = {}) {\n let val = raw;\n if (Array.isArray(raw)) {\n if (raw[0]?.text) {\n // 多维表格文本取值\n val = raw[0]?.text;\n }\n if (raw[0]?.name) {\n // 多维表格文员文本取值\n val = raw[0]?.name;\n }\n }\n\n if (val === undefined || val === null || val === \"\") {\n if (cfg.default === undefined) return undefined;\n val = cfg.default;\n }\n if (cfg.type.toLocaleLowerCase() === \"string\") {\n let s = String(val);\n const pp = cfg.preprocess || [];\n if (pp.includes(\"trim\")) s = s.trim();\n if (pp.includes(\"upper\")) s = s.toUpperCase();\n if (pp.includes(\"lower\")) s = s.toLowerCase();\n if (typeof cfg.maxLength === \"number\") s = s.slice(0, cfg.maxLength);\n if (typeof cfg.minLength === \"number\" && s.length < cfg.minLength)\n s = s.padEnd(cfg.minLength, \" \");\n if (cfg.enum && !cfg.enum.includes(s))\n s = cfg.default !== undefined ? String(cfg.default) : \"\";\n if (cfg.pattern && !cfg.pattern.test(s))\n s = cfg.default !== undefined ? String(cfg.default) : \"\";\n return s;\n }\n if (cfg.type.toLocaleLowerCase() === \"number\") {\n const num =\n typeof val === \"number\" ? val : Number(String(val).replace(/,/g, \"\"));\n return Number.isFinite(num)\n ? num\n : cfg.default !== undefined\n ? Number(cfg.default)\n : undefined;\n }\n\n if (cfg.type.toLocaleLowerCase() === \"date\") {\n let d;\n if (typeof val === \"number\") d = val;\n else if (val instanceof Date) d = val;\n else d = dayjs(val).isValid() ? dayjs(val).toDate() : null;\n if (!d) return cfg.default !== undefined ? String(cfg.default) : \"\";\n if (cfg.format) return dayjs(d).format(this.normalizeFormat(cfg.format));\n return dayjs(d).toISOString();\n }\n\n if (cfg.type.toLocaleLowerCase() === \"option\" && optionMapping) {\n const optionName = cfg?.optionName || cfg.name;\n // 多选\n if (Array.isArray(val)) {\n return val.map((v) => optionMapping[optionName][v]);\n }\n // 单选\n if (\n optionMapping[optionName] &&\n optionMapping[optionName][val] !== undefined\n ) {\n return optionMapping[optionName][val];\n }\n }\n\n if (cfg.type.toLocaleLowerCase() === \"user\") {\n if (userMapping) {\n const _id = userMapping[val];\n if (_id) {\n return { _id };\n }\n }\n return undefined;\n }\n\n return val;\n }\n\n normalizeFormat(fmt) {\n return String(fmt)\n .replace(/yyyy/g, \"YYYY\")\n .replace(/dd/g, \"DD\")\n .replace(/hh/g, \"HH\");\n }\n}\n\nexport default FieldMapper;\n","import XLSX from \"xlsx\";\nimport fs from \"fs\";\nimport os from \"os\";\nimport path from \"path\";\n\nimport FieldMapper from \"./fieldMapper.js\";\n\nconst filePatSets = new Set();\n\nclass ExcelParser extends FieldMapper {\n constructor(options = {}) {\n super(options);\n this.logger = options.logger || console;\n }\n\n setLogger(logger) {\n this.logger = logger;\n }\n\n static async loadFile({ id, name }) {\n const tmpDir = os.tmpdir();\n const filePath = path.join(tmpDir, name);\n\n await application.resources.file.download({ id }, filePath);\n filePatSets.add(filePath);\n return filePath;\n }\n\n static async destory() {\n console.log(filePatSets);\n\n filePatSets.forEach((filePath) => {\n if (filePath) {\n try {\n fs.unlinkSync(filePath);\n } catch (error) {\n this?.logger?.info(error);\n }\n }\n });\n filePatSets.clear();\n }\n\n parse(filePath, mappings = []) {\n const wb = XLSX.readFile(filePath);\n const out = {};\n for (const conf of mappings) {\n const ws = wb.Sheets[conf.sheetName];\n if (!ws) {\n this.logger.warn(\"sheet not found\", conf.sheetName);\n continue;\n }\n out[conf.objectName || conf.sheetName] = this.parseSheet(ws, conf);\n }\n return out;\n }\n\n parseSheet(ws, sheetConf) {\n const rows = XLSX.utils.sheet_to_json(ws, { defval: \"\" });\n const fields = Object.entries(sheetConf.fields).map(([excelKey, desc]) =>\n this.normalizeFieldConfig(excelKey, desc),\n );\n const pkFields = fields.filter((f) => f.primaryKey);\n const out = pkFields.length ? {} : [];\n const seen = new Set();\n for (const row of rows) {\n const obj = {};\n const pkVals = [];\n let skip = false;\n for (const f of fields) {\n const raw = row[f.excelKey];\n const casted = this.applyFieldRules(raw, f);\n obj[f.name] = casted;\n if (f.primaryKey) pkVals.push(String(casted || \"\"));\n }\n if (pkFields.length) {\n const key = pkVals.filter((s) => s !== \"\").join(\"::\");\n if (key === \"\" || seen.has(key)) {\n if (key !== \"\") this.logger.warn(\"duplicate primaryKey\", key);\n skip = true;\n } else {\n seen.add(key);\n }\n }\n if (skip) continue;\n if (pkFields.length) out[pkVals.filter((s) => s !== \"\").join(\"::\")] = obj;\n else out.push(obj);\n }\n return out;\n }\n}\n\nfunction createParser(options = {}) {\n const parser = new ExcelParser(options);\n return parser;\n}\n\nfunction parseExcel(mappings, options = {}) {\n const parser = createParser(options);\n return (filePath) => parser.parse(filePath, mappings);\n}\n\nexport { ExcelParser, parseExcel, createParser };\n","import FieldMapper from \"./fieldMapper.js\";\n\nclass BitableParser extends FieldMapper {\n constructor(options = {}) {\n super(options);\n this.logger = options.logger || console;\n }\n\n setLogger(logger) {\n this.logger = logger;\n }\n\n async parse(data, mappings = []) {\n const out = {};\n for (const conf of mappings) {\n if (!data) {\n this.logger.warn(\"sheet not found\", conf.objectName);\n continue;\n }\n out[conf.objectName] = this.parseSheet(data, conf);\n }\n return out;\n }\n\n parseSheet(data, sheetConf) {\n if (!data) {\n this.logger(\"data?\", data);\n\n return undefined;\n }\n const fields = Object.entries(sheetConf.fields).map(([excelKey, desc]) =>\n this.normalizeFieldConfig(excelKey, desc),\n );\n const pkFields = fields.filter((f) => f.primaryKey);\n const out = pkFields.length ? {} : [];\n const seen = new Set();\n for (const row of data) {\n if (!row) {\n continue;\n }\n const obj = {};\n const pkVals = [];\n let skip = false;\n if (!fields) {\n this.logger.info(\"fields\", fields);\n return;\n }\n for (const f of fields) {\n const raw = row[f.excelKey];\n const casted = this.applyFieldRules(raw, f, sheetConf);\n obj[f.name] = casted;\n if (f.primaryKey) pkVals.push(String(casted || \"\"));\n }\n if (pkFields.length) {\n const key = pkVals.filter((s) => s !== \"\").join(\"::\");\n if (key === \"\" || seen.has(key)) {\n if (key !== \"\") this.logger.warn(\"duplicate primaryKey\", key);\n skip = true;\n } else {\n seen.add(key);\n }\n }\n if (skip) continue;\n if (pkFields.length) out[pkVals.filter((s) => s !== \"\").join(\"::\")] = obj;\n else out.push(obj);\n }\n return out;\n }\n}\n\nfunction createBitableParser(options = {}) {\n const parser = new BitableParser(options);\n return parser;\n}\n\nfunction parseBitableParser(mappings, options = {}) {\n const parser = createBitableParser(options);\n return function (data) {\n return parser.parse(data, mappings);\n };\n}\n\nexport { BitableParser, parseBitableParser, createBitableParser };\n","class Pipe {\n constructor(steps = [], context = {}) {\n this.steps = steps.map((s) =>\n typeof s === \"function\" ? { fn: s, options: {} } : s,\n );\n this.context = context;\n this._errorHandler = null;\n this._logger = console;\n this._defaultRetry = { retries: 0, retryDelayMs: 0 };\n }\n\n static create() {\n return new Pipe();\n }\n\n with(ctx = {}) {\n this.context = { ...this.context, ...ctx };\n return this;\n }\n\n setLogger(logger) {\n this._logger = logger || {info:console.log};\n return this;\n }\n\n setDefaultRetry(options = {}) {\n const r = options.retries ?? 0;\n const d = options.retryDelayMs ?? 0;\n this._defaultRetry = { retries: r, retryDelayMs: d };\n return this;\n }\n\n pipe(fn, options = {}) {\n if (typeof fn !== \"function\") throw new Error(\"step must be function\");\n this.steps.push({ fn, options });\n return this;\n }\n\n compose(...fns) {\n for (const fn of fns) this.pipe(fn);\n return this;\n }\n\n tap(fn) {\n return this.pipe(async (val, ctx) => {\n await Promise.resolve(fn(val, ctx));\n return val;\n });\n }\n\n catch(handler) {\n this._errorHandler = handler;\n return this;\n }\n\n clone() {\n const cloned = new Pipe(\n this.steps.map((s) => ({ fn: s.fn, options: { ...s.options } })),\n { ...this.context },\n );\n cloned._errorHandler = this._errorHandler;\n cloned._logger = this._logger;\n cloned._defaultRetry = { ...this._defaultRetry };\n return cloned;\n }\n\n map(fn, options = {}) {\n return this.pipe(async (val, ctx) => {\n if (Array.isArray(val)) {\n const out = await Promise.all(\n val.map((x) => Promise.resolve(fn(x, ctx))),\n );\n return out;\n }\n return await Promise.resolve(fn(val, ctx));\n }, options);\n }\n\n pipeWithRetry(fn, options = {}) {\n const { retries = 0, retryDelayMs = 0, onRetry } = options;\n return this.pipe(fn, { retries, retryDelayMs, onRetry });\n }\n\n async run(input) {\n let val = input;\n try {\n for (const step of this.steps) {\n const fn = typeof step === \"function\" ? step : step.fn;\n const opt = typeof step === \"function\" ? {} : step.options || {};\n const retries = opt.retries ?? this._defaultRetry.retries;\n const retryDelayMs =\n opt.retryDelayMs ?? this._defaultRetry.retryDelayMs;\n let attempt = 0;\n while (true) {\n try {\n val = await Promise.resolve(fn(val, this.context));\n break;\n } catch (e) {\n attempt += 1;\n if (attempt <= retries) {\n if (typeof opt.onRetry === \"function\") {\n await Promise.resolve(\n opt.onRetry(\n { error: e, attempt, retries, retryDelayMs },\n this.context,\n ),\n );\n }\n if (this._logger && this._logger.warn)\n this._logger.warn(\n \"[pipe] step error, retry\",\n `${attempt}/${retries}`,\n e.message,\n );\n if (retryDelayMs > 0)\n await new Promise((r) => setTimeout(r, retryDelayMs));\n continue;\n }\n if (this._logger && this._logger.error)\n this._logger.error(\n \"[pipe] step failed after attempts\",\n attempt,\n e,\n );\n throw e;\n }\n }\n }\n return val;\n } catch (e) {\n if (typeof this._errorHandler === \"function\")\n return this._errorHandler(e, val, this.context);\n throw e;\n }\n }\n}\n\nexport default Pipe;\n","import * as lark from \"@larksuiteoapi/node-sdk\";\nimport { createRequire } from \"module\";\nconst require = createRequire(import.meta.url);\nlet client;\nlet hasSetHttpInstance = false;\n\nclass BaseSDK {\n constructor(client, context, logger) {\n this.larkClient = client;\n this.context = context;\n this.logger = logger;\n }\n\n get Bitable() {\n try {\n const mod = require(\"./bitable.js\");\n const Bitable = mod?.default || mod;\n return new Bitable(this.larkClient, this.context, this.logger);\n } catch (error) {\n this.logger.info(\"没有找到bitable sdk:\", error);\n }\n }\n\n get ChatManage() {\n try {\n const ChatManage = require(\"./chatManage\");\n return new ChatManage(client, this.context, this.logger);\n } catch (error) {\n this.logger.info(\"chatManage sdk错误:\", error);\n }\n }\n get ChatMenu() {\n try {\n const ChatMenu = require(\"./chatMenu\");\n return new ChatMenu(client, this.context, this.logger);\n } catch (error) {\n this.logger.info(\"没有找到chatMenu sdk错误:\", error);\n }\n }\n get ChatPin() {\n try {\n const ChatPin = require(\"./chatPin\");\n return new ChatPin(client, this.context, this.logger);\n } catch (error) {\n this.logger.info(\"没有找到chatPin sdk错误:\", error);\n }\n }\n get ChatMessage() {\n try {\n const ChatMessage = require(\"./chatMessage\");\n return new ChatMessage(client, this.context, this.logger);\n } catch (error) {\n this.logger.info(\"没有找到ChatMessage sdk错误:\", error);\n }\n }\n\n /**\n * 静态方法,用于初始化并配置多个 SDK 实例或者客户自定义实例需要调用基于sdk功能\n * @param {Object} ctors - 构造函数对象,键为实例名称,值为构造函数\n * @param {Object} options - 配置选项对象\n * @param {Object} options.context - 上下文对象\n * @param {Object} options.logger - 日志记录器对象\n * @returns {Promise<BaseSDK>} - 返回一个 Promise,解析为配置好的 BaseSDK 实例\n */\n static async use(ctors, options) {\n const { context, logger, ...restOptios } = options;\n const baseSdk = await BaseSDK.createClient({\n context,\n logger,\n ...restOptios,\n });\n for (const key in ctors) {\n const ctor = ctors[key];\n if (typeof ctor === \"function\") {\n const instance = new ctor(baseSdk.larkClient, context, logger);\n baseSdk[key] = instance;\n } else {\n logger.info(\"没有找到sdk:\", key);\n }\n }\n return baseSdk;\n }\n\n /**\n * 静态方法,用于设置默认 HTTP 实例的拦截器\n * @param {Object} [settings={}] - 拦截器配置对象\n * @param {Function} [settings.onResponse] - 响应拦截器回调函数\n * @param {Function} [settings.onError] - 错误拦截器回调函数\n * @param {Object} logger - 日志记录器对象\n */\n static setHttpInstance(settings = {}, logger) {\n if (hasSetHttpInstance) {\n return;\n }\n hasSetHttpInstance = true;\n const { onResponse, onError } = settings;\n lark.defaultHttpInstance.interceptors.response.use(\n async (resp) => {\n logger.info(\"resp\", resp);\n // 如果是用户token或者图片上传接口\n if (resp?.tenant_access_token || resp?.data?.image_key) {\n return resp;\n }\n if (onResponse) {\n return onResponse(resp);\n }\n const data = resp?.data;\n return data;\n },\n async (error) => {\n const detail = [\n \"接口:\",\n error?.request?.path,\n \",error code:\",\n error.response?.data?.code,\n \",失败原因:\",\n error?.response?.data?.msg,\n \"建议排查:\",\n error?.response?.data.error?.troubleshooter ||\n error?.response?.data.error?.message,\n ];\n if (error?.response?.data.error?.helps?.length) {\n detail.push(\n ...[\",参考链接:\", error.response.data.error.helps[0].url],\n );\n }\n if (onError) {\n return Promise.reject(onError(error));\n }\n logger.info(\"调用开放平台接口失败,\", ...detail);\n return Promise.reject(detail.join(\"\"));\n },\n );\n\n lark.defaultHttpInstance.interceptors.request.use((config) => {\n return config;\n });\n }\n\n /**\n * 静态方法,用于创建一个新的客户端实例\n * @param {Object} options - 配置选项对象\n * @param {string} options.appId - 飞书应用的应用 ID\n * @param {string} options.appSecret - 飞书应用的应用 Secret\n * @param {boolean} [options.auto=true] - 是否自动获取租户访问令牌,默认为 true\n * @param {Object} options.context - 上下文对象\n * @param {Object} options.logger - 日志记录器对象\n * @param {Object} options.config - 配置对象,用于设置 HTTP 实例的拦截器\n * @returns {BaseSDK} - 返回一个新的 BaseSDK 实例\n */\n\n static async createClient({\n appId,\n appSecret,\n auto = true,\n context,\n logger,\n config,\n }) {\n BaseSDK.setHttpInstance(config, logger);\n\n if (auto) {\n const { appId: currentAppId, tenantAccessToken } =\n await application.integration.getDefaultTenantAccessToken();\n const scenesAppId = appId || currentAppId;\n client = new lark.Client({\n appId: scenesAppId,\n appSecret: appSecret || \"fake\",\n });\n client.tokenManager.cache.set(\n lark.CTenantAccessToken,\n tenantAccessToken,\n null,\n { namespace: scenesAppId },\n );\n } else {\n const curAppId =\n appId || (await application.globalVar.getVar(\"lark_app_id\"));\n const curAppSecret =\n appSecret || (await application.globalVar.getVar(\"lark_app_secret\"));\n client = new lark.Client({ appId: curAppId, appSecret: curAppSecret });\n }\n return new this(client, context, logger);\n }\n\n throwError(name, err) {\n this.logger.error(`调用 ${name} 失败:`, err);\n throw Error(err);\n }\n\n /**\n * 异步根据邮箱批量获取用户 ID\n * @param {Array<string>} emails - 包含用户邮箱的数组\n * @returns {Promise<Object>} - 返回一个 Promise,解析为飞书接口批量获取用户 ID 的响应结果\n */\n async getUserIdByEmail(emails, type = \"user_id\") {\n return this.larkClient.contact.user.batchGetId({\n params: {\n user_id_type: type,\n },\n data: {\n emails,\n },\n });\n }\n\n /**\n * 异步根据手机批量获取用户 ID\n * @param {Array<string>} emails - 包含用户邮箱的数组\n * @returns {Promise<Object>} - 返回一个 Promise,解析为飞书接口批量获取用户 ID 的响应结果\n */\n async getUserIdByMobile(mobiles, type = \"user_id\") {\n return this.larkClient.contact.user.batchGetId({\n params: {\n user_id_type: type,\n },\n data: {\n mobiles,\n },\n });\n }\n\n async getUserLarkInfo(allPerson, needMap = false) {\n const _user = await application.data\n .object(\"_user\")\n .select(\"_email\", \"open_id\", \"_name\", \"_phoneNumber\")\n .where({ _id: application.operator.in(allPerson) })\n .find();\n const hasNoOpenIdUsers = _user.filter((f) => !f.open_id);\n const phoneNumber = hasNoOpenIdUsers\n .map((m) => m._phoneNumber.number)\n .filter(Boolean);\n if (phoneNumber.length === 0) {\n if (needMap) {\n return _user.reduce((cur, next) => {\n cur[next._id] = next;\n return cur;\n }, {});\n }\n return _user;\n }\n const userInfo = await this.getUserIdByMobile(phoneNumber, \"open_id\");\n const newOpenUsersId = _user.map((u) => {\n const { _phoneNumber, _id } = u;\n const open_id =\n u.open_id ||\n userInfo?.user_list.find((i) => i.mobile == _phoneNumber.number)\n ?.user_id;\n return { _id, open_id };\n });\n await application.data.object(\"_user\").batchUpdate(newOpenUsersId);\n if (needMap) {\n return newOpenUsersId.reduce((cur, next) => {\n cur[next._id] = next;\n return cur;\n }, {});\n }\n return newOpenUsersId;\n }\n}\n\nexport default BaseSDK;\n","import BaseSDK from \"./baseSDK.js\";\n\nclass BiTable extends BaseSDK {\n /**\n * 异步加载并读取多维表格数据\n * @param {Object} param - 包含表格地址的参数对象\n * @param {string} param.tableaddress - 多维表格的地址\n * @returns {Promise<Array>} - 返回一个 Promise,解析为包含表格记录的数组\n * @throws {Error} - 当缺少表格 ID、文档 token 不存在或获取数据过程中出错时抛出错误\n * 多维表格参考:查询https://open.larkoffice.com/document/docs/bitable-v1/app-table-record/search\n *\n */\n async loadAndRead({ tableaddress, filter = {} }) {\n try {\n // 解析表格地址,获取表格的 app_token 和 table_id\n const isWiki = tableaddress.indexOf(\"wiki\") > -1;\n const [urlParts, search] = tableaddress.split(\"?\");\n let [appToken] = urlParts.split(\"/\").reverse();\n const querys = new URLSearchParams(search);\n const tableId = querys.get(\"table\");\n\n if (!tableId) {\n throw Error(\"缺少表格id\", tableId);\n }\n\n if (isWiki) {\n // 知识库的话需要获取知识库信息内的文档token作为apptoken\n const wikiResponse = await this.larkClient.wiki.v2.space.getNode({\n params: {\n obj_type: \"wiki\",\n token: appToken,\n },\n });\n appToken = wikiResponse?.node?.obj_token;\n }\n\n if (!appToken) {\n throw Error(\"文档token不存在\", appToken);\n }\n const tableData = [];\n let nextPageToken = \"\";\n while (true) {\n const params = nextPageToken\n ? { page_token: nextPageToken, filter }\n : { filter };\n\n console.log(\"params??\", params);\n const { page_token, items, has_more } =\n await this.larkClient.bitable.v1.appTableRecord.search({\n path: {\n app_token: appToken,\n table_id: tableId,\n },\n params: params,\n });\n nextPageToken = page_token;\n if (items) {\n tableData.push(...items);\n }\n if (!has_more) {\n break;\n }\n }\n return tableData;\n } catch (error) {\n // 出现错误时的处理\n throw new Error(\n \"从多维表格中获取数据过程中出现错误:\" + error?.message || error,\n ); // 抛出错误信息\n }\n }\n}\n\nexport default BiTable;\n","import BaseSDK from \"./lark/baseSDK.js\";\n\nasync function createBitableSDK(\n { appId, appSecret, auto, context, logger, config },\n { filter = {} } = {},\n) {\n const baseSDK = await BaseSDK.createClient({\n appId,\n appSecret,\n auto,\n context,\n logger,\n config,\n });\n return async function ({ tableaddress }) {\n return await baseSDK.Bitable.loadAndRead({ tableaddress, filter });\n };\n}\n\nexport { createBitableSDK };\n"],"names":["require","createRequire","lark"],"mappings":"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"}
|