n8n-nodes-smartsuite
Version:
n8n community node for SmartSuite
108 lines • 4.84 kB
JavaScript
;
// src/nodes/SmartSuite/SmartSuite.node.ts
Object.defineProperty(exports, "__esModule", { value: true });
exports.SmartSuite = void 0;
const router_1 = require("./methods/router");
const smartSuiteApi_1 = require("./transport/smartSuiteApi");
// loadOptions & listSearch imports
const loadOptions_1 = require("./methods/loadOptions");
const getValidFilters_1 = require("./helpers/getValidFilters");
const listSearch_1 = require("./methods/listSearch");
// resource descriptions
const RecordDescription_1 = require("./actions/record/RecordDescription");
const TableDescription_1 = require("./actions/table/TableDescription");
const SolutionDescription_1 = require("./actions/solution/SolutionDescription");
const OrgManagementDescription_1 = require("./actions/orgManagement/OrgManagementDescription");
// API Request UI + executor
const ApiRequestDescription_1 = require("./actions/api/ApiRequestDescription");
const makeApiRequest_operation_1 = require("./actions/api/makeApiRequest.operation");
class SmartSuite {
description = {
displayName: 'SmartSuite',
name: 'smartsuite',
icon: 'file:SmartSuite.svg',
group: ['transform'],
version: 2,
subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}',
description: 'Interact with SmartSuite API',
defaults: { name: 'SmartSuite' },
// disable the "inputs must be ['main']" lint rule for these lines
// eslint-disable-next-line n8n-nodes-base/node-class-description-inputs-wrong-regular-node
inputs: ["main" /* NodeConnectionType.Main */],
// eslint-disable-next-line n8n-nodes-base/node-class-description-inputs-wrong-regular-node
outputs: ["main" /* NodeConnectionType.Main */],
credentials: [
{
name: 'smartSuiteApi',
required: true,
testedBy: 'smartSuiteApiTest',
},
],
properties: [
// 1) Resource selector
{
displayName: 'Resource',
name: 'resource',
type: 'options',
noDataExpression: true,
default: 'record',
options: [
{ name: 'Record', value: 'record' },
{ name: 'Table', value: 'table' },
{ name: 'Solution', value: 'solution' },
{ name: 'Org Management', value: 'orgManagement' },
{ name: 'API Request', value: 'apiRequest' },
],
description: 'Which SmartSuite resource to operate on',
},
// 2) Existing-resource UIs
...RecordDescription_1.recordDescription,
...TableDescription_1.tableOperations,
...TableDescription_1.tableFields,
...SolutionDescription_1.solutionDescription,
...OrgManagementDescription_1.orgManagementDescription,
// 3) API-Request UI (HTTP methods as operations + Query/Header/Body toggles)
...ApiRequestDescription_1.apiRequestDescription,
],
};
methods = {
credentialTest: {
async smartSuiteApiTest() {
try {
// simple test endpoint
await smartSuiteApi_1.apiRequest.call(this, 'GET', '/solutions/', {}, { limit: 1, offset: 0 });
return { status: 'OK', message: 'Connection successful!' };
}
catch (err) {
return { status: 'Error', message: err.message };
}
},
},
loadOptions: {
getOperations: loadOptions_1.getOperations,
getTableFields: loadOptions_1.getTableFields,
getMutableTableFields: loadOptions_1.getMutableTableFields,
getFilterOptionsForFieldType: loadOptions_1.getFilterOptionsForFieldType,
getAllFilterConditions: getValidFilters_1.getAllFilterConditions,
searchTableFields: loadOptions_1.searchTableFields,
searchTableFieldsMutable: loadOptions_1.searchTableFieldsMutable,
},
listSearch: {
solutionSearch: listSearch_1.solutionSearch,
tableSearch: listSearch_1.tableSearch,
},
};
async execute() {
const resource = this.getNodeParameter('resource', 0);
if (resource === 'apiRequest') {
// call our single-operation executor at index 0
const output = await makeApiRequest_operation_1.executeMakeApiRequest.call(this, 0);
return [output];
}
// otherwise fall back to the router
return router_1.router.call(this);
}
}
exports.SmartSuite = SmartSuite;
exports.default = SmartSuite;
//# sourceMappingURL=SmartSuite.node.js.map