UNPKG

n8n-nodes-feishu-lark

Version:

n8n custom nodes for n8n to interact with Feishu/Lark, including Lark Bot, Lark MCP, and Lark Trigger.

226 lines 8.05 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.parseJsonParameter = void 0; exports.larkApiRequestSheetList = larkApiRequestSheetList; exports.larkApiRequestCalendarEventList = larkApiRequestCalendarEventList; exports.larkApiRequestCalendarList = larkApiRequestCalendarList; exports.larkApiRequestBaseRoleList = larkApiRequestBaseRoleList; exports.larkApiRequestTableFieldList = larkApiRequestTableFieldList; exports.larkApiRequestTableViewList = larkApiRequestTableViewList; exports.larkApiRequestTableList = larkApiRequestTableList; exports.getFileList = getFileList; const n8n_workflow_1 = require("n8n-workflow"); const RequestUtils_1 = __importDefault(require("../help/utils/RequestUtils")); async function larkApiRequestSheetList(spreadsheetId) { const { data: { sheets }, } = await RequestUtils_1.default.request.call(this, { method: 'GET', url: `/open-apis/sheets/v3/spreadsheets/${spreadsheetId}/sheets/query`, }); return sheets; } async function larkApiRequestCalendarEventList(options) { const { calendarId, query, user_id_type } = options; const allEvents = []; let hasMore = false; let pageToken = ''; do { const { data: { page_token, items }, } = await RequestUtils_1.default.request.call(this, { method: 'POST', url: `/open-apis/calendar/v4/calendars/${calendarId}/events/search`, qs: { user_id_type, ...(pageToken && { page_token: pageToken }), page_size: 100, }, body: { query, }, }); hasMore = page_token ? true : false; pageToken = page_token; if (items) { allEvents.push(...items); } } while (hasMore); return allEvents; } async function larkApiRequestCalendarList() { const allCalendars = []; let hasMore = false; let pageToken = ''; do { const { data: { has_more, page_token, calendar_list }, } = await RequestUtils_1.default.request.call(this, { method: 'GET', url: `/open-apis/calendar/v4/calendars`, qs: { ...(pageToken && { page_token: pageToken }), page_size: 1000, }, }); hasMore = has_more; pageToken = page_token; if (calendar_list) { allCalendars.push(...calendar_list); } } while (hasMore); return allCalendars; } async function larkApiRequestBaseRoleList(options) { const allRoles = []; let hasMore = false; let pageToken = ''; const { app_token } = options; do { const { data: { has_more, page_token, items }, } = await RequestUtils_1.default.request.call(this, { method: 'GET', url: `/open-apis/base/v2/apps/${app_token}/roles`, qs: { ...(pageToken && { page_token: pageToken }), page_size: 100, }, }); hasMore = has_more; pageToken = page_token; if (items) { allRoles.push(...items); } } while (hasMore); return allRoles; } async function larkApiRequestTableFieldList(options) { const allFields = []; let hasMore = false; let pageToken = ''; const { app_token, table_id } = options; do { const { data: { has_more, page_token, items }, } = await RequestUtils_1.default.request.call(this, { method: 'GET', url: `/open-apis/bitable/v1/apps/${app_token}/tables/${table_id}/fields`, qs: { page_token: pageToken, page_size: 100, }, }); hasMore = has_more; pageToken = page_token; if (items) { allFields.push(...items); } } while (hasMore); return allFields; } async function larkApiRequestTableViewList(options) { const allViews = []; let hasMore = false; let pageToken = ''; const { app_token, table_id, user_id_type } = options; do { const { data: { has_more, page_token, items }, } = await RequestUtils_1.default.request.call(this, { method: 'GET', url: `/open-apis/bitable/v1/apps/${app_token}/tables/${table_id}/views`, qs: { page_token: pageToken, page_size: 100, user_id_type, }, }); hasMore = has_more; pageToken = page_token; if (items) { allViews.push(...items); } } while (hasMore); return allViews; } async function larkApiRequestTableList(appToken) { const allTables = []; let hasMore = false; let pageToken = ''; do { const { data: { has_more, page_token, items }, } = await RequestUtils_1.default.request.call(this, { method: 'GET', url: `/open-apis/bitable/v1/apps/${appToken}/tables`, qs: { page_token: pageToken, page_size: 100, }, }); hasMore = has_more; pageToken = page_token; if (items) { allTables.push(...items); } } while (hasMore); return allTables; } async function getFileList(type, order_by = 'EditedTime', direction = 'DESC', user_id_type = 'open_id', folderToken) { let hasMore = true; let pageToken = ''; const allFiles = []; while (hasMore) { const response = await RequestUtils_1.default.request.call(this, { method: 'GET', url: `/open-apis/drive/v1/files`, qs: { page_size: 100, page_token: pageToken, folder_token: folderToken, order_by, direction, user_id_type, }, }); const responseData = response.data; const { files, has_more, next_page_token: nextPageToken } = responseData; hasMore = has_more; pageToken = nextPageToken || ''; for (const file of files) { if (type.includes(file.type)) { allFiles.push(file); } if (file.type === "folder") { const results = await getFileList.call(this, type, order_by, direction, user_id_type, file.token); allFiles.push(...results); } } } return allFiles; } const parseJsonParameter = (jsonData, node, i, entryName) => { let returnData; const location = entryName ? `entry "${entryName}" inside 'Fields to Set'` : "'JSON Output'"; if (typeof jsonData === 'string') { try { returnData = (0, n8n_workflow_1.jsonParse)(jsonData); } catch (error) { let recoveredData = ''; try { recoveredData = jsonData .replace(/'/g, '"') .replace(/(['"])?([a-zA-Z0-9_]+)(['"])?:/g, '"$2":') .replace(/,\s*([\]}])/g, '$1') .replace(/,+$/, ''); returnData = (0, n8n_workflow_1.jsonParse)(recoveredData); } catch (err) { const description = recoveredData === jsonData ? jsonData : `${recoveredData};\n Original input: ${jsonData}`; throw new n8n_workflow_1.NodeOperationError(node, `The ${location} in item ${i} contains invalid JSON`, { description, }); } } } else { returnData = jsonData; } if (returnData === undefined || typeof returnData !== 'object' || Array.isArray(returnData)) { throw new n8n_workflow_1.NodeOperationError(node, `The ${location} in item ${i} does not contain a valid JSON object`); } return returnData; }; exports.parseJsonParameter = parseJsonParameter; //# sourceMappingURL=GenericFunctions.js.map