n8n-nodes-base 1.92.0 → 1.93.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.
- package/dist/credentials/MicrosoftSharePointOAuth2Api.credentials.js +0 -9
- package/dist/credentials/MicrosoftSharePointOAuth2Api.credentials.js.map +1 -1
- package/dist/credentials/MicrosoftTeamsOAuth2Api.credentials.js +13 -0
- package/dist/credentials/MicrosoftTeamsOAuth2Api.credentials.js.map +1 -1
- package/dist/credentials/Snowflake.credentials.js +46 -2
- package/dist/credentials/Snowflake.credentials.js.map +1 -1
- package/dist/known/credentials.json +10 -1
- package/dist/known/nodes.json +20 -0
- package/dist/methods/defined.json +6 -0
- package/dist/methods/referenced.json +3 -0
- package/dist/nodes/Aws/IAM/AwsIam.node.js +95 -0
- package/dist/nodes/Aws/IAM/AwsIam.node.js.map +1 -0
- package/dist/nodes/Aws/IAM/AwsIam.node.json +18 -0
- package/dist/nodes/Aws/IAM/AwsIam.svg +18 -0
- package/dist/nodes/Aws/IAM/descriptions/common.js +188 -0
- package/dist/nodes/Aws/IAM/descriptions/common.js.map +1 -0
- package/dist/nodes/Aws/IAM/descriptions/group/Group.resource.js +175 -0
- package/dist/nodes/Aws/IAM/descriptions/group/Group.resource.js.map +1 -0
- package/dist/nodes/Aws/IAM/descriptions/group/create.operation.js +66 -0
- package/dist/nodes/Aws/IAM/descriptions/group/create.operation.js.map +1 -0
- package/dist/nodes/Aws/IAM/descriptions/group/delete.operation.js +43 -0
- package/dist/nodes/Aws/IAM/descriptions/group/delete.operation.js.map +1 -0
- package/dist/nodes/Aws/IAM/descriptions/group/get.operation.js +50 -0
- package/dist/nodes/Aws/IAM/descriptions/group/get.operation.js.map +1 -0
- package/dist/nodes/Aws/IAM/descriptions/group/getAll.operation.js +47 -0
- package/dist/nodes/Aws/IAM/descriptions/group/getAll.operation.js.map +1 -0
- package/dist/nodes/Aws/IAM/descriptions/group/update.operation.js +70 -0
- package/dist/nodes/Aws/IAM/descriptions/group/update.operation.js.map +1 -0
- package/dist/nodes/Aws/IAM/descriptions/index.js +42 -0
- package/dist/nodes/Aws/IAM/descriptions/index.js.map +1 -0
- package/dist/nodes/Aws/IAM/descriptions/user/User.resource.js +231 -0
- package/dist/nodes/Aws/IAM/descriptions/user/User.resource.js.map +1 -0
- package/dist/nodes/Aws/IAM/descriptions/user/addToGroup.operation.js +47 -0
- package/dist/nodes/Aws/IAM/descriptions/user/addToGroup.operation.js.map +1 -0
- package/dist/nodes/Aws/IAM/descriptions/user/create.operation.js +118 -0
- package/dist/nodes/Aws/IAM/descriptions/user/create.operation.js.map +1 -0
- package/dist/nodes/Aws/IAM/descriptions/user/delete.operation.js +43 -0
- package/dist/nodes/Aws/IAM/descriptions/user/delete.operation.js.map +1 -0
- package/dist/nodes/Aws/IAM/descriptions/user/get.operation.js +43 -0
- package/dist/nodes/Aws/IAM/descriptions/user/get.operation.js.map +1 -0
- package/dist/nodes/Aws/IAM/descriptions/user/getAll.operation.js +66 -0
- package/dist/nodes/Aws/IAM/descriptions/user/getAll.operation.js.map +1 -0
- package/dist/nodes/Aws/IAM/descriptions/user/removeFromGroup.operation.js +74 -0
- package/dist/nodes/Aws/IAM/descriptions/user/removeFromGroup.operation.js.map +1 -0
- package/dist/nodes/Aws/IAM/descriptions/user/update.operation.js +68 -0
- package/dist/nodes/Aws/IAM/descriptions/user/update.operation.js.map +1 -0
- package/dist/nodes/Aws/IAM/helpers/constants.js +47 -0
- package/dist/nodes/Aws/IAM/helpers/constants.js.map +1 -0
- package/dist/nodes/Aws/IAM/helpers/errorHandler.js +90 -0
- package/dist/nodes/Aws/IAM/helpers/errorHandler.js.map +1 -0
- package/dist/nodes/Aws/IAM/helpers/types.js +17 -0
- package/dist/nodes/Aws/IAM/helpers/types.js.map +1 -0
- package/dist/nodes/Aws/IAM/helpers/utils.js +279 -0
- package/dist/nodes/Aws/IAM/helpers/utils.js.map +1 -0
- package/dist/nodes/Aws/IAM/methods/index.js +39 -0
- package/dist/nodes/Aws/IAM/methods/index.js.map +1 -0
- package/dist/nodes/Aws/IAM/methods/listSearch.js +132 -0
- package/dist/nodes/Aws/IAM/methods/listSearch.js.map +1 -0
- package/dist/nodes/Aws/IAM/transport/index.js +64 -0
- package/dist/nodes/Aws/IAM/transport/index.js.map +1 -0
- package/dist/nodes/Cron/Cron.node.js +1 -1
- package/dist/nodes/Cron/Cron.node.js.map +1 -1
- package/dist/nodes/EmailReadImap/v1/EmailReadImapV1.node.js +2 -2
- package/dist/nodes/EmailReadImap/v1/EmailReadImapV1.node.js.map +1 -1
- package/dist/nodes/EmailReadImap/v2/EmailReadImapV2.node.js +2 -2
- package/dist/nodes/EmailReadImap/v2/EmailReadImapV2.node.js.map +1 -1
- package/dist/nodes/Evaluation/Evaluation/Description.node.js +146 -0
- package/dist/nodes/Evaluation/Evaluation/Description.node.js.map +1 -0
- package/dist/nodes/Evaluation/Evaluation/Evaluation.node.ee.js +117 -0
- package/dist/nodes/Evaluation/Evaluation/Evaluation.node.ee.js.map +1 -0
- package/dist/nodes/Evaluation/EvaluationTrigger/EvaluationTrigger.node.ee.js +187 -0
- package/dist/nodes/Evaluation/EvaluationTrigger/EvaluationTrigger.node.ee.js.map +1 -0
- package/dist/nodes/Evaluation/methods/index.js +42 -0
- package/dist/nodes/Evaluation/methods/index.js.map +1 -0
- package/dist/nodes/Evaluation/methods/loadOptions.js +40 -0
- package/dist/nodes/Evaluation/methods/loadOptions.js.map +1 -0
- package/dist/nodes/Evaluation/utils/evaluationTriggerUtils.js +119 -0
- package/dist/nodes/Evaluation/utils/evaluationTriggerUtils.js.map +1 -0
- package/dist/nodes/Evaluation/utils/evaluationUtils.js +171 -0
- package/dist/nodes/Evaluation/utils/evaluationUtils.js.map +1 -0
- package/dist/nodes/ExecuteWorkflow/ExecuteWorkflowTrigger/ExecuteWorkflowTrigger.node.js +4 -3
- package/dist/nodes/ExecuteWorkflow/ExecuteWorkflowTrigger/ExecuteWorkflowTrigger.node.js.map +1 -1
- package/dist/nodes/Form/common.descriptions.js +2 -2
- package/dist/nodes/Form/common.descriptions.js.map +1 -1
- package/dist/nodes/Google/Sheet/GoogleSheetsTrigger.node.js +113 -107
- package/dist/nodes/Google/Sheet/GoogleSheetsTrigger.node.js.map +1 -1
- package/dist/nodes/Google/Sheet/v2/actions/sheet/read.operation.js +52 -106
- package/dist/nodes/Google/Sheet/v2/actions/sheet/read.operation.js.map +1 -1
- package/dist/nodes/Google/Sheet/v2/actions/utils/readOperation.js +97 -0
- package/dist/nodes/Google/Sheet/v2/actions/utils/readOperation.js.map +1 -0
- package/dist/nodes/Google/Sheet/v2/actions/versionDescription.js +20 -17
- package/dist/nodes/Google/Sheet/v2/actions/versionDescription.js.map +1 -1
- package/dist/nodes/Google/YouTube/YouTube.node.js +4 -2
- package/dist/nodes/Google/YouTube/YouTube.node.js.map +1 -1
- package/dist/nodes/Interval/Interval.node.js +1 -1
- package/dist/nodes/Interval/Interval.node.js.map +1 -1
- package/dist/nodes/LocalFileTrigger/LocalFileTrigger.node.js +2 -2
- package/dist/nodes/LocalFileTrigger/LocalFileTrigger.node.js.map +1 -1
- package/dist/nodes/MQTT/MqttTrigger.node.js +2 -2
- package/dist/nodes/MQTT/MqttTrigger.node.js.map +1 -1
- package/dist/nodes/ManualTrigger/ManualTrigger.node.js +1 -1
- package/dist/nodes/ManualTrigger/ManualTrigger.node.js.map +1 -1
- package/dist/nodes/Microsoft/SharePoint/MicrosoftSharePoint.node.js +93 -0
- package/dist/nodes/Microsoft/SharePoint/MicrosoftSharePoint.node.js.map +1 -0
- package/dist/nodes/Microsoft/SharePoint/MicrosoftSharepoint.node.json +18 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/common.descriptions.js +190 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/common.descriptions.js.map +1 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/file/File.resource.js +108 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/file/File.resource.js.map +1 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/file/download.operation.js +62 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/file/download.operation.js.map +1 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/file/update.operation.js +129 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/file/update.operation.js.map +1 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/file/upload.operation.js +77 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/file/upload.operation.js.map +1 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/index.js +45 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/index.js.map +1 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/item/Item.resource.js +175 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/item/Item.resource.js.map +1 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/item/create.operation.js +100 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/item/create.operation.js.map +1 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/item/delete.operation.js +62 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/item/delete.operation.js.map +1 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/item/get.operation.js +83 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/item/get.operation.js.map +1 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/item/getAll.operation.js +203 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/item/getAll.operation.js.map +1 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/item/update.operation.js +100 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/item/update.operation.js.map +1 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/item/upsert.operation.js +100 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/item/upsert.operation.js.map +1 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/list/List.resource.js +99 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/list/List.resource.js.map +1 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/list/get.operation.js +65 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/list/get.operation.js.map +1 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/list/getAll.operation.js +105 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/list/getAll.operation.js.map +1 -0
- package/dist/nodes/Microsoft/SharePoint/helpers/interfaces.js +17 -0
- package/dist/nodes/Microsoft/SharePoint/helpers/interfaces.js.map +1 -0
- package/dist/nodes/Microsoft/SharePoint/helpers/utils.js +252 -0
- package/dist/nodes/Microsoft/SharePoint/helpers/utils.js.map +1 -0
- package/dist/nodes/Microsoft/SharePoint/methods/index.js +42 -0
- package/dist/nodes/Microsoft/SharePoint/methods/index.js.map +1 -0
- package/dist/nodes/Microsoft/SharePoint/methods/listSearch.js +222 -0
- package/dist/nodes/Microsoft/SharePoint/methods/listSearch.js.map +1 -0
- package/dist/nodes/Microsoft/SharePoint/methods/resourceMapping.js +104 -0
- package/dist/nodes/Microsoft/SharePoint/methods/resourceMapping.js.map +1 -0
- package/dist/nodes/Microsoft/SharePoint/test/credentials.js +54 -0
- package/dist/nodes/Microsoft/SharePoint/test/credentials.js.map +1 -0
- package/dist/nodes/Microsoft/SharePoint/transport/index.js +46 -0
- package/dist/nodes/Microsoft/SharePoint/transport/index.js.map +1 -0
- package/dist/nodes/Microsoft/Teams/MicrosoftTeamsTrigger.node.js +387 -0
- package/dist/nodes/Microsoft/Teams/MicrosoftTeamsTrigger.node.js.map +1 -0
- package/dist/nodes/Microsoft/Teams/MicrosoftTeamsTrigger.node.json +18 -0
- package/dist/nodes/Microsoft/Teams/v2/helpers/types.js +17 -0
- package/dist/nodes/Microsoft/Teams/v2/helpers/types.js.map +1 -0
- package/dist/nodes/Microsoft/Teams/v2/helpers/utils-trigger.js +147 -0
- package/dist/nodes/Microsoft/Teams/v2/helpers/utils-trigger.js.map +1 -0
- package/dist/nodes/Microsoft/Teams/v2/transport/index.js.map +1 -1
- package/dist/nodes/PostBin/BinDescription.js +1 -1
- package/dist/nodes/PostBin/BinDescription.js.map +1 -1
- package/dist/nodes/PostBin/GenericFunctions.js +5 -5
- package/dist/nodes/PostBin/GenericFunctions.js.map +1 -1
- package/dist/nodes/PostBin/PostBin.node.js +1 -1
- package/dist/nodes/PostBin/PostBin.node.js.map +1 -1
- package/dist/nodes/PostBin/RequestDescription.js +2 -2
- package/dist/nodes/PostBin/RequestDescription.js.map +1 -1
- package/dist/nodes/Postgres/PostgresTrigger.node.js +2 -2
- package/dist/nodes/Postgres/PostgresTrigger.node.js.map +1 -1
- package/dist/nodes/RabbitMQ/RabbitMQTrigger.node.js +2 -2
- package/dist/nodes/RabbitMQ/RabbitMQTrigger.node.js.map +1 -1
- package/dist/nodes/RespondToWebhook/RespondToWebhook.node.js +8 -3
- package/dist/nodes/RespondToWebhook/RespondToWebhook.node.js.map +1 -1
- package/dist/nodes/RespondToWebhook/utils.js +43 -0
- package/dist/nodes/RespondToWebhook/utils.js.map +1 -0
- package/dist/nodes/Schedule/ScheduleTrigger.node.js +1 -1
- package/dist/nodes/Schedule/ScheduleTrigger.node.js.map +1 -1
- package/dist/nodes/Snowflake/GenericFunctions.js +34 -2
- package/dist/nodes/Snowflake/GenericFunctions.js.map +1 -1
- package/dist/nodes/Snowflake/Snowflake.node.js +5 -7
- package/dist/nodes/Snowflake/Snowflake.node.js.map +1 -1
- package/dist/nodes/SseTrigger/SseTrigger.node.js +2 -2
- package/dist/nodes/SseTrigger/SseTrigger.node.js.map +1 -1
- package/dist/types/credentials.json +6 -6
- package/dist/types/nodes.json +22 -17
- package/dist/utils/workflowInputsResourceMapping/GenericFunctions.js +12 -2
- package/dist/utils/workflowInputsResourceMapping/GenericFunctions.js.map +1 -1
- package/package.json +13 -9
- /package/dist/{credentials/icons/SharePoint.svg → nodes/Microsoft/SharePoint/microsoftSharePoint.svg} +0 -0
|
@@ -0,0 +1,97 @@
|
|
|
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 readOperation_exports = {};
|
|
20
|
+
__export(readOperation_exports, {
|
|
21
|
+
readSheet: () => readSheet
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(readOperation_exports);
|
|
24
|
+
var import_GoogleSheets = require("../../helpers/GoogleSheets.utils");
|
|
25
|
+
async function readSheet(sheet, sheetName, itemIndex, returnData, nodeVersion, items, rangeString, additionalOptions) {
|
|
26
|
+
const options = this.getNodeParameter("options", itemIndex, {});
|
|
27
|
+
const outputFormattingOption = options.outputFormatting?.values || {};
|
|
28
|
+
const dataLocationOnSheetOptions = options.dataLocationOnSheet?.values || additionalOptions || {};
|
|
29
|
+
if (dataLocationOnSheetOptions.rangeDefinition === void 0) {
|
|
30
|
+
dataLocationOnSheetOptions.rangeDefinition = "detectAutomatically";
|
|
31
|
+
}
|
|
32
|
+
const range = rangeString ?? (0, import_GoogleSheets.getRangeString)(sheetName, dataLocationOnSheetOptions);
|
|
33
|
+
const valueRenderMode = outputFormattingOption.general || "UNFORMATTED_VALUE";
|
|
34
|
+
const dateTimeRenderOption = outputFormattingOption.date || "FORMATTED_STRING";
|
|
35
|
+
const sheetData = await sheet.getData(
|
|
36
|
+
range,
|
|
37
|
+
valueRenderMode,
|
|
38
|
+
dateTimeRenderOption
|
|
39
|
+
);
|
|
40
|
+
if (sheetData === void 0 || sheetData.length === 0) {
|
|
41
|
+
return [];
|
|
42
|
+
}
|
|
43
|
+
const {
|
|
44
|
+
data,
|
|
45
|
+
headerRow: keyRowIndex,
|
|
46
|
+
firstDataRow: dataStartRowIndex
|
|
47
|
+
} = (0, import_GoogleSheets.prepareSheetData)(sheetData, dataLocationOnSheetOptions);
|
|
48
|
+
let responseData = [];
|
|
49
|
+
const lookupValues = this.getNodeParameter("filtersUI.values", itemIndex, []);
|
|
50
|
+
const inputData = data;
|
|
51
|
+
if (lookupValues.length) {
|
|
52
|
+
let returnAllMatches;
|
|
53
|
+
if (nodeVersion < 4.5) {
|
|
54
|
+
returnAllMatches = options.returnAllMatches === "returnAllMatches" ? true : false;
|
|
55
|
+
} else {
|
|
56
|
+
returnAllMatches = additionalOptions?.returnFirstMatch ?? options.returnFirstMatch ? false : true;
|
|
57
|
+
}
|
|
58
|
+
if (nodeVersion <= 4.1) {
|
|
59
|
+
for (let i = 1; i < items.length; i++) {
|
|
60
|
+
const itemLookupValues = this.getNodeParameter(
|
|
61
|
+
"filtersUI.values",
|
|
62
|
+
i,
|
|
63
|
+
[]
|
|
64
|
+
);
|
|
65
|
+
if (itemLookupValues.length) {
|
|
66
|
+
lookupValues.push(...itemLookupValues);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
const combineFilters = this.getNodeParameter("combineFilters", itemIndex, "OR");
|
|
71
|
+
responseData = await sheet.lookupValues({
|
|
72
|
+
inputData,
|
|
73
|
+
keyRowIndex,
|
|
74
|
+
dataStartRowIndex,
|
|
75
|
+
lookupValues,
|
|
76
|
+
returnAllMatches,
|
|
77
|
+
nodeVersion,
|
|
78
|
+
combineFilters
|
|
79
|
+
});
|
|
80
|
+
} else {
|
|
81
|
+
responseData = sheet.structureArrayDataByColumn(inputData, keyRowIndex, dataStartRowIndex);
|
|
82
|
+
}
|
|
83
|
+
returnData.push(
|
|
84
|
+
...responseData.map((item) => {
|
|
85
|
+
return {
|
|
86
|
+
json: item,
|
|
87
|
+
pairedItem: { item: itemIndex }
|
|
88
|
+
};
|
|
89
|
+
})
|
|
90
|
+
);
|
|
91
|
+
return returnData;
|
|
92
|
+
}
|
|
93
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
94
|
+
0 && (module.exports = {
|
|
95
|
+
readSheet
|
|
96
|
+
});
|
|
97
|
+
//# sourceMappingURL=readOperation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../../nodes/Google/Sheet/v2/actions/utils/readOperation.ts"],"sourcesContent":["import type { IDataObject, IExecuteFunctions, INodeExecutionData } from 'n8n-workflow';\n\nimport { type GoogleSheet } from '../../helpers/GoogleSheet';\nimport type {\n\tILookupValues,\n\tRangeDetectionOptions,\n\tSheetRangeData,\n\tValueRenderOption,\n} from '../../helpers/GoogleSheets.types';\nimport { getRangeString, prepareSheetData } from '../../helpers/GoogleSheets.utils';\n\nexport async function readSheet(\n\tthis: IExecuteFunctions,\n\tsheet: GoogleSheet,\n\tsheetName: string,\n\titemIndex: number,\n\treturnData: INodeExecutionData[],\n\tnodeVersion: number,\n\titems: INodeExecutionData[],\n\trangeString?: string,\n\tadditionalOptions?: IDataObject,\n): Promise<INodeExecutionData[]> {\n\tconst options = this.getNodeParameter('options', itemIndex, {});\n\tconst outputFormattingOption =\n\t\t((options.outputFormatting as IDataObject)?.values as IDataObject) || {};\n\n\tconst dataLocationOnSheetOptions =\n\t\t((options.dataLocationOnSheet as IDataObject)?.values as RangeDetectionOptions) ||\n\t\tadditionalOptions ||\n\t\t{};\n\n\tif (dataLocationOnSheetOptions.rangeDefinition === undefined) {\n\t\tdataLocationOnSheetOptions.rangeDefinition = 'detectAutomatically';\n\t}\n\n\tconst range = rangeString ?? getRangeString(sheetName, dataLocationOnSheetOptions);\n\n\tconst valueRenderMode = (outputFormattingOption.general ||\n\t\t'UNFORMATTED_VALUE') as ValueRenderOption;\n\tconst dateTimeRenderOption = (outputFormattingOption.date || 'FORMATTED_STRING') as string;\n\n\tconst sheetData = (await sheet.getData(\n\t\trange,\n\t\tvalueRenderMode,\n\t\tdateTimeRenderOption,\n\t)) as SheetRangeData;\n\n\tif (sheetData === undefined || sheetData.length === 0) {\n\t\treturn [];\n\t}\n\n\tconst {\n\t\tdata,\n\t\theaderRow: keyRowIndex,\n\t\tfirstDataRow: dataStartRowIndex,\n\t} = prepareSheetData(sheetData, dataLocationOnSheetOptions);\n\n\tlet responseData = [];\n\n\tconst lookupValues = this.getNodeParameter('filtersUI.values', itemIndex, []) as ILookupValues[];\n\n\tconst inputData = data as string[][];\n\n\tif (lookupValues.length) {\n\t\tlet returnAllMatches;\n\t\tif (nodeVersion < 4.5) {\n\t\t\treturnAllMatches = options.returnAllMatches === 'returnAllMatches' ? true : false;\n\t\t} else {\n\t\t\treturnAllMatches =\n\t\t\t\t(additionalOptions?.returnFirstMatch ?? options.returnFirstMatch) ? false : true;\n\t\t}\n\n\t\tif (nodeVersion <= 4.1) {\n\t\t\tfor (let i = 1; i < items.length; i++) {\n\t\t\t\tconst itemLookupValues = this.getNodeParameter(\n\t\t\t\t\t'filtersUI.values',\n\t\t\t\t\ti,\n\t\t\t\t\t[],\n\t\t\t\t) as ILookupValues[];\n\t\t\t\tif (itemLookupValues.length) {\n\t\t\t\t\tlookupValues.push(...itemLookupValues);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst combineFilters = this.getNodeParameter('combineFilters', itemIndex, 'OR') as 'AND' | 'OR';\n\n\t\tresponseData = await sheet.lookupValues({\n\t\t\tinputData,\n\t\t\tkeyRowIndex,\n\t\t\tdataStartRowIndex,\n\t\t\tlookupValues,\n\t\t\treturnAllMatches,\n\t\t\tnodeVersion,\n\t\t\tcombineFilters,\n\t\t});\n\t} else {\n\t\tresponseData = sheet.structureArrayDataByColumn(inputData, keyRowIndex, dataStartRowIndex);\n\t}\n\n\treturnData.push(\n\t\t...responseData.map((item) => {\n\t\t\treturn {\n\t\t\t\tjson: item,\n\t\t\t\tpairedItem: { item: itemIndex },\n\t\t\t};\n\t\t}),\n\t);\n\n\treturn returnData;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AASA,0BAAiD;AAEjD,eAAsB,UAErB,OACA,WACA,WACA,YACA,aACA,OACA,aACA,mBACgC;AAChC,QAAM,UAAU,KAAK,iBAAiB,WAAW,WAAW,CAAC,CAAC;AAC9D,QAAM,yBACH,QAAQ,kBAAkC,UAA0B,CAAC;AAExE,QAAM,6BACH,QAAQ,qBAAqC,UAC/C,qBACA,CAAC;AAEF,MAAI,2BAA2B,oBAAoB,QAAW;AAC7D,+BAA2B,kBAAkB;AAAA,EAC9C;AAEA,QAAM,QAAQ,mBAAe,oCAAe,WAAW,0BAA0B;AAEjF,QAAM,kBAAmB,uBAAuB,WAC/C;AACD,QAAM,uBAAwB,uBAAuB,QAAQ;AAE7D,QAAM,YAAa,MAAM,MAAM;AAAA,IAC9B;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAEA,MAAI,cAAc,UAAa,UAAU,WAAW,GAAG;AACtD,WAAO,CAAC;AAAA,EACT;AAEA,QAAM;AAAA,IACL;AAAA,IACA,WAAW;AAAA,IACX,cAAc;AAAA,EACf,QAAI,sCAAiB,WAAW,0BAA0B;AAE1D,MAAI,eAAe,CAAC;AAEpB,QAAM,eAAe,KAAK,iBAAiB,oBAAoB,WAAW,CAAC,CAAC;AAE5E,QAAM,YAAY;AAElB,MAAI,aAAa,QAAQ;AACxB,QAAI;AACJ,QAAI,cAAc,KAAK;AACtB,yBAAmB,QAAQ,qBAAqB,qBAAqB,OAAO;AAAA,IAC7E,OAAO;AACN,yBACE,mBAAmB,oBAAoB,QAAQ,mBAAoB,QAAQ;AAAA,IAC9E;AAEA,QAAI,eAAe,KAAK;AACvB,eAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACtC,cAAM,mBAAmB,KAAK;AAAA,UAC7B;AAAA,UACA;AAAA,UACA,CAAC;AAAA,QACF;AACA,YAAI,iBAAiB,QAAQ;AAC5B,uBAAa,KAAK,GAAG,gBAAgB;AAAA,QACtC;AAAA,MACD;AAAA,IACD;AAEA,UAAM,iBAAiB,KAAK,iBAAiB,kBAAkB,WAAW,IAAI;AAE9E,mBAAe,MAAM,MAAM,aAAa;AAAA,MACvC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF,OAAO;AACN,mBAAe,MAAM,2BAA2B,WAAW,aAAa,iBAAiB;AAAA,EAC1F;AAEA,aAAW;AAAA,IACV,GAAG,aAAa,IAAI,CAAC,SAAS;AAC7B,aAAO;AAAA,QACN,MAAM;AAAA,QACN,YAAY,EAAE,MAAM,UAAU;AAAA,MAC/B;AAAA,IACD,CAAC;AAAA,EACF;AAEA,SAAO;AACR;","names":[]}
|
|
@@ -28,12 +28,30 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
28
28
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
29
|
var versionDescription_exports = {};
|
|
30
30
|
__export(versionDescription_exports, {
|
|
31
|
+
authentication: () => authentication,
|
|
31
32
|
versionDescription: () => versionDescription
|
|
32
33
|
});
|
|
33
34
|
module.exports = __toCommonJS(versionDescription_exports);
|
|
34
35
|
var import_n8n_workflow = require("n8n-workflow");
|
|
35
36
|
var sheet = __toESM(require("./sheet/Sheet.resource"));
|
|
36
37
|
var spreadsheet = __toESM(require("./spreadsheet/SpreadSheet.resource"));
|
|
38
|
+
const authentication = {
|
|
39
|
+
displayName: "Authentication",
|
|
40
|
+
name: "authentication",
|
|
41
|
+
type: "options",
|
|
42
|
+
options: [
|
|
43
|
+
{
|
|
44
|
+
name: "Service Account",
|
|
45
|
+
value: "serviceAccount"
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
// eslint-disable-next-line n8n-nodes-base/node-param-display-name-miscased
|
|
49
|
+
name: "OAuth2 (recommended)",
|
|
50
|
+
value: "oAuth2"
|
|
51
|
+
}
|
|
52
|
+
],
|
|
53
|
+
default: "oAuth2"
|
|
54
|
+
};
|
|
37
55
|
const versionDescription = {
|
|
38
56
|
displayName: "Google Sheets",
|
|
39
57
|
name: "googleSheets",
|
|
@@ -84,23 +102,7 @@ const versionDescription = {
|
|
|
84
102
|
}
|
|
85
103
|
],
|
|
86
104
|
properties: [
|
|
87
|
-
|
|
88
|
-
displayName: "Authentication",
|
|
89
|
-
name: "authentication",
|
|
90
|
-
type: "options",
|
|
91
|
-
options: [
|
|
92
|
-
{
|
|
93
|
-
name: "Service Account",
|
|
94
|
-
value: "serviceAccount"
|
|
95
|
-
},
|
|
96
|
-
{
|
|
97
|
-
// eslint-disable-next-line n8n-nodes-base/node-param-display-name-miscased
|
|
98
|
-
name: "OAuth2 (recommended)",
|
|
99
|
-
value: "oAuth2"
|
|
100
|
-
}
|
|
101
|
-
],
|
|
102
|
-
default: "oAuth2"
|
|
103
|
-
},
|
|
105
|
+
authentication,
|
|
104
106
|
{
|
|
105
107
|
displayName: "Resource",
|
|
106
108
|
name: "resource",
|
|
@@ -124,6 +126,7 @@ const versionDescription = {
|
|
|
124
126
|
};
|
|
125
127
|
// Annotate the CommonJS export names for ESM import in node:
|
|
126
128
|
0 && (module.exports = {
|
|
129
|
+
authentication,
|
|
127
130
|
versionDescription
|
|
128
131
|
});
|
|
129
132
|
//# sourceMappingURL=versionDescription.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../nodes/Google/Sheet/v2/actions/versionDescription.ts"],"sourcesContent":["/* eslint-disable n8n-nodes-base/node-filename-against-convention */\nimport {
|
|
1
|
+
{"version":3,"sources":["../../../../../../nodes/Google/Sheet/v2/actions/versionDescription.ts"],"sourcesContent":["/* eslint-disable n8n-nodes-base/node-filename-against-convention */\nimport type { INodeProperties, INodeTypeDescription } from 'n8n-workflow';\nimport { NodeConnectionTypes } from 'n8n-workflow';\n\nimport * as sheet from './sheet/Sheet.resource';\nimport * as spreadsheet from './spreadsheet/SpreadSheet.resource';\n\nexport const authentication: INodeProperties = {\n\tdisplayName: 'Authentication',\n\tname: 'authentication',\n\ttype: 'options',\n\toptions: [\n\t\t{\n\t\t\tname: 'Service Account',\n\t\t\tvalue: 'serviceAccount',\n\t\t},\n\t\t{\n\t\t\t// eslint-disable-next-line n8n-nodes-base/node-param-display-name-miscased\n\t\t\tname: 'OAuth2 (recommended)',\n\t\t\tvalue: 'oAuth2',\n\t\t},\n\t],\n\tdefault: 'oAuth2',\n};\n\nexport const versionDescription: INodeTypeDescription = {\n\tdisplayName: 'Google Sheets',\n\tname: 'googleSheets',\n\ticon: 'file:googleSheets.svg',\n\tgroup: ['input', 'output'],\n\tversion: [3, 4, 4.1, 4.2, 4.3, 4.4, 4.5, 4.6],\n\tsubtitle: '={{$parameter[\"operation\"] + \": \" + $parameter[\"resource\"]}}',\n\tdescription: 'Read, update and write data to Google Sheets',\n\tdefaults: {\n\t\tname: 'Google Sheets',\n\t},\n\tinputs: [NodeConnectionTypes.Main],\n\toutputs: [NodeConnectionTypes.Main],\n\tusableAsTool: true,\n\thints: [\n\t\t{\n\t\t\tmessage:\n\t\t\t\t\"Use the 'Minimise API Calls' option for greater efficiency if your sheet is uniformly formatted without gaps between columns or rows\",\n\t\t\tdisplayCondition:\n\t\t\t\t'={{$parameter[\"operation\"] === \"append\" && !$parameter[\"options\"][\"useAppend\"]}}',\n\t\t\twhenToDisplay: 'beforeExecution',\n\t\t\tlocation: 'outputPane',\n\t\t},\n\t\t{\n\t\t\tmessage: 'No columns found in Google Sheet. All rows will be appended',\n\t\t\tdisplayCondition:\n\t\t\t\t'={{ [\"appendOrUpdate\", \"append\"].includes($parameter[\"operation\"]) && $parameter?.columns?.mappingMode === \"defineBelow\" && !$parameter?.columns?.schema?.length }}',\n\t\t\twhenToDisplay: 'beforeExecution',\n\t\t\tlocation: 'outputPane',\n\t\t},\n\t],\n\tcredentials: [\n\t\t{\n\t\t\tname: 'googleApi',\n\t\t\trequired: true,\n\t\t\tdisplayOptions: {\n\t\t\t\tshow: {\n\t\t\t\t\tauthentication: ['serviceAccount'],\n\t\t\t\t},\n\t\t\t},\n\t\t\ttestedBy: 'googleApiCredentialTest',\n\t\t},\n\t\t{\n\t\t\tname: 'googleSheetsOAuth2Api',\n\t\t\trequired: true,\n\t\t\tdisplayOptions: {\n\t\t\t\tshow: {\n\t\t\t\t\tauthentication: ['oAuth2'],\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t],\n\tproperties: [\n\t\tauthentication,\n\t\t{\n\t\t\tdisplayName: 'Resource',\n\t\t\tname: 'resource',\n\t\t\ttype: 'options',\n\t\t\tnoDataExpression: true,\n\t\t\toptions: [\n\t\t\t\t{\n\t\t\t\t\tname: 'Document',\n\t\t\t\t\tvalue: 'spreadsheet',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: 'Sheet Within Document',\n\t\t\t\t\tvalue: 'sheet',\n\t\t\t\t},\n\t\t\t],\n\t\t\tdefault: 'sheet',\n\t\t},\n\t\t...sheet.descriptions,\n\t\t...spreadsheet.descriptions,\n\t],\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,0BAAoC;AAEpC,YAAuB;AACvB,kBAA6B;AAEtB,MAAM,iBAAkC;AAAA,EAC9C,aAAa;AAAA,EACb,MAAM;AAAA,EACN,MAAM;AAAA,EACN,SAAS;AAAA,IACR;AAAA,MACC,MAAM;AAAA,MACN,OAAO;AAAA,IACR;AAAA,IACA;AAAA;AAAA,MAEC,MAAM;AAAA,MACN,OAAO;AAAA,IACR;AAAA,EACD;AAAA,EACA,SAAS;AACV;AAEO,MAAM,qBAA2C;AAAA,EACvD,aAAa;AAAA,EACb,MAAM;AAAA,EACN,MAAM;AAAA,EACN,OAAO,CAAC,SAAS,QAAQ;AAAA,EACzB,SAAS,CAAC,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG;AAAA,EAC5C,UAAU;AAAA,EACV,aAAa;AAAA,EACb,UAAU;AAAA,IACT,MAAM;AAAA,EACP;AAAA,EACA,QAAQ,CAAC,wCAAoB,IAAI;AAAA,EACjC,SAAS,CAAC,wCAAoB,IAAI;AAAA,EAClC,cAAc;AAAA,EACd,OAAO;AAAA,IACN;AAAA,MACC,SACC;AAAA,MACD,kBACC;AAAA,MACD,eAAe;AAAA,MACf,UAAU;AAAA,IACX;AAAA,IACA;AAAA,MACC,SAAS;AAAA,MACT,kBACC;AAAA,MACD,eAAe;AAAA,MACf,UAAU;AAAA,IACX;AAAA,EACD;AAAA,EACA,aAAa;AAAA,IACZ;AAAA,MACC,MAAM;AAAA,MACN,UAAU;AAAA,MACV,gBAAgB;AAAA,QACf,MAAM;AAAA,UACL,gBAAgB,CAAC,gBAAgB;AAAA,QAClC;AAAA,MACD;AAAA,MACA,UAAU;AAAA,IACX;AAAA,IACA;AAAA,MACC,MAAM;AAAA,MACN,UAAU;AAAA,MACV,gBAAgB;AAAA,QACf,MAAM;AAAA,UACL,gBAAgB,CAAC,QAAQ;AAAA,QAC1B;AAAA,MACD;AAAA,IACD;AAAA,EACD;AAAA,EACA,YAAY;AAAA,IACX;AAAA,IACA;AAAA,MACC,aAAa;AAAA,MACb,MAAM;AAAA,MACN,MAAM;AAAA,MACN,kBAAkB;AAAA,MAClB,SAAS;AAAA,QACR;AAAA,UACC,MAAM;AAAA,UACN,OAAO;AAAA,QACR;AAAA,QACA;AAAA,UACC,MAAM;AAAA,UACN,OAAO;AAAA,QACR;AAAA,MACD;AAAA,MACA,SAAS;AAAA,IACV;AAAA,IACA,GAAG,MAAM;AAAA,IACT,GAAG,YAAY;AAAA,EAChB;AACD;","names":[]}
|
|
@@ -22,6 +22,7 @@ __export(YouTube_node_exports, {
|
|
|
22
22
|
});
|
|
23
23
|
module.exports = __toCommonJS(YouTube_node_exports);
|
|
24
24
|
var import_n8n_workflow = require("n8n-workflow");
|
|
25
|
+
var import_stream = require("stream");
|
|
25
26
|
var import_ISOCountryCodes = require("../../../utils/ISOCountryCodes");
|
|
26
27
|
var import_ChannelDescription = require("./ChannelDescription");
|
|
27
28
|
var import_GenericFunctions = require("./GenericFunctions");
|
|
@@ -715,8 +716,9 @@ class YouTube {
|
|
|
715
716
|
contentLength = metadata.fileSize;
|
|
716
717
|
mimeType = metadata.mimeType ?? binaryData.mimeType;
|
|
717
718
|
} else {
|
|
718
|
-
|
|
719
|
-
|
|
719
|
+
const buffer = Buffer.from(binaryData.data, import_n8n_workflow.BINARY_ENCODING);
|
|
720
|
+
fileContent = import_stream.Readable.from(buffer);
|
|
721
|
+
contentLength = buffer.length;
|
|
720
722
|
mimeType = binaryData.mimeType;
|
|
721
723
|
}
|
|
722
724
|
const payload = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../nodes/Google/YouTube/YouTube.node.ts"],"sourcesContent":["import type {\n\tIDataObject,\n\tIExecuteFunctions,\n\tILoadOptionsFunctions,\n\tINodeExecutionData,\n\tINodePropertyOptions,\n\tINodeType,\n\tINodeTypeDescription,\n} from 'n8n-workflow';\nimport { NodeConnectionTypes, BINARY_ENCODING, NodeOperationError } from 'n8n-workflow';\nimport type { Readable } from 'stream';\n\nimport { isoCountryCodes } from '@utils/ISOCountryCodes';\n\nimport { channelFields, channelOperations } from './ChannelDescription';\nimport { googleApiRequest, googleApiRequestAllItems } from './GenericFunctions';\nimport { playlistFields, playlistOperations } from './PlaylistDescription';\nimport { playlistItemFields, playlistItemOperations } from './PlaylistItemDescription';\nimport { videoCategoryFields, videoCategoryOperations } from './VideoCategoryDescription';\nimport { videoFields, videoOperations } from './VideoDescription';\nimport { validateAndSetDate } from '../GenericFunctions';\n\nconst UPLOAD_CHUNK_SIZE = 1024 * 1024;\n\nexport class YouTube implements INodeType {\n\tdescription: INodeTypeDescription = {\n\t\tdisplayName: 'YouTube',\n\t\tname: 'youTube',\n\t\t// eslint-disable-next-line n8n-nodes-base/node-class-description-icon-not-svg\n\t\ticon: 'file:youTube.png',\n\t\tgroup: ['input'],\n\t\tversion: 1,\n\t\tsubtitle: '={{$parameter[\"operation\"] + \": \" + $parameter[\"resource\"]}}',\n\t\tdescription: 'Consume YouTube API',\n\t\tdefaults: {\n\t\t\tname: 'YouTube',\n\t\t},\n\t\tusableAsTool: true,\n\t\tinputs: [NodeConnectionTypes.Main],\n\t\toutputs: [NodeConnectionTypes.Main],\n\t\tcredentials: [\n\t\t\t{\n\t\t\t\tname: 'youTubeOAuth2Api',\n\t\t\t\trequired: true,\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: 'Channel',\n\t\t\t\t\t\tvalue: 'channel',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Playlist',\n\t\t\t\t\t\tvalue: 'playlist',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Playlist Item',\n\t\t\t\t\t\tvalue: 'playlistItem',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Video',\n\t\t\t\t\t\tvalue: 'video',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Video Category',\n\t\t\t\t\t\tvalue: 'videoCategory',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tdefault: 'channel',\n\t\t\t},\n\t\t\t...channelOperations,\n\t\t\t...channelFields,\n\n\t\t\t...playlistOperations,\n\t\t\t...playlistFields,\n\n\t\t\t...playlistItemOperations,\n\t\t\t...playlistItemFields,\n\n\t\t\t...videoOperations,\n\t\t\t...videoFields,\n\n\t\t\t...videoCategoryOperations,\n\t\t\t...videoCategoryFields,\n\t\t],\n\t};\n\n\tmethods = {\n\t\tloadOptions: {\n\t\t\t// Get all the languages to display them to user so that they can\n\t\t\t// select them easily\n\t\t\tasync getLanguages(this: ILoadOptionsFunctions): Promise<INodePropertyOptions[]> {\n\t\t\t\tconst returnData: INodePropertyOptions[] = [];\n\t\t\t\tconst languages = await googleApiRequestAllItems.call(\n\t\t\t\t\tthis,\n\t\t\t\t\t'items',\n\t\t\t\t\t'GET',\n\t\t\t\t\t'/youtube/v3/i18nLanguages',\n\t\t\t\t);\n\t\t\t\tfor (const language of languages) {\n\t\t\t\t\tconst languageName = language.id.toUpperCase();\n\t\t\t\t\tconst languageId = language.id;\n\t\t\t\t\treturnData.push({\n\t\t\t\t\t\tname: languageName,\n\t\t\t\t\t\tvalue: languageId,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn returnData;\n\t\t\t},\n\t\t\t// Get all the countries codes to display them to user so that they can\n\t\t\t// select them easily\n\t\t\tasync getCountriesCodes(this: ILoadOptionsFunctions): Promise<INodePropertyOptions[]> {\n\t\t\t\tconst returnData: INodePropertyOptions[] = [];\n\t\t\t\tfor (const countryCode of isoCountryCodes) {\n\t\t\t\t\tconst countryCodeName = `${countryCode.name} - ${countryCode.alpha2}`;\n\t\t\t\t\tconst countryCodeId = countryCode.alpha2;\n\t\t\t\t\treturnData.push({\n\t\t\t\t\t\tname: countryCodeName,\n\t\t\t\t\t\tvalue: countryCodeId,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn returnData;\n\t\t\t},\n\t\t\t// Get all the video categories to display them to user so that they can\n\t\t\t// select them easily\n\t\t\tasync getVideoCategories(this: ILoadOptionsFunctions): Promise<INodePropertyOptions[]> {\n\t\t\t\tconst countryCode = this.getCurrentNodeParameter('regionCode') as string;\n\n\t\t\t\tconst returnData: INodePropertyOptions[] = [];\n\t\t\t\tconst qs: IDataObject = {};\n\t\t\t\tqs.regionCode = countryCode;\n\t\t\t\tqs.part = 'snippet';\n\t\t\t\tconst categories = await googleApiRequestAllItems.call(\n\t\t\t\t\tthis,\n\t\t\t\t\t'items',\n\t\t\t\t\t'GET',\n\t\t\t\t\t'/youtube/v3/videoCategories',\n\t\t\t\t\t{},\n\t\t\t\t\tqs,\n\t\t\t\t);\n\t\t\t\tfor (const category of categories) {\n\t\t\t\t\tconst categoryName = category.snippet.title;\n\t\t\t\t\tconst categoryId = category.id;\n\t\t\t\t\treturnData.push({\n\t\t\t\t\t\tname: categoryName,\n\t\t\t\t\t\tvalue: categoryId,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn returnData;\n\t\t\t},\n\t\t\t// Get all the playlists to display them to user so that they can\n\t\t\t// select them easily\n\t\t\tasync getPlaylists(this: ILoadOptionsFunctions): Promise<INodePropertyOptions[]> {\n\t\t\t\tconst returnData: INodePropertyOptions[] = [];\n\t\t\t\tconst qs: IDataObject = {};\n\t\t\t\tqs.part = 'snippet';\n\t\t\t\tqs.mine = true;\n\t\t\t\tconst playlists = await googleApiRequestAllItems.call(\n\t\t\t\t\tthis,\n\t\t\t\t\t'items',\n\t\t\t\t\t'GET',\n\t\t\t\t\t'/youtube/v3/playlists',\n\t\t\t\t\t{},\n\t\t\t\t\tqs,\n\t\t\t\t);\n\t\t\t\tfor (const playlist of playlists) {\n\t\t\t\t\tconst playlistName = playlist.snippet.title;\n\t\t\t\t\tconst playlistId = playlist.id;\n\t\t\t\t\treturnData.push({\n\t\t\t\t\t\tname: playlistName,\n\t\t\t\t\t\tvalue: playlistId,\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};\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\tconst qs: IDataObject = {};\n\t\tlet responseData;\n\t\tconst resource = this.getNodeParameter('resource', 0);\n\t\tconst operation = this.getNodeParameter('operation', 0);\n\t\tfor (let i = 0; i < length; i++) {\n\t\t\ttry {\n\t\t\t\tif (resource === 'channel') {\n\t\t\t\t\tif (operation === 'get') {\n\t\t\t\t\t\t//https://developers.google.com/youtube/v3/docs/channels/list\n\t\t\t\t\t\tlet part = this.getNodeParameter('part', i) as string[];\n\t\t\t\t\t\tconst channelId = this.getNodeParameter('channelId', i) as string;\n\n\t\t\t\t\t\tif (part.includes('*')) {\n\t\t\t\t\t\t\tpart = [\n\t\t\t\t\t\t\t\t'brandingSettings',\n\t\t\t\t\t\t\t\t'contentDetails',\n\t\t\t\t\t\t\t\t'contentOwnerDetails',\n\t\t\t\t\t\t\t\t'id',\n\t\t\t\t\t\t\t\t'localizations',\n\t\t\t\t\t\t\t\t'snippet',\n\t\t\t\t\t\t\t\t'statistics',\n\t\t\t\t\t\t\t\t'status',\n\t\t\t\t\t\t\t\t'topicDetails',\n\t\t\t\t\t\t\t];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tqs.part = part.join(',');\n\n\t\t\t\t\t\tqs.id = channelId;\n\n\t\t\t\t\t\tresponseData = await googleApiRequest.call(this, 'GET', '/youtube/v3/channels', {}, qs);\n\n\t\t\t\t\t\tresponseData = responseData.items;\n\t\t\t\t\t}\n\t\t\t\t\t//https://developers.google.com/youtube/v3/docs/channels/list\n\t\t\t\t\tif (operation === 'getAll') {\n\t\t\t\t\t\tconst returnAll = this.getNodeParameter('returnAll', i);\n\t\t\t\t\t\tlet part = this.getNodeParameter('part', i) as string[];\n\t\t\t\t\t\tconst options = this.getNodeParameter('options', i);\n\t\t\t\t\t\tconst filters = this.getNodeParameter('filters', i);\n\n\t\t\t\t\t\tif (part.includes('*')) {\n\t\t\t\t\t\t\tpart = [\n\t\t\t\t\t\t\t\t'brandingSettings',\n\t\t\t\t\t\t\t\t'contentDetails',\n\t\t\t\t\t\t\t\t'contentOwnerDetails',\n\t\t\t\t\t\t\t\t'id',\n\t\t\t\t\t\t\t\t'localizations',\n\t\t\t\t\t\t\t\t'snippet',\n\t\t\t\t\t\t\t\t'statistics',\n\t\t\t\t\t\t\t\t'status',\n\t\t\t\t\t\t\t\t'topicDetails',\n\t\t\t\t\t\t\t];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tqs.part = part.join(',');\n\n\t\t\t\t\t\tObject.assign(qs, options, filters);\n\n\t\t\t\t\t\tqs.mine = true;\n\n\t\t\t\t\t\tif (qs.categoryId || qs.forUsername || qs.id || qs.managedByMe) {\n\t\t\t\t\t\t\tdelete qs.mine;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (returnAll) {\n\t\t\t\t\t\t\tresponseData = await googleApiRequestAllItems.call(\n\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t'items',\n\t\t\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t\t\t'/youtube/v3/channels',\n\t\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\t\tqs,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tqs.maxResults = this.getNodeParameter('limit', i);\n\t\t\t\t\t\t\tresponseData = await googleApiRequest.call(\n\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t\t\t'/youtube/v3/channels',\n\t\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\t\tqs,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tresponseData = responseData.items;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t//https://developers.google.com/youtube/v3/docs/channels/update\n\t\t\t\t\tif (operation === 'update') {\n\t\t\t\t\t\tconst channelId = this.getNodeParameter('channelId', i) as string;\n\t\t\t\t\t\tconst updateFields = this.getNodeParameter('updateFields', i);\n\n\t\t\t\t\t\tconst body: IDataObject = {\n\t\t\t\t\t\t\tid: channelId,\n\t\t\t\t\t\t\tbrandingSettings: {\n\t\t\t\t\t\t\t\tchannel: {},\n\t\t\t\t\t\t\t\timage: {},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tqs.part = 'brandingSettings';\n\n\t\t\t\t\t\tif (updateFields.onBehalfOfContentOwner) {\n\t\t\t\t\t\t\tqs.onBehalfOfContentOwner = updateFields.onBehalfOfContentOwner as string;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (updateFields.brandingSettingsUi) {\n\t\t\t\t\t\t\tconst channelSettingsValues = (updateFields.brandingSettingsUi as IDataObject)\n\t\t\t\t\t\t\t\t.channelSettingsValues as IDataObject | undefined;\n\t\t\t\t\t\t\tconst channelSettings: IDataObject = {};\n\t\t\t\t\t\t\tif (channelSettingsValues?.channel) {\n\t\t\t\t\t\t\t\tconst channelSettingsOptions = channelSettingsValues.channel as IDataObject;\n\t\t\t\t\t\t\t\tif (channelSettingsOptions.country) {\n\t\t\t\t\t\t\t\t\tchannelSettings.country = channelSettingsOptions.country;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (channelSettingsOptions.description) {\n\t\t\t\t\t\t\t\t\tchannelSettings.description = channelSettingsOptions.description;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (channelSettingsOptions.defaultLanguage) {\n\t\t\t\t\t\t\t\t\tchannelSettings.defaultLanguage = channelSettingsOptions.defaultLanguage;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (channelSettingsOptions.defaultTab) {\n\t\t\t\t\t\t\t\t\tchannelSettings.defaultTab = channelSettingsOptions.defaultTab;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (channelSettingsOptions.featuredChannelsTitle) {\n\t\t\t\t\t\t\t\t\tchannelSettings.featuredChannelsTitle =\n\t\t\t\t\t\t\t\t\t\tchannelSettingsOptions.featuredChannelsTitle;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (channelSettingsOptions.featuredChannelsUrls) {\n\t\t\t\t\t\t\t\t\tchannelSettings.featuredChannelsUrls =\n\t\t\t\t\t\t\t\t\t\tchannelSettingsOptions.featuredChannelsUrls;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (channelSettingsOptions.keywords) {\n\t\t\t\t\t\t\t\t\tchannelSettings.keywords = channelSettingsOptions.keywords;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (channelSettingsOptions.moderateComments) {\n\t\t\t\t\t\t\t\t\tchannelSettings.moderateComments =\n\t\t\t\t\t\t\t\t\t\tchannelSettingsOptions.moderateComments as boolean;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (channelSettingsOptions.profileColor) {\n\t\t\t\t\t\t\t\t\tchannelSettings.profileColor = channelSettingsOptions.profileColor as string;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (channelSettingsOptions.profileColor) {\n\t\t\t\t\t\t\t\t\tchannelSettings.profileColor = channelSettingsOptions.profileColor as string;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (channelSettingsOptions.showRelatedChannels) {\n\t\t\t\t\t\t\t\t\tchannelSettings.showRelatedChannels =\n\t\t\t\t\t\t\t\t\t\tchannelSettingsOptions.showRelatedChannels as boolean;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (channelSettingsOptions.showBrowseView) {\n\t\t\t\t\t\t\t\t\tchannelSettings.showBrowseView = channelSettingsOptions.showBrowseView as boolean;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (channelSettingsOptions.trackingAnalyticsAccountId) {\n\t\t\t\t\t\t\t\t\tchannelSettings.trackingAnalyticsAccountId =\n\t\t\t\t\t\t\t\t\t\tchannelSettingsOptions.trackingAnalyticsAccountId as string;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (channelSettingsOptions.unsubscribedTrailer) {\n\t\t\t\t\t\t\t\t\tchannelSettings.unsubscribedTrailer =\n\t\t\t\t\t\t\t\t\t\tchannelSettingsOptions.unsubscribedTrailer as string;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tconst imageSettingsValues = (updateFields.brandingSettingsUi as IDataObject)\n\t\t\t\t\t\t\t\t.imageSettingsValues as IDataObject | undefined;\n\t\t\t\t\t\t\tconst imageSettings: IDataObject = {};\n\t\t\t\t\t\t\tif (imageSettingsValues?.image) {\n\t\t\t\t\t\t\t\tconst imageSettingsOptions = imageSettings.image as IDataObject;\n\t\t\t\t\t\t\t\tif (imageSettingsOptions.bannerExternalUrl) {\n\t\t\t\t\t\t\t\t\timageSettings.bannerExternalUrl =\n\t\t\t\t\t\t\t\t\t\timageSettingsOptions.bannerExternalUrl as string;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (imageSettingsOptions.trackingImageUrl) {\n\t\t\t\t\t\t\t\t\timageSettings.trackingImageUrl = imageSettingsOptions.trackingImageUrl as string;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (imageSettingsOptions.watchIconImageUrl) {\n\t\t\t\t\t\t\t\t\timageSettings.watchIconImageUrl =\n\t\t\t\t\t\t\t\t\t\timageSettingsOptions.watchIconImageUrl as string;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t\tbody.brandingSettings.channel = channelSettings;\n\t\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t\tbody.brandingSettings.image = imageSettings;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tresponseData = await googleApiRequest.call(\n\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t'PUT',\n\t\t\t\t\t\t\t'/youtube/v3/channels',\n\t\t\t\t\t\t\tbody,\n\t\t\t\t\t\t\tqs,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\t//https://developers.google.com/youtube/v3/docs/channelBanners/insert\n\t\t\t\t\tif (operation === 'uploadBanner') {\n\t\t\t\t\t\tconst channelId = this.getNodeParameter('channelId', i) as string;\n\t\t\t\t\t\tconst binaryProperty = this.getNodeParameter('binaryProperty', i);\n\t\t\t\t\t\tconst binaryData = this.helpers.assertBinaryData(i, binaryProperty);\n\t\t\t\t\t\tconst body = await this.helpers.getBinaryDataBuffer(i, binaryProperty);\n\n\t\t\t\t\t\tconst requestOptions = {\n\t\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t\t...(binaryData.mimeType ? { 'Content-Type': binaryData.mimeType } : {}),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tjson: false,\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tconst response = await googleApiRequest.call(\n\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t'POST',\n\t\t\t\t\t\t\t'/upload/youtube/v3/channelBanners/insert',\n\t\t\t\t\t\t\tbody,\n\t\t\t\t\t\t\tqs,\n\t\t\t\t\t\t\tundefined,\n\t\t\t\t\t\t\trequestOptions,\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tconst { url } = JSON.parse(response as string);\n\n\t\t\t\t\t\tqs.part = 'brandingSettings';\n\n\t\t\t\t\t\tresponseData = await googleApiRequest.call(\n\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t'PUT',\n\t\t\t\t\t\t\t'/youtube/v3/channels',\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: channelId,\n\t\t\t\t\t\t\t\tbrandingSettings: {\n\t\t\t\t\t\t\t\t\timage: {\n\t\t\t\t\t\t\t\t\t\tbannerExternalUrl: url,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tqs,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (resource === 'playlist') {\n\t\t\t\t\t//https://developers.google.com/youtube/v3/docs/playlists/list\n\t\t\t\t\tif (operation === 'get') {\n\t\t\t\t\t\tlet part = this.getNodeParameter('part', i) as string[];\n\t\t\t\t\t\tconst playlistId = this.getNodeParameter('playlistId', i) as string;\n\t\t\t\t\t\tconst options = this.getNodeParameter('options', i);\n\n\t\t\t\t\t\tif (part.includes('*')) {\n\t\t\t\t\t\t\tpart = ['contentDetails', 'id', 'localizations', 'player', 'snippet', 'status'];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tqs.part = part.join(',');\n\n\t\t\t\t\t\tqs.id = playlistId;\n\n\t\t\t\t\t\tObject.assign(qs, options);\n\n\t\t\t\t\t\tresponseData = await googleApiRequest.call(\n\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t\t'/youtube/v3/playlists',\n\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\tqs,\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tresponseData = responseData.items;\n\t\t\t\t\t}\n\t\t\t\t\t//https://developers.google.com/youtube/v3/docs/playlists/list\n\t\t\t\t\tif (operation === 'getAll') {\n\t\t\t\t\t\tconst returnAll = this.getNodeParameter('returnAll', i);\n\t\t\t\t\t\tlet part = this.getNodeParameter('part', i) as string[];\n\t\t\t\t\t\tconst options = this.getNodeParameter('options', i);\n\t\t\t\t\t\tconst filters = this.getNodeParameter('filters', i);\n\n\t\t\t\t\t\tif (part.includes('*')) {\n\t\t\t\t\t\t\tpart = ['contentDetails', 'id', 'localizations', 'player', 'snippet', 'status'];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tqs.part = part.join(',');\n\n\t\t\t\t\t\tObject.assign(qs, options, filters);\n\n\t\t\t\t\t\tqs.mine = true;\n\n\t\t\t\t\t\tif (qs.channelId || qs.id) {\n\t\t\t\t\t\t\tdelete qs.mine;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (returnAll) {\n\t\t\t\t\t\t\tresponseData = await googleApiRequestAllItems.call(\n\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t'items',\n\t\t\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t\t\t'/youtube/v3/playlists',\n\t\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\t\tqs,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tqs.maxResults = this.getNodeParameter('limit', i);\n\t\t\t\t\t\t\tresponseData = await googleApiRequest.call(\n\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t\t\t'/youtube/v3/playlists',\n\t\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\t\tqs,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tresponseData = responseData.items;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t//https://developers.google.com/youtube/v3/docs/playlists/insert\n\t\t\t\t\tif (operation === 'create') {\n\t\t\t\t\t\tconst title = this.getNodeParameter('title', i) as string;\n\t\t\t\t\t\tconst options = this.getNodeParameter('options', i);\n\n\t\t\t\t\t\tqs.part = 'snippet';\n\n\t\t\t\t\t\tconst body: IDataObject = {\n\t\t\t\t\t\t\tsnippet: {\n\t\t\t\t\t\t\t\ttitle,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tif (options.tags) {\n\t\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t\tbody.snippet.tags = (options.tags as string).split(',');\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (options.description) {\n\t\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t\tbody.snippet.privacyStatus = options.privacyStatus as string;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (options.defaultLanguage) {\n\t\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t\tbody.snippet.defaultLanguage = options.defaultLanguage as string;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (options.onBehalfOfContentOwner) {\n\t\t\t\t\t\t\tqs.onBehalfOfContentOwner = options.onBehalfOfContentOwner as string;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (options.onBehalfOfContentOwnerChannel) {\n\t\t\t\t\t\t\tqs.onBehalfOfContentOwnerChannel = options.onBehalfOfContentOwnerChannel as string;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tresponseData = await googleApiRequest.call(\n\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t'POST',\n\t\t\t\t\t\t\t'/youtube/v3/playlists',\n\t\t\t\t\t\t\tbody,\n\t\t\t\t\t\t\tqs,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\t//https://developers.google.com/youtube/v3/docs/playlists/update\n\t\t\t\t\tif (operation === 'update') {\n\t\t\t\t\t\tconst playlistId = this.getNodeParameter('playlistId', i) as string;\n\t\t\t\t\t\tconst title = this.getNodeParameter('title', i) as string;\n\t\t\t\t\t\tconst updateFields = this.getNodeParameter('updateFields', i);\n\n\t\t\t\t\t\tqs.part = 'snippet, status';\n\n\t\t\t\t\t\tconst body: IDataObject = {\n\t\t\t\t\t\t\tid: playlistId,\n\t\t\t\t\t\t\tsnippet: {\n\t\t\t\t\t\t\t\ttitle,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tstatus: {},\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tif (updateFields.tags) {\n\t\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t\tbody.snippet.tags = (updateFields.tags as string).split(',');\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (updateFields.privacyStatus) {\n\t\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t\tbody.status.privacyStatus = updateFields.privacyStatus as string;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (updateFields.description) {\n\t\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t\tbody.snippet.description = updateFields.description as string;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (updateFields.defaultLanguage) {\n\t\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t\tbody.snippet.defaultLanguage = updateFields.defaultLanguage as string;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (updateFields.onBehalfOfContentOwner) {\n\t\t\t\t\t\t\tqs.onBehalfOfContentOwner = updateFields.onBehalfOfContentOwner as string;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tresponseData = await googleApiRequest.call(\n\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t'PUT',\n\t\t\t\t\t\t\t'/youtube/v3/playlists',\n\t\t\t\t\t\t\tbody,\n\t\t\t\t\t\t\tqs,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\t//https://developers.google.com/youtube/v3/docs/playlists/delete\n\t\t\t\t\tif (operation === 'delete') {\n\t\t\t\t\t\tconst playlistId = this.getNodeParameter('playlistId', i) as string;\n\t\t\t\t\t\tconst options = this.getNodeParameter('options', i);\n\n\t\t\t\t\t\tconst body: IDataObject = {\n\t\t\t\t\t\t\tid: playlistId,\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tif (options.onBehalfOfContentOwner) {\n\t\t\t\t\t\t\tqs.onBehalfOfContentOwner = options.onBehalfOfContentOwner as string;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tresponseData = await googleApiRequest.call(\n\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t'DELETE',\n\t\t\t\t\t\t\t'/youtube/v3/playlists',\n\t\t\t\t\t\t\tbody,\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tresponseData = { success: true };\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (resource === 'playlistItem') {\n\t\t\t\t\t//https://developers.google.com/youtube/v3/docs/playlistItems/list\n\t\t\t\t\tif (operation === 'get') {\n\t\t\t\t\t\tlet part = this.getNodeParameter('part', i) as string[];\n\t\t\t\t\t\tconst playlistItemId = this.getNodeParameter('playlistItemId', i) as string;\n\t\t\t\t\t\tconst options = this.getNodeParameter('options', i);\n\n\t\t\t\t\t\tif (part.includes('*')) {\n\t\t\t\t\t\t\tpart = ['contentDetails', 'id', 'snippet', 'status'];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tqs.part = part.join(',');\n\n\t\t\t\t\t\tqs.id = playlistItemId;\n\n\t\t\t\t\t\tObject.assign(qs, options);\n\n\t\t\t\t\t\tresponseData = await googleApiRequest.call(\n\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t\t'/youtube/v3/playlistItems',\n\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\tqs,\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tresponseData = responseData.items;\n\t\t\t\t\t}\n\t\t\t\t\t//https://developers.google.com/youtube/v3/docs/playlistItems/list\n\t\t\t\t\tif (operation === 'getAll') {\n\t\t\t\t\t\tconst returnAll = this.getNodeParameter('returnAll', i);\n\t\t\t\t\t\tlet part = this.getNodeParameter('part', i) as string[];\n\t\t\t\t\t\tconst options = this.getNodeParameter('options', i);\n\t\t\t\t\t\tconst playlistId = this.getNodeParameter('playlistId', i) as string;\n\t\t\t\t\t\t//const filters = this.getNodeParameter('filters', i);\n\n\t\t\t\t\t\tif (part.includes('*')) {\n\t\t\t\t\t\t\tpart = ['contentDetails', 'id', 'snippet', 'status'];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tqs.playlistId = playlistId;\n\n\t\t\t\t\t\tqs.part = part.join(',');\n\n\t\t\t\t\t\tObject.assign(qs, options);\n\n\t\t\t\t\t\tif (returnAll) {\n\t\t\t\t\t\t\tresponseData = await googleApiRequestAllItems.call(\n\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t'items',\n\t\t\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t\t\t'/youtube/v3/playlistItems',\n\t\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\t\tqs,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tqs.maxResults = this.getNodeParameter('limit', i);\n\t\t\t\t\t\t\tresponseData = await googleApiRequest.call(\n\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t\t\t'/youtube/v3/playlistItems',\n\t\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\t\tqs,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tresponseData = responseData.items;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t//https://developers.google.com/youtube/v3/docs/playlistItems/insert\n\t\t\t\t\tif (operation === 'add') {\n\t\t\t\t\t\tconst playlistId = this.getNodeParameter('playlistId', i) as string;\n\t\t\t\t\t\tconst videoId = this.getNodeParameter('videoId', i) as string;\n\t\t\t\t\t\tconst options = this.getNodeParameter('options', i);\n\n\t\t\t\t\t\tqs.part = 'snippet, contentDetails';\n\n\t\t\t\t\t\tconst body: IDataObject = {\n\t\t\t\t\t\t\tsnippet: {\n\t\t\t\t\t\t\t\tplaylistId,\n\t\t\t\t\t\t\t\tresourceId: {\n\t\t\t\t\t\t\t\t\tkind: 'youtube#video',\n\t\t\t\t\t\t\t\t\tvideoId,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tcontentDetails: {},\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tif (options.position) {\n\t\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t\tbody.snippet.position = options.position as number;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (options.note) {\n\t\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t\tbody.contentDetails.note = options.note as string;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (options.startAt) {\n\t\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t\tbody.contentDetails.startAt = options.startAt as string;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (options.endAt) {\n\t\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t\tbody.contentDetails.endAt = options.endAt as string;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (options.onBehalfOfContentOwner) {\n\t\t\t\t\t\t\tqs.onBehalfOfContentOwner = options.onBehalfOfContentOwner as string;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tresponseData = await googleApiRequest.call(\n\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t'POST',\n\t\t\t\t\t\t\t'/youtube/v3/playlistItems',\n\t\t\t\t\t\t\tbody,\n\t\t\t\t\t\t\tqs,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\t//https://developers.google.com/youtube/v3/docs/playlistItems/delete\n\t\t\t\t\tif (operation === 'delete') {\n\t\t\t\t\t\tconst playlistItemId = this.getNodeParameter('playlistItemId', i) as string;\n\t\t\t\t\t\tconst options = this.getNodeParameter('options', i);\n\n\t\t\t\t\t\tconst body: IDataObject = {\n\t\t\t\t\t\t\tid: playlistItemId,\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tif (options.onBehalfOfContentOwner) {\n\t\t\t\t\t\t\tqs.onBehalfOfContentOwner = options.onBehalfOfContentOwner as string;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tresponseData = await googleApiRequest.call(\n\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t'DELETE',\n\t\t\t\t\t\t\t'/youtube/v3/playlistItems',\n\t\t\t\t\t\t\tbody,\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tresponseData = { success: true };\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (resource === 'video') {\n\t\t\t\t\t//https://developers.google.com/youtube/v3/docs/search/list\n\t\t\t\t\tif (operation === 'getAll') {\n\t\t\t\t\t\tconst returnAll = this.getNodeParameter('returnAll', i);\n\t\t\t\t\t\tconst options = this.getNodeParameter('options', i);\n\t\t\t\t\t\tconst filters = this.getNodeParameter('filters', i);\n\n\t\t\t\t\t\tqs.part = 'snippet';\n\n\t\t\t\t\t\tqs.type = 'video';\n\n\t\t\t\t\t\tqs.forMine = true;\n\n\t\t\t\t\t\tif (filters.publishedAfter) {\n\t\t\t\t\t\t\tvalidateAndSetDate(filters, 'publishedAfter', this.getTimezone(), this);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (filters.publishedBefore) {\n\t\t\t\t\t\t\tvalidateAndSetDate(filters, 'publishedBefore', this.getTimezone(), this);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tObject.assign(qs, options, filters);\n\n\t\t\t\t\t\tif (Object.keys(filters).length > 0) {\n\t\t\t\t\t\t\tdelete qs.forMine;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (qs.relatedToVideoId && qs.forDeveloper !== undefined) {\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\"When using the parameter 'related to video' the parameter 'for developer' cannot be set\",\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 (returnAll) {\n\t\t\t\t\t\t\tresponseData = await googleApiRequestAllItems.call(\n\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t'items',\n\t\t\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t\t\t'/youtube/v3/search',\n\t\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\t\tqs,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tqs.maxResults = this.getNodeParameter('limit', i);\n\t\t\t\t\t\t\tresponseData = await googleApiRequest.call(this, 'GET', '/youtube/v3/search', {}, qs);\n\t\t\t\t\t\t\tresponseData = responseData.items;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t//https://developers.google.com/youtube/v3/docs/videos/list?hl=en\n\t\t\t\t\tif (operation === 'get') {\n\t\t\t\t\t\tlet part = this.getNodeParameter('part', i) as string[];\n\t\t\t\t\t\tconst videoId = this.getNodeParameter('videoId', i) as string;\n\t\t\t\t\t\tconst options = this.getNodeParameter('options', i);\n\n\t\t\t\t\t\tif (part.includes('*')) {\n\t\t\t\t\t\t\tpart = [\n\t\t\t\t\t\t\t\t'contentDetails',\n\t\t\t\t\t\t\t\t'id',\n\t\t\t\t\t\t\t\t'liveStreamingDetails',\n\t\t\t\t\t\t\t\t'localizations',\n\t\t\t\t\t\t\t\t'player',\n\t\t\t\t\t\t\t\t'recordingDetails',\n\t\t\t\t\t\t\t\t'snippet',\n\t\t\t\t\t\t\t\t'statistics',\n\t\t\t\t\t\t\t\t'status',\n\t\t\t\t\t\t\t\t'topicDetails',\n\t\t\t\t\t\t\t];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tqs.part = part.join(',');\n\n\t\t\t\t\t\tqs.id = videoId;\n\n\t\t\t\t\t\tObject.assign(qs, options);\n\n\t\t\t\t\t\tresponseData = await googleApiRequest.call(this, 'GET', '/youtube/v3/videos', {}, qs);\n\n\t\t\t\t\t\tresponseData = responseData.items;\n\t\t\t\t\t}\n\t\t\t\t\t//https://developers.google.com/youtube/v3/guides/uploading_a_video?hl=en\n\t\t\t\t\tif (operation === 'upload') {\n\t\t\t\t\t\tconst title = this.getNodeParameter('title', i) as string;\n\t\t\t\t\t\tconst categoryId = this.getNodeParameter('categoryId', i) as string;\n\t\t\t\t\t\tconst options = this.getNodeParameter('options', i);\n\t\t\t\t\t\tconst binaryProperty = this.getNodeParameter('binaryProperty', i);\n\n\t\t\t\t\t\tconst binaryData = this.helpers.assertBinaryData(i, binaryProperty);\n\n\t\t\t\t\t\tlet mimeType: string;\n\t\t\t\t\t\tlet contentLength: number;\n\t\t\t\t\t\tlet fileContent: Buffer | Readable;\n\n\t\t\t\t\t\tif (binaryData.id) {\n\t\t\t\t\t\t\t// Stream data in 256KB chunks, and upload the via the resumable upload api\n\t\t\t\t\t\t\tfileContent = await this.helpers.getBinaryStream(binaryData.id, UPLOAD_CHUNK_SIZE);\n\t\t\t\t\t\t\tconst metadata = await this.helpers.getBinaryMetadata(binaryData.id);\n\t\t\t\t\t\t\tcontentLength = metadata.fileSize;\n\t\t\t\t\t\t\tmimeType = metadata.mimeType ?? binaryData.mimeType;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tfileContent = Buffer.from(binaryData.data, BINARY_ENCODING);\n\t\t\t\t\t\t\tcontentLength = fileContent.length;\n\t\t\t\t\t\t\tmimeType = binaryData.mimeType;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst payload = {\n\t\t\t\t\t\t\tsnippet: {\n\t\t\t\t\t\t\t\ttitle,\n\t\t\t\t\t\t\t\tcategoryId,\n\t\t\t\t\t\t\t\tdescription: options.description,\n\t\t\t\t\t\t\t\ttags: (options.tags as string)?.split(','),\n\t\t\t\t\t\t\t\tdefaultLanguage: options.defaultLanguage,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tstatus: {\n\t\t\t\t\t\t\t\tprivacyStatus: options.privacyStatus,\n\t\t\t\t\t\t\t\tembeddable: options.embeddable,\n\t\t\t\t\t\t\t\tpublicStatsViewable: options.publicStatsViewable,\n\t\t\t\t\t\t\t\tpublishAt: options.publishAt,\n\t\t\t\t\t\t\t\tselfDeclaredMadeForKids: options.selfDeclaredMadeForKids,\n\t\t\t\t\t\t\t\tlicense: options.license,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\trecordingDetails: {\n\t\t\t\t\t\t\t\trecordingDate: options.recordingDate,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tconst resumableUpload = await googleApiRequest.call(\n\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t'POST',\n\t\t\t\t\t\t\t'/upload/youtube/v3/videos',\n\t\t\t\t\t\t\tpayload,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tuploadType: 'resumable',\n\t\t\t\t\t\t\t\tpart: 'snippet,status,recordingDetails',\n\t\t\t\t\t\t\t\tnotifySubscribers: options.notifySubscribers ?? false,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tundefined,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t\t\t'X-Upload-Content-Length': contentLength,\n\t\t\t\t\t\t\t\t\t'X-Upload-Content-Type': mimeType,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tjson: true,\n\t\t\t\t\t\t\t\tresolveWithFullResponse: true,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tconst uploadUrl = resumableUpload.headers.location;\n\n\t\t\t\t\t\tlet uploadId;\n\t\t\t\t\t\tlet offset = 0;\n\t\t\t\t\t\tfor await (const chunk of fileContent) {\n\t\t\t\t\t\t\tconst nextOffset = offset + Number(chunk.length);\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tconst response = await this.helpers.httpRequest({\n\t\t\t\t\t\t\t\t\tmethod: 'PUT',\n\t\t\t\t\t\t\t\t\turl: uploadUrl,\n\t\t\t\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t\t\t\t'Content-Length': chunk.length,\n\t\t\t\t\t\t\t\t\t\t'Content-Range': `bytes ${offset}-${nextOffset - 1}/${contentLength}`,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tbody: chunk,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tuploadId = response.id;\n\t\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\t\tif (error.response?.status !== 308) throw error;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\toffset = nextOffset;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tresponseData = { uploadId, ...resumableUpload.body };\n\t\t\t\t\t}\n\t\t\t\t\t//https://developers.google.com/youtube/v3/docs/playlists/update\n\t\t\t\t\tif (operation === 'update') {\n\t\t\t\t\t\tconst id = this.getNodeParameter('videoId', i) as string;\n\t\t\t\t\t\tconst title = this.getNodeParameter('title', i) as string;\n\t\t\t\t\t\tconst categoryId = this.getNodeParameter('categoryId', i) as string;\n\t\t\t\t\t\tconst updateFields = this.getNodeParameter('updateFields', i);\n\n\t\t\t\t\t\tqs.part = 'snippet, status, recordingDetails';\n\n\t\t\t\t\t\tconst body = {\n\t\t\t\t\t\t\tid,\n\t\t\t\t\t\t\tsnippet: {\n\t\t\t\t\t\t\t\ttitle,\n\t\t\t\t\t\t\t\tcategoryId,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tstatus: {},\n\t\t\t\t\t\t\trecordingDetails: {},\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tif (updateFields.description) {\n\t\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t\tbody.snippet.description = updateFields.description as string;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (updateFields.privacyStatus) {\n\t\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t\tbody.status.privacyStatus = updateFields.privacyStatus as string;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (updateFields.tags) {\n\t\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t\tbody.snippet.tags = (updateFields.tags as string).split(',');\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (updateFields.embeddable) {\n\t\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t\tbody.status.embeddable = updateFields.embeddable as boolean;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (updateFields.publicStatsViewable) {\n\t\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t\tbody.status.publicStatsViewable = updateFields.publicStatsViewable as boolean;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (updateFields.publishAt) {\n\t\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t\tbody.status.publishAt = updateFields.publishAt as string;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (updateFields.selfDeclaredMadeForKids) {\n\t\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t\tbody.status.selfDeclaredMadeForKids = updateFields.selfDeclaredMadeForKids as boolean;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (updateFields.recordingDate) {\n\t\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t\tbody.recordingDetails.recordingDate = updateFields.recordingDate as string;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (updateFields.license) {\n\t\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t\tbody.status.license = updateFields.license as string;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (updateFields.defaultLanguage) {\n\t\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t\tbody.snippet.defaultLanguage = updateFields.defaultLanguage as string;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tresponseData = await googleApiRequest.call(this, 'PUT', '/youtube/v3/videos', body, qs);\n\t\t\t\t\t}\n\t\t\t\t\t//https://developers.google.com/youtube/v3/docs/videos/delete?hl=en\n\t\t\t\t\tif (operation === 'delete') {\n\t\t\t\t\t\tconst videoId = this.getNodeParameter('videoId', i) as string;\n\t\t\t\t\t\tconst options = this.getNodeParameter('options', i);\n\n\t\t\t\t\t\tconst body: IDataObject = {\n\t\t\t\t\t\t\tid: videoId,\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tif (options.onBehalfOfContentOwner) {\n\t\t\t\t\t\t\tqs.onBehalfOfContentOwner = options.onBehalfOfContentOwner as string;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tresponseData = await googleApiRequest.call(this, 'DELETE', '/youtube/v3/videos', body);\n\n\t\t\t\t\t\tresponseData = { success: true };\n\t\t\t\t\t}\n\t\t\t\t\t//https://developers.google.com/youtube/v3/docs/videos/rate?hl=en\n\t\t\t\t\tif (operation === 'rate') {\n\t\t\t\t\t\tconst videoId = this.getNodeParameter('videoId', i) as string;\n\t\t\t\t\t\tconst rating = this.getNodeParameter('rating', i) as string;\n\n\t\t\t\t\t\tconst body: IDataObject = {\n\t\t\t\t\t\t\tid: videoId,\n\t\t\t\t\t\t\trating,\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tresponseData = await googleApiRequest.call(\n\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t'POST',\n\t\t\t\t\t\t\t'/youtube/v3/videos/rate',\n\t\t\t\t\t\t\tbody,\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tresponseData = { success: true };\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (resource === 'videoCategory') {\n\t\t\t\t\t//https://developers.google.com/youtube/v3/docs/videoCategories/list\n\t\t\t\t\tif (operation === 'getAll') {\n\t\t\t\t\t\tconst returnAll = this.getNodeParameter('returnAll', i);\n\t\t\t\t\t\tconst regionCode = this.getNodeParameter('regionCode', i) as string;\n\n\t\t\t\t\t\tqs.regionCode = regionCode;\n\n\t\t\t\t\t\tqs.part = 'snippet';\n\n\t\t\t\t\t\tresponseData = await googleApiRequest.call(\n\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t\t'/youtube/v3/videoCategories',\n\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\tqs,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tresponseData = responseData.items;\n\n\t\t\t\t\t\tif (!returnAll) {\n\t\t\t\t\t\t\tconst limit = this.getNodeParameter('limit', i);\n\t\t\t\t\t\t\tresponseData = responseData.splice(0, limit);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tif (this.continueOnFail()) {\n\t\t\t\t\tconst executionErrorData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\tthis.helpers.returnJsonArray({ error: error.message }),\n\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t);\n\t\t\t\t\treturnData.push(...executionErrorData);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tthrow error;\n\t\t\t}\n\n\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\tthis.helpers.returnJsonArray(responseData as IDataObject[]),\n\t\t\t\t{ itemData: { item: i } },\n\t\t\t);\n\n\t\t\treturnData.push(...executionData);\n\t\t}\n\n\t\treturn [returnData];\n\t}\n}\n"],"mappings":"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","names":["import_GenericFunctions"]}
|
|
1
|
+
{"version":3,"sources":["../../../../nodes/Google/YouTube/YouTube.node.ts"],"sourcesContent":["import type {\n\tIDataObject,\n\tIExecuteFunctions,\n\tILoadOptionsFunctions,\n\tINodeExecutionData,\n\tINodePropertyOptions,\n\tINodeType,\n\tINodeTypeDescription,\n} from 'n8n-workflow';\nimport { NodeConnectionTypes, BINARY_ENCODING, NodeOperationError } from 'n8n-workflow';\nimport { Readable } from 'stream';\n\nimport { isoCountryCodes } from '@utils/ISOCountryCodes';\n\nimport { channelFields, channelOperations } from './ChannelDescription';\nimport { googleApiRequest, googleApiRequestAllItems } from './GenericFunctions';\nimport { playlistFields, playlistOperations } from './PlaylistDescription';\nimport { playlistItemFields, playlistItemOperations } from './PlaylistItemDescription';\nimport { videoCategoryFields, videoCategoryOperations } from './VideoCategoryDescription';\nimport { videoFields, videoOperations } from './VideoDescription';\nimport { validateAndSetDate } from '../GenericFunctions';\n\nconst UPLOAD_CHUNK_SIZE = 1024 * 1024;\n\nexport class YouTube implements INodeType {\n\tdescription: INodeTypeDescription = {\n\t\tdisplayName: 'YouTube',\n\t\tname: 'youTube',\n\t\t// eslint-disable-next-line n8n-nodes-base/node-class-description-icon-not-svg\n\t\ticon: 'file:youTube.png',\n\t\tgroup: ['input'],\n\t\tversion: 1,\n\t\tsubtitle: '={{$parameter[\"operation\"] + \": \" + $parameter[\"resource\"]}}',\n\t\tdescription: 'Consume YouTube API',\n\t\tdefaults: {\n\t\t\tname: 'YouTube',\n\t\t},\n\t\tusableAsTool: true,\n\t\tinputs: [NodeConnectionTypes.Main],\n\t\toutputs: [NodeConnectionTypes.Main],\n\t\tcredentials: [\n\t\t\t{\n\t\t\t\tname: 'youTubeOAuth2Api',\n\t\t\t\trequired: true,\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: 'Channel',\n\t\t\t\t\t\tvalue: 'channel',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Playlist',\n\t\t\t\t\t\tvalue: 'playlist',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Playlist Item',\n\t\t\t\t\t\tvalue: 'playlistItem',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Video',\n\t\t\t\t\t\tvalue: 'video',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Video Category',\n\t\t\t\t\t\tvalue: 'videoCategory',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tdefault: 'channel',\n\t\t\t},\n\t\t\t...channelOperations,\n\t\t\t...channelFields,\n\n\t\t\t...playlistOperations,\n\t\t\t...playlistFields,\n\n\t\t\t...playlistItemOperations,\n\t\t\t...playlistItemFields,\n\n\t\t\t...videoOperations,\n\t\t\t...videoFields,\n\n\t\t\t...videoCategoryOperations,\n\t\t\t...videoCategoryFields,\n\t\t],\n\t};\n\n\tmethods = {\n\t\tloadOptions: {\n\t\t\t// Get all the languages to display them to user so that they can\n\t\t\t// select them easily\n\t\t\tasync getLanguages(this: ILoadOptionsFunctions): Promise<INodePropertyOptions[]> {\n\t\t\t\tconst returnData: INodePropertyOptions[] = [];\n\t\t\t\tconst languages = await googleApiRequestAllItems.call(\n\t\t\t\t\tthis,\n\t\t\t\t\t'items',\n\t\t\t\t\t'GET',\n\t\t\t\t\t'/youtube/v3/i18nLanguages',\n\t\t\t\t);\n\t\t\t\tfor (const language of languages) {\n\t\t\t\t\tconst languageName = language.id.toUpperCase();\n\t\t\t\t\tconst languageId = language.id;\n\t\t\t\t\treturnData.push({\n\t\t\t\t\t\tname: languageName,\n\t\t\t\t\t\tvalue: languageId,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn returnData;\n\t\t\t},\n\t\t\t// Get all the countries codes to display them to user so that they can\n\t\t\t// select them easily\n\t\t\tasync getCountriesCodes(this: ILoadOptionsFunctions): Promise<INodePropertyOptions[]> {\n\t\t\t\tconst returnData: INodePropertyOptions[] = [];\n\t\t\t\tfor (const countryCode of isoCountryCodes) {\n\t\t\t\t\tconst countryCodeName = `${countryCode.name} - ${countryCode.alpha2}`;\n\t\t\t\t\tconst countryCodeId = countryCode.alpha2;\n\t\t\t\t\treturnData.push({\n\t\t\t\t\t\tname: countryCodeName,\n\t\t\t\t\t\tvalue: countryCodeId,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn returnData;\n\t\t\t},\n\t\t\t// Get all the video categories to display them to user so that they can\n\t\t\t// select them easily\n\t\t\tasync getVideoCategories(this: ILoadOptionsFunctions): Promise<INodePropertyOptions[]> {\n\t\t\t\tconst countryCode = this.getCurrentNodeParameter('regionCode') as string;\n\n\t\t\t\tconst returnData: INodePropertyOptions[] = [];\n\t\t\t\tconst qs: IDataObject = {};\n\t\t\t\tqs.regionCode = countryCode;\n\t\t\t\tqs.part = 'snippet';\n\t\t\t\tconst categories = await googleApiRequestAllItems.call(\n\t\t\t\t\tthis,\n\t\t\t\t\t'items',\n\t\t\t\t\t'GET',\n\t\t\t\t\t'/youtube/v3/videoCategories',\n\t\t\t\t\t{},\n\t\t\t\t\tqs,\n\t\t\t\t);\n\t\t\t\tfor (const category of categories) {\n\t\t\t\t\tconst categoryName = category.snippet.title;\n\t\t\t\t\tconst categoryId = category.id;\n\t\t\t\t\treturnData.push({\n\t\t\t\t\t\tname: categoryName,\n\t\t\t\t\t\tvalue: categoryId,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn returnData;\n\t\t\t},\n\t\t\t// Get all the playlists to display them to user so that they can\n\t\t\t// select them easily\n\t\t\tasync getPlaylists(this: ILoadOptionsFunctions): Promise<INodePropertyOptions[]> {\n\t\t\t\tconst returnData: INodePropertyOptions[] = [];\n\t\t\t\tconst qs: IDataObject = {};\n\t\t\t\tqs.part = 'snippet';\n\t\t\t\tqs.mine = true;\n\t\t\t\tconst playlists = await googleApiRequestAllItems.call(\n\t\t\t\t\tthis,\n\t\t\t\t\t'items',\n\t\t\t\t\t'GET',\n\t\t\t\t\t'/youtube/v3/playlists',\n\t\t\t\t\t{},\n\t\t\t\t\tqs,\n\t\t\t\t);\n\t\t\t\tfor (const playlist of playlists) {\n\t\t\t\t\tconst playlistName = playlist.snippet.title;\n\t\t\t\t\tconst playlistId = playlist.id;\n\t\t\t\t\treturnData.push({\n\t\t\t\t\t\tname: playlistName,\n\t\t\t\t\t\tvalue: playlistId,\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};\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\tconst qs: IDataObject = {};\n\t\tlet responseData;\n\t\tconst resource = this.getNodeParameter('resource', 0);\n\t\tconst operation = this.getNodeParameter('operation', 0);\n\t\tfor (let i = 0; i < length; i++) {\n\t\t\ttry {\n\t\t\t\tif (resource === 'channel') {\n\t\t\t\t\tif (operation === 'get') {\n\t\t\t\t\t\t//https://developers.google.com/youtube/v3/docs/channels/list\n\t\t\t\t\t\tlet part = this.getNodeParameter('part', i) as string[];\n\t\t\t\t\t\tconst channelId = this.getNodeParameter('channelId', i) as string;\n\n\t\t\t\t\t\tif (part.includes('*')) {\n\t\t\t\t\t\t\tpart = [\n\t\t\t\t\t\t\t\t'brandingSettings',\n\t\t\t\t\t\t\t\t'contentDetails',\n\t\t\t\t\t\t\t\t'contentOwnerDetails',\n\t\t\t\t\t\t\t\t'id',\n\t\t\t\t\t\t\t\t'localizations',\n\t\t\t\t\t\t\t\t'snippet',\n\t\t\t\t\t\t\t\t'statistics',\n\t\t\t\t\t\t\t\t'status',\n\t\t\t\t\t\t\t\t'topicDetails',\n\t\t\t\t\t\t\t];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tqs.part = part.join(',');\n\n\t\t\t\t\t\tqs.id = channelId;\n\n\t\t\t\t\t\tresponseData = await googleApiRequest.call(this, 'GET', '/youtube/v3/channels', {}, qs);\n\n\t\t\t\t\t\tresponseData = responseData.items;\n\t\t\t\t\t}\n\t\t\t\t\t//https://developers.google.com/youtube/v3/docs/channels/list\n\t\t\t\t\tif (operation === 'getAll') {\n\t\t\t\t\t\tconst returnAll = this.getNodeParameter('returnAll', i);\n\t\t\t\t\t\tlet part = this.getNodeParameter('part', i) as string[];\n\t\t\t\t\t\tconst options = this.getNodeParameter('options', i);\n\t\t\t\t\t\tconst filters = this.getNodeParameter('filters', i);\n\n\t\t\t\t\t\tif (part.includes('*')) {\n\t\t\t\t\t\t\tpart = [\n\t\t\t\t\t\t\t\t'brandingSettings',\n\t\t\t\t\t\t\t\t'contentDetails',\n\t\t\t\t\t\t\t\t'contentOwnerDetails',\n\t\t\t\t\t\t\t\t'id',\n\t\t\t\t\t\t\t\t'localizations',\n\t\t\t\t\t\t\t\t'snippet',\n\t\t\t\t\t\t\t\t'statistics',\n\t\t\t\t\t\t\t\t'status',\n\t\t\t\t\t\t\t\t'topicDetails',\n\t\t\t\t\t\t\t];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tqs.part = part.join(',');\n\n\t\t\t\t\t\tObject.assign(qs, options, filters);\n\n\t\t\t\t\t\tqs.mine = true;\n\n\t\t\t\t\t\tif (qs.categoryId || qs.forUsername || qs.id || qs.managedByMe) {\n\t\t\t\t\t\t\tdelete qs.mine;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (returnAll) {\n\t\t\t\t\t\t\tresponseData = await googleApiRequestAllItems.call(\n\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t'items',\n\t\t\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t\t\t'/youtube/v3/channels',\n\t\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\t\tqs,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tqs.maxResults = this.getNodeParameter('limit', i);\n\t\t\t\t\t\t\tresponseData = await googleApiRequest.call(\n\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t\t\t'/youtube/v3/channels',\n\t\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\t\tqs,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tresponseData = responseData.items;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t//https://developers.google.com/youtube/v3/docs/channels/update\n\t\t\t\t\tif (operation === 'update') {\n\t\t\t\t\t\tconst channelId = this.getNodeParameter('channelId', i) as string;\n\t\t\t\t\t\tconst updateFields = this.getNodeParameter('updateFields', i);\n\n\t\t\t\t\t\tconst body: IDataObject = {\n\t\t\t\t\t\t\tid: channelId,\n\t\t\t\t\t\t\tbrandingSettings: {\n\t\t\t\t\t\t\t\tchannel: {},\n\t\t\t\t\t\t\t\timage: {},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tqs.part = 'brandingSettings';\n\n\t\t\t\t\t\tif (updateFields.onBehalfOfContentOwner) {\n\t\t\t\t\t\t\tqs.onBehalfOfContentOwner = updateFields.onBehalfOfContentOwner as string;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (updateFields.brandingSettingsUi) {\n\t\t\t\t\t\t\tconst channelSettingsValues = (updateFields.brandingSettingsUi as IDataObject)\n\t\t\t\t\t\t\t\t.channelSettingsValues as IDataObject | undefined;\n\t\t\t\t\t\t\tconst channelSettings: IDataObject = {};\n\t\t\t\t\t\t\tif (channelSettingsValues?.channel) {\n\t\t\t\t\t\t\t\tconst channelSettingsOptions = channelSettingsValues.channel as IDataObject;\n\t\t\t\t\t\t\t\tif (channelSettingsOptions.country) {\n\t\t\t\t\t\t\t\t\tchannelSettings.country = channelSettingsOptions.country;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (channelSettingsOptions.description) {\n\t\t\t\t\t\t\t\t\tchannelSettings.description = channelSettingsOptions.description;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (channelSettingsOptions.defaultLanguage) {\n\t\t\t\t\t\t\t\t\tchannelSettings.defaultLanguage = channelSettingsOptions.defaultLanguage;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (channelSettingsOptions.defaultTab) {\n\t\t\t\t\t\t\t\t\tchannelSettings.defaultTab = channelSettingsOptions.defaultTab;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (channelSettingsOptions.featuredChannelsTitle) {\n\t\t\t\t\t\t\t\t\tchannelSettings.featuredChannelsTitle =\n\t\t\t\t\t\t\t\t\t\tchannelSettingsOptions.featuredChannelsTitle;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (channelSettingsOptions.featuredChannelsUrls) {\n\t\t\t\t\t\t\t\t\tchannelSettings.featuredChannelsUrls =\n\t\t\t\t\t\t\t\t\t\tchannelSettingsOptions.featuredChannelsUrls;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (channelSettingsOptions.keywords) {\n\t\t\t\t\t\t\t\t\tchannelSettings.keywords = channelSettingsOptions.keywords;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (channelSettingsOptions.moderateComments) {\n\t\t\t\t\t\t\t\t\tchannelSettings.moderateComments =\n\t\t\t\t\t\t\t\t\t\tchannelSettingsOptions.moderateComments as boolean;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (channelSettingsOptions.profileColor) {\n\t\t\t\t\t\t\t\t\tchannelSettings.profileColor = channelSettingsOptions.profileColor as string;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (channelSettingsOptions.profileColor) {\n\t\t\t\t\t\t\t\t\tchannelSettings.profileColor = channelSettingsOptions.profileColor as string;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (channelSettingsOptions.showRelatedChannels) {\n\t\t\t\t\t\t\t\t\tchannelSettings.showRelatedChannels =\n\t\t\t\t\t\t\t\t\t\tchannelSettingsOptions.showRelatedChannels as boolean;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (channelSettingsOptions.showBrowseView) {\n\t\t\t\t\t\t\t\t\tchannelSettings.showBrowseView = channelSettingsOptions.showBrowseView as boolean;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (channelSettingsOptions.trackingAnalyticsAccountId) {\n\t\t\t\t\t\t\t\t\tchannelSettings.trackingAnalyticsAccountId =\n\t\t\t\t\t\t\t\t\t\tchannelSettingsOptions.trackingAnalyticsAccountId as string;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (channelSettingsOptions.unsubscribedTrailer) {\n\t\t\t\t\t\t\t\t\tchannelSettings.unsubscribedTrailer =\n\t\t\t\t\t\t\t\t\t\tchannelSettingsOptions.unsubscribedTrailer as string;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tconst imageSettingsValues = (updateFields.brandingSettingsUi as IDataObject)\n\t\t\t\t\t\t\t\t.imageSettingsValues as IDataObject | undefined;\n\t\t\t\t\t\t\tconst imageSettings: IDataObject = {};\n\t\t\t\t\t\t\tif (imageSettingsValues?.image) {\n\t\t\t\t\t\t\t\tconst imageSettingsOptions = imageSettings.image as IDataObject;\n\t\t\t\t\t\t\t\tif (imageSettingsOptions.bannerExternalUrl) {\n\t\t\t\t\t\t\t\t\timageSettings.bannerExternalUrl =\n\t\t\t\t\t\t\t\t\t\timageSettingsOptions.bannerExternalUrl as string;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (imageSettingsOptions.trackingImageUrl) {\n\t\t\t\t\t\t\t\t\timageSettings.trackingImageUrl = imageSettingsOptions.trackingImageUrl as string;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (imageSettingsOptions.watchIconImageUrl) {\n\t\t\t\t\t\t\t\t\timageSettings.watchIconImageUrl =\n\t\t\t\t\t\t\t\t\t\timageSettingsOptions.watchIconImageUrl as string;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t\tbody.brandingSettings.channel = channelSettings;\n\t\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t\tbody.brandingSettings.image = imageSettings;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tresponseData = await googleApiRequest.call(\n\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t'PUT',\n\t\t\t\t\t\t\t'/youtube/v3/channels',\n\t\t\t\t\t\t\tbody,\n\t\t\t\t\t\t\tqs,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\t//https://developers.google.com/youtube/v3/docs/channelBanners/insert\n\t\t\t\t\tif (operation === 'uploadBanner') {\n\t\t\t\t\t\tconst channelId = this.getNodeParameter('channelId', i) as string;\n\t\t\t\t\t\tconst binaryProperty = this.getNodeParameter('binaryProperty', i);\n\t\t\t\t\t\tconst binaryData = this.helpers.assertBinaryData(i, binaryProperty);\n\t\t\t\t\t\tconst body = await this.helpers.getBinaryDataBuffer(i, binaryProperty);\n\n\t\t\t\t\t\tconst requestOptions = {\n\t\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t\t...(binaryData.mimeType ? { 'Content-Type': binaryData.mimeType } : {}),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tjson: false,\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tconst response = await googleApiRequest.call(\n\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t'POST',\n\t\t\t\t\t\t\t'/upload/youtube/v3/channelBanners/insert',\n\t\t\t\t\t\t\tbody,\n\t\t\t\t\t\t\tqs,\n\t\t\t\t\t\t\tundefined,\n\t\t\t\t\t\t\trequestOptions,\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tconst { url } = JSON.parse(response as string);\n\n\t\t\t\t\t\tqs.part = 'brandingSettings';\n\n\t\t\t\t\t\tresponseData = await googleApiRequest.call(\n\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t'PUT',\n\t\t\t\t\t\t\t'/youtube/v3/channels',\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: channelId,\n\t\t\t\t\t\t\t\tbrandingSettings: {\n\t\t\t\t\t\t\t\t\timage: {\n\t\t\t\t\t\t\t\t\t\tbannerExternalUrl: url,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tqs,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (resource === 'playlist') {\n\t\t\t\t\t//https://developers.google.com/youtube/v3/docs/playlists/list\n\t\t\t\t\tif (operation === 'get') {\n\t\t\t\t\t\tlet part = this.getNodeParameter('part', i) as string[];\n\t\t\t\t\t\tconst playlistId = this.getNodeParameter('playlistId', i) as string;\n\t\t\t\t\t\tconst options = this.getNodeParameter('options', i);\n\n\t\t\t\t\t\tif (part.includes('*')) {\n\t\t\t\t\t\t\tpart = ['contentDetails', 'id', 'localizations', 'player', 'snippet', 'status'];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tqs.part = part.join(',');\n\n\t\t\t\t\t\tqs.id = playlistId;\n\n\t\t\t\t\t\tObject.assign(qs, options);\n\n\t\t\t\t\t\tresponseData = await googleApiRequest.call(\n\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t\t'/youtube/v3/playlists',\n\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\tqs,\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tresponseData = responseData.items;\n\t\t\t\t\t}\n\t\t\t\t\t//https://developers.google.com/youtube/v3/docs/playlists/list\n\t\t\t\t\tif (operation === 'getAll') {\n\t\t\t\t\t\tconst returnAll = this.getNodeParameter('returnAll', i);\n\t\t\t\t\t\tlet part = this.getNodeParameter('part', i) as string[];\n\t\t\t\t\t\tconst options = this.getNodeParameter('options', i);\n\t\t\t\t\t\tconst filters = this.getNodeParameter('filters', i);\n\n\t\t\t\t\t\tif (part.includes('*')) {\n\t\t\t\t\t\t\tpart = ['contentDetails', 'id', 'localizations', 'player', 'snippet', 'status'];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tqs.part = part.join(',');\n\n\t\t\t\t\t\tObject.assign(qs, options, filters);\n\n\t\t\t\t\t\tqs.mine = true;\n\n\t\t\t\t\t\tif (qs.channelId || qs.id) {\n\t\t\t\t\t\t\tdelete qs.mine;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (returnAll) {\n\t\t\t\t\t\t\tresponseData = await googleApiRequestAllItems.call(\n\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t'items',\n\t\t\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t\t\t'/youtube/v3/playlists',\n\t\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\t\tqs,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tqs.maxResults = this.getNodeParameter('limit', i);\n\t\t\t\t\t\t\tresponseData = await googleApiRequest.call(\n\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t\t\t'/youtube/v3/playlists',\n\t\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\t\tqs,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tresponseData = responseData.items;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t//https://developers.google.com/youtube/v3/docs/playlists/insert\n\t\t\t\t\tif (operation === 'create') {\n\t\t\t\t\t\tconst title = this.getNodeParameter('title', i) as string;\n\t\t\t\t\t\tconst options = this.getNodeParameter('options', i);\n\n\t\t\t\t\t\tqs.part = 'snippet';\n\n\t\t\t\t\t\tconst body: IDataObject = {\n\t\t\t\t\t\t\tsnippet: {\n\t\t\t\t\t\t\t\ttitle,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tif (options.tags) {\n\t\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t\tbody.snippet.tags = (options.tags as string).split(',');\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (options.description) {\n\t\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t\tbody.snippet.privacyStatus = options.privacyStatus as string;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (options.defaultLanguage) {\n\t\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t\tbody.snippet.defaultLanguage = options.defaultLanguage as string;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (options.onBehalfOfContentOwner) {\n\t\t\t\t\t\t\tqs.onBehalfOfContentOwner = options.onBehalfOfContentOwner as string;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (options.onBehalfOfContentOwnerChannel) {\n\t\t\t\t\t\t\tqs.onBehalfOfContentOwnerChannel = options.onBehalfOfContentOwnerChannel as string;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tresponseData = await googleApiRequest.call(\n\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t'POST',\n\t\t\t\t\t\t\t'/youtube/v3/playlists',\n\t\t\t\t\t\t\tbody,\n\t\t\t\t\t\t\tqs,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\t//https://developers.google.com/youtube/v3/docs/playlists/update\n\t\t\t\t\tif (operation === 'update') {\n\t\t\t\t\t\tconst playlistId = this.getNodeParameter('playlistId', i) as string;\n\t\t\t\t\t\tconst title = this.getNodeParameter('title', i) as string;\n\t\t\t\t\t\tconst updateFields = this.getNodeParameter('updateFields', i);\n\n\t\t\t\t\t\tqs.part = 'snippet, status';\n\n\t\t\t\t\t\tconst body: IDataObject = {\n\t\t\t\t\t\t\tid: playlistId,\n\t\t\t\t\t\t\tsnippet: {\n\t\t\t\t\t\t\t\ttitle,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tstatus: {},\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tif (updateFields.tags) {\n\t\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t\tbody.snippet.tags = (updateFields.tags as string).split(',');\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (updateFields.privacyStatus) {\n\t\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t\tbody.status.privacyStatus = updateFields.privacyStatus as string;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (updateFields.description) {\n\t\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t\tbody.snippet.description = updateFields.description as string;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (updateFields.defaultLanguage) {\n\t\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t\tbody.snippet.defaultLanguage = updateFields.defaultLanguage as string;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (updateFields.onBehalfOfContentOwner) {\n\t\t\t\t\t\t\tqs.onBehalfOfContentOwner = updateFields.onBehalfOfContentOwner as string;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tresponseData = await googleApiRequest.call(\n\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t'PUT',\n\t\t\t\t\t\t\t'/youtube/v3/playlists',\n\t\t\t\t\t\t\tbody,\n\t\t\t\t\t\t\tqs,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\t//https://developers.google.com/youtube/v3/docs/playlists/delete\n\t\t\t\t\tif (operation === 'delete') {\n\t\t\t\t\t\tconst playlistId = this.getNodeParameter('playlistId', i) as string;\n\t\t\t\t\t\tconst options = this.getNodeParameter('options', i);\n\n\t\t\t\t\t\tconst body: IDataObject = {\n\t\t\t\t\t\t\tid: playlistId,\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tif (options.onBehalfOfContentOwner) {\n\t\t\t\t\t\t\tqs.onBehalfOfContentOwner = options.onBehalfOfContentOwner as string;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tresponseData = await googleApiRequest.call(\n\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t'DELETE',\n\t\t\t\t\t\t\t'/youtube/v3/playlists',\n\t\t\t\t\t\t\tbody,\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tresponseData = { success: true };\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (resource === 'playlistItem') {\n\t\t\t\t\t//https://developers.google.com/youtube/v3/docs/playlistItems/list\n\t\t\t\t\tif (operation === 'get') {\n\t\t\t\t\t\tlet part = this.getNodeParameter('part', i) as string[];\n\t\t\t\t\t\tconst playlistItemId = this.getNodeParameter('playlistItemId', i) as string;\n\t\t\t\t\t\tconst options = this.getNodeParameter('options', i);\n\n\t\t\t\t\t\tif (part.includes('*')) {\n\t\t\t\t\t\t\tpart = ['contentDetails', 'id', 'snippet', 'status'];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tqs.part = part.join(',');\n\n\t\t\t\t\t\tqs.id = playlistItemId;\n\n\t\t\t\t\t\tObject.assign(qs, options);\n\n\t\t\t\t\t\tresponseData = await googleApiRequest.call(\n\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t\t'/youtube/v3/playlistItems',\n\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\tqs,\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tresponseData = responseData.items;\n\t\t\t\t\t}\n\t\t\t\t\t//https://developers.google.com/youtube/v3/docs/playlistItems/list\n\t\t\t\t\tif (operation === 'getAll') {\n\t\t\t\t\t\tconst returnAll = this.getNodeParameter('returnAll', i);\n\t\t\t\t\t\tlet part = this.getNodeParameter('part', i) as string[];\n\t\t\t\t\t\tconst options = this.getNodeParameter('options', i);\n\t\t\t\t\t\tconst playlistId = this.getNodeParameter('playlistId', i) as string;\n\t\t\t\t\t\t//const filters = this.getNodeParameter('filters', i);\n\n\t\t\t\t\t\tif (part.includes('*')) {\n\t\t\t\t\t\t\tpart = ['contentDetails', 'id', 'snippet', 'status'];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tqs.playlistId = playlistId;\n\n\t\t\t\t\t\tqs.part = part.join(',');\n\n\t\t\t\t\t\tObject.assign(qs, options);\n\n\t\t\t\t\t\tif (returnAll) {\n\t\t\t\t\t\t\tresponseData = await googleApiRequestAllItems.call(\n\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t'items',\n\t\t\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t\t\t'/youtube/v3/playlistItems',\n\t\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\t\tqs,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tqs.maxResults = this.getNodeParameter('limit', i);\n\t\t\t\t\t\t\tresponseData = await googleApiRequest.call(\n\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t\t\t'/youtube/v3/playlistItems',\n\t\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\t\tqs,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tresponseData = responseData.items;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t//https://developers.google.com/youtube/v3/docs/playlistItems/insert\n\t\t\t\t\tif (operation === 'add') {\n\t\t\t\t\t\tconst playlistId = this.getNodeParameter('playlistId', i) as string;\n\t\t\t\t\t\tconst videoId = this.getNodeParameter('videoId', i) as string;\n\t\t\t\t\t\tconst options = this.getNodeParameter('options', i);\n\n\t\t\t\t\t\tqs.part = 'snippet, contentDetails';\n\n\t\t\t\t\t\tconst body: IDataObject = {\n\t\t\t\t\t\t\tsnippet: {\n\t\t\t\t\t\t\t\tplaylistId,\n\t\t\t\t\t\t\t\tresourceId: {\n\t\t\t\t\t\t\t\t\tkind: 'youtube#video',\n\t\t\t\t\t\t\t\t\tvideoId,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tcontentDetails: {},\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tif (options.position) {\n\t\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t\tbody.snippet.position = options.position as number;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (options.note) {\n\t\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t\tbody.contentDetails.note = options.note as string;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (options.startAt) {\n\t\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t\tbody.contentDetails.startAt = options.startAt as string;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (options.endAt) {\n\t\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t\tbody.contentDetails.endAt = options.endAt as string;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (options.onBehalfOfContentOwner) {\n\t\t\t\t\t\t\tqs.onBehalfOfContentOwner = options.onBehalfOfContentOwner as string;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tresponseData = await googleApiRequest.call(\n\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t'POST',\n\t\t\t\t\t\t\t'/youtube/v3/playlistItems',\n\t\t\t\t\t\t\tbody,\n\t\t\t\t\t\t\tqs,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\t//https://developers.google.com/youtube/v3/docs/playlistItems/delete\n\t\t\t\t\tif (operation === 'delete') {\n\t\t\t\t\t\tconst playlistItemId = this.getNodeParameter('playlistItemId', i) as string;\n\t\t\t\t\t\tconst options = this.getNodeParameter('options', i);\n\n\t\t\t\t\t\tconst body: IDataObject = {\n\t\t\t\t\t\t\tid: playlistItemId,\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tif (options.onBehalfOfContentOwner) {\n\t\t\t\t\t\t\tqs.onBehalfOfContentOwner = options.onBehalfOfContentOwner as string;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tresponseData = await googleApiRequest.call(\n\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t'DELETE',\n\t\t\t\t\t\t\t'/youtube/v3/playlistItems',\n\t\t\t\t\t\t\tbody,\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tresponseData = { success: true };\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (resource === 'video') {\n\t\t\t\t\t//https://developers.google.com/youtube/v3/docs/search/list\n\t\t\t\t\tif (operation === 'getAll') {\n\t\t\t\t\t\tconst returnAll = this.getNodeParameter('returnAll', i);\n\t\t\t\t\t\tconst options = this.getNodeParameter('options', i);\n\t\t\t\t\t\tconst filters = this.getNodeParameter('filters', i);\n\n\t\t\t\t\t\tqs.part = 'snippet';\n\n\t\t\t\t\t\tqs.type = 'video';\n\n\t\t\t\t\t\tqs.forMine = true;\n\n\t\t\t\t\t\tif (filters.publishedAfter) {\n\t\t\t\t\t\t\tvalidateAndSetDate(filters, 'publishedAfter', this.getTimezone(), this);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (filters.publishedBefore) {\n\t\t\t\t\t\t\tvalidateAndSetDate(filters, 'publishedBefore', this.getTimezone(), this);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tObject.assign(qs, options, filters);\n\n\t\t\t\t\t\tif (Object.keys(filters).length > 0) {\n\t\t\t\t\t\t\tdelete qs.forMine;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (qs.relatedToVideoId && qs.forDeveloper !== undefined) {\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\"When using the parameter 'related to video' the parameter 'for developer' cannot be set\",\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 (returnAll) {\n\t\t\t\t\t\t\tresponseData = await googleApiRequestAllItems.call(\n\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t'items',\n\t\t\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t\t\t'/youtube/v3/search',\n\t\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\t\tqs,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tqs.maxResults = this.getNodeParameter('limit', i);\n\t\t\t\t\t\t\tresponseData = await googleApiRequest.call(this, 'GET', '/youtube/v3/search', {}, qs);\n\t\t\t\t\t\t\tresponseData = responseData.items;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t//https://developers.google.com/youtube/v3/docs/videos/list?hl=en\n\t\t\t\t\tif (operation === 'get') {\n\t\t\t\t\t\tlet part = this.getNodeParameter('part', i) as string[];\n\t\t\t\t\t\tconst videoId = this.getNodeParameter('videoId', i) as string;\n\t\t\t\t\t\tconst options = this.getNodeParameter('options', i);\n\n\t\t\t\t\t\tif (part.includes('*')) {\n\t\t\t\t\t\t\tpart = [\n\t\t\t\t\t\t\t\t'contentDetails',\n\t\t\t\t\t\t\t\t'id',\n\t\t\t\t\t\t\t\t'liveStreamingDetails',\n\t\t\t\t\t\t\t\t'localizations',\n\t\t\t\t\t\t\t\t'player',\n\t\t\t\t\t\t\t\t'recordingDetails',\n\t\t\t\t\t\t\t\t'snippet',\n\t\t\t\t\t\t\t\t'statistics',\n\t\t\t\t\t\t\t\t'status',\n\t\t\t\t\t\t\t\t'topicDetails',\n\t\t\t\t\t\t\t];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tqs.part = part.join(',');\n\n\t\t\t\t\t\tqs.id = videoId;\n\n\t\t\t\t\t\tObject.assign(qs, options);\n\n\t\t\t\t\t\tresponseData = await googleApiRequest.call(this, 'GET', '/youtube/v3/videos', {}, qs);\n\n\t\t\t\t\t\tresponseData = responseData.items;\n\t\t\t\t\t}\n\t\t\t\t\t//https://developers.google.com/youtube/v3/guides/uploading_a_video?hl=en\n\t\t\t\t\tif (operation === 'upload') {\n\t\t\t\t\t\tconst title = this.getNodeParameter('title', i) as string;\n\t\t\t\t\t\tconst categoryId = this.getNodeParameter('categoryId', i) as string;\n\t\t\t\t\t\tconst options = this.getNodeParameter('options', i);\n\t\t\t\t\t\tconst binaryProperty = this.getNodeParameter('binaryProperty', i);\n\n\t\t\t\t\t\tconst binaryData = this.helpers.assertBinaryData(i, binaryProperty);\n\n\t\t\t\t\t\tlet mimeType: string;\n\t\t\t\t\t\tlet contentLength: number;\n\t\t\t\t\t\tlet fileContent: Readable;\n\n\t\t\t\t\t\tif (binaryData.id) {\n\t\t\t\t\t\t\t// Stream data in 256KB chunks, and upload the via the resumable upload api\n\t\t\t\t\t\t\tfileContent = await this.helpers.getBinaryStream(binaryData.id, UPLOAD_CHUNK_SIZE);\n\t\t\t\t\t\t\tconst metadata = await this.helpers.getBinaryMetadata(binaryData.id);\n\t\t\t\t\t\t\tcontentLength = metadata.fileSize;\n\t\t\t\t\t\t\tmimeType = metadata.mimeType ?? binaryData.mimeType;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst buffer = Buffer.from(binaryData.data, BINARY_ENCODING);\n\t\t\t\t\t\t\tfileContent = Readable.from(buffer);\n\t\t\t\t\t\t\tcontentLength = buffer.length;\n\t\t\t\t\t\t\tmimeType = binaryData.mimeType;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst payload = {\n\t\t\t\t\t\t\tsnippet: {\n\t\t\t\t\t\t\t\ttitle,\n\t\t\t\t\t\t\t\tcategoryId,\n\t\t\t\t\t\t\t\tdescription: options.description,\n\t\t\t\t\t\t\t\ttags: (options.tags as string)?.split(','),\n\t\t\t\t\t\t\t\tdefaultLanguage: options.defaultLanguage,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tstatus: {\n\t\t\t\t\t\t\t\tprivacyStatus: options.privacyStatus,\n\t\t\t\t\t\t\t\tembeddable: options.embeddable,\n\t\t\t\t\t\t\t\tpublicStatsViewable: options.publicStatsViewable,\n\t\t\t\t\t\t\t\tpublishAt: options.publishAt,\n\t\t\t\t\t\t\t\tselfDeclaredMadeForKids: options.selfDeclaredMadeForKids,\n\t\t\t\t\t\t\t\tlicense: options.license,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\trecordingDetails: {\n\t\t\t\t\t\t\t\trecordingDate: options.recordingDate,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tconst resumableUpload = await googleApiRequest.call(\n\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t'POST',\n\t\t\t\t\t\t\t'/upload/youtube/v3/videos',\n\t\t\t\t\t\t\tpayload,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tuploadType: 'resumable',\n\t\t\t\t\t\t\t\tpart: 'snippet,status,recordingDetails',\n\t\t\t\t\t\t\t\tnotifySubscribers: options.notifySubscribers ?? false,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tundefined,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t\t\t'X-Upload-Content-Length': contentLength,\n\t\t\t\t\t\t\t\t\t'X-Upload-Content-Type': mimeType,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tjson: true,\n\t\t\t\t\t\t\t\tresolveWithFullResponse: true,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tconst uploadUrl = resumableUpload.headers.location;\n\n\t\t\t\t\t\tlet uploadId;\n\t\t\t\t\t\tlet offset = 0;\n\t\t\t\t\t\tfor await (const chunk of fileContent) {\n\t\t\t\t\t\t\tconst nextOffset = offset + Number(chunk.length);\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tconst response = await this.helpers.httpRequest({\n\t\t\t\t\t\t\t\t\tmethod: 'PUT',\n\t\t\t\t\t\t\t\t\turl: uploadUrl,\n\t\t\t\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t\t\t\t'Content-Length': chunk.length,\n\t\t\t\t\t\t\t\t\t\t'Content-Range': `bytes ${offset}-${nextOffset - 1}/${contentLength}`,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tbody: chunk,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tuploadId = response.id;\n\t\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\t\tif (error.response?.status !== 308) throw error;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\toffset = nextOffset;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tresponseData = { uploadId, ...resumableUpload.body };\n\t\t\t\t\t}\n\t\t\t\t\t//https://developers.google.com/youtube/v3/docs/playlists/update\n\t\t\t\t\tif (operation === 'update') {\n\t\t\t\t\t\tconst id = this.getNodeParameter('videoId', i) as string;\n\t\t\t\t\t\tconst title = this.getNodeParameter('title', i) as string;\n\t\t\t\t\t\tconst categoryId = this.getNodeParameter('categoryId', i) as string;\n\t\t\t\t\t\tconst updateFields = this.getNodeParameter('updateFields', i);\n\n\t\t\t\t\t\tqs.part = 'snippet, status, recordingDetails';\n\n\t\t\t\t\t\tconst body = {\n\t\t\t\t\t\t\tid,\n\t\t\t\t\t\t\tsnippet: {\n\t\t\t\t\t\t\t\ttitle,\n\t\t\t\t\t\t\t\tcategoryId,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tstatus: {},\n\t\t\t\t\t\t\trecordingDetails: {},\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tif (updateFields.description) {\n\t\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t\tbody.snippet.description = updateFields.description as string;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (updateFields.privacyStatus) {\n\t\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t\tbody.status.privacyStatus = updateFields.privacyStatus as string;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (updateFields.tags) {\n\t\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t\tbody.snippet.tags = (updateFields.tags as string).split(',');\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (updateFields.embeddable) {\n\t\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t\tbody.status.embeddable = updateFields.embeddable as boolean;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (updateFields.publicStatsViewable) {\n\t\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t\tbody.status.publicStatsViewable = updateFields.publicStatsViewable as boolean;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (updateFields.publishAt) {\n\t\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t\tbody.status.publishAt = updateFields.publishAt as string;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (updateFields.selfDeclaredMadeForKids) {\n\t\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t\tbody.status.selfDeclaredMadeForKids = updateFields.selfDeclaredMadeForKids as boolean;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (updateFields.recordingDate) {\n\t\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t\tbody.recordingDetails.recordingDate = updateFields.recordingDate as string;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (updateFields.license) {\n\t\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t\tbody.status.license = updateFields.license as string;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (updateFields.defaultLanguage) {\n\t\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t\tbody.snippet.defaultLanguage = updateFields.defaultLanguage as string;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tresponseData = await googleApiRequest.call(this, 'PUT', '/youtube/v3/videos', body, qs);\n\t\t\t\t\t}\n\t\t\t\t\t//https://developers.google.com/youtube/v3/docs/videos/delete?hl=en\n\t\t\t\t\tif (operation === 'delete') {\n\t\t\t\t\t\tconst videoId = this.getNodeParameter('videoId', i) as string;\n\t\t\t\t\t\tconst options = this.getNodeParameter('options', i);\n\n\t\t\t\t\t\tconst body: IDataObject = {\n\t\t\t\t\t\t\tid: videoId,\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tif (options.onBehalfOfContentOwner) {\n\t\t\t\t\t\t\tqs.onBehalfOfContentOwner = options.onBehalfOfContentOwner as string;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tresponseData = await googleApiRequest.call(this, 'DELETE', '/youtube/v3/videos', body);\n\n\t\t\t\t\t\tresponseData = { success: true };\n\t\t\t\t\t}\n\t\t\t\t\t//https://developers.google.com/youtube/v3/docs/videos/rate?hl=en\n\t\t\t\t\tif (operation === 'rate') {\n\t\t\t\t\t\tconst videoId = this.getNodeParameter('videoId', i) as string;\n\t\t\t\t\t\tconst rating = this.getNodeParameter('rating', i) as string;\n\n\t\t\t\t\t\tconst body: IDataObject = {\n\t\t\t\t\t\t\tid: videoId,\n\t\t\t\t\t\t\trating,\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tresponseData = await googleApiRequest.call(\n\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t'POST',\n\t\t\t\t\t\t\t'/youtube/v3/videos/rate',\n\t\t\t\t\t\t\tbody,\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tresponseData = { success: true };\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (resource === 'videoCategory') {\n\t\t\t\t\t//https://developers.google.com/youtube/v3/docs/videoCategories/list\n\t\t\t\t\tif (operation === 'getAll') {\n\t\t\t\t\t\tconst returnAll = this.getNodeParameter('returnAll', i);\n\t\t\t\t\t\tconst regionCode = this.getNodeParameter('regionCode', i) as string;\n\n\t\t\t\t\t\tqs.regionCode = regionCode;\n\n\t\t\t\t\t\tqs.part = 'snippet';\n\n\t\t\t\t\t\tresponseData = await googleApiRequest.call(\n\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t\t'/youtube/v3/videoCategories',\n\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\tqs,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tresponseData = responseData.items;\n\n\t\t\t\t\t\tif (!returnAll) {\n\t\t\t\t\t\t\tconst limit = this.getNodeParameter('limit', i);\n\t\t\t\t\t\t\tresponseData = responseData.splice(0, limit);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tif (this.continueOnFail()) {\n\t\t\t\t\tconst executionErrorData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\tthis.helpers.returnJsonArray({ error: error.message }),\n\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t);\n\t\t\t\t\treturnData.push(...executionErrorData);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tthrow error;\n\t\t\t}\n\n\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\tthis.helpers.returnJsonArray(responseData as IDataObject[]),\n\t\t\t\t{ itemData: { item: i } },\n\t\t\t);\n\n\t\t\treturnData.push(...executionData);\n\t\t}\n\n\t\treturn [returnData];\n\t}\n}\n"],"mappings":"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","names":["import_GenericFunctions"]}
|
|
@@ -42,7 +42,7 @@ class Interval {
|
|
|
42
42
|
outputs: [import_n8n_workflow.NodeConnectionTypes.Main],
|
|
43
43
|
properties: [
|
|
44
44
|
{
|
|
45
|
-
displayName: `This workflow will run on the schedule you define here once you <a data-key="activate">activate</a> it.<br><br>For testing, you can also trigger it manually: by going back to the canvas and clicking '
|
|
45
|
+
displayName: `This workflow will run on the schedule you define here once you <a data-key="activate">activate</a> it.<br><br>For testing, you can also trigger it manually: by going back to the canvas and clicking 'execute workflow'`,
|
|
46
46
|
name: "notice",
|
|
47
47
|
type: "notice",
|
|
48
48
|
default: ""
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../nodes/Interval/Interval.node.ts"],"sourcesContent":["import type {\n\tITriggerFunctions,\n\tINodeType,\n\tINodeTypeDescription,\n\tITriggerResponse,\n} from 'n8n-workflow';\nimport { NodeConnectionTypes, NodeOperationError } from 'n8n-workflow';\n\nexport class Interval implements INodeType {\n\tdescription: INodeTypeDescription = {\n\t\tdisplayName: 'Interval',\n\t\tname: 'interval',\n\t\ticon: 'fa:hourglass',\n\t\tgroup: ['trigger', 'schedule'],\n\t\tversion: 1,\n\t\thidden: true,\n\t\tdescription: 'Triggers the workflow in a given interval',\n\t\teventTriggerDescription: '',\n\t\tactivationMessage:\n\t\t\t'Your interval trigger will now trigger executions on the schedule you have defined.',\n\t\tdefaults: {\n\t\t\tname: 'Interval',\n\t\t\tcolor: '#00FF00',\n\t\t},\n\n\t\tinputs: [],\n\t\toutputs: [NodeConnectionTypes.Main],\n\t\tproperties: [\n\t\t\t{\n\t\t\t\tdisplayName:\n\t\t\t\t\t'This workflow will run on the schedule you define here once you <a data-key=\"activate\">activate</a> it.<br><br>For testing, you can also trigger it manually: by going back to the canvas and clicking \\'
|
|
1
|
+
{"version":3,"sources":["../../../nodes/Interval/Interval.node.ts"],"sourcesContent":["import type {\n\tITriggerFunctions,\n\tINodeType,\n\tINodeTypeDescription,\n\tITriggerResponse,\n} from 'n8n-workflow';\nimport { NodeConnectionTypes, NodeOperationError } from 'n8n-workflow';\n\nexport class Interval implements INodeType {\n\tdescription: INodeTypeDescription = {\n\t\tdisplayName: 'Interval',\n\t\tname: 'interval',\n\t\ticon: 'fa:hourglass',\n\t\tgroup: ['trigger', 'schedule'],\n\t\tversion: 1,\n\t\thidden: true,\n\t\tdescription: 'Triggers the workflow in a given interval',\n\t\teventTriggerDescription: '',\n\t\tactivationMessage:\n\t\t\t'Your interval trigger will now trigger executions on the schedule you have defined.',\n\t\tdefaults: {\n\t\t\tname: 'Interval',\n\t\t\tcolor: '#00FF00',\n\t\t},\n\n\t\tinputs: [],\n\t\toutputs: [NodeConnectionTypes.Main],\n\t\tproperties: [\n\t\t\t{\n\t\t\t\tdisplayName:\n\t\t\t\t\t'This workflow will run on the schedule you define here once you <a data-key=\"activate\">activate</a> it.<br><br>For testing, you can also trigger it manually: by going back to the canvas and clicking \\'execute workflow\\'',\n\t\t\t\tname: 'notice',\n\t\t\t\ttype: 'notice',\n\t\t\t\tdefault: '',\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Interval',\n\t\t\t\tname: 'interval',\n\t\t\t\ttype: 'number',\n\t\t\t\ttypeOptions: {\n\t\t\t\t\tminValue: 1,\n\t\t\t\t},\n\t\t\t\tdefault: 1,\n\t\t\t\tdescription: 'Interval value',\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Unit',\n\t\t\t\tname: 'unit',\n\t\t\t\ttype: 'options',\n\t\t\t\toptions: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Seconds',\n\t\t\t\t\t\tvalue: 'seconds',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Minutes',\n\t\t\t\t\t\tvalue: 'minutes',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Hours',\n\t\t\t\t\t\tvalue: 'hours',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tdefault: 'seconds',\n\t\t\t\tdescription: 'Unit of the interval value',\n\t\t\t},\n\t\t],\n\t};\n\n\tasync trigger(this: ITriggerFunctions): Promise<ITriggerResponse> {\n\t\tconst interval = this.getNodeParameter('interval') as number;\n\t\tconst unit = this.getNodeParameter('unit') as string;\n\n\t\tif (interval <= 0) {\n\t\t\tthrow new NodeOperationError(\n\t\t\t\tthis.getNode(),\n\t\t\t\t'The interval has to be set to at least 1 or higher!',\n\t\t\t);\n\t\t}\n\n\t\tlet intervalValue = interval;\n\t\tif (unit === 'minutes') {\n\t\t\tintervalValue *= 60;\n\t\t}\n\t\tif (unit === 'hours') {\n\t\t\tintervalValue *= 60 * 60;\n\t\t}\n\n\t\tconst executeTrigger = () => {\n\t\t\tthis.emit([this.helpers.returnJsonArray([{}])]);\n\t\t};\n\n\t\tintervalValue *= 1000;\n\n\t\t// Reference: https://nodejs.org/api/timers.html#timers_setinterval_callback_delay_args\n\t\tif (intervalValue > 2147483647) {\n\t\t\tthrow new NodeOperationError(this.getNode(), 'The interval value is too large.');\n\t\t}\n\n\t\tconst intervalObj = setInterval(executeTrigger, intervalValue);\n\n\t\tasync function closeFunction() {\n\t\t\tclearInterval(intervalObj);\n\t\t}\n\n\t\tasync function manualTriggerFunction() {\n\t\t\texecuteTrigger();\n\t\t}\n\n\t\treturn {\n\t\t\tcloseFunction,\n\t\t\tmanualTriggerFunction,\n\t\t};\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,0BAAwD;AAEjD,MAAM,SAA8B;AAAA,EAApC;AACN,uBAAoC;AAAA,MACnC,aAAa;AAAA,MACb,MAAM;AAAA,MACN,MAAM;AAAA,MACN,OAAO,CAAC,WAAW,UAAU;AAAA,MAC7B,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,aAAa;AAAA,MACb,yBAAyB;AAAA,MACzB,mBACC;AAAA,MACD,UAAU;AAAA,QACT,MAAM;AAAA,QACN,OAAO;AAAA,MACR;AAAA,MAEA,QAAQ,CAAC;AAAA,MACT,SAAS,CAAC,wCAAoB,IAAI;AAAA,MAClC,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,aAAa;AAAA,YACZ,UAAU;AAAA,UACX;AAAA,UACA,SAAS;AAAA,UACT,aAAa;AAAA,QACd;AAAA,QACA;AAAA,UACC,aAAa;AAAA,UACb,MAAM;AAAA,UACN,MAAM;AAAA,UACN,SAAS;AAAA,YACR;AAAA,cACC,MAAM;AAAA,cACN,OAAO;AAAA,YACR;AAAA,YACA;AAAA,cACC,MAAM;AAAA,cACN,OAAO;AAAA,YACR;AAAA,YACA;AAAA,cACC,MAAM;AAAA,cACN,OAAO;AAAA,YACR;AAAA,UACD;AAAA,UACA,SAAS;AAAA,UACT,aAAa;AAAA,QACd;AAAA,MACD;AAAA,IACD;AAAA;AAAA,EAEA,MAAM,UAA4D;AACjE,UAAM,WAAW,KAAK,iBAAiB,UAAU;AACjD,UAAM,OAAO,KAAK,iBAAiB,MAAM;AAEzC,QAAI,YAAY,GAAG;AAClB,YAAM,IAAI;AAAA,QACT,KAAK,QAAQ;AAAA,QACb;AAAA,MACD;AAAA,IACD;AAEA,QAAI,gBAAgB;AACpB,QAAI,SAAS,WAAW;AACvB,uBAAiB;AAAA,IAClB;AACA,QAAI,SAAS,SAAS;AACrB,uBAAiB,KAAK;AAAA,IACvB;AAEA,UAAM,iBAAiB,MAAM;AAC5B,WAAK,KAAK,CAAC,KAAK,QAAQ,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAAA,IAC/C;AAEA,qBAAiB;AAGjB,QAAI,gBAAgB,YAAY;AAC/B,YAAM,IAAI,uCAAmB,KAAK,QAAQ,GAAG,kCAAkC;AAAA,IAChF;AAEA,UAAM,cAAc,YAAY,gBAAgB,aAAa;AAE7D,mBAAe,gBAAgB;AAC9B,oBAAc,WAAW;AAAA,IAC1B;AAEA,mBAAe,wBAAwB;AACtC,qBAAe;AAAA,IAChB;AAEA,WAAO;AAAA,MACN;AAAA,MACA;AAAA,IACD;AAAA,EACD;AACD;","names":[]}
|
|
@@ -42,8 +42,8 @@ class LocalFileTrigger {
|
|
|
42
42
|
triggerPanel: {
|
|
43
43
|
header: "",
|
|
44
44
|
executionsHelp: {
|
|
45
|
-
inactive: "<b>While building your workflow</b>, click the '
|
|
46
|
-
active: "<b>While building your workflow</b>, click the '
|
|
45
|
+
inactive: "<b>While building your workflow</b>, click the 'execute step' button, then make a change to your watched file or folder. This will trigger an execution, which will show up in this editor.<br /> <br /><b>Once you're happy with your workflow</b>, <a data-key='activate'>activate</a> it. Then every time a change is detected, the workflow will execute. These executions will show up in the <a data-key='executions'>executions list</a>, but not in the editor.",
|
|
46
|
+
active: "<b>While building your workflow</b>, click the 'execute step' button, then make a change to your watched file or folder. This will trigger an execution, which will show up in this editor.<br /> <br /><b>Your workflow will also execute automatically</b>, since it's activated. Every time a change is detected, this node will trigger an execution. These executions will show up in the <a data-key='executions'>executions list</a>, but not in the editor."
|
|
47
47
|
},
|
|
48
48
|
activationHint: "Once you\u2019ve finished building your workflow, <a data-key='activate'>activate</a> it to have it also listen continuously (you just won\u2019t see those executions here)."
|
|
49
49
|
},
|