n8n-nodes-base 1.88.0 → 1.89.0

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.
Files changed (40) hide show
  1. package/dist/credentials/Aws.credentials.js +16 -2
  2. package/dist/credentials/Aws.credentials.js.map +1 -1
  3. package/dist/nodes/Airtable/v2/actions/record/update.operation.js +15 -3
  4. package/dist/nodes/Airtable/v2/actions/record/update.operation.js.map +1 -1
  5. package/dist/nodes/Form/utils.js +2 -7
  6. package/dist/nodes/Form/utils.js.map +1 -1
  7. package/dist/nodes/Freshdesk/Freshdesk.node.js +3 -6
  8. package/dist/nodes/Freshdesk/Freshdesk.node.js.map +1 -1
  9. package/dist/nodes/HttpRequest/V3/Description.js +8 -0
  10. package/dist/nodes/HttpRequest/V3/Description.js.map +1 -1
  11. package/dist/nodes/HttpRequest/V3/HttpRequestV3.node.js +23 -5
  12. package/dist/nodes/HttpRequest/V3/HttpRequestV3.node.js.map +1 -1
  13. package/dist/nodes/HttpRequest/shared/optimizeResponse.js +387 -0
  14. package/dist/nodes/HttpRequest/shared/optimizeResponse.js.map +1 -0
  15. package/dist/nodes/Hubspot/V2/HubspotV2.node.js +10 -2
  16. package/dist/nodes/Hubspot/V2/HubspotV2.node.js.map +1 -1
  17. package/dist/nodes/LinkedIn/GenericFunctions.js +1 -1
  18. package/dist/nodes/LinkedIn/GenericFunctions.js.map +1 -1
  19. package/dist/nodes/Postgres/v2/helpers/utils.js +3 -1
  20. package/dist/nodes/Postgres/v2/helpers/utils.js.map +1 -1
  21. package/dist/nodes/RespondToWebhook/RespondToWebhook.node.js +57 -48
  22. package/dist/nodes/RespondToWebhook/RespondToWebhook.node.js.map +1 -1
  23. package/dist/nodes/Supabase/GenericFunctions.js +13 -4
  24. package/dist/nodes/Supabase/GenericFunctions.js.map +1 -1
  25. package/dist/nodes/Supabase/RowDescription.js +1 -0
  26. package/dist/nodes/Supabase/RowDescription.js.map +1 -1
  27. package/dist/nodes/Supabase/Supabase.node.js +17 -0
  28. package/dist/nodes/Supabase/Supabase.node.js.map +1 -1
  29. package/dist/nodes/Telegram/TelegramTrigger.node.js +4 -60
  30. package/dist/nodes/Telegram/TelegramTrigger.node.js.map +1 -1
  31. package/dist/nodes/Telegram/util/triggerUtils.js +88 -0
  32. package/dist/nodes/Telegram/util/triggerUtils.js.map +1 -0
  33. package/dist/nodes/Wait/Wait.node.js +5 -6
  34. package/dist/nodes/Wait/Wait.node.js.map +1 -1
  35. package/dist/test/nodes/Helpers.js +4 -2
  36. package/dist/test/nodes/Helpers.js.map +1 -1
  37. package/dist/test/nodes/TriggerHelpers.js +5 -2
  38. package/dist/test/nodes/TriggerHelpers.js.map +1 -1
  39. package/dist/types/nodes.json +5 -5
  40. package/package.json +8 -6
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../nodes/Supabase/RowDescription.ts"],"sourcesContent":["import type { INodeProperties } from 'n8n-workflow';\n\nimport { getFilters } from './GenericFunctions';\n\nexport const rowOperations: INodeProperties[] = [\n\t{\n\t\tdisplayName: 'Operation',\n\t\tname: 'operation',\n\t\ttype: 'options',\n\t\tnoDataExpression: true,\n\t\tdisplayOptions: {\n\t\t\tshow: {\n\t\t\t\tresource: ['row'],\n\t\t\t},\n\t\t},\n\t\toptions: [\n\t\t\t{\n\t\t\t\tname: 'Create',\n\t\t\t\tvalue: 'create',\n\t\t\t\tdescription: 'Create a new row',\n\t\t\t\taction: 'Create a row',\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'Delete',\n\t\t\t\tvalue: 'delete',\n\t\t\t\tdescription: 'Delete a row',\n\t\t\t\taction: 'Delete a row',\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'Get',\n\t\t\t\tvalue: 'get',\n\t\t\t\tdescription: 'Get a row',\n\t\t\t\taction: 'Get a row',\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'Get Many',\n\t\t\t\tvalue: 'getAll',\n\t\t\t\tdescription: 'Get many rows',\n\t\t\t\taction: 'Get many rows',\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'Update',\n\t\t\t\tvalue: 'update',\n\t\t\t\tdescription: 'Update a row',\n\t\t\t\taction: 'Update a row',\n\t\t\t},\n\t\t],\n\t\tdefault: 'create',\n\t},\n];\n\nexport const rowFields: INodeProperties[] = [\n\t/* -------------------------------------------------------------------------- */\n\t/* row:create */\n\t/* -------------------------------------------------------------------------- */\n\t{\n\t\tdisplayName: 'Table Name or ID',\n\t\tname: 'tableId',\n\t\ttype: 'options',\n\t\tdescription:\n\t\t\t'Choose from the list, or specify an ID using an <a href=\"https://docs.n8n.io/code/expressions/\">expression</a>',\n\t\ttypeOptions: {\n\t\t\tloadOptionsMethod: 'getTables',\n\t\t},\n\t\trequired: true,\n\t\tdisplayOptions: {\n\t\t\tshow: {\n\t\t\t\tresource: ['row'],\n\t\t\t\toperation: ['create', 'delete', 'get', 'getAll', 'update'],\n\t\t\t},\n\t\t},\n\t\tdefault: '',\n\t},\n\t...getFilters(['row'], ['update'], {\n\t\tincludeNoneOption: false,\n\t\tfilterTypeDisplayName: 'Select Type',\n\t\tfilterFixedCollectionDisplayName: 'Select Conditions',\n\t\tmustMatchOptions: [\n\t\t\t{\n\t\t\t\tname: 'Any Select Condition',\n\t\t\t\tvalue: 'anyFilter',\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'All Select Conditions',\n\t\t\t\tvalue: 'allFilters',\n\t\t\t},\n\t\t],\n\t}),\n\t{\n\t\tdisplayName: 'Data to Send',\n\t\tname: 'dataToSend',\n\t\ttype: 'options',\n\t\toptions: [\n\t\t\t{\n\t\t\t\tname: 'Auto-Map Input Data to Columns',\n\t\t\t\tvalue: 'autoMapInputData',\n\t\t\t\tdescription: 'Use when node input properties match destination column names',\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'Define Below for Each Column',\n\t\t\t\tvalue: 'defineBelow',\n\t\t\t\tdescription: 'Set the value for each destination column',\n\t\t\t},\n\t\t],\n\t\tdisplayOptions: {\n\t\t\tshow: {\n\t\t\t\tresource: ['row'],\n\t\t\t\toperation: ['create', 'update'],\n\t\t\t},\n\t\t},\n\t\tdefault: 'defineBelow',\n\t},\n\t{\n\t\tdisplayName: 'Inputs to Ignore',\n\t\tname: 'inputsToIgnore',\n\t\ttype: 'string',\n\t\tdisplayOptions: {\n\t\t\tshow: {\n\t\t\t\tresource: ['row'],\n\t\t\t\toperation: ['create', 'update'],\n\t\t\t\tdataToSend: ['autoMapInputData'],\n\t\t\t},\n\t\t},\n\t\tdefault: '',\n\t\tdescription:\n\t\t\t'List of input properties to avoid sending, separated by commas. Leave empty to send all properties.',\n\t\tplaceholder: 'Enter properties...',\n\t},\n\t{\n\t\tdisplayName: 'Fields to Send',\n\t\tname: 'fieldsUi',\n\t\tplaceholder: 'Add Field',\n\t\ttype: 'fixedCollection',\n\t\ttypeOptions: {\n\t\t\tmultipleValueButtonText: 'Add Field to Send',\n\t\t\tmultipleValues: true,\n\t\t},\n\t\tdisplayOptions: {\n\t\t\tshow: {\n\t\t\t\tresource: ['row'],\n\t\t\t\toperation: ['create', 'update'],\n\t\t\t\tdataToSend: ['defineBelow'],\n\t\t\t},\n\t\t},\n\t\tdefault: {},\n\t\toptions: [\n\t\t\t{\n\t\t\t\tdisplayName: 'Field',\n\t\t\t\tname: 'fieldValues',\n\t\t\t\tvalues: [\n\t\t\t\t\t{\n\t\t\t\t\t\tdisplayName: 'Field Name or ID',\n\t\t\t\t\t\tname: 'fieldId',\n\t\t\t\t\t\ttype: 'options',\n\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t'Choose from the list, or specify an ID using an <a href=\"https://docs.n8n.io/code/expressions/\">expression</a>',\n\t\t\t\t\t\ttypeOptions: {\n\t\t\t\t\t\t\tloadOptionsDependsOn: ['tableId'],\n\t\t\t\t\t\t\tloadOptionsMethod: 'getTableColumns',\n\t\t\t\t\t\t},\n\t\t\t\t\t\tdefault: '',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tdisplayName: 'Field Value',\n\t\t\t\t\t\tname: 'fieldValue',\n\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\tdefault: '',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t},\n\t/* -------------------------------------------------------------------------- */\n\t/* row:delete */\n\t/* -------------------------------------------------------------------------- */\n\t...getFilters(['row'], ['delete'], {\n\t\tincludeNoneOption: false,\n\t\tfilterTypeDisplayName: 'Select Type',\n\t\tfilterFixedCollectionDisplayName: 'Select Conditions',\n\t\tmustMatchOptions: [\n\t\t\t{\n\t\t\t\tname: 'Any Select Condition',\n\t\t\t\tvalue: 'anyFilter',\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'All Select Conditions',\n\t\t\t\tvalue: 'allFilters',\n\t\t\t},\n\t\t],\n\t}),\n\t/* -------------------------------------------------------------------------- */\n\t/* row:get */\n\t/* -------------------------------------------------------------------------- */\n\t{\n\t\tdisplayName: 'Select Conditions',\n\t\tname: 'filters',\n\t\ttype: 'fixedCollection',\n\t\ttypeOptions: {\n\t\t\tmultipleValues: true,\n\t\t},\n\t\tdisplayOptions: {\n\t\t\tshow: {\n\t\t\t\tresource: ['row'],\n\t\t\t\toperation: ['get'],\n\t\t\t},\n\t\t},\n\t\tdefault: {},\n\t\tplaceholder: 'Add Condition',\n\t\toptions: [\n\t\t\t{\n\t\t\t\tdisplayName: 'Conditions',\n\t\t\t\tname: 'conditions',\n\t\t\t\tvalues: [\n\t\t\t\t\t{\n\t\t\t\t\t\tdisplayName: 'Name or ID',\n\t\t\t\t\t\tname: 'keyName',\n\t\t\t\t\t\ttype: 'options',\n\t\t\t\t\t\ttypeOptions: {\n\t\t\t\t\t\t\tloadOptionsDependsOn: ['tableId'],\n\t\t\t\t\t\t\tloadOptionsMethod: 'getTableColumns',\n\t\t\t\t\t\t},\n\t\t\t\t\t\tdefault: '',\n\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t'Choose from the list, or specify an ID using an <a href=\"https://docs.n8n.io/code/expressions/\">expression</a>',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tdisplayName: 'Value',\n\t\t\t\t\t\tname: 'keyValue',\n\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\tdefault: '',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t},\n\t/* -------------------------------------------------------------------------- */\n\t/* row:getAll */\n\t/* -------------------------------------------------------------------------- */\n\t{\n\t\tdisplayName: 'Return All',\n\t\tname: 'returnAll',\n\t\ttype: 'boolean',\n\t\tnoDataExpression: true,\n\t\tdisplayOptions: {\n\t\t\tshow: {\n\t\t\t\tresource: ['row'],\n\t\t\t\toperation: ['getAll'],\n\t\t\t},\n\t\t},\n\t\tdefault: false,\n\t\tdescription: 'Whether to return all results or only up to a given limit',\n\t},\n\t{\n\t\tdisplayName: 'Limit',\n\t\tname: 'limit',\n\t\ttype: 'number',\n\t\tdisplayOptions: {\n\t\t\tshow: {\n\t\t\t\tresource: ['row'],\n\t\t\t\toperation: ['getAll'],\n\t\t\t\treturnAll: [false],\n\t\t\t},\n\t\t},\n\t\ttypeOptions: {\n\t\t\tminValue: 1,\n\t\t},\n\t\tdefault: 50,\n\t\tdescription: 'Max number of results to return',\n\t},\n\t...getFilters(['row'], ['getAll'], {}),\n];\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../nodes/Supabase/RowDescription.ts"],"sourcesContent":["import type { INodeProperties } from 'n8n-workflow';\n\nimport { getFilters } from './GenericFunctions';\n\nexport const rowOperations: INodeProperties[] = [\n\t{\n\t\tdisplayName: 'Operation',\n\t\tname: 'operation',\n\t\ttype: 'options',\n\t\tnoDataExpression: true,\n\t\tdisplayOptions: {\n\t\t\tshow: {\n\t\t\t\tresource: ['row'],\n\t\t\t},\n\t\t},\n\t\toptions: [\n\t\t\t{\n\t\t\t\tname: 'Create',\n\t\t\t\tvalue: 'create',\n\t\t\t\tdescription: 'Create a new row',\n\t\t\t\taction: 'Create a row',\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'Delete',\n\t\t\t\tvalue: 'delete',\n\t\t\t\tdescription: 'Delete a row',\n\t\t\t\taction: 'Delete a row',\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'Get',\n\t\t\t\tvalue: 'get',\n\t\t\t\tdescription: 'Get a row',\n\t\t\t\taction: 'Get a row',\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'Get Many',\n\t\t\t\tvalue: 'getAll',\n\t\t\t\tdescription: 'Get many rows',\n\t\t\t\taction: 'Get many rows',\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'Update',\n\t\t\t\tvalue: 'update',\n\t\t\t\tdescription: 'Update a row',\n\t\t\t\taction: 'Update a row',\n\t\t\t},\n\t\t],\n\t\tdefault: 'create',\n\t},\n];\n\nexport const rowFields: INodeProperties[] = [\n\t/* -------------------------------------------------------------------------- */\n\t/* row:create */\n\t/* -------------------------------------------------------------------------- */\n\t{\n\t\tdisplayName: 'Table Name or ID',\n\t\tname: 'tableId',\n\t\ttype: 'options',\n\t\tdescription:\n\t\t\t'Choose from the list, or specify an ID using an <a href=\"https://docs.n8n.io/code/expressions/\">expression</a>',\n\t\ttypeOptions: {\n\t\t\tloadOptionsDependsOn: ['useCustomSchema', 'schema'],\n\t\t\tloadOptionsMethod: 'getTables',\n\t\t},\n\t\trequired: true,\n\t\tdisplayOptions: {\n\t\t\tshow: {\n\t\t\t\tresource: ['row'],\n\t\t\t\toperation: ['create', 'delete', 'get', 'getAll', 'update'],\n\t\t\t},\n\t\t},\n\t\tdefault: '',\n\t},\n\t...getFilters(['row'], ['update'], {\n\t\tincludeNoneOption: false,\n\t\tfilterTypeDisplayName: 'Select Type',\n\t\tfilterFixedCollectionDisplayName: 'Select Conditions',\n\t\tmustMatchOptions: [\n\t\t\t{\n\t\t\t\tname: 'Any Select Condition',\n\t\t\t\tvalue: 'anyFilter',\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'All Select Conditions',\n\t\t\t\tvalue: 'allFilters',\n\t\t\t},\n\t\t],\n\t}),\n\t{\n\t\tdisplayName: 'Data to Send',\n\t\tname: 'dataToSend',\n\t\ttype: 'options',\n\t\toptions: [\n\t\t\t{\n\t\t\t\tname: 'Auto-Map Input Data to Columns',\n\t\t\t\tvalue: 'autoMapInputData',\n\t\t\t\tdescription: 'Use when node input properties match destination column names',\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'Define Below for Each Column',\n\t\t\t\tvalue: 'defineBelow',\n\t\t\t\tdescription: 'Set the value for each destination column',\n\t\t\t},\n\t\t],\n\t\tdisplayOptions: {\n\t\t\tshow: {\n\t\t\t\tresource: ['row'],\n\t\t\t\toperation: ['create', 'update'],\n\t\t\t},\n\t\t},\n\t\tdefault: 'defineBelow',\n\t},\n\t{\n\t\tdisplayName: 'Inputs to Ignore',\n\t\tname: 'inputsToIgnore',\n\t\ttype: 'string',\n\t\tdisplayOptions: {\n\t\t\tshow: {\n\t\t\t\tresource: ['row'],\n\t\t\t\toperation: ['create', 'update'],\n\t\t\t\tdataToSend: ['autoMapInputData'],\n\t\t\t},\n\t\t},\n\t\tdefault: '',\n\t\tdescription:\n\t\t\t'List of input properties to avoid sending, separated by commas. Leave empty to send all properties.',\n\t\tplaceholder: 'Enter properties...',\n\t},\n\t{\n\t\tdisplayName: 'Fields to Send',\n\t\tname: 'fieldsUi',\n\t\tplaceholder: 'Add Field',\n\t\ttype: 'fixedCollection',\n\t\ttypeOptions: {\n\t\t\tmultipleValueButtonText: 'Add Field to Send',\n\t\t\tmultipleValues: true,\n\t\t},\n\t\tdisplayOptions: {\n\t\t\tshow: {\n\t\t\t\tresource: ['row'],\n\t\t\t\toperation: ['create', 'update'],\n\t\t\t\tdataToSend: ['defineBelow'],\n\t\t\t},\n\t\t},\n\t\tdefault: {},\n\t\toptions: [\n\t\t\t{\n\t\t\t\tdisplayName: 'Field',\n\t\t\t\tname: 'fieldValues',\n\t\t\t\tvalues: [\n\t\t\t\t\t{\n\t\t\t\t\t\tdisplayName: 'Field Name or ID',\n\t\t\t\t\t\tname: 'fieldId',\n\t\t\t\t\t\ttype: 'options',\n\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t'Choose from the list, or specify an ID using an <a href=\"https://docs.n8n.io/code/expressions/\">expression</a>',\n\t\t\t\t\t\ttypeOptions: {\n\t\t\t\t\t\t\tloadOptionsDependsOn: ['tableId'],\n\t\t\t\t\t\t\tloadOptionsMethod: 'getTableColumns',\n\t\t\t\t\t\t},\n\t\t\t\t\t\tdefault: '',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tdisplayName: 'Field Value',\n\t\t\t\t\t\tname: 'fieldValue',\n\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\tdefault: '',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t},\n\t/* -------------------------------------------------------------------------- */\n\t/* row:delete */\n\t/* -------------------------------------------------------------------------- */\n\t...getFilters(['row'], ['delete'], {\n\t\tincludeNoneOption: false,\n\t\tfilterTypeDisplayName: 'Select Type',\n\t\tfilterFixedCollectionDisplayName: 'Select Conditions',\n\t\tmustMatchOptions: [\n\t\t\t{\n\t\t\t\tname: 'Any Select Condition',\n\t\t\t\tvalue: 'anyFilter',\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'All Select Conditions',\n\t\t\t\tvalue: 'allFilters',\n\t\t\t},\n\t\t],\n\t}),\n\t/* -------------------------------------------------------------------------- */\n\t/* row:get */\n\t/* -------------------------------------------------------------------------- */\n\t{\n\t\tdisplayName: 'Select Conditions',\n\t\tname: 'filters',\n\t\ttype: 'fixedCollection',\n\t\ttypeOptions: {\n\t\t\tmultipleValues: true,\n\t\t},\n\t\tdisplayOptions: {\n\t\t\tshow: {\n\t\t\t\tresource: ['row'],\n\t\t\t\toperation: ['get'],\n\t\t\t},\n\t\t},\n\t\tdefault: {},\n\t\tplaceholder: 'Add Condition',\n\t\toptions: [\n\t\t\t{\n\t\t\t\tdisplayName: 'Conditions',\n\t\t\t\tname: 'conditions',\n\t\t\t\tvalues: [\n\t\t\t\t\t{\n\t\t\t\t\t\tdisplayName: 'Name or ID',\n\t\t\t\t\t\tname: 'keyName',\n\t\t\t\t\t\ttype: 'options',\n\t\t\t\t\t\ttypeOptions: {\n\t\t\t\t\t\t\tloadOptionsDependsOn: ['tableId'],\n\t\t\t\t\t\t\tloadOptionsMethod: 'getTableColumns',\n\t\t\t\t\t\t},\n\t\t\t\t\t\tdefault: '',\n\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t'Choose from the list, or specify an ID using an <a href=\"https://docs.n8n.io/code/expressions/\">expression</a>',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tdisplayName: 'Value',\n\t\t\t\t\t\tname: 'keyValue',\n\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\tdefault: '',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t},\n\t/* -------------------------------------------------------------------------- */\n\t/* row:getAll */\n\t/* -------------------------------------------------------------------------- */\n\t{\n\t\tdisplayName: 'Return All',\n\t\tname: 'returnAll',\n\t\ttype: 'boolean',\n\t\tnoDataExpression: true,\n\t\tdisplayOptions: {\n\t\t\tshow: {\n\t\t\t\tresource: ['row'],\n\t\t\t\toperation: ['getAll'],\n\t\t\t},\n\t\t},\n\t\tdefault: false,\n\t\tdescription: 'Whether to return all results or only up to a given limit',\n\t},\n\t{\n\t\tdisplayName: 'Limit',\n\t\tname: 'limit',\n\t\ttype: 'number',\n\t\tdisplayOptions: {\n\t\t\tshow: {\n\t\t\t\tresource: ['row'],\n\t\t\t\toperation: ['getAll'],\n\t\t\t\treturnAll: [false],\n\t\t\t},\n\t\t},\n\t\ttypeOptions: {\n\t\t\tminValue: 1,\n\t\t},\n\t\tdefault: 50,\n\t\tdescription: 'Max number of results to return',\n\t},\n\t...getFilters(['row'], ['getAll'], {}),\n];\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,8BAA2B;AAEpB,MAAM,gBAAmC;AAAA,EAC/C;AAAA,IACC,aAAa;AAAA,IACb,MAAM;AAAA,IACN,MAAM;AAAA,IACN,kBAAkB;AAAA,IAClB,gBAAgB;AAAA,MACf,MAAM;AAAA,QACL,UAAU,CAAC,KAAK;AAAA,MACjB;AAAA,IACD;AAAA,IACA,SAAS;AAAA,MACR;AAAA,QACC,MAAM;AAAA,QACN,OAAO;AAAA,QACP,aAAa;AAAA,QACb,QAAQ;AAAA,MACT;AAAA,MACA;AAAA,QACC,MAAM;AAAA,QACN,OAAO;AAAA,QACP,aAAa;AAAA,QACb,QAAQ;AAAA,MACT;AAAA,MACA;AAAA,QACC,MAAM;AAAA,QACN,OAAO;AAAA,QACP,aAAa;AAAA,QACb,QAAQ;AAAA,MACT;AAAA,MACA;AAAA,QACC,MAAM;AAAA,QACN,OAAO;AAAA,QACP,aAAa;AAAA,QACb,QAAQ;AAAA,MACT;AAAA,MACA;AAAA,QACC,MAAM;AAAA,QACN,OAAO;AAAA,QACP,aAAa;AAAA,QACb,QAAQ;AAAA,MACT;AAAA,IACD;AAAA,IACA,SAAS;AAAA,EACV;AACD;AAEO,MAAM,YAA+B;AAAA;AAAA;AAAA;AAAA,EAI3C;AAAA,IACC,aAAa;AAAA,IACb,MAAM;AAAA,IACN,MAAM;AAAA,IACN,aACC;AAAA,IACD,aAAa;AAAA,MACZ,sBAAsB,CAAC,mBAAmB,QAAQ;AAAA,MAClD,mBAAmB;AAAA,IACpB;AAAA,IACA,UAAU;AAAA,IACV,gBAAgB;AAAA,MACf,MAAM;AAAA,QACL,UAAU,CAAC,KAAK;AAAA,QAChB,WAAW,CAAC,UAAU,UAAU,OAAO,UAAU,QAAQ;AAAA,MAC1D;AAAA,IACD;AAAA,IACA,SAAS;AAAA,EACV;AAAA,EACA,OAAG,oCAAW,CAAC,KAAK,GAAG,CAAC,QAAQ,GAAG;AAAA,IAClC,mBAAmB;AAAA,IACnB,uBAAuB;AAAA,IACvB,kCAAkC;AAAA,IAClC,kBAAkB;AAAA,MACjB;AAAA,QACC,MAAM;AAAA,QACN,OAAO;AAAA,MACR;AAAA,MACA;AAAA,QACC,MAAM;AAAA,QACN,OAAO;AAAA,MACR;AAAA,IACD;AAAA,EACD,CAAC;AAAA,EACD;AAAA,IACC,aAAa;AAAA,IACb,MAAM;AAAA,IACN,MAAM;AAAA,IACN,SAAS;AAAA,MACR;AAAA,QACC,MAAM;AAAA,QACN,OAAO;AAAA,QACP,aAAa;AAAA,MACd;AAAA,MACA;AAAA,QACC,MAAM;AAAA,QACN,OAAO;AAAA,QACP,aAAa;AAAA,MACd;AAAA,IACD;AAAA,IACA,gBAAgB;AAAA,MACf,MAAM;AAAA,QACL,UAAU,CAAC,KAAK;AAAA,QAChB,WAAW,CAAC,UAAU,QAAQ;AAAA,MAC/B;AAAA,IACD;AAAA,IACA,SAAS;AAAA,EACV;AAAA,EACA;AAAA,IACC,aAAa;AAAA,IACb,MAAM;AAAA,IACN,MAAM;AAAA,IACN,gBAAgB;AAAA,MACf,MAAM;AAAA,QACL,UAAU,CAAC,KAAK;AAAA,QAChB,WAAW,CAAC,UAAU,QAAQ;AAAA,QAC9B,YAAY,CAAC,kBAAkB;AAAA,MAChC;AAAA,IACD;AAAA,IACA,SAAS;AAAA,IACT,aACC;AAAA,IACD,aAAa;AAAA,EACd;AAAA,EACA;AAAA,IACC,aAAa;AAAA,IACb,MAAM;AAAA,IACN,aAAa;AAAA,IACb,MAAM;AAAA,IACN,aAAa;AAAA,MACZ,yBAAyB;AAAA,MACzB,gBAAgB;AAAA,IACjB;AAAA,IACA,gBAAgB;AAAA,MACf,MAAM;AAAA,QACL,UAAU,CAAC,KAAK;AAAA,QAChB,WAAW,CAAC,UAAU,QAAQ;AAAA,QAC9B,YAAY,CAAC,aAAa;AAAA,MAC3B;AAAA,IACD;AAAA,IACA,SAAS,CAAC;AAAA,IACV,SAAS;AAAA,MACR;AAAA,QACC,aAAa;AAAA,QACb,MAAM;AAAA,QACN,QAAQ;AAAA,UACP;AAAA,YACC,aAAa;AAAA,YACb,MAAM;AAAA,YACN,MAAM;AAAA,YACN,aACC;AAAA,YACD,aAAa;AAAA,cACZ,sBAAsB,CAAC,SAAS;AAAA,cAChC,mBAAmB;AAAA,YACpB;AAAA,YACA,SAAS;AAAA,UACV;AAAA,UACA;AAAA,YACC,aAAa;AAAA,YACb,MAAM;AAAA,YACN,MAAM;AAAA,YACN,SAAS;AAAA,UACV;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA,EACD;AAAA;AAAA;AAAA;AAAA,EAIA,OAAG,oCAAW,CAAC,KAAK,GAAG,CAAC,QAAQ,GAAG;AAAA,IAClC,mBAAmB;AAAA,IACnB,uBAAuB;AAAA,IACvB,kCAAkC;AAAA,IAClC,kBAAkB;AAAA,MACjB;AAAA,QACC,MAAM;AAAA,QACN,OAAO;AAAA,MACR;AAAA,MACA;AAAA,QACC,MAAM;AAAA,QACN,OAAO;AAAA,MACR;AAAA,IACD;AAAA,EACD,CAAC;AAAA;AAAA;AAAA;AAAA,EAID;AAAA,IACC,aAAa;AAAA,IACb,MAAM;AAAA,IACN,MAAM;AAAA,IACN,aAAa;AAAA,MACZ,gBAAgB;AAAA,IACjB;AAAA,IACA,gBAAgB;AAAA,MACf,MAAM;AAAA,QACL,UAAU,CAAC,KAAK;AAAA,QAChB,WAAW,CAAC,KAAK;AAAA,MAClB;AAAA,IACD;AAAA,IACA,SAAS,CAAC;AAAA,IACV,aAAa;AAAA,IACb,SAAS;AAAA,MACR;AAAA,QACC,aAAa;AAAA,QACb,MAAM;AAAA,QACN,QAAQ;AAAA,UACP;AAAA,YACC,aAAa;AAAA,YACb,MAAM;AAAA,YACN,MAAM;AAAA,YACN,aAAa;AAAA,cACZ,sBAAsB,CAAC,SAAS;AAAA,cAChC,mBAAmB;AAAA,YACpB;AAAA,YACA,SAAS;AAAA,YACT,aACC;AAAA,UACF;AAAA,UACA;AAAA,YACC,aAAa;AAAA,YACb,MAAM;AAAA,YACN,MAAM;AAAA,YACN,SAAS;AAAA,UACV;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA,EACD;AAAA;AAAA;AAAA;AAAA,EAIA;AAAA,IACC,aAAa;AAAA,IACb,MAAM;AAAA,IACN,MAAM;AAAA,IACN,kBAAkB;AAAA,IAClB,gBAAgB;AAAA,MACf,MAAM;AAAA,QACL,UAAU,CAAC,KAAK;AAAA,QAChB,WAAW,CAAC,QAAQ;AAAA,MACrB;AAAA,IACD;AAAA,IACA,SAAS;AAAA,IACT,aAAa;AAAA,EACd;AAAA,EACA;AAAA,IACC,aAAa;AAAA,IACb,MAAM;AAAA,IACN,MAAM;AAAA,IACN,gBAAgB;AAAA,MACf,MAAM;AAAA,QACL,UAAU,CAAC,KAAK;AAAA,QAChB,WAAW,CAAC,QAAQ;AAAA,QACpB,WAAW,CAAC,KAAK;AAAA,MAClB;AAAA,IACD;AAAA,IACA,aAAa;AAAA,MACZ,UAAU;AAAA,IACX;AAAA,IACA,SAAS;AAAA,IACT,aAAa;AAAA,EACd;AAAA,EACA,OAAG,oCAAW,CAAC,KAAK,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC;AACtC;","names":[]}
@@ -48,6 +48,23 @@ class Supabase {
48
48
  }
49
49
  ],
50
50
  properties: [
51
+ {
52
+ displayName: "Use Custom Schema",
53
+ name: "useCustomSchema",
54
+ type: "boolean",
55
+ default: false,
56
+ noDataExpression: true,
57
+ description: 'Whether to use a database schema different from the default "public" schema (requires schema exposure in the <a href="https://supabase.com/docs/guides/api/using-custom-schemas?queryGroups=language&language=curl#exposing-custom-schemas">Supabase API</a>)'
58
+ },
59
+ {
60
+ displayName: "Schema",
61
+ name: "schema",
62
+ type: "string",
63
+ default: "public",
64
+ description: "Name of database schema to use for table",
65
+ noDataExpression: false,
66
+ displayOptions: { show: { useCustomSchema: [true] } }
67
+ },
51
68
  {
52
69
  displayName: "Resource",
53
70
  name: "resource",
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../nodes/Supabase/Supabase.node.ts"],"sourcesContent":["import type {\n\tIExecuteFunctions,\n\tICredentialDataDecryptedObject,\n\tICredentialsDecrypted,\n\tICredentialTestFunctions,\n\tIDataObject,\n\tILoadOptionsFunctions,\n\tINodeCredentialTestResult,\n\tINodeExecutionData,\n\tINodePropertyOptions,\n\tINodeType,\n\tINodeTypeDescription,\n} from 'n8n-workflow';\nimport { NodeConnectionTypes, NodeOperationError } from 'n8n-workflow';\n\nimport {\n\tbuildGetQuery,\n\tbuildOrQuery,\n\tbuildQuery,\n\tmapPairedItemsFrom,\n\tsupabaseApiRequest,\n\tvalidateCredentials,\n} from './GenericFunctions';\nimport { rowFields, rowOperations } from './RowDescription';\n\nexport type FieldsUiValues = Array<{\n\tfieldId: string;\n\tfieldValue: string;\n}>;\n\nexport class Supabase implements INodeType {\n\tdescription: INodeTypeDescription = {\n\t\tdisplayName: 'Supabase',\n\t\tname: 'supabase',\n\t\ticon: 'file:supabase.svg',\n\t\tgroup: ['input'],\n\t\tversion: 1,\n\t\tsubtitle: '={{$parameter[\"operation\"] + \": \" + $parameter[\"resource\"]}}',\n\t\tdescription: 'Add, get, delete and update data in a table',\n\t\tdefaults: {\n\t\t\tname: 'Supabase',\n\t\t},\n\t\tinputs: [NodeConnectionTypes.Main],\n\t\toutputs: [NodeConnectionTypes.Main],\n\t\tusableAsTool: true,\n\t\tcredentials: [\n\t\t\t{\n\t\t\t\tname: 'supabaseApi',\n\t\t\t\trequired: true,\n\t\t\t\ttestedBy: 'supabaseApiCredentialTest',\n\t\t\t},\n\t\t],\n\t\tproperties: [\n\t\t\t{\n\t\t\t\tdisplayName: 'Resource',\n\t\t\t\tname: 'resource',\n\t\t\t\ttype: 'options',\n\t\t\t\tnoDataExpression: true,\n\t\t\t\toptions: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Row',\n\t\t\t\t\t\tvalue: 'row',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tdefault: 'row',\n\t\t\t},\n\t\t\t...rowOperations,\n\t\t\t...rowFields,\n\t\t],\n\t};\n\n\tmethods = {\n\t\tloadOptions: {\n\t\t\tasync getTables(this: ILoadOptionsFunctions): Promise<INodePropertyOptions[]> {\n\t\t\t\tconst returnData: INodePropertyOptions[] = [];\n\t\t\t\tconst { paths } = await supabaseApiRequest.call(this, 'GET', '/');\n\t\t\t\tfor (const path of Object.keys(paths as IDataObject)) {\n\t\t\t\t\t//omit introspection path\n\t\t\t\t\tif (path === '/') continue;\n\t\t\t\t\treturnData.push({\n\t\t\t\t\t\tname: path.replace('/', ''),\n\t\t\t\t\t\tvalue: path.replace('/', ''),\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn returnData;\n\t\t\t},\n\t\t\tasync getTableColumns(this: ILoadOptionsFunctions): Promise<INodePropertyOptions[]> {\n\t\t\t\tconst returnData: INodePropertyOptions[] = [];\n\t\t\t\tconst tableName = this.getCurrentNodeParameter('tableId') as string;\n\t\t\t\tconst { definitions } = await supabaseApiRequest.call(this, 'GET', '/');\n\t\t\t\tfor (const column of Object.keys(definitions[tableName].properties as IDataObject)) {\n\t\t\t\t\treturnData.push({\n\t\t\t\t\t\tname: `${column} - (${definitions[tableName].properties[column].type})`,\n\t\t\t\t\t\tvalue: column,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn returnData;\n\t\t\t},\n\t\t},\n\t\tcredentialTest: {\n\t\t\tasync supabaseApiCredentialTest(\n\t\t\t\tthis: ICredentialTestFunctions,\n\t\t\t\tcredential: ICredentialsDecrypted,\n\t\t\t): Promise<INodeCredentialTestResult> {\n\t\t\t\ttry {\n\t\t\t\t\tawait validateCredentials.call(this, credential.data as ICredentialDataDecryptedObject);\n\t\t\t\t} catch (error) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tstatus: 'Error',\n\t\t\t\t\t\tmessage: 'The Service Key is invalid',\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\treturn {\n\t\t\t\t\tstatus: 'OK',\n\t\t\t\t\tmessage: 'Connection successful!',\n\t\t\t\t};\n\t\t\t},\n\t\t},\n\t};\n\n\tasync execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]> {\n\t\tconst items = this.getInputData();\n\t\tconst returnData: INodeExecutionData[] = [];\n\t\tconst length = items.length;\n\t\tlet qs: IDataObject = {};\n\t\tconst resource = this.getNodeParameter('resource', 0);\n\t\tconst operation = this.getNodeParameter('operation', 0);\n\n\t\tif (resource === 'row') {\n\t\t\tconst tableId = this.getNodeParameter('tableId', 0) as string;\n\n\t\t\tif (operation === 'create') {\n\t\t\t\tconst records: IDataObject[] = [];\n\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tconst record: IDataObject = {};\n\t\t\t\t\tconst dataToSend = this.getNodeParameter('dataToSend', 0) as\n\t\t\t\t\t\t| 'defineBelow'\n\t\t\t\t\t\t| 'autoMapInputData';\n\n\t\t\t\t\tif (dataToSend === 'autoMapInputData') {\n\t\t\t\t\t\tconst incomingKeys = Object.keys(items[i].json);\n\t\t\t\t\t\tconst rawInputsToIgnore = this.getNodeParameter('inputsToIgnore', i) as string;\n\t\t\t\t\t\tconst inputDataToIgnore = rawInputsToIgnore.split(',').map((c) => c.trim());\n\n\t\t\t\t\t\tfor (const key of incomingKeys) {\n\t\t\t\t\t\t\tif (inputDataToIgnore.includes(key)) continue;\n\t\t\t\t\t\t\trecord[key] = items[i].json[key];\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst fields = this.getNodeParameter('fieldsUi.fieldValues', i, []) as FieldsUiValues;\n\t\t\t\t\t\tfor (const field of fields) {\n\t\t\t\t\t\t\trecord[`${field.fieldId}`] = field.fieldValue;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\trecords.push(record);\n\t\t\t\t}\n\t\t\t\tconst endpoint = `/${tableId}`;\n\n\t\t\t\ttry {\n\t\t\t\t\tconst createdRows: IDataObject[] = await supabaseApiRequest.call(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\t'POST',\n\t\t\t\t\t\tendpoint,\n\t\t\t\t\t\trecords,\n\t\t\t\t\t);\n\t\t\t\t\tcreatedRows.forEach((row, i) => {\n\t\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\t\tthis.helpers.returnJsonArray(row),\n\t\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t\t});\n\t\t\t\t} catch (error) {\n\t\t\t\t\tif (this.continueOnFail()) {\n\t\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\t\tthis.helpers.returnJsonArray({ error: error.description }),\n\t\t\t\t\t\t\t{ itemData: mapPairedItemsFrom(records) },\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthrow error;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (operation === 'delete') {\n\t\t\t\tconst filterType = this.getNodeParameter('filterType', 0) as string;\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tlet endpoint = `/${tableId}`;\n\t\t\t\t\tif (filterType === 'manual') {\n\t\t\t\t\t\tconst matchType = this.getNodeParameter('matchType', 0) as string;\n\t\t\t\t\t\tconst keys = this.getNodeParameter('filters.conditions', i, []) as IDataObject[];\n\n\t\t\t\t\t\tif (!keys.length) {\n\t\t\t\t\t\t\tthrow new NodeOperationError(\n\t\t\t\t\t\t\t\tthis.getNode(),\n\t\t\t\t\t\t\t\t'At least one select condition must be defined',\n\t\t\t\t\t\t\t\t{ itemIndex: i },\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (matchType === 'allFilters') {\n\t\t\t\t\t\t\tconst data = keys.reduce((obj, value) => buildQuery(obj, value), {});\n\t\t\t\t\t\t\tObject.assign(qs, data);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (matchType === 'anyFilter') {\n\t\t\t\t\t\t\tconst data = keys.map((key) => buildOrQuery(key));\n\t\t\t\t\t\t\tObject.assign(qs, { or: `(${data.join(',')})` });\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (filterType === 'string') {\n\t\t\t\t\t\tconst filterString = this.getNodeParameter('filterString', i) as string;\n\t\t\t\t\t\tendpoint = `${endpoint}?${encodeURI(filterString)}`;\n\t\t\t\t\t}\n\n\t\t\t\t\tlet rows;\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\trows = await supabaseApiRequest.call(this, 'DELETE', endpoint, {}, qs);\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tif (this.continueOnFail()) {\n\t\t\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\t\t\tthis.helpers.returnJsonArray({ error: error.description }),\n\t\t\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\treturnData.push(...executionData);\n\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthrow error;\n\t\t\t\t\t}\n\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\tthis.helpers.returnJsonArray(rows as IDataObject[]),\n\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t);\n\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (operation === 'get') {\n\t\t\t\tconst endpoint = `/${tableId}`;\n\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tconst keys = this.getNodeParameter('filters.conditions', i, []) as IDataObject[];\n\t\t\t\t\tconst data = keys.reduce((obj, value) => buildGetQuery(obj, value), {});\n\t\t\t\t\tObject.assign(qs, data);\n\t\t\t\t\tlet rows;\n\n\t\t\t\t\tif (!keys.length) {\n\t\t\t\t\t\tthrow new NodeOperationError(\n\t\t\t\t\t\t\tthis.getNode(),\n\t\t\t\t\t\t\t'At least one select condition must be defined',\n\t\t\t\t\t\t\t{ itemIndex: i },\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\trows = await supabaseApiRequest.call(this, 'GET', endpoint, {}, qs);\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tif (this.continueOnFail()) {\n\t\t\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\t\t\tthis.helpers.returnJsonArray({ error: error.message }),\n\t\t\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\treturnData.push(...executionData);\n\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthrow error;\n\t\t\t\t\t}\n\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\tthis.helpers.returnJsonArray(rows as IDataObject[]),\n\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t);\n\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (operation === 'getAll') {\n\t\t\t\tconst returnAll = this.getNodeParameter('returnAll', 0);\n\t\t\t\tconst filterType = this.getNodeParameter('filterType', 0) as string;\n\n\t\t\t\tlet endpoint = `/${tableId}`;\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tqs = {}; // reset qs\n\n\t\t\t\t\tif (filterType === 'manual') {\n\t\t\t\t\t\tconst matchType = this.getNodeParameter('matchType', 0) as string;\n\t\t\t\t\t\tconst keys = this.getNodeParameter('filters.conditions', i, []) as IDataObject[];\n\n\t\t\t\t\t\tif (keys.length !== 0) {\n\t\t\t\t\t\t\tif (matchType === 'allFilters') {\n\t\t\t\t\t\t\t\tconst data = keys.map((key) => buildOrQuery(key));\n\t\t\t\t\t\t\t\tObject.assign(qs, { and: `(${data.join(',')})` });\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (matchType === 'anyFilter') {\n\t\t\t\t\t\t\t\tconst data = keys.map((key) => buildOrQuery(key));\n\t\t\t\t\t\t\t\tObject.assign(qs, { or: `(${data.join(',')})` });\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (filterType === 'string') {\n\t\t\t\t\t\tconst filterString = this.getNodeParameter('filterString', i) as string;\n\t\t\t\t\t\tendpoint = `${endpoint}?${encodeURI(filterString)}`;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!returnAll) {\n\t\t\t\t\t\tqs.limit = this.getNodeParameter('limit', 0);\n\t\t\t\t\t}\n\n\t\t\t\t\tlet rows: IDataObject[] = [];\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\tlet responseLength = 0;\n\t\t\t\t\t\tdo {\n\t\t\t\t\t\t\tconst newRows = await supabaseApiRequest.call(this, 'GET', endpoint, {}, qs);\n\t\t\t\t\t\t\tresponseLength = newRows.length;\n\t\t\t\t\t\t\trows = rows.concat(newRows);\n\t\t\t\t\t\t\tqs.offset = rows.length;\n\t\t\t\t\t\t} while (responseLength >= 1000);\n\t\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\t\tthis.helpers.returnJsonArray(rows),\n\t\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tif (this.continueOnFail()) {\n\t\t\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\t\t\tthis.helpers.returnJsonArray({ error: error.description }),\n\t\t\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\treturnData.push(...executionData);\n\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthrow error;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (operation === 'update') {\n\t\t\t\tconst filterType = this.getNodeParameter('filterType', 0) as string;\n\t\t\t\tlet endpoint = `/${tableId}`;\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tif (filterType === 'manual') {\n\t\t\t\t\t\tconst matchType = this.getNodeParameter('matchType', 0) as string;\n\t\t\t\t\t\tconst keys = this.getNodeParameter('filters.conditions', i, []) as IDataObject[];\n\n\t\t\t\t\t\tif (!keys.length) {\n\t\t\t\t\t\t\tthrow new NodeOperationError(\n\t\t\t\t\t\t\t\tthis.getNode(),\n\t\t\t\t\t\t\t\t'At least one select condition must be defined',\n\t\t\t\t\t\t\t\t{ itemIndex: i },\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (matchType === 'allFilters') {\n\t\t\t\t\t\t\tconst data = keys.reduce((obj, value) => buildQuery(obj, value), {});\n\t\t\t\t\t\t\tObject.assign(qs, data);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (matchType === 'anyFilter') {\n\t\t\t\t\t\t\tconst data = keys.map((key) => buildOrQuery(key));\n\t\t\t\t\t\t\tObject.assign(qs, { or: `(${data.join(',')})` });\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (filterType === 'string') {\n\t\t\t\t\t\tconst filterString = this.getNodeParameter('filterString', i) as string;\n\t\t\t\t\t\tendpoint = `${endpoint}?${encodeURI(filterString)}`;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst record: IDataObject = {};\n\t\t\t\t\tconst dataToSend = this.getNodeParameter('dataToSend', 0) as\n\t\t\t\t\t\t| 'defineBelow'\n\t\t\t\t\t\t| 'autoMapInputData';\n\n\t\t\t\t\tif (dataToSend === 'autoMapInputData') {\n\t\t\t\t\t\tconst incomingKeys = Object.keys(items[i].json);\n\t\t\t\t\t\tconst rawInputsToIgnore = this.getNodeParameter('inputsToIgnore', i) as string;\n\t\t\t\t\t\tconst inputDataToIgnore = rawInputsToIgnore.split(',').map((c) => c.trim());\n\n\t\t\t\t\t\tfor (const key of incomingKeys) {\n\t\t\t\t\t\t\tif (inputDataToIgnore.includes(key)) continue;\n\t\t\t\t\t\t\trecord[key] = items[i].json[key];\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst fields = this.getNodeParameter('fieldsUi.fieldValues', i, []) as FieldsUiValues;\n\t\t\t\t\t\tfor (const field of fields) {\n\t\t\t\t\t\t\trecord[`${field.fieldId}`] = field.fieldValue;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tlet updatedRow;\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\tupdatedRow = await supabaseApiRequest.call(this, 'PATCH', endpoint, record, qs);\n\t\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\t\tthis.helpers.returnJsonArray(updatedRow as IDataObject[]),\n\t\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tif (this.continueOnFail()) {\n\t\t\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\t\t\tthis.helpers.returnJsonArray({ error: error.description }),\n\t\t\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthrow error;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn [returnData];\n\t}\n}\n"],"mappings":"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","names":["executionData"]}
1
+ {"version":3,"sources":["../../../nodes/Supabase/Supabase.node.ts"],"sourcesContent":["import type {\n\tIExecuteFunctions,\n\tICredentialDataDecryptedObject,\n\tICredentialsDecrypted,\n\tICredentialTestFunctions,\n\tIDataObject,\n\tILoadOptionsFunctions,\n\tINodeCredentialTestResult,\n\tINodeExecutionData,\n\tINodePropertyOptions,\n\tINodeType,\n\tINodeTypeDescription,\n} from 'n8n-workflow';\nimport { NodeConnectionTypes, NodeOperationError } from 'n8n-workflow';\n\nimport {\n\tbuildGetQuery,\n\tbuildOrQuery,\n\tbuildQuery,\n\tmapPairedItemsFrom,\n\tsupabaseApiRequest,\n\tvalidateCredentials,\n} from './GenericFunctions';\nimport { rowFields, rowOperations } from './RowDescription';\n\nexport type FieldsUiValues = Array<{\n\tfieldId: string;\n\tfieldValue: string;\n}>;\n\nexport class Supabase implements INodeType {\n\tdescription: INodeTypeDescription = {\n\t\tdisplayName: 'Supabase',\n\t\tname: 'supabase',\n\t\ticon: 'file:supabase.svg',\n\t\tgroup: ['input'],\n\t\tversion: 1,\n\t\tsubtitle: '={{$parameter[\"operation\"] + \": \" + $parameter[\"resource\"]}}',\n\t\tdescription: 'Add, get, delete and update data in a table',\n\t\tdefaults: {\n\t\t\tname: 'Supabase',\n\t\t},\n\t\tinputs: [NodeConnectionTypes.Main],\n\t\toutputs: [NodeConnectionTypes.Main],\n\t\tusableAsTool: true,\n\t\tcredentials: [\n\t\t\t{\n\t\t\t\tname: 'supabaseApi',\n\t\t\t\trequired: true,\n\t\t\t\ttestedBy: 'supabaseApiCredentialTest',\n\t\t\t},\n\t\t],\n\t\tproperties: [\n\t\t\t{\n\t\t\t\tdisplayName: 'Use Custom Schema',\n\t\t\t\tname: 'useCustomSchema',\n\t\t\t\ttype: 'boolean',\n\t\t\t\tdefault: false,\n\t\t\t\tnoDataExpression: true,\n\t\t\t\tdescription:\n\t\t\t\t\t'Whether to use a database schema different from the default \"public\" schema (requires schema exposure in the <a href=\"https://supabase.com/docs/guides/api/using-custom-schemas?queryGroups=language&language=curl#exposing-custom-schemas\">Supabase API</a>)',\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Schema',\n\t\t\t\tname: 'schema',\n\t\t\t\ttype: 'string',\n\t\t\t\tdefault: 'public',\n\t\t\t\tdescription: 'Name of database schema to use for table',\n\t\t\t\tnoDataExpression: false,\n\t\t\t\tdisplayOptions: { show: { useCustomSchema: [true] } },\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Resource',\n\t\t\t\tname: 'resource',\n\t\t\t\ttype: 'options',\n\t\t\t\tnoDataExpression: true,\n\t\t\t\toptions: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Row',\n\t\t\t\t\t\tvalue: 'row',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tdefault: 'row',\n\t\t\t},\n\t\t\t...rowOperations,\n\t\t\t...rowFields,\n\t\t],\n\t};\n\n\tmethods = {\n\t\tloadOptions: {\n\t\t\tasync getTables(this: ILoadOptionsFunctions): Promise<INodePropertyOptions[]> {\n\t\t\t\tconst returnData: INodePropertyOptions[] = [];\n\t\t\t\tconst { paths } = await supabaseApiRequest.call(this, 'GET', '/');\n\t\t\t\tfor (const path of Object.keys(paths as IDataObject)) {\n\t\t\t\t\t//omit introspection path\n\t\t\t\t\tif (path === '/') continue;\n\t\t\t\t\treturnData.push({\n\t\t\t\t\t\tname: path.replace('/', ''),\n\t\t\t\t\t\tvalue: path.replace('/', ''),\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn returnData;\n\t\t\t},\n\t\t\tasync getTableColumns(this: ILoadOptionsFunctions): Promise<INodePropertyOptions[]> {\n\t\t\t\tconst returnData: INodePropertyOptions[] = [];\n\t\t\t\tconst tableName = this.getCurrentNodeParameter('tableId') as string;\n\t\t\t\tconst { definitions } = await supabaseApiRequest.call(this, 'GET', '/');\n\t\t\t\tfor (const column of Object.keys(definitions[tableName].properties as IDataObject)) {\n\t\t\t\t\treturnData.push({\n\t\t\t\t\t\tname: `${column} - (${definitions[tableName].properties[column].type})`,\n\t\t\t\t\t\tvalue: column,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn returnData;\n\t\t\t},\n\t\t},\n\t\tcredentialTest: {\n\t\t\tasync supabaseApiCredentialTest(\n\t\t\t\tthis: ICredentialTestFunctions,\n\t\t\t\tcredential: ICredentialsDecrypted,\n\t\t\t): Promise<INodeCredentialTestResult> {\n\t\t\t\ttry {\n\t\t\t\t\tawait validateCredentials.call(this, credential.data as ICredentialDataDecryptedObject);\n\t\t\t\t} catch (error) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tstatus: 'Error',\n\t\t\t\t\t\tmessage: 'The Service Key is invalid',\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\treturn {\n\t\t\t\t\tstatus: 'OK',\n\t\t\t\t\tmessage: 'Connection successful!',\n\t\t\t\t};\n\t\t\t},\n\t\t},\n\t};\n\n\tasync execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]> {\n\t\tconst items = this.getInputData();\n\t\tconst returnData: INodeExecutionData[] = [];\n\t\tconst length = items.length;\n\t\tlet qs: IDataObject = {};\n\t\tconst resource = this.getNodeParameter('resource', 0);\n\t\tconst operation = this.getNodeParameter('operation', 0);\n\n\t\tif (resource === 'row') {\n\t\t\tconst tableId = this.getNodeParameter('tableId', 0) as string;\n\n\t\t\tif (operation === 'create') {\n\t\t\t\tconst records: IDataObject[] = [];\n\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tconst record: IDataObject = {};\n\t\t\t\t\tconst dataToSend = this.getNodeParameter('dataToSend', 0) as\n\t\t\t\t\t\t| 'defineBelow'\n\t\t\t\t\t\t| 'autoMapInputData';\n\n\t\t\t\t\tif (dataToSend === 'autoMapInputData') {\n\t\t\t\t\t\tconst incomingKeys = Object.keys(items[i].json);\n\t\t\t\t\t\tconst rawInputsToIgnore = this.getNodeParameter('inputsToIgnore', i) as string;\n\t\t\t\t\t\tconst inputDataToIgnore = rawInputsToIgnore.split(',').map((c) => c.trim());\n\n\t\t\t\t\t\tfor (const key of incomingKeys) {\n\t\t\t\t\t\t\tif (inputDataToIgnore.includes(key)) continue;\n\t\t\t\t\t\t\trecord[key] = items[i].json[key];\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst fields = this.getNodeParameter('fieldsUi.fieldValues', i, []) as FieldsUiValues;\n\t\t\t\t\t\tfor (const field of fields) {\n\t\t\t\t\t\t\trecord[`${field.fieldId}`] = field.fieldValue;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\trecords.push(record);\n\t\t\t\t}\n\t\t\t\tconst endpoint = `/${tableId}`;\n\n\t\t\t\ttry {\n\t\t\t\t\tconst createdRows: IDataObject[] = await supabaseApiRequest.call(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\t'POST',\n\t\t\t\t\t\tendpoint,\n\t\t\t\t\t\trecords,\n\t\t\t\t\t);\n\t\t\t\t\tcreatedRows.forEach((row, i) => {\n\t\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\t\tthis.helpers.returnJsonArray(row),\n\t\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t\t});\n\t\t\t\t} catch (error) {\n\t\t\t\t\tif (this.continueOnFail()) {\n\t\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\t\tthis.helpers.returnJsonArray({ error: error.description }),\n\t\t\t\t\t\t\t{ itemData: mapPairedItemsFrom(records) },\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthrow error;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (operation === 'delete') {\n\t\t\t\tconst filterType = this.getNodeParameter('filterType', 0) as string;\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tlet endpoint = `/${tableId}`;\n\t\t\t\t\tif (filterType === 'manual') {\n\t\t\t\t\t\tconst matchType = this.getNodeParameter('matchType', 0) as string;\n\t\t\t\t\t\tconst keys = this.getNodeParameter('filters.conditions', i, []) as IDataObject[];\n\n\t\t\t\t\t\tif (!keys.length) {\n\t\t\t\t\t\t\tthrow new NodeOperationError(\n\t\t\t\t\t\t\t\tthis.getNode(),\n\t\t\t\t\t\t\t\t'At least one select condition must be defined',\n\t\t\t\t\t\t\t\t{ itemIndex: i },\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (matchType === 'allFilters') {\n\t\t\t\t\t\t\tconst data = keys.reduce((obj, value) => buildQuery(obj, value), {});\n\t\t\t\t\t\t\tObject.assign(qs, data);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (matchType === 'anyFilter') {\n\t\t\t\t\t\t\tconst data = keys.map((key) => buildOrQuery(key));\n\t\t\t\t\t\t\tObject.assign(qs, { or: `(${data.join(',')})` });\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (filterType === 'string') {\n\t\t\t\t\t\tconst filterString = this.getNodeParameter('filterString', i) as string;\n\t\t\t\t\t\tendpoint = `${endpoint}?${encodeURI(filterString)}`;\n\t\t\t\t\t}\n\n\t\t\t\t\tlet rows;\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\trows = await supabaseApiRequest.call(this, 'DELETE', endpoint, {}, qs);\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tif (this.continueOnFail()) {\n\t\t\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\t\t\tthis.helpers.returnJsonArray({ error: error.description }),\n\t\t\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\treturnData.push(...executionData);\n\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthrow error;\n\t\t\t\t\t}\n\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\tthis.helpers.returnJsonArray(rows as IDataObject[]),\n\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t);\n\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (operation === 'get') {\n\t\t\t\tconst endpoint = `/${tableId}`;\n\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tconst keys = this.getNodeParameter('filters.conditions', i, []) as IDataObject[];\n\t\t\t\t\tconst data = keys.reduce((obj, value) => buildGetQuery(obj, value), {});\n\t\t\t\t\tObject.assign(qs, data);\n\t\t\t\t\tlet rows;\n\n\t\t\t\t\tif (!keys.length) {\n\t\t\t\t\t\tthrow new NodeOperationError(\n\t\t\t\t\t\t\tthis.getNode(),\n\t\t\t\t\t\t\t'At least one select condition must be defined',\n\t\t\t\t\t\t\t{ itemIndex: i },\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\trows = await supabaseApiRequest.call(this, 'GET', endpoint, {}, qs);\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tif (this.continueOnFail()) {\n\t\t\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\t\t\tthis.helpers.returnJsonArray({ error: error.message }),\n\t\t\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\treturnData.push(...executionData);\n\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthrow error;\n\t\t\t\t\t}\n\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\tthis.helpers.returnJsonArray(rows as IDataObject[]),\n\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t);\n\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (operation === 'getAll') {\n\t\t\t\tconst returnAll = this.getNodeParameter('returnAll', 0);\n\t\t\t\tconst filterType = this.getNodeParameter('filterType', 0) as string;\n\n\t\t\t\tlet endpoint = `/${tableId}`;\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tqs = {}; // reset qs\n\n\t\t\t\t\tif (filterType === 'manual') {\n\t\t\t\t\t\tconst matchType = this.getNodeParameter('matchType', 0) as string;\n\t\t\t\t\t\tconst keys = this.getNodeParameter('filters.conditions', i, []) as IDataObject[];\n\n\t\t\t\t\t\tif (keys.length !== 0) {\n\t\t\t\t\t\t\tif (matchType === 'allFilters') {\n\t\t\t\t\t\t\t\tconst data = keys.map((key) => buildOrQuery(key));\n\t\t\t\t\t\t\t\tObject.assign(qs, { and: `(${data.join(',')})` });\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (matchType === 'anyFilter') {\n\t\t\t\t\t\t\t\tconst data = keys.map((key) => buildOrQuery(key));\n\t\t\t\t\t\t\t\tObject.assign(qs, { or: `(${data.join(',')})` });\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (filterType === 'string') {\n\t\t\t\t\t\tconst filterString = this.getNodeParameter('filterString', i) as string;\n\t\t\t\t\t\tendpoint = `${endpoint}?${encodeURI(filterString)}`;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!returnAll) {\n\t\t\t\t\t\tqs.limit = this.getNodeParameter('limit', 0);\n\t\t\t\t\t}\n\n\t\t\t\t\tlet rows: IDataObject[] = [];\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\tlet responseLength = 0;\n\t\t\t\t\t\tdo {\n\t\t\t\t\t\t\tconst newRows = await supabaseApiRequest.call(this, 'GET', endpoint, {}, qs);\n\t\t\t\t\t\t\tresponseLength = newRows.length;\n\t\t\t\t\t\t\trows = rows.concat(newRows);\n\t\t\t\t\t\t\tqs.offset = rows.length;\n\t\t\t\t\t\t} while (responseLength >= 1000);\n\t\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\t\tthis.helpers.returnJsonArray(rows),\n\t\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tif (this.continueOnFail()) {\n\t\t\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\t\t\tthis.helpers.returnJsonArray({ error: error.description }),\n\t\t\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\treturnData.push(...executionData);\n\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthrow error;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (operation === 'update') {\n\t\t\t\tconst filterType = this.getNodeParameter('filterType', 0) as string;\n\t\t\t\tlet endpoint = `/${tableId}`;\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tif (filterType === 'manual') {\n\t\t\t\t\t\tconst matchType = this.getNodeParameter('matchType', 0) as string;\n\t\t\t\t\t\tconst keys = this.getNodeParameter('filters.conditions', i, []) as IDataObject[];\n\n\t\t\t\t\t\tif (!keys.length) {\n\t\t\t\t\t\t\tthrow new NodeOperationError(\n\t\t\t\t\t\t\t\tthis.getNode(),\n\t\t\t\t\t\t\t\t'At least one select condition must be defined',\n\t\t\t\t\t\t\t\t{ itemIndex: i },\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (matchType === 'allFilters') {\n\t\t\t\t\t\t\tconst data = keys.reduce((obj, value) => buildQuery(obj, value), {});\n\t\t\t\t\t\t\tObject.assign(qs, data);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (matchType === 'anyFilter') {\n\t\t\t\t\t\t\tconst data = keys.map((key) => buildOrQuery(key));\n\t\t\t\t\t\t\tObject.assign(qs, { or: `(${data.join(',')})` });\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (filterType === 'string') {\n\t\t\t\t\t\tconst filterString = this.getNodeParameter('filterString', i) as string;\n\t\t\t\t\t\tendpoint = `${endpoint}?${encodeURI(filterString)}`;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst record: IDataObject = {};\n\t\t\t\t\tconst dataToSend = this.getNodeParameter('dataToSend', 0) as\n\t\t\t\t\t\t| 'defineBelow'\n\t\t\t\t\t\t| 'autoMapInputData';\n\n\t\t\t\t\tif (dataToSend === 'autoMapInputData') {\n\t\t\t\t\t\tconst incomingKeys = Object.keys(items[i].json);\n\t\t\t\t\t\tconst rawInputsToIgnore = this.getNodeParameter('inputsToIgnore', i) as string;\n\t\t\t\t\t\tconst inputDataToIgnore = rawInputsToIgnore.split(',').map((c) => c.trim());\n\n\t\t\t\t\t\tfor (const key of incomingKeys) {\n\t\t\t\t\t\t\tif (inputDataToIgnore.includes(key)) continue;\n\t\t\t\t\t\t\trecord[key] = items[i].json[key];\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst fields = this.getNodeParameter('fieldsUi.fieldValues', i, []) as FieldsUiValues;\n\t\t\t\t\t\tfor (const field of fields) {\n\t\t\t\t\t\t\trecord[`${field.fieldId}`] = field.fieldValue;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tlet updatedRow;\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\tupdatedRow = await supabaseApiRequest.call(this, 'PATCH', endpoint, record, qs);\n\t\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\t\tthis.helpers.returnJsonArray(updatedRow as IDataObject[]),\n\t\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tif (this.continueOnFail()) {\n\t\t\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\t\t\tthis.helpers.returnJsonArray({ error: error.description }),\n\t\t\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthrow error;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn [returnData];\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAaA,0BAAwD;AAExD,8BAOO;AACP,4BAAyC;AAOlC,MAAM,SAA8B;AAAA,EAApC;AACN,uBAAoC;AAAA,MACnC,aAAa;AAAA,MACb,MAAM;AAAA,MACN,MAAM;AAAA,MACN,OAAO,CAAC,OAAO;AAAA,MACf,SAAS;AAAA,MACT,UAAU;AAAA,MACV,aAAa;AAAA,MACb,UAAU;AAAA,QACT,MAAM;AAAA,MACP;AAAA,MACA,QAAQ,CAAC,wCAAoB,IAAI;AAAA,MACjC,SAAS,CAAC,wCAAoB,IAAI;AAAA,MAClC,cAAc;AAAA,MACd,aAAa;AAAA,QACZ;AAAA,UACC,MAAM;AAAA,UACN,UAAU;AAAA,UACV,UAAU;AAAA,QACX;AAAA,MACD;AAAA,MACA,YAAY;AAAA,QACX;AAAA,UACC,aAAa;AAAA,UACb,MAAM;AAAA,UACN,MAAM;AAAA,UACN,SAAS;AAAA,UACT,kBAAkB;AAAA,UAClB,aACC;AAAA,QACF;AAAA,QACA;AAAA,UACC,aAAa;AAAA,UACb,MAAM;AAAA,UACN,MAAM;AAAA,UACN,SAAS;AAAA,UACT,aAAa;AAAA,UACb,kBAAkB;AAAA,UAClB,gBAAgB,EAAE,MAAM,EAAE,iBAAiB,CAAC,IAAI,EAAE,EAAE;AAAA,QACrD;AAAA,QACA;AAAA,UACC,aAAa;AAAA,UACb,MAAM;AAAA,UACN,MAAM;AAAA,UACN,kBAAkB;AAAA,UAClB,SAAS;AAAA,YACR;AAAA,cACC,MAAM;AAAA,cACN,OAAO;AAAA,YACR;AAAA,UACD;AAAA,UACA,SAAS;AAAA,QACV;AAAA,QACA,GAAG;AAAA,QACH,GAAG;AAAA,MACJ;AAAA,IACD;AAEA,mBAAU;AAAA,MACT,aAAa;AAAA,QACZ,MAAM,YAAwE;AAC7E,gBAAM,aAAqC,CAAC;AAC5C,gBAAM,EAAE,MAAM,IAAI,MAAM,2CAAmB,KAAK,MAAM,OAAO,GAAG;AAChE,qBAAW,QAAQ,OAAO,KAAK,KAAoB,GAAG;AAErD,gBAAI,SAAS,IAAK;AAClB,uBAAW,KAAK;AAAA,cACf,MAAM,KAAK,QAAQ,KAAK,EAAE;AAAA,cAC1B,OAAO,KAAK,QAAQ,KAAK,EAAE;AAAA,YAC5B,CAAC;AAAA,UACF;AACA,iBAAO;AAAA,QACR;AAAA,QACA,MAAM,kBAA8E;AACnF,gBAAM,aAAqC,CAAC;AAC5C,gBAAM,YAAY,KAAK,wBAAwB,SAAS;AACxD,gBAAM,EAAE,YAAY,IAAI,MAAM,2CAAmB,KAAK,MAAM,OAAO,GAAG;AACtE,qBAAW,UAAU,OAAO,KAAK,YAAY,SAAS,EAAE,UAAyB,GAAG;AACnF,uBAAW,KAAK;AAAA,cACf,MAAM,GAAG,MAAM,OAAO,YAAY,SAAS,EAAE,WAAW,MAAM,EAAE,IAAI;AAAA,cACpE,OAAO;AAAA,YACR,CAAC;AAAA,UACF;AACA,iBAAO;AAAA,QACR;AAAA,MACD;AAAA,MACA,gBAAgB;AAAA,QACf,MAAM,0BAEL,YACqC;AACrC,cAAI;AACH,kBAAM,4CAAoB,KAAK,MAAM,WAAW,IAAsC;AAAA,UACvF,SAAS,OAAO;AACf,mBAAO;AAAA,cACN,QAAQ;AAAA,cACR,SAAS;AAAA,YACV;AAAA,UACD;AAEA,iBAAO;AAAA,YACN,QAAQ;AAAA,YACR,SAAS;AAAA,UACV;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA,EAEA,MAAM,UAAkE;AACvE,UAAM,QAAQ,KAAK,aAAa;AAChC,UAAM,aAAmC,CAAC;AAC1C,UAAM,SAAS,MAAM;AACrB,QAAI,KAAkB,CAAC;AACvB,UAAM,WAAW,KAAK,iBAAiB,YAAY,CAAC;AACpD,UAAM,YAAY,KAAK,iBAAiB,aAAa,CAAC;AAEtD,QAAI,aAAa,OAAO;AACvB,YAAM,UAAU,KAAK,iBAAiB,WAAW,CAAC;AAElD,UAAI,cAAc,UAAU;AAC3B,cAAM,UAAyB,CAAC;AAEhC,iBAAS,IAAI,GAAG,IAAI,QAAQ,KAAK;AAChC,gBAAM,SAAsB,CAAC;AAC7B,gBAAM,aAAa,KAAK,iBAAiB,cAAc,CAAC;AAIxD,cAAI,eAAe,oBAAoB;AACtC,kBAAM,eAAe,OAAO,KAAK,MAAM,CAAC,EAAE,IAAI;AAC9C,kBAAM,oBAAoB,KAAK,iBAAiB,kBAAkB,CAAC;AACnE,kBAAM,oBAAoB,kBAAkB,MAAM,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC;AAE1E,uBAAW,OAAO,cAAc;AAC/B,kBAAI,kBAAkB,SAAS,GAAG,EAAG;AACrC,qBAAO,GAAG,IAAI,MAAM,CAAC,EAAE,KAAK,GAAG;AAAA,YAChC;AAAA,UACD,OAAO;AACN,kBAAM,SAAS,KAAK,iBAAiB,wBAAwB,GAAG,CAAC,CAAC;AAClE,uBAAW,SAAS,QAAQ;AAC3B,qBAAO,GAAG,MAAM,OAAO,EAAE,IAAI,MAAM;AAAA,YACpC;AAAA,UACD;AACA,kBAAQ,KAAK,MAAM;AAAA,QACpB;AACA,cAAM,WAAW,IAAI,OAAO;AAE5B,YAAI;AACH,gBAAM,cAA6B,MAAM,2CAAmB;AAAA,YAC3D;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACD;AACA,sBAAY,QAAQ,CAAC,KAAK,MAAM;AAC/B,kBAAM,gBAAgB,KAAK,QAAQ;AAAA,cAClC,KAAK,QAAQ,gBAAgB,GAAG;AAAA,cAChC,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE;AAAA,YACzB;AACA,uBAAW,KAAK,GAAG,aAAa;AAAA,UACjC,CAAC;AAAA,QACF,SAAS,OAAO;AACf,cAAI,KAAK,eAAe,GAAG;AAC1B,kBAAM,gBAAgB,KAAK,QAAQ;AAAA,cAClC,KAAK,QAAQ,gBAAgB,EAAE,OAAO,MAAM,YAAY,CAAC;AAAA,cACzD,EAAE,cAAU,4CAAmB,OAAO,EAAE;AAAA,YACzC;AACA,uBAAW,KAAK,GAAG,aAAa;AAAA,UACjC,OAAO;AACN,kBAAM;AAAA,UACP;AAAA,QACD;AAAA,MACD;AAEA,UAAI,cAAc,UAAU;AAC3B,cAAM,aAAa,KAAK,iBAAiB,cAAc,CAAC;AACxD,iBAAS,IAAI,GAAG,IAAI,QAAQ,KAAK;AAChC,cAAI,WAAW,IAAI,OAAO;AAC1B,cAAI,eAAe,UAAU;AAC5B,kBAAM,YAAY,KAAK,iBAAiB,aAAa,CAAC;AACtD,kBAAM,OAAO,KAAK,iBAAiB,sBAAsB,GAAG,CAAC,CAAC;AAE9D,gBAAI,CAAC,KAAK,QAAQ;AACjB,oBAAM,IAAI;AAAA,gBACT,KAAK,QAAQ;AAAA,gBACb;AAAA,gBACA,EAAE,WAAW,EAAE;AAAA,cAChB;AAAA,YACD;AAEA,gBAAI,cAAc,cAAc;AAC/B,oBAAM,OAAO,KAAK,OAAO,CAAC,KAAK,cAAU,oCAAW,KAAK,KAAK,GAAG,CAAC,CAAC;AACnE,qBAAO,OAAO,IAAI,IAAI;AAAA,YACvB;AACA,gBAAI,cAAc,aAAa;AAC9B,oBAAM,OAAO,KAAK,IAAI,CAAC,YAAQ,sCAAa,GAAG,CAAC;AAChD,qBAAO,OAAO,IAAI,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,CAAC,IAAI,CAAC;AAAA,YAChD;AAAA,UACD;AAEA,cAAI,eAAe,UAAU;AAC5B,kBAAM,eAAe,KAAK,iBAAiB,gBAAgB,CAAC;AAC5D,uBAAW,GAAG,QAAQ,IAAI,UAAU,YAAY,CAAC;AAAA,UAClD;AAEA,cAAI;AAEJ,cAAI;AACH,mBAAO,MAAM,2CAAmB,KAAK,MAAM,UAAU,UAAU,CAAC,GAAG,EAAE;AAAA,UACtE,SAAS,OAAO;AACf,gBAAI,KAAK,eAAe,GAAG;AAC1B,oBAAMA,iBAAgB,KAAK,QAAQ;AAAA,gBAClC,KAAK,QAAQ,gBAAgB,EAAE,OAAO,MAAM,YAAY,CAAC;AAAA,gBACzD,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE;AAAA,cACzB;AACA,yBAAW,KAAK,GAAGA,cAAa;AAEhC;AAAA,YACD;AACA,kBAAM;AAAA,UACP;AACA,gBAAM,gBAAgB,KAAK,QAAQ;AAAA,YAClC,KAAK,QAAQ,gBAAgB,IAAqB;AAAA,YAClD,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE;AAAA,UACzB;AACA,qBAAW,KAAK,GAAG,aAAa;AAAA,QACjC;AAAA,MACD;AAEA,UAAI,cAAc,OAAO;AACxB,cAAM,WAAW,IAAI,OAAO;AAE5B,iBAAS,IAAI,GAAG,IAAI,QAAQ,KAAK;AAChC,gBAAM,OAAO,KAAK,iBAAiB,sBAAsB,GAAG,CAAC,CAAC;AAC9D,gBAAM,OAAO,KAAK,OAAO,CAAC,KAAK,cAAU,uCAAc,KAAK,KAAK,GAAG,CAAC,CAAC;AACtE,iBAAO,OAAO,IAAI,IAAI;AACtB,cAAI;AAEJ,cAAI,CAAC,KAAK,QAAQ;AACjB,kBAAM,IAAI;AAAA,cACT,KAAK,QAAQ;AAAA,cACb;AAAA,cACA,EAAE,WAAW,EAAE;AAAA,YAChB;AAAA,UACD;AAEA,cAAI;AACH,mBAAO,MAAM,2CAAmB,KAAK,MAAM,OAAO,UAAU,CAAC,GAAG,EAAE;AAAA,UACnE,SAAS,OAAO;AACf,gBAAI,KAAK,eAAe,GAAG;AAC1B,oBAAMA,iBAAgB,KAAK,QAAQ;AAAA,gBAClC,KAAK,QAAQ,gBAAgB,EAAE,OAAO,MAAM,QAAQ,CAAC;AAAA,gBACrD,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE;AAAA,cACzB;AACA,yBAAW,KAAK,GAAGA,cAAa;AAEhC;AAAA,YACD;AACA,kBAAM;AAAA,UACP;AACA,gBAAM,gBAAgB,KAAK,QAAQ;AAAA,YAClC,KAAK,QAAQ,gBAAgB,IAAqB;AAAA,YAClD,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE;AAAA,UACzB;AACA,qBAAW,KAAK,GAAG,aAAa;AAAA,QACjC;AAAA,MACD;AAEA,UAAI,cAAc,UAAU;AAC3B,cAAM,YAAY,KAAK,iBAAiB,aAAa,CAAC;AACtD,cAAM,aAAa,KAAK,iBAAiB,cAAc,CAAC;AAExD,YAAI,WAAW,IAAI,OAAO;AAC1B,iBAAS,IAAI,GAAG,IAAI,QAAQ,KAAK;AAChC,eAAK,CAAC;AAEN,cAAI,eAAe,UAAU;AAC5B,kBAAM,YAAY,KAAK,iBAAiB,aAAa,CAAC;AACtD,kBAAM,OAAO,KAAK,iBAAiB,sBAAsB,GAAG,CAAC,CAAC;AAE9D,gBAAI,KAAK,WAAW,GAAG;AACtB,kBAAI,cAAc,cAAc;AAC/B,sBAAM,OAAO,KAAK,IAAI,CAAC,YAAQ,sCAAa,GAAG,CAAC;AAChD,uBAAO,OAAO,IAAI,EAAE,KAAK,IAAI,KAAK,KAAK,GAAG,CAAC,IAAI,CAAC;AAAA,cACjD;AACA,kBAAI,cAAc,aAAa;AAC9B,sBAAM,OAAO,KAAK,IAAI,CAAC,YAAQ,sCAAa,GAAG,CAAC;AAChD,uBAAO,OAAO,IAAI,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,CAAC,IAAI,CAAC;AAAA,cAChD;AAAA,YACD;AAAA,UACD;AAEA,cAAI,eAAe,UAAU;AAC5B,kBAAM,eAAe,KAAK,iBAAiB,gBAAgB,CAAC;AAC5D,uBAAW,GAAG,QAAQ,IAAI,UAAU,YAAY,CAAC;AAAA,UAClD;AAEA,cAAI,CAAC,WAAW;AACf,eAAG,QAAQ,KAAK,iBAAiB,SAAS,CAAC;AAAA,UAC5C;AAEA,cAAI,OAAsB,CAAC;AAE3B,cAAI;AACH,gBAAI,iBAAiB;AACrB,eAAG;AACF,oBAAM,UAAU,MAAM,2CAAmB,KAAK,MAAM,OAAO,UAAU,CAAC,GAAG,EAAE;AAC3E,+BAAiB,QAAQ;AACzB,qBAAO,KAAK,OAAO,OAAO;AAC1B,iBAAG,SAAS,KAAK;AAAA,YAClB,SAAS,kBAAkB;AAC3B,kBAAM,gBAAgB,KAAK,QAAQ;AAAA,cAClC,KAAK,QAAQ,gBAAgB,IAAI;AAAA,cACjC,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE;AAAA,YACzB;AACA,uBAAW,KAAK,GAAG,aAAa;AAAA,UACjC,SAAS,OAAO;AACf,gBAAI,KAAK,eAAe,GAAG;AAC1B,oBAAM,gBAAgB,KAAK,QAAQ;AAAA,gBAClC,KAAK,QAAQ,gBAAgB,EAAE,OAAO,MAAM,YAAY,CAAC;AAAA,gBACzD,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE;AAAA,cACzB;AACA,yBAAW,KAAK,GAAG,aAAa;AAEhC;AAAA,YACD;AACA,kBAAM;AAAA,UACP;AAAA,QACD;AAAA,MACD;AAEA,UAAI,cAAc,UAAU;AAC3B,cAAM,aAAa,KAAK,iBAAiB,cAAc,CAAC;AACxD,YAAI,WAAW,IAAI,OAAO;AAC1B,iBAAS,IAAI,GAAG,IAAI,QAAQ,KAAK;AAChC,cAAI,eAAe,UAAU;AAC5B,kBAAM,YAAY,KAAK,iBAAiB,aAAa,CAAC;AACtD,kBAAM,OAAO,KAAK,iBAAiB,sBAAsB,GAAG,CAAC,CAAC;AAE9D,gBAAI,CAAC,KAAK,QAAQ;AACjB,oBAAM,IAAI;AAAA,gBACT,KAAK,QAAQ;AAAA,gBACb;AAAA,gBACA,EAAE,WAAW,EAAE;AAAA,cAChB;AAAA,YACD;AAEA,gBAAI,cAAc,cAAc;AAC/B,oBAAM,OAAO,KAAK,OAAO,CAAC,KAAK,cAAU,oCAAW,KAAK,KAAK,GAAG,CAAC,CAAC;AACnE,qBAAO,OAAO,IAAI,IAAI;AAAA,YACvB;AACA,gBAAI,cAAc,aAAa;AAC9B,oBAAM,OAAO,KAAK,IAAI,CAAC,YAAQ,sCAAa,GAAG,CAAC;AAChD,qBAAO,OAAO,IAAI,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,CAAC,IAAI,CAAC;AAAA,YAChD;AAAA,UACD;AAEA,cAAI,eAAe,UAAU;AAC5B,kBAAM,eAAe,KAAK,iBAAiB,gBAAgB,CAAC;AAC5D,uBAAW,GAAG,QAAQ,IAAI,UAAU,YAAY,CAAC;AAAA,UAClD;AAEA,gBAAM,SAAsB,CAAC;AAC7B,gBAAM,aAAa,KAAK,iBAAiB,cAAc,CAAC;AAIxD,cAAI,eAAe,oBAAoB;AACtC,kBAAM,eAAe,OAAO,KAAK,MAAM,CAAC,EAAE,IAAI;AAC9C,kBAAM,oBAAoB,KAAK,iBAAiB,kBAAkB,CAAC;AACnE,kBAAM,oBAAoB,kBAAkB,MAAM,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC;AAE1E,uBAAW,OAAO,cAAc;AAC/B,kBAAI,kBAAkB,SAAS,GAAG,EAAG;AACrC,qBAAO,GAAG,IAAI,MAAM,CAAC,EAAE,KAAK,GAAG;AAAA,YAChC;AAAA,UACD,OAAO;AACN,kBAAM,SAAS,KAAK,iBAAiB,wBAAwB,GAAG,CAAC,CAAC;AAClE,uBAAW,SAAS,QAAQ;AAC3B,qBAAO,GAAG,MAAM,OAAO,EAAE,IAAI,MAAM;AAAA,YACpC;AAAA,UACD;AACA,cAAI;AAEJ,cAAI;AACH,yBAAa,MAAM,2CAAmB,KAAK,MAAM,SAAS,UAAU,QAAQ,EAAE;AAC9E,kBAAM,gBAAgB,KAAK,QAAQ;AAAA,cAClC,KAAK,QAAQ,gBAAgB,UAA2B;AAAA,cACxD,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE;AAAA,YACzB;AACA,uBAAW,KAAK,GAAG,aAAa;AAAA,UACjC,SAAS,OAAO;AACf,gBAAI,KAAK,eAAe,GAAG;AAC1B,oBAAM,gBAAgB,KAAK,QAAQ;AAAA,gBAClC,KAAK,QAAQ,gBAAgB,EAAE,OAAO,MAAM,YAAY,CAAC;AAAA,gBACzD,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE;AAAA,cACzB;AACA,yBAAW,KAAK,GAAG,aAAa;AAChC;AAAA,YACD;AACA,kBAAM;AAAA,UACP;AAAA,QACD;AAAA,MACD;AAAA,IACD;AACA,WAAO,CAAC,UAAU;AAAA,EACnB;AACD;","names":["executionData"]}
@@ -34,6 +34,7 @@ module.exports = __toCommonJS(TelegramTrigger_node_exports);
34
34
  var import_crypto = __toESM(require("crypto"));
35
35
  var import_n8n_workflow = require("n8n-workflow");
36
36
  var import_GenericFunctions = require("./GenericFunctions");
37
+ var import_triggerUtils = require("./util/triggerUtils");
37
38
  class TelegramTrigger {
38
39
  constructor() {
39
40
  this.description = {
@@ -270,66 +271,9 @@ class TelegramTrigger {
270
271
  }
271
272
  }
272
273
  const additionalFields = this.getNodeParameter("additionalFields");
273
- if (additionalFields.download === true) {
274
- let imageSize = "large";
275
- let key = "message";
276
- if (bodyData.channel_post) {
277
- key = "channel_post";
278
- }
279
- if (bodyData[key]?.photo && Array.isArray(bodyData[key]?.photo) || bodyData[key]?.document || bodyData[key]?.video) {
280
- if (additionalFields.imageSize) {
281
- imageSize = additionalFields.imageSize;
282
- }
283
- let fileId;
284
- if (bodyData[key]?.photo) {
285
- let image = (0, import_GenericFunctions.getImageBySize)(
286
- bodyData[key]?.photo,
287
- imageSize
288
- );
289
- if (image === void 0) {
290
- image = bodyData[key].photo[0];
291
- }
292
- fileId = image.file_id;
293
- } else if (bodyData[key]?.video) {
294
- fileId = bodyData[key]?.video?.file_id;
295
- } else {
296
- fileId = bodyData[key]?.document?.file_id;
297
- }
298
- const {
299
- result: { file_path }
300
- } = await import_GenericFunctions.apiRequest.call(this, "GET", `getFile?file_id=${fileId}`, {});
301
- const file = await import_GenericFunctions.apiRequest.call(
302
- this,
303
- "GET",
304
- "",
305
- {},
306
- {},
307
- {
308
- json: false,
309
- encoding: null,
310
- uri: `${credentials.baseUrl}/file/bot${credentials.accessToken}/${file_path}`,
311
- resolveWithFullResponse: true
312
- }
313
- );
314
- const data = Buffer.from(file.body);
315
- const fileName = file_path.split("/").pop();
316
- const binaryData = await this.helpers.prepareBinaryData(
317
- data,
318
- fileName
319
- );
320
- return {
321
- workflowData: [
322
- [
323
- {
324
- json: bodyData,
325
- binary: {
326
- data: binaryData
327
- }
328
- }
329
- ]
330
- ]
331
- };
332
- }
274
+ if (additionalFields.download) {
275
+ const downloadFilesResult = await (0, import_triggerUtils.downloadFile)(this, credentials, bodyData, additionalFields);
276
+ if (Object.entries(downloadFilesResult).length !== 0) return downloadFilesResult;
333
277
  }
334
278
  if (nodeVersion >= 1.2) {
335
279
  if (additionalFields.chatIds) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../nodes/Telegram/TelegramTrigger.node.ts"],"sourcesContent":["import crypto from 'crypto';\nimport type {\n\tIHookFunctions,\n\tIWebhookFunctions,\n\tIDataObject,\n\tINodeType,\n\tINodeTypeDescription,\n\tIWebhookResponseData,\n} from 'n8n-workflow';\nimport { NodeConnectionTypes } from 'n8n-workflow';\n\nimport { apiRequest, getImageBySize, getSecretToken } from './GenericFunctions';\nimport type { IEvent } from './IEvent';\n\nexport class TelegramTrigger implements INodeType {\n\tdescription: INodeTypeDescription = {\n\t\tdisplayName: 'Telegram Trigger',\n\t\tname: 'telegramTrigger',\n\t\ticon: 'file:telegram.svg',\n\t\tgroup: ['trigger'],\n\t\tversion: [1, 1.1, 1.2],\n\t\tdefaultVersion: 1.2,\n\t\tsubtitle: '=Updates: {{$parameter[\"updates\"].join(\", \")}}',\n\t\tdescription: 'Starts the workflow on a Telegram update',\n\t\tdefaults: {\n\t\t\tname: 'Telegram Trigger',\n\t\t},\n\t\tinputs: [],\n\t\toutputs: [NodeConnectionTypes.Main],\n\t\tcredentials: [\n\t\t\t{\n\t\t\t\tname: 'telegramApi',\n\t\t\t\trequired: true,\n\t\t\t},\n\t\t],\n\t\twebhooks: [\n\t\t\t{\n\t\t\t\tname: 'default',\n\t\t\t\thttpMethod: 'POST',\n\t\t\t\tresponseMode: 'onReceived',\n\t\t\t\tpath: 'webhook',\n\t\t\t},\n\t\t],\n\t\tproperties: [\n\t\t\t{\n\t\t\t\tdisplayName:\n\t\t\t\t\t'Due to Telegram API limitations, you can use just one Telegram trigger for each bot at a time',\n\t\t\t\tname: 'telegramTriggerNotice',\n\t\t\t\ttype: 'notice',\n\t\t\t\tdefault: '',\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Trigger On',\n\t\t\t\tname: 'updates',\n\t\t\t\ttype: 'multiOptions',\n\t\t\t\toptions: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: '*',\n\t\t\t\t\t\tvalue: '*',\n\t\t\t\t\t\tdescription: 'All updates',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Callback Query',\n\t\t\t\t\t\tvalue: 'callback_query',\n\t\t\t\t\t\tdescription: 'Trigger on new incoming callback query',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Channel Post',\n\t\t\t\t\t\tvalue: 'channel_post',\n\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t'Trigger on new incoming channel post of any kind — text, photo, sticker, etc',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Edited Channel Post',\n\t\t\t\t\t\tvalue: 'edited_channel_post',\n\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t'Trigger on new version of a channel post that is known to the bot and was edited',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Edited Message',\n\t\t\t\t\t\tvalue: 'edited_message',\n\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t'Trigger on new version of a channel post that is known to the bot and was edited',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Inline Query',\n\t\t\t\t\t\tvalue: 'inline_query',\n\t\t\t\t\t\tdescription: 'Trigger on new incoming inline query',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Message',\n\t\t\t\t\t\tvalue: 'message',\n\t\t\t\t\t\tdescription: 'Trigger on new incoming message of any kind — text, photo, sticker, etc',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Poll',\n\t\t\t\t\t\tvalue: 'poll',\n\t\t\t\t\t\taction: 'On Poll Change',\n\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t'Trigger on new poll state. Bots receive only updates about stopped polls and polls, which are sent by the bot.',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Pre-Checkout Query',\n\t\t\t\t\t\tvalue: 'pre_checkout_query',\n\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t'Trigger on new incoming pre-checkout query. Contains full information about checkout.',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Shipping Query',\n\t\t\t\t\t\tvalue: 'shipping_query',\n\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t'Trigger on new incoming shipping query. Only for invoices with flexible price.',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\trequired: true,\n\t\t\t\tdefault: [],\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName:\n\t\t\t\t\t'Every uploaded attachment, even if sent in a group, will trigger a separate event. You can identify that an attachment belongs to a certain group by <code>media_group_id</code> .',\n\t\t\t\tname: 'attachmentNotice',\n\t\t\t\ttype: 'notice',\n\t\t\t\tdefault: '',\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Additional Fields',\n\t\t\t\tname: 'additionalFields',\n\t\t\t\ttype: 'collection',\n\t\t\t\tplaceholder: 'Add Field',\n\t\t\t\tdefault: {},\n\t\t\t\toptions: [\n\t\t\t\t\t{\n\t\t\t\t\t\tdisplayName: 'Download Images/Files',\n\t\t\t\t\t\tname: 'download',\n\t\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\t\tdefault: false,\n\t\t\t\t\t\t// eslint-disable-next-line n8n-nodes-base/node-param-description-boolean-without-whether\n\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t\"Telegram delivers the image in multiple sizes. By default, just the large image would be downloaded. If you want to change the size, set the field 'Image Size'.\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tdisplayName: 'Image Size',\n\t\t\t\t\t\tname: 'imageSize',\n\t\t\t\t\t\ttype: 'options',\n\t\t\t\t\t\tdisplayOptions: {\n\t\t\t\t\t\t\tshow: {\n\t\t\t\t\t\t\t\tdownload: [true],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\toptions: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: 'Small',\n\t\t\t\t\t\t\t\tvalue: 'small',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: 'Medium',\n\t\t\t\t\t\t\t\tvalue: 'medium',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: 'Large',\n\t\t\t\t\t\t\t\tvalue: 'large',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: 'Extra Large',\n\t\t\t\t\t\t\t\tvalue: 'extraLarge',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t\tdefault: 'large',\n\t\t\t\t\t\tdescription: 'The size of the image to be downloaded',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tdisplayName: 'Restrict to Chat IDs',\n\t\t\t\t\t\tname: 'chatIds',\n\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\tdefault: '',\n\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t'The chat IDs to restrict the trigger to. Multiple can be defined separated by comma.',\n\t\t\t\t\t\tdisplayOptions: {\n\t\t\t\t\t\t\tshow: {\n\t\t\t\t\t\t\t\t'@version': [{ _cnd: { gte: 1.1 } }],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tdisplayName: 'Restrict to User IDs',\n\t\t\t\t\t\tname: 'userIds',\n\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\tdefault: '',\n\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t'The user IDs to restrict the trigger to. Multiple can be defined separated by comma.',\n\t\t\t\t\t\tdisplayOptions: {\n\t\t\t\t\t\t\tshow: {\n\t\t\t\t\t\t\t\t'@version': [{ _cnd: { gte: 1.1 } }],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t};\n\n\twebhookMethods = {\n\t\tdefault: {\n\t\t\tasync checkExists(this: IHookFunctions): Promise<boolean> {\n\t\t\t\tconst endpoint = 'getWebhookInfo';\n\t\t\t\tconst webhookReturnData = await apiRequest.call(this, 'POST', endpoint, {});\n\t\t\t\tconst webhookUrl = this.getNodeWebhookUrl('default');\n\n\t\t\t\tif (webhookReturnData.result.url === webhookUrl) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\tasync create(this: IHookFunctions): Promise<boolean> {\n\t\t\t\tconst webhookUrl = this.getNodeWebhookUrl('default');\n\n\t\t\t\tlet allowedUpdates = this.getNodeParameter('updates') as string[];\n\n\t\t\t\tif ((allowedUpdates || []).includes('*')) {\n\t\t\t\t\tallowedUpdates = [];\n\t\t\t\t}\n\n\t\t\t\tconst endpoint = 'setWebhook';\n\n\t\t\t\tconst secret_token = getSecretToken.call(this);\n\n\t\t\t\tconst body = {\n\t\t\t\t\turl: webhookUrl,\n\t\t\t\t\tallowed_updates: allowedUpdates,\n\t\t\t\t\tsecret_token,\n\t\t\t\t};\n\n\t\t\t\tawait apiRequest.call(this, 'POST', endpoint, body);\n\n\t\t\t\treturn true;\n\t\t\t},\n\t\t\tasync delete(this: IHookFunctions): Promise<boolean> {\n\t\t\t\tconst endpoint = 'deleteWebhook';\n\t\t\t\tconst body = {};\n\n\t\t\t\ttry {\n\t\t\t\t\tawait apiRequest.call(this, 'POST', endpoint, body);\n\t\t\t\t} catch (error) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\treturn true;\n\t\t\t},\n\t\t},\n\t};\n\n\tasync webhook(this: IWebhookFunctions): Promise<IWebhookResponseData> {\n\t\tconst credentials = await this.getCredentials('telegramApi');\n\n\t\tconst bodyData = this.getBodyData() as IEvent;\n\t\tconst headerData = this.getHeaderData();\n\n\t\tconst nodeVersion = this.getNode().typeVersion;\n\t\tif (nodeVersion > 1) {\n\t\t\tconst secret = getSecretToken.call(this);\n\t\t\tconst secretBuffer = Buffer.from(secret);\n\t\t\tconst headerSecretBuffer = Buffer.from(\n\t\t\t\tString(headerData['x-telegram-bot-api-secret-token'] ?? ''),\n\t\t\t);\n\t\t\tif (\n\t\t\t\tsecretBuffer.byteLength !== headerSecretBuffer.byteLength ||\n\t\t\t\t!crypto.timingSafeEqual(secretBuffer, headerSecretBuffer)\n\t\t\t) {\n\t\t\t\tconst res = this.getResponseObject();\n\t\t\t\tres.status(403).json({ message: 'Provided secret is not valid' });\n\t\t\t\treturn {\n\t\t\t\t\tnoWebhookResponse: true,\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tconst additionalFields = this.getNodeParameter('additionalFields') as IDataObject;\n\n\t\tif (additionalFields.download === true) {\n\t\t\tlet imageSize = 'large';\n\n\t\t\tlet key: 'message' | 'channel_post' = 'message';\n\n\t\t\tif (bodyData.channel_post) {\n\t\t\t\tkey = 'channel_post';\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\t(bodyData[key]?.photo && Array.isArray(bodyData[key]?.photo)) ||\n\t\t\t\tbodyData[key]?.document ||\n\t\t\t\tbodyData[key]?.video\n\t\t\t) {\n\t\t\t\tif (additionalFields.imageSize) {\n\t\t\t\t\timageSize = additionalFields.imageSize as string;\n\t\t\t\t}\n\n\t\t\t\tlet fileId;\n\n\t\t\t\tif (bodyData[key]?.photo) {\n\t\t\t\t\tlet image = getImageBySize(\n\t\t\t\t\t\tbodyData[key]?.photo as IDataObject[],\n\t\t\t\t\t\timageSize,\n\t\t\t\t\t) as IDataObject;\n\n\t\t\t\t\t// When the image is sent from the desktop app telegram does not resize the image\n\t\t\t\t\t// So return the only image available\n\t\t\t\t\t// Basically the Image Size parameter would work just when the images comes from the mobile app\n\t\t\t\t\tif (image === undefined) {\n\t\t\t\t\t\timage = bodyData[key]!.photo![0];\n\t\t\t\t\t}\n\n\t\t\t\t\tfileId = image.file_id;\n\t\t\t\t} else if (bodyData[key]?.video) {\n\t\t\t\t\tfileId = bodyData[key]?.video?.file_id;\n\t\t\t\t} else {\n\t\t\t\t\tfileId = bodyData[key]?.document?.file_id;\n\t\t\t\t}\n\n\t\t\t\tconst {\n\t\t\t\t\tresult: { file_path },\n\t\t\t\t} = await apiRequest.call(this, 'GET', `getFile?file_id=${fileId}`, {});\n\n\t\t\t\tconst file = await apiRequest.call(\n\t\t\t\t\tthis,\n\t\t\t\t\t'GET',\n\t\t\t\t\t'',\n\t\t\t\t\t{},\n\t\t\t\t\t{},\n\t\t\t\t\t{\n\t\t\t\t\t\tjson: false,\n\t\t\t\t\t\tencoding: null,\n\t\t\t\t\t\turi: `${credentials.baseUrl}/file/bot${credentials.accessToken}/${file_path}`,\n\t\t\t\t\t\tresolveWithFullResponse: true,\n\t\t\t\t\t},\n\t\t\t\t);\n\n\t\t\t\tconst data = Buffer.from(file.body as string);\n\n\t\t\t\tconst fileName = file_path.split('/').pop();\n\n\t\t\t\tconst binaryData = await this.helpers.prepareBinaryData(\n\t\t\t\t\tdata as unknown as Buffer,\n\t\t\t\t\tfileName as string,\n\t\t\t\t);\n\n\t\t\t\treturn {\n\t\t\t\t\tworkflowData: [\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tjson: bodyData as unknown as IDataObject,\n\t\t\t\t\t\t\t\tbinary: {\n\t\t\t\t\t\t\t\t\tdata: binaryData,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t],\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif (nodeVersion >= 1.2) {\n\t\t\tif (additionalFields.chatIds) {\n\t\t\t\tconst chatIds = additionalFields.chatIds as string;\n\t\t\t\tconst splitIds = chatIds.split(',').map((chatId) => chatId.trim());\n\t\t\t\tif (!splitIds.includes(String(bodyData.message?.chat?.id))) {\n\t\t\t\t\treturn {};\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (additionalFields.userIds) {\n\t\t\t\tconst userIds = additionalFields.userIds as string;\n\t\t\t\tconst splitIds = userIds.split(',').map((userId) => userId.trim());\n\t\t\t\tif (!splitIds.includes(String(bodyData.message?.from?.id))) {\n\t\t\t\t\treturn {};\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tworkflowData: [this.helpers.returnJsonArray([bodyData as unknown as IDataObject])],\n\t\t};\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAmB;AASnB,0BAAoC;AAEpC,8BAA2D;AAGpD,MAAM,gBAAqC;AAAA,EAA3C;AACN,uBAAoC;AAAA,MACnC,aAAa;AAAA,MACb,MAAM;AAAA,MACN,MAAM;AAAA,MACN,OAAO,CAAC,SAAS;AAAA,MACjB,SAAS,CAAC,GAAG,KAAK,GAAG;AAAA,MACrB,gBAAgB;AAAA,MAChB,UAAU;AAAA,MACV,aAAa;AAAA,MACb,UAAU;AAAA,QACT,MAAM;AAAA,MACP;AAAA,MACA,QAAQ,CAAC;AAAA,MACT,SAAS,CAAC,wCAAoB,IAAI;AAAA,MAClC,aAAa;AAAA,QACZ;AAAA,UACC,MAAM;AAAA,UACN,UAAU;AAAA,QACX;AAAA,MACD;AAAA,MACA,UAAU;AAAA,QACT;AAAA,UACC,MAAM;AAAA,UACN,YAAY;AAAA,UACZ,cAAc;AAAA,UACd,MAAM;AAAA,QACP;AAAA,MACD;AAAA,MACA,YAAY;AAAA,QACX;AAAA,UACC,aACC;AAAA,UACD,MAAM;AAAA,UACN,MAAM;AAAA,UACN,SAAS;AAAA,QACV;AAAA,QACA;AAAA,UACC,aAAa;AAAA,UACb,MAAM;AAAA,UACN,MAAM;AAAA,UACN,SAAS;AAAA,YACR;AAAA,cACC,MAAM;AAAA,cACN,OAAO;AAAA,cACP,aAAa;AAAA,YACd;AAAA,YACA;AAAA,cACC,MAAM;AAAA,cACN,OAAO;AAAA,cACP,aAAa;AAAA,YACd;AAAA,YACA;AAAA,cACC,MAAM;AAAA,cACN,OAAO;AAAA,cACP,aACC;AAAA,YACF;AAAA,YACA;AAAA,cACC,MAAM;AAAA,cACN,OAAO;AAAA,cACP,aACC;AAAA,YACF;AAAA,YACA;AAAA,cACC,MAAM;AAAA,cACN,OAAO;AAAA,cACP,aACC;AAAA,YACF;AAAA,YACA;AAAA,cACC,MAAM;AAAA,cACN,OAAO;AAAA,cACP,aAAa;AAAA,YACd;AAAA,YACA;AAAA,cACC,MAAM;AAAA,cACN,OAAO;AAAA,cACP,aAAa;AAAA,YACd;AAAA,YACA;AAAA,cACC,MAAM;AAAA,cACN,OAAO;AAAA,cACP,QAAQ;AAAA,cACR,aACC;AAAA,YACF;AAAA,YACA;AAAA,cACC,MAAM;AAAA,cACN,OAAO;AAAA,cACP,aACC;AAAA,YACF;AAAA,YACA;AAAA,cACC,MAAM;AAAA,cACN,OAAO;AAAA,cACP,aACC;AAAA,YACF;AAAA,UACD;AAAA,UACA,UAAU;AAAA,UACV,SAAS,CAAC;AAAA,QACX;AAAA,QACA;AAAA,UACC,aACC;AAAA,UACD,MAAM;AAAA,UACN,MAAM;AAAA,UACN,SAAS;AAAA,QACV;AAAA,QACA;AAAA,UACC,aAAa;AAAA,UACb,MAAM;AAAA,UACN,MAAM;AAAA,UACN,aAAa;AAAA,UACb,SAAS,CAAC;AAAA,UACV,SAAS;AAAA,YACR;AAAA,cACC,aAAa;AAAA,cACb,MAAM;AAAA,cACN,MAAM;AAAA,cACN,SAAS;AAAA;AAAA,cAET,aACC;AAAA,YACF;AAAA,YACA;AAAA,cACC,aAAa;AAAA,cACb,MAAM;AAAA,cACN,MAAM;AAAA,cACN,gBAAgB;AAAA,gBACf,MAAM;AAAA,kBACL,UAAU,CAAC,IAAI;AAAA,gBAChB;AAAA,cACD;AAAA,cACA,SAAS;AAAA,gBACR;AAAA,kBACC,MAAM;AAAA,kBACN,OAAO;AAAA,gBACR;AAAA,gBACA;AAAA,kBACC,MAAM;AAAA,kBACN,OAAO;AAAA,gBACR;AAAA,gBACA;AAAA,kBACC,MAAM;AAAA,kBACN,OAAO;AAAA,gBACR;AAAA,gBACA;AAAA,kBACC,MAAM;AAAA,kBACN,OAAO;AAAA,gBACR;AAAA,cACD;AAAA,cACA,SAAS;AAAA,cACT,aAAa;AAAA,YACd;AAAA,YACA;AAAA,cACC,aAAa;AAAA,cACb,MAAM;AAAA,cACN,MAAM;AAAA,cACN,SAAS;AAAA,cACT,aACC;AAAA,cACD,gBAAgB;AAAA,gBACf,MAAM;AAAA,kBACL,YAAY,CAAC,EAAE,MAAM,EAAE,KAAK,IAAI,EAAE,CAAC;AAAA,gBACpC;AAAA,cACD;AAAA,YACD;AAAA,YACA;AAAA,cACC,aAAa;AAAA,cACb,MAAM;AAAA,cACN,MAAM;AAAA,cACN,SAAS;AAAA,cACT,aACC;AAAA,cACD,gBAAgB;AAAA,gBACf,MAAM;AAAA,kBACL,YAAY,CAAC,EAAE,MAAM,EAAE,KAAK,IAAI,EAAE,CAAC;AAAA,gBACpC;AAAA,cACD;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAEA,0BAAiB;AAAA,MAChB,SAAS;AAAA,QACR,MAAM,cAAoD;AACzD,gBAAM,WAAW;AACjB,gBAAM,oBAAoB,MAAM,mCAAW,KAAK,MAAM,QAAQ,UAAU,CAAC,CAAC;AAC1E,gBAAM,aAAa,KAAK,kBAAkB,SAAS;AAEnD,cAAI,kBAAkB,OAAO,QAAQ,YAAY;AAChD,mBAAO;AAAA,UACR;AAEA,iBAAO;AAAA,QACR;AAAA,QACA,MAAM,SAA+C;AACpD,gBAAM,aAAa,KAAK,kBAAkB,SAAS;AAEnD,cAAI,iBAAiB,KAAK,iBAAiB,SAAS;AAEpD,eAAK,kBAAkB,CAAC,GAAG,SAAS,GAAG,GAAG;AACzC,6BAAiB,CAAC;AAAA,UACnB;AAEA,gBAAM,WAAW;AAEjB,gBAAM,eAAe,uCAAe,KAAK,IAAI;AAE7C,gBAAM,OAAO;AAAA,YACZ,KAAK;AAAA,YACL,iBAAiB;AAAA,YACjB;AAAA,UACD;AAEA,gBAAM,mCAAW,KAAK,MAAM,QAAQ,UAAU,IAAI;AAElD,iBAAO;AAAA,QACR;AAAA,QACA,MAAM,SAA+C;AACpD,gBAAM,WAAW;AACjB,gBAAM,OAAO,CAAC;AAEd,cAAI;AACH,kBAAM,mCAAW,KAAK,MAAM,QAAQ,UAAU,IAAI;AAAA,UACnD,SAAS,OAAO;AACf,mBAAO;AAAA,UACR;AAEA,iBAAO;AAAA,QACR;AAAA,MACD;AAAA,IACD;AAAA;AAAA,EAEA,MAAM,UAAgE;AACrE,UAAM,cAAc,MAAM,KAAK,eAAe,aAAa;AAE3D,UAAM,WAAW,KAAK,YAAY;AAClC,UAAM,aAAa,KAAK,cAAc;AAEtC,UAAM,cAAc,KAAK,QAAQ,EAAE;AACnC,QAAI,cAAc,GAAG;AACpB,YAAM,SAAS,uCAAe,KAAK,IAAI;AACvC,YAAM,eAAe,OAAO,KAAK,MAAM;AACvC,YAAM,qBAAqB,OAAO;AAAA,QACjC,OAAO,WAAW,iCAAiC,KAAK,EAAE;AAAA,MAC3D;AACA,UACC,aAAa,eAAe,mBAAmB,cAC/C,CAAC,cAAAA,QAAO,gBAAgB,cAAc,kBAAkB,GACvD;AACD,cAAM,MAAM,KAAK,kBAAkB;AACnC,YAAI,OAAO,GAAG,EAAE,KAAK,EAAE,SAAS,+BAA+B,CAAC;AAChE,eAAO;AAAA,UACN,mBAAmB;AAAA,QACpB;AAAA,MACD;AAAA,IACD;AAEA,UAAM,mBAAmB,KAAK,iBAAiB,kBAAkB;AAEjE,QAAI,iBAAiB,aAAa,MAAM;AACvC,UAAI,YAAY;AAEhB,UAAI,MAAkC;AAEtC,UAAI,SAAS,cAAc;AAC1B,cAAM;AAAA,MACP;AAEA,UACE,SAAS,GAAG,GAAG,SAAS,MAAM,QAAQ,SAAS,GAAG,GAAG,KAAK,KAC3D,SAAS,GAAG,GAAG,YACf,SAAS,GAAG,GAAG,OACd;AACD,YAAI,iBAAiB,WAAW;AAC/B,sBAAY,iBAAiB;AAAA,QAC9B;AAEA,YAAI;AAEJ,YAAI,SAAS,GAAG,GAAG,OAAO;AACzB,cAAI,YAAQ;AAAA,YACX,SAAS,GAAG,GAAG;AAAA,YACf;AAAA,UACD;AAKA,cAAI,UAAU,QAAW;AACxB,oBAAQ,SAAS,GAAG,EAAG,MAAO,CAAC;AAAA,UAChC;AAEA,mBAAS,MAAM;AAAA,QAChB,WAAW,SAAS,GAAG,GAAG,OAAO;AAChC,mBAAS,SAAS,GAAG,GAAG,OAAO;AAAA,QAChC,OAAO;AACN,mBAAS,SAAS,GAAG,GAAG,UAAU;AAAA,QACnC;AAEA,cAAM;AAAA,UACL,QAAQ,EAAE,UAAU;AAAA,QACrB,IAAI,MAAM,mCAAW,KAAK,MAAM,OAAO,mBAAmB,MAAM,IAAI,CAAC,CAAC;AAEtE,cAAM,OAAO,MAAM,mCAAW;AAAA,UAC7B;AAAA,UACA;AAAA,UACA;AAAA,UACA,CAAC;AAAA,UACD,CAAC;AAAA,UACD;AAAA,YACC,MAAM;AAAA,YACN,UAAU;AAAA,YACV,KAAK,GAAG,YAAY,OAAO,YAAY,YAAY,WAAW,IAAI,SAAS;AAAA,YAC3E,yBAAyB;AAAA,UAC1B;AAAA,QACD;AAEA,cAAM,OAAO,OAAO,KAAK,KAAK,IAAc;AAE5C,cAAM,WAAW,UAAU,MAAM,GAAG,EAAE,IAAI;AAE1C,cAAM,aAAa,MAAM,KAAK,QAAQ;AAAA,UACrC;AAAA,UACA;AAAA,QACD;AAEA,eAAO;AAAA,UACN,cAAc;AAAA,YACb;AAAA,cACC;AAAA,gBACC,MAAM;AAAA,gBACN,QAAQ;AAAA,kBACP,MAAM;AAAA,gBACP;AAAA,cACD;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAEA,QAAI,eAAe,KAAK;AACvB,UAAI,iBAAiB,SAAS;AAC7B,cAAM,UAAU,iBAAiB;AACjC,cAAM,WAAW,QAAQ,MAAM,GAAG,EAAE,IAAI,CAAC,WAAW,OAAO,KAAK,CAAC;AACjE,YAAI,CAAC,SAAS,SAAS,OAAO,SAAS,SAAS,MAAM,EAAE,CAAC,GAAG;AAC3D,iBAAO,CAAC;AAAA,QACT;AAAA,MACD;AAEA,UAAI,iBAAiB,SAAS;AAC7B,cAAM,UAAU,iBAAiB;AACjC,cAAM,WAAW,QAAQ,MAAM,GAAG,EAAE,IAAI,CAAC,WAAW,OAAO,KAAK,CAAC;AACjE,YAAI,CAAC,SAAS,SAAS,OAAO,SAAS,SAAS,MAAM,EAAE,CAAC,GAAG;AAC3D,iBAAO,CAAC;AAAA,QACT;AAAA,MACD;AAAA,IACD;AAEA,WAAO;AAAA,MACN,cAAc,CAAC,KAAK,QAAQ,gBAAgB,CAAC,QAAkC,CAAC,CAAC;AAAA,IAClF;AAAA,EACD;AACD;","names":["crypto"]}
1
+ {"version":3,"sources":["../../../nodes/Telegram/TelegramTrigger.node.ts"],"sourcesContent":["import crypto from 'crypto';\nimport type {\n\tIHookFunctions,\n\tIWebhookFunctions,\n\tIDataObject,\n\tINodeType,\n\tINodeTypeDescription,\n\tIWebhookResponseData,\n} from 'n8n-workflow';\nimport { NodeConnectionTypes } from 'n8n-workflow';\n\nimport { apiRequest, getSecretToken } from './GenericFunctions';\nimport type { IEvent } from './IEvent';\nimport { downloadFile } from './util/triggerUtils';\n\nexport class TelegramTrigger implements INodeType {\n\tdescription: INodeTypeDescription = {\n\t\tdisplayName: 'Telegram Trigger',\n\t\tname: 'telegramTrigger',\n\t\ticon: 'file:telegram.svg',\n\t\tgroup: ['trigger'],\n\t\tversion: [1, 1.1, 1.2],\n\t\tdefaultVersion: 1.2,\n\t\tsubtitle: '=Updates: {{$parameter[\"updates\"].join(\", \")}}',\n\t\tdescription: 'Starts the workflow on a Telegram update',\n\t\tdefaults: {\n\t\t\tname: 'Telegram Trigger',\n\t\t},\n\t\tinputs: [],\n\t\toutputs: [NodeConnectionTypes.Main],\n\t\tcredentials: [\n\t\t\t{\n\t\t\t\tname: 'telegramApi',\n\t\t\t\trequired: true,\n\t\t\t},\n\t\t],\n\t\twebhooks: [\n\t\t\t{\n\t\t\t\tname: 'default',\n\t\t\t\thttpMethod: 'POST',\n\t\t\t\tresponseMode: 'onReceived',\n\t\t\t\tpath: 'webhook',\n\t\t\t},\n\t\t],\n\t\tproperties: [\n\t\t\t{\n\t\t\t\tdisplayName:\n\t\t\t\t\t'Due to Telegram API limitations, you can use just one Telegram trigger for each bot at a time',\n\t\t\t\tname: 'telegramTriggerNotice',\n\t\t\t\ttype: 'notice',\n\t\t\t\tdefault: '',\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Trigger On',\n\t\t\t\tname: 'updates',\n\t\t\t\ttype: 'multiOptions',\n\t\t\t\toptions: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: '*',\n\t\t\t\t\t\tvalue: '*',\n\t\t\t\t\t\tdescription: 'All updates',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Callback Query',\n\t\t\t\t\t\tvalue: 'callback_query',\n\t\t\t\t\t\tdescription: 'Trigger on new incoming callback query',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Channel Post',\n\t\t\t\t\t\tvalue: 'channel_post',\n\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t'Trigger on new incoming channel post of any kind — text, photo, sticker, etc',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Edited Channel Post',\n\t\t\t\t\t\tvalue: 'edited_channel_post',\n\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t'Trigger on new version of a channel post that is known to the bot and was edited',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Edited Message',\n\t\t\t\t\t\tvalue: 'edited_message',\n\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t'Trigger on new version of a channel post that is known to the bot and was edited',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Inline Query',\n\t\t\t\t\t\tvalue: 'inline_query',\n\t\t\t\t\t\tdescription: 'Trigger on new incoming inline query',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Message',\n\t\t\t\t\t\tvalue: 'message',\n\t\t\t\t\t\tdescription: 'Trigger on new incoming message of any kind — text, photo, sticker, etc',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Poll',\n\t\t\t\t\t\tvalue: 'poll',\n\t\t\t\t\t\taction: 'On Poll Change',\n\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t'Trigger on new poll state. Bots receive only updates about stopped polls and polls, which are sent by the bot.',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Pre-Checkout Query',\n\t\t\t\t\t\tvalue: 'pre_checkout_query',\n\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t'Trigger on new incoming pre-checkout query. Contains full information about checkout.',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Shipping Query',\n\t\t\t\t\t\tvalue: 'shipping_query',\n\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t'Trigger on new incoming shipping query. Only for invoices with flexible price.',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\trequired: true,\n\t\t\t\tdefault: [],\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName:\n\t\t\t\t\t'Every uploaded attachment, even if sent in a group, will trigger a separate event. You can identify that an attachment belongs to a certain group by <code>media_group_id</code> .',\n\t\t\t\tname: 'attachmentNotice',\n\t\t\t\ttype: 'notice',\n\t\t\t\tdefault: '',\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Additional Fields',\n\t\t\t\tname: 'additionalFields',\n\t\t\t\ttype: 'collection',\n\t\t\t\tplaceholder: 'Add Field',\n\t\t\t\tdefault: {},\n\t\t\t\toptions: [\n\t\t\t\t\t{\n\t\t\t\t\t\tdisplayName: 'Download Images/Files',\n\t\t\t\t\t\tname: 'download',\n\t\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\t\tdefault: false,\n\t\t\t\t\t\t// eslint-disable-next-line n8n-nodes-base/node-param-description-boolean-without-whether\n\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t\"Telegram delivers the image in multiple sizes. By default, just the large image would be downloaded. If you want to change the size, set the field 'Image Size'.\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tdisplayName: 'Image Size',\n\t\t\t\t\t\tname: 'imageSize',\n\t\t\t\t\t\ttype: 'options',\n\t\t\t\t\t\tdisplayOptions: {\n\t\t\t\t\t\t\tshow: {\n\t\t\t\t\t\t\t\tdownload: [true],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\toptions: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: 'Small',\n\t\t\t\t\t\t\t\tvalue: 'small',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: 'Medium',\n\t\t\t\t\t\t\t\tvalue: 'medium',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: 'Large',\n\t\t\t\t\t\t\t\tvalue: 'large',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: 'Extra Large',\n\t\t\t\t\t\t\t\tvalue: 'extraLarge',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t\tdefault: 'large',\n\t\t\t\t\t\tdescription: 'The size of the image to be downloaded',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tdisplayName: 'Restrict to Chat IDs',\n\t\t\t\t\t\tname: 'chatIds',\n\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\tdefault: '',\n\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t'The chat IDs to restrict the trigger to. Multiple can be defined separated by comma.',\n\t\t\t\t\t\tdisplayOptions: {\n\t\t\t\t\t\t\tshow: {\n\t\t\t\t\t\t\t\t'@version': [{ _cnd: { gte: 1.1 } }],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tdisplayName: 'Restrict to User IDs',\n\t\t\t\t\t\tname: 'userIds',\n\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\tdefault: '',\n\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t'The user IDs to restrict the trigger to. Multiple can be defined separated by comma.',\n\t\t\t\t\t\tdisplayOptions: {\n\t\t\t\t\t\t\tshow: {\n\t\t\t\t\t\t\t\t'@version': [{ _cnd: { gte: 1.1 } }],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t};\n\n\twebhookMethods = {\n\t\tdefault: {\n\t\t\tasync checkExists(this: IHookFunctions): Promise<boolean> {\n\t\t\t\tconst endpoint = 'getWebhookInfo';\n\t\t\t\tconst webhookReturnData = await apiRequest.call(this, 'POST', endpoint, {});\n\t\t\t\tconst webhookUrl = this.getNodeWebhookUrl('default');\n\n\t\t\t\tif (webhookReturnData.result.url === webhookUrl) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\tasync create(this: IHookFunctions): Promise<boolean> {\n\t\t\t\tconst webhookUrl = this.getNodeWebhookUrl('default');\n\n\t\t\t\tlet allowedUpdates = this.getNodeParameter('updates') as string[];\n\n\t\t\t\tif ((allowedUpdates || []).includes('*')) {\n\t\t\t\t\tallowedUpdates = [];\n\t\t\t\t}\n\n\t\t\t\tconst endpoint = 'setWebhook';\n\n\t\t\t\tconst secret_token = getSecretToken.call(this);\n\n\t\t\t\tconst body = {\n\t\t\t\t\turl: webhookUrl,\n\t\t\t\t\tallowed_updates: allowedUpdates,\n\t\t\t\t\tsecret_token,\n\t\t\t\t};\n\n\t\t\t\tawait apiRequest.call(this, 'POST', endpoint, body);\n\n\t\t\t\treturn true;\n\t\t\t},\n\t\t\tasync delete(this: IHookFunctions): Promise<boolean> {\n\t\t\t\tconst endpoint = 'deleteWebhook';\n\t\t\t\tconst body = {};\n\n\t\t\t\ttry {\n\t\t\t\t\tawait apiRequest.call(this, 'POST', endpoint, body);\n\t\t\t\t} catch (error) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\treturn true;\n\t\t\t},\n\t\t},\n\t};\n\n\tasync webhook(this: IWebhookFunctions): Promise<IWebhookResponseData> {\n\t\tconst credentials = await this.getCredentials('telegramApi');\n\n\t\tconst bodyData = this.getBodyData() as IEvent;\n\t\tconst headerData = this.getHeaderData();\n\n\t\tconst nodeVersion = this.getNode().typeVersion;\n\t\tif (nodeVersion > 1) {\n\t\t\tconst secret = getSecretToken.call(this);\n\t\t\tconst secretBuffer = Buffer.from(secret);\n\t\t\tconst headerSecretBuffer = Buffer.from(\n\t\t\t\tString(headerData['x-telegram-bot-api-secret-token'] ?? ''),\n\t\t\t);\n\t\t\tif (\n\t\t\t\tsecretBuffer.byteLength !== headerSecretBuffer.byteLength ||\n\t\t\t\t!crypto.timingSafeEqual(secretBuffer, headerSecretBuffer)\n\t\t\t) {\n\t\t\t\tconst res = this.getResponseObject();\n\t\t\t\tres.status(403).json({ message: 'Provided secret is not valid' });\n\t\t\t\treturn {\n\t\t\t\t\tnoWebhookResponse: true,\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tconst additionalFields = this.getNodeParameter('additionalFields') as IDataObject;\n\n\t\tif (additionalFields.download) {\n\t\t\tconst downloadFilesResult = await downloadFile(this, credentials, bodyData, additionalFields);\n\n\t\t\tif (Object.entries(downloadFilesResult).length !== 0) return downloadFilesResult;\n\t\t}\n\n\t\tif (nodeVersion >= 1.2) {\n\t\t\tif (additionalFields.chatIds) {\n\t\t\t\tconst chatIds = additionalFields.chatIds as string;\n\t\t\t\tconst splitIds = chatIds.split(',').map((chatId) => chatId.trim());\n\t\t\t\tif (!splitIds.includes(String(bodyData.message?.chat?.id))) {\n\t\t\t\t\treturn {};\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (additionalFields.userIds) {\n\t\t\t\tconst userIds = additionalFields.userIds as string;\n\t\t\t\tconst splitIds = userIds.split(',').map((userId) => userId.trim());\n\t\t\t\tif (!splitIds.includes(String(bodyData.message?.from?.id))) {\n\t\t\t\t\treturn {};\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tworkflowData: [this.helpers.returnJsonArray([bodyData as unknown as IDataObject])],\n\t\t};\n\t}\n}\n"],"mappings":"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","names":["crypto"]}
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var triggerUtils_exports = {};
20
+ __export(triggerUtils_exports, {
21
+ downloadFile: () => downloadFile
22
+ });
23
+ module.exports = __toCommonJS(triggerUtils_exports);
24
+ var import_GenericFunctions = require("../GenericFunctions");
25
+ const downloadFile = async (webhookFunctions, credentials, bodyData, additionalFields) => {
26
+ let imageSize = "large";
27
+ let key = "message";
28
+ if (bodyData.channel_post) {
29
+ key = "channel_post";
30
+ }
31
+ if (bodyData[key]?.photo && Array.isArray(bodyData[key]?.photo) || bodyData[key]?.document || bodyData[key]?.video) {
32
+ if (additionalFields.imageSize) {
33
+ imageSize = additionalFields.imageSize;
34
+ }
35
+ let fileId;
36
+ if (bodyData[key]?.photo) {
37
+ let image = (0, import_GenericFunctions.getImageBySize)(bodyData[key]?.photo, imageSize);
38
+ if (image === void 0) {
39
+ image = bodyData[key].photo[0];
40
+ }
41
+ fileId = image.file_id;
42
+ } else if (bodyData[key]?.video) {
43
+ fileId = bodyData[key]?.video?.file_id;
44
+ } else {
45
+ fileId = bodyData[key]?.document?.file_id;
46
+ }
47
+ const {
48
+ result: { file_path }
49
+ } = await import_GenericFunctions.apiRequest.call(webhookFunctions, "GET", `getFile?file_id=${fileId}`, {});
50
+ const file = await import_GenericFunctions.apiRequest.call(
51
+ webhookFunctions,
52
+ "GET",
53
+ "",
54
+ {},
55
+ {},
56
+ {
57
+ json: false,
58
+ encoding: null,
59
+ uri: `${credentials.baseUrl}/file/bot${credentials.accessToken}/${file_path}`,
60
+ resolveWithFullResponse: true
61
+ }
62
+ );
63
+ const data = Buffer.from(file.body);
64
+ const fileName = file_path.split("/").pop();
65
+ const binaryData = await webhookFunctions.helpers.prepareBinaryData(
66
+ data,
67
+ fileName
68
+ );
69
+ return {
70
+ workflowData: [
71
+ [
72
+ {
73
+ json: bodyData,
74
+ binary: {
75
+ data: binaryData
76
+ }
77
+ }
78
+ ]
79
+ ]
80
+ };
81
+ }
82
+ return {};
83
+ };
84
+ // Annotate the CommonJS export names for ESM import in node:
85
+ 0 && (module.exports = {
86
+ downloadFile
87
+ });
88
+ //# sourceMappingURL=triggerUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../nodes/Telegram/util/triggerUtils.ts"],"sourcesContent":["import {\n\ttype ICredentialDataDecryptedObject,\n\ttype IDataObject,\n\ttype IWebhookFunctions,\n\ttype IWebhookResponseData,\n} from 'n8n-workflow';\n\nimport { apiRequest, getImageBySize } from '../GenericFunctions';\nimport { type IEvent } from '../IEvent';\n\nexport const downloadFile = async (\n\twebhookFunctions: IWebhookFunctions,\n\tcredentials: ICredentialDataDecryptedObject,\n\tbodyData: IEvent,\n\tadditionalFields: IDataObject,\n): Promise<IWebhookResponseData> => {\n\tlet imageSize = 'large';\n\n\tlet key: 'message' | 'channel_post' = 'message';\n\n\tif (bodyData.channel_post) {\n\t\tkey = 'channel_post';\n\t}\n\n\tif (\n\t\t(bodyData[key]?.photo && Array.isArray(bodyData[key]?.photo)) ||\n\t\tbodyData[key]?.document ||\n\t\tbodyData[key]?.video\n\t) {\n\t\tif (additionalFields.imageSize) {\n\t\t\timageSize = additionalFields.imageSize as string;\n\t\t}\n\n\t\tlet fileId;\n\n\t\tif (bodyData[key]?.photo) {\n\t\t\tlet image = getImageBySize(bodyData[key]?.photo as IDataObject[], imageSize) as IDataObject;\n\n\t\t\t// When the image is sent from the desktop app telegram does not resize the image\n\t\t\t// So return the only image available\n\t\t\t// Basically the Image Size parameter would work just when the images comes from the mobile app\n\t\t\tif (image === undefined) {\n\t\t\t\timage = bodyData[key]!.photo![0];\n\t\t\t}\n\n\t\t\tfileId = image.file_id;\n\t\t} else if (bodyData[key]?.video) {\n\t\t\tfileId = bodyData[key]?.video?.file_id;\n\t\t} else {\n\t\t\tfileId = bodyData[key]?.document?.file_id;\n\t\t}\n\n\t\tconst {\n\t\t\tresult: { file_path },\n\t\t} = await apiRequest.call(webhookFunctions, 'GET', `getFile?file_id=${fileId}`, {});\n\n\t\tconst file = await apiRequest.call(\n\t\t\twebhookFunctions,\n\t\t\t'GET',\n\t\t\t'',\n\t\t\t{},\n\t\t\t{},\n\t\t\t{\n\t\t\t\tjson: false,\n\t\t\t\tencoding: null,\n\t\t\t\turi: `${credentials.baseUrl}/file/bot${credentials.accessToken}/${file_path}`,\n\t\t\t\tresolveWithFullResponse: true,\n\t\t\t},\n\t\t);\n\n\t\tconst data = Buffer.from(file.body as string);\n\n\t\tconst fileName = file_path.split('/').pop();\n\n\t\tconst binaryData = await webhookFunctions.helpers.prepareBinaryData(\n\t\t\tdata as unknown as Buffer,\n\t\t\tfileName as string,\n\t\t);\n\n\t\treturn {\n\t\t\tworkflowData: [\n\t\t\t\t[\n\t\t\t\t\t{\n\t\t\t\t\t\tjson: bodyData as unknown as IDataObject,\n\t\t\t\t\t\tbinary: {\n\t\t\t\t\t\t\tdata: binaryData,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t],\n\t\t};\n\t}\n\n\treturn {};\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,8BAA2C;AAGpC,MAAM,eAAe,OAC3B,kBACA,aACA,UACA,qBACmC;AACnC,MAAI,YAAY;AAEhB,MAAI,MAAkC;AAEtC,MAAI,SAAS,cAAc;AAC1B,UAAM;AAAA,EACP;AAEA,MACE,SAAS,GAAG,GAAG,SAAS,MAAM,QAAQ,SAAS,GAAG,GAAG,KAAK,KAC3D,SAAS,GAAG,GAAG,YACf,SAAS,GAAG,GAAG,OACd;AACD,QAAI,iBAAiB,WAAW;AAC/B,kBAAY,iBAAiB;AAAA,IAC9B;AAEA,QAAI;AAEJ,QAAI,SAAS,GAAG,GAAG,OAAO;AACzB,UAAI,YAAQ,wCAAe,SAAS,GAAG,GAAG,OAAwB,SAAS;AAK3E,UAAI,UAAU,QAAW;AACxB,gBAAQ,SAAS,GAAG,EAAG,MAAO,CAAC;AAAA,MAChC;AAEA,eAAS,MAAM;AAAA,IAChB,WAAW,SAAS,GAAG,GAAG,OAAO;AAChC,eAAS,SAAS,GAAG,GAAG,OAAO;AAAA,IAChC,OAAO;AACN,eAAS,SAAS,GAAG,GAAG,UAAU;AAAA,IACnC;AAEA,UAAM;AAAA,MACL,QAAQ,EAAE,UAAU;AAAA,IACrB,IAAI,MAAM,mCAAW,KAAK,kBAAkB,OAAO,mBAAmB,MAAM,IAAI,CAAC,CAAC;AAElF,UAAM,OAAO,MAAM,mCAAW;AAAA,MAC7B;AAAA,MACA;AAAA,MACA;AAAA,MACA,CAAC;AAAA,MACD,CAAC;AAAA,MACD;AAAA,QACC,MAAM;AAAA,QACN,UAAU;AAAA,QACV,KAAK,GAAG,YAAY,OAAO,YAAY,YAAY,WAAW,IAAI,SAAS;AAAA,QAC3E,yBAAyB;AAAA,MAC1B;AAAA,IACD;AAEA,UAAM,OAAO,OAAO,KAAK,KAAK,IAAc;AAE5C,UAAM,WAAW,UAAU,MAAM,GAAG,EAAE,IAAI;AAE1C,UAAM,aAAa,MAAM,iBAAiB,QAAQ;AAAA,MACjD;AAAA,MACA;AAAA,IACD;AAEA,WAAO;AAAA,MACN,cAAc;AAAA,QACb;AAAA,UACC;AAAA,YACC,MAAM;AAAA,YACN,QAAQ;AAAA,cACP,MAAM;AAAA,YACP;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA,EACD;AAEA,SAAO,CAAC;AACT;","names":[]}
@@ -21,7 +21,6 @@ __export(Wait_node_exports, {
21
21
  Wait: () => Wait
22
22
  });
23
23
  module.exports = __toCommonJS(Wait_node_exports);
24
- var import_luxon = require("luxon");
25
24
  var import_n8n_workflow = require("n8n-workflow");
26
25
  var import_utilities = require("../../utils/utilities");
27
26
  var import_common = require("../Form/common.descriptions");
@@ -467,16 +466,16 @@ class Wait extends import_Webhook.Webhook {
467
466
  waitAmount *= 1e3;
468
467
  waitTill = new Date((/* @__PURE__ */ new Date()).getTime() + waitAmount);
469
468
  } else {
470
- const dateTimeStr = context.getNodeParameter("dateTime", 0);
471
- if (isNaN(Date.parse(dateTimeStr))) {
469
+ try {
470
+ const dateTimeStrRaw = context.getNodeParameter("dateTime", 0);
471
+ const parsedDateTime = (0, import_n8n_workflow.tryToParseDateTime)(dateTimeStrRaw, context.getTimezone());
472
+ waitTill = parsedDateTime.toUTC().toJSDate();
473
+ } catch (e) {
472
474
  throw new import_n8n_workflow.NodeOperationError(
473
475
  context.getNode(),
474
476
  "[Wait node] Cannot put execution to wait because `dateTime` parameter is not a valid date. Please pick a specific date and time to wait until."
475
477
  );
476
478
  }
477
- waitTill = import_luxon.DateTime.fromFormat(dateTimeStr, "yyyy-MM-dd'T'HH:mm:ss", {
478
- zone: context.getTimezone()
479
- }).toUTC().toJSDate();
480
479
  }
481
480
  const waitValue = Math.max(waitTill.getTime() - (/* @__PURE__ */ new Date()).getTime(), 0);
482
481
  if (waitValue < 65e3) {