n8n-nodes-larkbase-v3
Version:
n8n node to connect with Larkbase API with UTF-8 support, date filtering, array filter values, text field processing, improved field type handling, pagination fixes, advanced data type conversion, proper date filtering with ExactDate format, updated node
97 lines • 3.31 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.normalizeRecord = exports.processFieldValue = exports.mapInputToUpdateRecords = exports.mapInputToRecords = void 0;
function mapInputToRecords(items, fieldMapping) {
return items.map((item) => {
const fields = {};
for (const [targetField, sourceField] of Object.entries(fieldMapping)) {
if (sourceField && typeof sourceField === 'string') {
const value = item.json[sourceField];
if (value !== undefined) {
fields[targetField] = value;
}
}
}
return { fields };
});
}
exports.mapInputToRecords = mapInputToRecords;
function mapInputToUpdateRecords(items, fieldMapping, recordIdField) {
return items
.map((item) => {
const fields = {};
const recordId = item.json[recordIdField];
if (!recordId)
return null;
for (const [targetField, sourceField] of Object.entries(fieldMapping)) {
if (sourceField && typeof sourceField === 'string') {
const value = item.json[sourceField];
if (value !== undefined) {
fields[targetField] = value;
}
}
}
return {
record_id: recordId,
fields,
};
})
.filter((record) => record !== null);
}
exports.mapInputToUpdateRecords = mapInputToUpdateRecords;
function processFieldValue(value, fieldType) {
if (value === null || value === undefined) {
return null;
}
switch (fieldType) {
case 'text':
return String(value);
case 'number':
return Number(value);
case 'datetime':
if (typeof value === 'string') {
const timestamp = new Date(value).getTime();
return isNaN(timestamp) ? null : timestamp;
}
return value;
case 'select':
return String(value);
case 'user':
if (typeof value === 'string') {
return [{ id: value }];
}
else if (Array.isArray(value) && typeof value[0] === 'string') {
return value.map((id) => ({ id }));
}
return value;
case 'link_record':
if (typeof value === 'string') {
return [value];
}
else if (Array.isArray(value) && !value.some((v) => typeof v === 'object')) {
return value;
}
return value;
default:
return value;
}
}
exports.processFieldValue = processFieldValue;
function normalizeRecord(record, fieldTypes) {
const normalizedFields = {};
for (const [fieldName, value] of Object.entries(record.fields)) {
const fieldType = fieldTypes[fieldName];
if (fieldType) {
normalizedFields[fieldName] = processFieldValue(value, fieldType);
}
else {
normalizedFields[fieldName] = value;
}
}
return {
...(record.record_id ? { record_id: record.record_id } : {}),
fields: normalizedFields,
};
}
exports.normalizeRecord = normalizeRecord;
//# sourceMappingURL=utils.js.map
;