n8n-nodes-base 1.97.1 → 1.98.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/nodes/Aws/DynamoDB/AwsDynamoDB.node.js +5 -5
- package/dist/nodes/Aws/DynamoDB/AwsDynamoDB.node.js.map +1 -1
- package/dist/nodes/Aws/DynamoDB/ItemDescription.js +1 -1
- package/dist/nodes/Aws/DynamoDB/ItemDescription.js.map +1 -1
- package/dist/nodes/ExecuteWorkflow/ExecuteWorkflow/GenericFunctions.js +4 -1
- package/dist/nodes/ExecuteWorkflow/ExecuteWorkflow/GenericFunctions.js.map +1 -1
- package/dist/nodes/Github/Github.node.js +5 -4
- package/dist/nodes/Github/Github.node.js.map +1 -1
- package/dist/nodes/Google/Ads/CampaignDescription.js +3 -3
- package/dist/nodes/Google/Ads/CampaignDescription.js.map +1 -1
- package/dist/nodes/Google/Ads/GoogleAds.node.js +1 -1
- package/dist/nodes/Google/Ads/GoogleAds.node.js.map +1 -1
- package/dist/nodes/Google/GSuiteAdmin/DeviceDescription.js +1 -1
- package/dist/nodes/Google/GSuiteAdmin/DeviceDescription.js.map +1 -1
- package/dist/nodes/Notion/shared/GenericFunctions.js +1 -1
- package/dist/nodes/Notion/shared/GenericFunctions.js.map +1 -1
- package/dist/nodes/Strapi/GenericFunctions.js +3 -10
- package/dist/nodes/Strapi/GenericFunctions.js.map +1 -1
- package/dist/nodes/Strapi/Strapi.node.js +2 -1
- package/dist/nodes/Strapi/Strapi.node.js.map +1 -1
- package/dist/nodes/Stripe/StripeTrigger.node.js +12 -0
- package/dist/nodes/Stripe/StripeTrigger.node.js.map +1 -1
- package/dist/nodes/Telegram/Telegram.node.js +3 -0
- package/dist/nodes/Telegram/Telegram.node.js.map +1 -1
- package/dist/nodes/Telegram/tests/Workflow/apiResponses.js +39 -0
- package/dist/nodes/Telegram/tests/Workflow/apiResponses.js.map +1 -1
- package/dist/types/nodes.json +8 -8
- package/dist/utils/utilities.d.ts +2 -1
- package/dist/utils/utilities.js +8 -0
- package/dist/utils/utilities.js.map +1 -1
- package/package.json +7 -7
|
@@ -23,7 +23,7 @@ __export(CampaignDescription_exports, {
|
|
|
23
23
|
});
|
|
24
24
|
module.exports = __toCommonJS(CampaignDescription_exports);
|
|
25
25
|
async function processCampaignSearchResponse(_inputData, responseData) {
|
|
26
|
-
const results = responseData.body.results;
|
|
26
|
+
const results = responseData.body.results ?? [];
|
|
27
27
|
return results.map((result) => ({
|
|
28
28
|
json: {
|
|
29
29
|
...result.campaign,
|
|
@@ -51,7 +51,7 @@ const campaignOperations = [
|
|
|
51
51
|
routing: {
|
|
52
52
|
request: {
|
|
53
53
|
method: "POST",
|
|
54
|
-
url: '={{"/
|
|
54
|
+
url: '={{"/v20/customers/" + $parameter["clientCustomerId"].toString().replace(/-/g, "") + "/googleAds:search"}}',
|
|
55
55
|
body: {
|
|
56
56
|
query: `={{ "select campaign.id, campaign.name, campaign_budget.amount_micros, campaign_budget.period,campaign.status,campaign.optimization_score,campaign.advertising_channel_type,campaign.advertising_channel_sub_type,metrics.impressions,metrics.interactions,metrics.interaction_rate,metrics.average_cost,metrics.cost_micros,metrics.conversions,metrics.cost_per_conversion,metrics.conversions_from_interactions_rate,metrics.video_views,metrics.average_cpm,metrics.ctr from campaign where campaign.id > 0 " + (["allTime", undefined, ""].includes($parameter.additionalOptions?.dateRange) ? "" : " and segments.date DURING " + $parameter.additionalOptions.dateRange) + " " + (["all", undefined, ""].includes($parameter.additionalOptions?.campaignStatus) ? "" : " and campaign.status = '" + $parameter.additionalOptions.campaignStatus + "'") + "" }}`
|
|
57
57
|
},
|
|
@@ -72,7 +72,7 @@ const campaignOperations = [
|
|
|
72
72
|
routing: {
|
|
73
73
|
request: {
|
|
74
74
|
method: "POST",
|
|
75
|
-
url: '={{"/
|
|
75
|
+
url: '={{"/v20/customers/" + $parameter["clientCustomerId"].toString().replace(/-/g, "") + "/googleAds:search"}}',
|
|
76
76
|
returnFullResponse: true,
|
|
77
77
|
body: {
|
|
78
78
|
query: '={{ "select campaign.id, campaign.name, campaign_budget.amount_micros, campaign_budget.period,campaign.status,campaign.optimization_score,campaign.advertising_channel_type,campaign.advertising_channel_sub_type,metrics.impressions,metrics.interactions,metrics.interaction_rate,metrics.average_cost,metrics.cost_micros,metrics.conversions,metrics.cost_per_conversion,metrics.conversions_from_interactions_rate,metrics.video_views,metrics.average_cpm,metrics.ctr from campaign where campaign.id = " + $parameter["campaignId"].toString().replace(/-/g, "")}}'
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../nodes/Google/Ads/CampaignDescription.ts"],"sourcesContent":["import type {\n\tIDataObject,\n\tIExecuteSingleFunctions,\n\tIN8nHttpFullResponse,\n\tINodeExecutionData,\n\tINodeProperties,\n} from 'n8n-workflow';\n\nasync function processCampaignSearchResponse(\n\tthis: IExecuteSingleFunctions,\n\t_inputData: INodeExecutionData[],\n\tresponseData: IN8nHttpFullResponse,\n): Promise<INodeExecutionData[]> {\n\tconst results = (responseData.body as IDataObject).results as GoogleAdsCampaignElement;\n\n\treturn results.map((result) => ({\n\t\tjson: {\n\t\t\t...result.campaign,\n\t\t\t...result.metrics,\n\t\t\t...result.campaignBudget,\n\t\t},\n\t}));\n}\n\nexport const campaignOperations: INodeProperties[] = [\n\t{\n\t\tdisplayName: 'Operation',\n\t\tname: 'operation',\n\t\ttype: 'options',\n\t\tnoDataExpression: true,\n\t\tdisplayOptions: {\n\t\t\tshow: {\n\t\t\t\tresource: ['campaign'],\n\t\t\t},\n\t\t},\n\t\toptions: [\n\t\t\t{\n\t\t\t\tname: 'Get Many',\n\t\t\t\tvalue: 'getAll',\n\t\t\t\tdescription: 'Get many campaigns linked to the specified account',\n\t\t\t\trouting: {\n\t\t\t\t\trequest: {\n\t\t\t\t\t\tmethod: 'POST',\n\t\t\t\t\t\turl: '={{\"/v17/customers/\" + $parameter[\"clientCustomerId\"].toString().replace(/-/g, \"\") + \"/googleAds:search\"}}',\n\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\tquery:\n\t\t\t\t\t\t\t\t'={{ \"' +\n\t\t\t\t\t\t\t\t'select ' +\n\t\t\t\t\t\t\t\t'campaign.id, ' +\n\t\t\t\t\t\t\t\t'campaign.name, ' +\n\t\t\t\t\t\t\t\t'campaign_budget.amount_micros, ' +\n\t\t\t\t\t\t\t\t'campaign_budget.period,' +\n\t\t\t\t\t\t\t\t'campaign.status,' +\n\t\t\t\t\t\t\t\t'campaign.optimization_score,' +\n\t\t\t\t\t\t\t\t'campaign.advertising_channel_type,' +\n\t\t\t\t\t\t\t\t'campaign.advertising_channel_sub_type,' +\n\t\t\t\t\t\t\t\t'metrics.impressions,' +\n\t\t\t\t\t\t\t\t'metrics.interactions,' +\n\t\t\t\t\t\t\t\t'metrics.interaction_rate,' +\n\t\t\t\t\t\t\t\t'metrics.average_cost,' +\n\t\t\t\t\t\t\t\t'metrics.cost_micros,' +\n\t\t\t\t\t\t\t\t'metrics.conversions,' +\n\t\t\t\t\t\t\t\t'metrics.cost_per_conversion,' +\n\t\t\t\t\t\t\t\t'metrics.conversions_from_interactions_rate,' +\n\t\t\t\t\t\t\t\t'metrics.video_views,' +\n\t\t\t\t\t\t\t\t'metrics.average_cpm,' +\n\t\t\t\t\t\t\t\t'metrics.ctr ' +\n\t\t\t\t\t\t\t\t'from campaign ' +\n\t\t\t\t\t\t\t\t'where campaign.id > 0 ' + // create a dummy where clause so we can append more conditions\n\t\t\t\t\t\t\t\t'\" + ([\"allTime\", undefined, \"\"].includes($parameter.additionalOptions?.dateRange) ? \"\" : \" and segments.date DURING \" + $parameter.additionalOptions.dateRange) + \" ' +\n\t\t\t\t\t\t\t\t'\" + ([\"all\", undefined, \"\"].includes($parameter.additionalOptions?.campaignStatus) ? \"\" : \" and campaign.status = \\'\" + $parameter.additionalOptions.campaignStatus + \"\\'\") + \"' +\n\t\t\t\t\t\t\t\t'\" }}',\n\t\t\t\t\t\t},\n\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t'login-customer-id':\n\t\t\t\t\t\t\t\t'={{$parameter[\"managerCustomerId\"].toString().replace(/-/g, \"\")}}',\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\toutput: {\n\t\t\t\t\t\tpostReceive: [processCampaignSearchResponse],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\taction: 'Get many campaigns',\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'Get',\n\t\t\t\tvalue: 'get',\n\t\t\t\tdescription: 'Get a specific campaign',\n\t\t\t\trouting: {\n\t\t\t\t\trequest: {\n\t\t\t\t\t\tmethod: 'POST',\n\t\t\t\t\t\turl: '={{\"/v17/customers/\" + $parameter[\"clientCustomerId\"].toString().replace(/-/g, \"\") + \"/googleAds:search\"}}',\n\t\t\t\t\t\treturnFullResponse: true,\n\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\tquery:\n\t\t\t\t\t\t\t\t'={{ \"' +\n\t\t\t\t\t\t\t\t'select ' +\n\t\t\t\t\t\t\t\t'campaign.id, ' +\n\t\t\t\t\t\t\t\t'campaign.name, ' +\n\t\t\t\t\t\t\t\t'campaign_budget.amount_micros, ' +\n\t\t\t\t\t\t\t\t'campaign_budget.period,' +\n\t\t\t\t\t\t\t\t'campaign.status,' +\n\t\t\t\t\t\t\t\t'campaign.optimization_score,' +\n\t\t\t\t\t\t\t\t'campaign.advertising_channel_type,' +\n\t\t\t\t\t\t\t\t'campaign.advertising_channel_sub_type,' +\n\t\t\t\t\t\t\t\t'metrics.impressions,' +\n\t\t\t\t\t\t\t\t'metrics.interactions,' +\n\t\t\t\t\t\t\t\t'metrics.interaction_rate,' +\n\t\t\t\t\t\t\t\t'metrics.average_cost,' +\n\t\t\t\t\t\t\t\t'metrics.cost_micros,' +\n\t\t\t\t\t\t\t\t'metrics.conversions,' +\n\t\t\t\t\t\t\t\t'metrics.cost_per_conversion,' +\n\t\t\t\t\t\t\t\t'metrics.conversions_from_interactions_rate,' +\n\t\t\t\t\t\t\t\t'metrics.video_views,' +\n\t\t\t\t\t\t\t\t'metrics.average_cpm,' +\n\t\t\t\t\t\t\t\t'metrics.ctr ' +\n\t\t\t\t\t\t\t\t'from campaign ' +\n\t\t\t\t\t\t\t\t'where campaign.id = \" + $parameter[\"campaignId\"].toString().replace(/-/g, \"\")' +\n\t\t\t\t\t\t\t\t'}}',\n\t\t\t\t\t\t},\n\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t'login-customer-id':\n\t\t\t\t\t\t\t\t'={{$parameter[\"managerCustomerId\"].toString().replace(/-/g, \"\")}}',\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\toutput: {\n\t\t\t\t\t\tpostReceive: [processCampaignSearchResponse],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\taction: 'Get a campaign',\n\t\t\t},\n\t\t],\n\t\tdefault: 'getAll',\n\t},\n];\n\nexport const campaignFields: INodeProperties[] = [\n\t{\n\t\tdisplayName: 'Manager Customer ID',\n\t\tname: 'managerCustomerId',\n\t\ttype: 'string',\n\t\trequired: true,\n\t\tplaceholder: '9998887777',\n\t\tdisplayOptions: {\n\t\t\tshow: {\n\t\t\t\tresource: ['campaign'],\n\t\t\t},\n\t\t},\n\t\tdefault: '',\n\t},\n\t{\n\t\tdisplayName: 'Client Customer ID',\n\t\tname: 'clientCustomerId',\n\t\ttype: 'string',\n\t\trequired: true,\n\t\tplaceholder: '6665554444',\n\t\tdisplayOptions: {\n\t\t\tshow: {\n\t\t\t\tresource: ['campaign'],\n\t\t\t},\n\t\t},\n\t\tdefault: '',\n\t},\n\t{\n\t\tdisplayName: 'Campaign ID',\n\t\tname: 'campaignId',\n\t\ttype: 'string',\n\t\trequired: true,\n\t\tdisplayOptions: {\n\t\t\tshow: {\n\t\t\t\toperation: ['get'],\n\t\t\t\tresource: ['campaign'],\n\t\t\t},\n\t\t},\n\t\tdefault: '',\n\t\tdescription: 'ID of the campaign',\n\t},\n\t{\n\t\tdisplayName: 'Additional Options',\n\t\tname: 'additionalOptions',\n\t\ttype: 'collection',\n\t\tdisplayOptions: {\n\t\t\tshow: {\n\t\t\t\tresource: ['campaign'],\n\t\t\t\toperation: ['getAll'],\n\t\t\t},\n\t\t},\n\t\tdefault: {},\n\t\tdescription: 'Additional options for fetching campaigns',\n\t\tplaceholder: 'Add option',\n\t\toptions: [\n\t\t\t{\n\t\t\t\tdisplayName: 'Date Range',\n\t\t\t\tname: 'dateRange',\n\t\t\t\tdescription: 'Filters statistics by period',\n\t\t\t\ttype: 'options',\n\t\t\t\t// eslint-disable-next-line n8n-nodes-base/node-param-options-type-unsorted-items\n\t\t\t\toptions: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'All Time',\n\t\t\t\t\t\tvalue: 'allTime',\n\t\t\t\t\t\tdescription: 'Fetch statistics for all period',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Today',\n\t\t\t\t\t\tvalue: 'TODAY',\n\t\t\t\t\t\tdescription: 'Today only',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Yesterday',\n\t\t\t\t\t\tvalue: 'YESTERDAY',\n\t\t\t\t\t\tdescription: 'Yesterday only',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Last 7 Days',\n\t\t\t\t\t\tvalue: 'LAST_7_DAYS',\n\t\t\t\t\t\tdescription: 'Last 7 days, not including today',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Last Business Week',\n\t\t\t\t\t\tvalue: 'LAST_BUSINESS_WEEK',\n\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t'The 5 day business week, Monday through Friday, of the previous business week',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'This Month',\n\t\t\t\t\t\tvalue: 'THIS_MONTH',\n\t\t\t\t\t\tdescription: 'All days in the current month',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Last Month',\n\t\t\t\t\t\tvalue: 'LAST_MONTH',\n\t\t\t\t\t\tdescription: 'All days in the previous month',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Last 14 Days',\n\t\t\t\t\t\tvalue: 'LAST_14_DAYS',\n\t\t\t\t\t\tdescription: 'The last 14 days not including today',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Last 30 Days',\n\t\t\t\t\t\tvalue: 'LAST_30_DAYS',\n\t\t\t\t\t\tdescription: 'The last 30 days not including today',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tdefault: 'allTime',\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Show Campaigns by Status',\n\t\t\t\tname: 'campaignStatus',\n\t\t\t\tdescription: 'Filters campaigns by status',\n\t\t\t\ttype: 'options',\n\t\t\t\toptions: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'All',\n\t\t\t\t\t\tvalue: 'all',\n\t\t\t\t\t\tdescription: 'Fetch all campaigns regardless of status',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Enabled',\n\t\t\t\t\t\tvalue: 'ENABLED',\n\t\t\t\t\t\tdescription: 'Filter only active campaigns',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Paused',\n\t\t\t\t\t\tvalue: 'PAUSED',\n\t\t\t\t\t\tdescription: 'Filter only paused campaigns',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Removed',\n\t\t\t\t\t\tvalue: 'REMOVED',\n\t\t\t\t\t\tdescription: 'Filter only removed campaigns',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tdefault: 'all',\n\t\t\t},\n\t\t],\n\t},\n];\n\ntype GoogleAdsCampaignElement = [\n\t{\n\t\tcampaign: object;\n\t\tmetrics: object;\n\t\tcampaignBudget: object;\n\t},\n];\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQA,eAAe,8BAEd,YACA,cACgC;AAChC,QAAM,UAAW,aAAa,KAAqB;AAEnD,SAAO,QAAQ,IAAI,CAAC,YAAY;AAAA,IAC/B,MAAM;AAAA,MACL,GAAG,OAAO;AAAA,MACV,GAAG,OAAO;AAAA,MACV,GAAG,OAAO;AAAA,IACX;AAAA,EACD,EAAE;AACH;AAEO,MAAM,qBAAwC;AAAA,EACpD;AAAA,IACC,aAAa;AAAA,IACb,MAAM;AAAA,IACN,MAAM;AAAA,IACN,kBAAkB;AAAA,IAClB,gBAAgB;AAAA,MACf,MAAM;AAAA,QACL,UAAU,CAAC,UAAU;AAAA,MACtB;AAAA,IACD;AAAA,IACA,SAAS;AAAA,MACR;AAAA,QACC,MAAM;AAAA,QACN,OAAO;AAAA,QACP,aAAa;AAAA,QACb,SAAS;AAAA,UACR,SAAS;AAAA,YACR,QAAQ;AAAA,YACR,KAAK;AAAA,YACL,MAAM;AAAA,cACL,OACC;AAAA,YA0BF;AAAA,YACA,SAAS;AAAA,cACR,qBACC;AAAA,YACF;AAAA,UACD;AAAA,UACA,QAAQ;AAAA,YACP,aAAa,CAAC,6BAA6B;AAAA,UAC5C;AAAA,QACD;AAAA,QACA,QAAQ;AAAA,MACT;AAAA,MACA;AAAA,QACC,MAAM;AAAA,QACN,OAAO;AAAA,QACP,aAAa;AAAA,QACb,SAAS;AAAA,UACR,SAAS;AAAA,YACR,QAAQ;AAAA,YACR,KAAK;AAAA,YACL,oBAAoB;AAAA,YACpB,MAAM;AAAA,cACL,OACC;AAAA,YAwBF;AAAA,YACA,SAAS;AAAA,cACR,qBACC;AAAA,YACF;AAAA,UACD;AAAA,UACA,QAAQ;AAAA,YACP,aAAa,CAAC,6BAA6B;AAAA,UAC5C;AAAA,QACD;AAAA,QACA,QAAQ;AAAA,MACT;AAAA,IACD;AAAA,IACA,SAAS;AAAA,EACV;AACD;AAEO,MAAM,iBAAoC;AAAA,EAChD;AAAA,IACC,aAAa;AAAA,IACb,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,aAAa;AAAA,IACb,gBAAgB;AAAA,MACf,MAAM;AAAA,QACL,UAAU,CAAC,UAAU;AAAA,MACtB;AAAA,IACD;AAAA,IACA,SAAS;AAAA,EACV;AAAA,EACA;AAAA,IACC,aAAa;AAAA,IACb,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,aAAa;AAAA,IACb,gBAAgB;AAAA,MACf,MAAM;AAAA,QACL,UAAU,CAAC,UAAU;AAAA,MACtB;AAAA,IACD;AAAA,IACA,SAAS;AAAA,EACV;AAAA,EACA;AAAA,IACC,aAAa;AAAA,IACb,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,gBAAgB;AAAA,MACf,MAAM;AAAA,QACL,WAAW,CAAC,KAAK;AAAA,QACjB,UAAU,CAAC,UAAU;AAAA,MACtB;AAAA,IACD;AAAA,IACA,SAAS;AAAA,IACT,aAAa;AAAA,EACd;AAAA,EACA;AAAA,IACC,aAAa;AAAA,IACb,MAAM;AAAA,IACN,MAAM;AAAA,IACN,gBAAgB;AAAA,MACf,MAAM;AAAA,QACL,UAAU,CAAC,UAAU;AAAA,QACrB,WAAW,CAAC,QAAQ;AAAA,MACrB;AAAA,IACD;AAAA,IACA,SAAS,CAAC;AAAA,IACV,aAAa;AAAA,IACb,aAAa;AAAA,IACb,SAAS;AAAA,MACR;AAAA,QACC,aAAa;AAAA,QACb,MAAM;AAAA,QACN,aAAa;AAAA,QACb,MAAM;AAAA;AAAA,QAEN,SAAS;AAAA,UACR;AAAA,YACC,MAAM;AAAA,YACN,OAAO;AAAA,YACP,aAAa;AAAA,UACd;AAAA,UACA;AAAA,YACC,MAAM;AAAA,YACN,OAAO;AAAA,YACP,aAAa;AAAA,UACd;AAAA,UACA;AAAA,YACC,MAAM;AAAA,YACN,OAAO;AAAA,YACP,aAAa;AAAA,UACd;AAAA,UACA;AAAA,YACC,MAAM;AAAA,YACN,OAAO;AAAA,YACP,aAAa;AAAA,UACd;AAAA,UACA;AAAA,YACC,MAAM;AAAA,YACN,OAAO;AAAA,YACP,aACC;AAAA,UACF;AAAA,UACA;AAAA,YACC,MAAM;AAAA,YACN,OAAO;AAAA,YACP,aAAa;AAAA,UACd;AAAA,UACA;AAAA,YACC,MAAM;AAAA,YACN,OAAO;AAAA,YACP,aAAa;AAAA,UACd;AAAA,UACA;AAAA,YACC,MAAM;AAAA,YACN,OAAO;AAAA,YACP,aAAa;AAAA,UACd;AAAA,UACA;AAAA,YACC,MAAM;AAAA,YACN,OAAO;AAAA,YACP,aAAa;AAAA,UACd;AAAA,QACD;AAAA,QACA,SAAS;AAAA,MACV;AAAA,MACA;AAAA,QACC,aAAa;AAAA,QACb,MAAM;AAAA,QACN,aAAa;AAAA,QACb,MAAM;AAAA,QACN,SAAS;AAAA,UACR;AAAA,YACC,MAAM;AAAA,YACN,OAAO;AAAA,YACP,aAAa;AAAA,UACd;AAAA,UACA;AAAA,YACC,MAAM;AAAA,YACN,OAAO;AAAA,YACP,aAAa;AAAA,UACd;AAAA,UACA;AAAA,YACC,MAAM;AAAA,YACN,OAAO;AAAA,YACP,aAAa;AAAA,UACd;AAAA,UACA;AAAA,YACC,MAAM;AAAA,YACN,OAAO;AAAA,YACP,aAAa;AAAA,UACd;AAAA,QACD;AAAA,QACA,SAAS;AAAA,MACV;AAAA,IACD;AAAA,EACD;AACD;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../../nodes/Google/Ads/CampaignDescription.ts"],"sourcesContent":["import type {\n\tIDataObject,\n\tIExecuteSingleFunctions,\n\tIN8nHttpFullResponse,\n\tINodeExecutionData,\n\tINodeProperties,\n} from 'n8n-workflow';\n\nasync function processCampaignSearchResponse(\n\tthis: IExecuteSingleFunctions,\n\t_inputData: INodeExecutionData[],\n\tresponseData: IN8nHttpFullResponse,\n): Promise<INodeExecutionData[]> {\n\tconst results = ((responseData.body as IDataObject).results as GoogleAdsCampaignElement) ?? [];\n\n\treturn results.map((result) => ({\n\t\tjson: {\n\t\t\t...result.campaign,\n\t\t\t...result.metrics,\n\t\t\t...result.campaignBudget,\n\t\t},\n\t}));\n}\n\nexport const campaignOperations: INodeProperties[] = [\n\t{\n\t\tdisplayName: 'Operation',\n\t\tname: 'operation',\n\t\ttype: 'options',\n\t\tnoDataExpression: true,\n\t\tdisplayOptions: {\n\t\t\tshow: {\n\t\t\t\tresource: ['campaign'],\n\t\t\t},\n\t\t},\n\t\toptions: [\n\t\t\t{\n\t\t\t\tname: 'Get Many',\n\t\t\t\tvalue: 'getAll',\n\t\t\t\tdescription: 'Get many campaigns linked to the specified account',\n\t\t\t\trouting: {\n\t\t\t\t\trequest: {\n\t\t\t\t\t\tmethod: 'POST',\n\t\t\t\t\t\turl: '={{\"/v20/customers/\" + $parameter[\"clientCustomerId\"].toString().replace(/-/g, \"\") + \"/googleAds:search\"}}',\n\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\tquery:\n\t\t\t\t\t\t\t\t'={{ \"' +\n\t\t\t\t\t\t\t\t'select ' +\n\t\t\t\t\t\t\t\t'campaign.id, ' +\n\t\t\t\t\t\t\t\t'campaign.name, ' +\n\t\t\t\t\t\t\t\t'campaign_budget.amount_micros, ' +\n\t\t\t\t\t\t\t\t'campaign_budget.period,' +\n\t\t\t\t\t\t\t\t'campaign.status,' +\n\t\t\t\t\t\t\t\t'campaign.optimization_score,' +\n\t\t\t\t\t\t\t\t'campaign.advertising_channel_type,' +\n\t\t\t\t\t\t\t\t'campaign.advertising_channel_sub_type,' +\n\t\t\t\t\t\t\t\t'metrics.impressions,' +\n\t\t\t\t\t\t\t\t'metrics.interactions,' +\n\t\t\t\t\t\t\t\t'metrics.interaction_rate,' +\n\t\t\t\t\t\t\t\t'metrics.average_cost,' +\n\t\t\t\t\t\t\t\t'metrics.cost_micros,' +\n\t\t\t\t\t\t\t\t'metrics.conversions,' +\n\t\t\t\t\t\t\t\t'metrics.cost_per_conversion,' +\n\t\t\t\t\t\t\t\t'metrics.conversions_from_interactions_rate,' +\n\t\t\t\t\t\t\t\t'metrics.video_views,' +\n\t\t\t\t\t\t\t\t'metrics.average_cpm,' +\n\t\t\t\t\t\t\t\t'metrics.ctr ' +\n\t\t\t\t\t\t\t\t'from campaign ' +\n\t\t\t\t\t\t\t\t'where campaign.id > 0 ' + // create a dummy where clause so we can append more conditions\n\t\t\t\t\t\t\t\t'\" + ([\"allTime\", undefined, \"\"].includes($parameter.additionalOptions?.dateRange) ? \"\" : \" and segments.date DURING \" + $parameter.additionalOptions.dateRange) + \" ' +\n\t\t\t\t\t\t\t\t'\" + ([\"all\", undefined, \"\"].includes($parameter.additionalOptions?.campaignStatus) ? \"\" : \" and campaign.status = \\'\" + $parameter.additionalOptions.campaignStatus + \"\\'\") + \"' +\n\t\t\t\t\t\t\t\t'\" }}',\n\t\t\t\t\t\t},\n\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t'login-customer-id':\n\t\t\t\t\t\t\t\t'={{$parameter[\"managerCustomerId\"].toString().replace(/-/g, \"\")}}',\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\toutput: {\n\t\t\t\t\t\tpostReceive: [processCampaignSearchResponse],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\taction: 'Get many campaigns',\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'Get',\n\t\t\t\tvalue: 'get',\n\t\t\t\tdescription: 'Get a specific campaign',\n\t\t\t\trouting: {\n\t\t\t\t\trequest: {\n\t\t\t\t\t\tmethod: 'POST',\n\t\t\t\t\t\turl: '={{\"/v20/customers/\" + $parameter[\"clientCustomerId\"].toString().replace(/-/g, \"\") + \"/googleAds:search\"}}',\n\t\t\t\t\t\treturnFullResponse: true,\n\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\tquery:\n\t\t\t\t\t\t\t\t'={{ \"' +\n\t\t\t\t\t\t\t\t'select ' +\n\t\t\t\t\t\t\t\t'campaign.id, ' +\n\t\t\t\t\t\t\t\t'campaign.name, ' +\n\t\t\t\t\t\t\t\t'campaign_budget.amount_micros, ' +\n\t\t\t\t\t\t\t\t'campaign_budget.period,' +\n\t\t\t\t\t\t\t\t'campaign.status,' +\n\t\t\t\t\t\t\t\t'campaign.optimization_score,' +\n\t\t\t\t\t\t\t\t'campaign.advertising_channel_type,' +\n\t\t\t\t\t\t\t\t'campaign.advertising_channel_sub_type,' +\n\t\t\t\t\t\t\t\t'metrics.impressions,' +\n\t\t\t\t\t\t\t\t'metrics.interactions,' +\n\t\t\t\t\t\t\t\t'metrics.interaction_rate,' +\n\t\t\t\t\t\t\t\t'metrics.average_cost,' +\n\t\t\t\t\t\t\t\t'metrics.cost_micros,' +\n\t\t\t\t\t\t\t\t'metrics.conversions,' +\n\t\t\t\t\t\t\t\t'metrics.cost_per_conversion,' +\n\t\t\t\t\t\t\t\t'metrics.conversions_from_interactions_rate,' +\n\t\t\t\t\t\t\t\t'metrics.video_views,' +\n\t\t\t\t\t\t\t\t'metrics.average_cpm,' +\n\t\t\t\t\t\t\t\t'metrics.ctr ' +\n\t\t\t\t\t\t\t\t'from campaign ' +\n\t\t\t\t\t\t\t\t'where campaign.id = \" + $parameter[\"campaignId\"].toString().replace(/-/g, \"\")' +\n\t\t\t\t\t\t\t\t'}}',\n\t\t\t\t\t\t},\n\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t'login-customer-id':\n\t\t\t\t\t\t\t\t'={{$parameter[\"managerCustomerId\"].toString().replace(/-/g, \"\")}}',\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\toutput: {\n\t\t\t\t\t\tpostReceive: [processCampaignSearchResponse],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\taction: 'Get a campaign',\n\t\t\t},\n\t\t],\n\t\tdefault: 'getAll',\n\t},\n];\n\nexport const campaignFields: INodeProperties[] = [\n\t{\n\t\tdisplayName: 'Manager Customer ID',\n\t\tname: 'managerCustomerId',\n\t\ttype: 'string',\n\t\trequired: true,\n\t\tplaceholder: '9998887777',\n\t\tdisplayOptions: {\n\t\t\tshow: {\n\t\t\t\tresource: ['campaign'],\n\t\t\t},\n\t\t},\n\t\tdefault: '',\n\t},\n\t{\n\t\tdisplayName: 'Client Customer ID',\n\t\tname: 'clientCustomerId',\n\t\ttype: 'string',\n\t\trequired: true,\n\t\tplaceholder: '6665554444',\n\t\tdisplayOptions: {\n\t\t\tshow: {\n\t\t\t\tresource: ['campaign'],\n\t\t\t},\n\t\t},\n\t\tdefault: '',\n\t},\n\t{\n\t\tdisplayName: 'Campaign ID',\n\t\tname: 'campaignId',\n\t\ttype: 'string',\n\t\trequired: true,\n\t\tdisplayOptions: {\n\t\t\tshow: {\n\t\t\t\toperation: ['get'],\n\t\t\t\tresource: ['campaign'],\n\t\t\t},\n\t\t},\n\t\tdefault: '',\n\t\tdescription: 'ID of the campaign',\n\t},\n\t{\n\t\tdisplayName: 'Additional Options',\n\t\tname: 'additionalOptions',\n\t\ttype: 'collection',\n\t\tdisplayOptions: {\n\t\t\tshow: {\n\t\t\t\tresource: ['campaign'],\n\t\t\t\toperation: ['getAll'],\n\t\t\t},\n\t\t},\n\t\tdefault: {},\n\t\tdescription: 'Additional options for fetching campaigns',\n\t\tplaceholder: 'Add option',\n\t\toptions: [\n\t\t\t{\n\t\t\t\tdisplayName: 'Date Range',\n\t\t\t\tname: 'dateRange',\n\t\t\t\tdescription: 'Filters statistics by period',\n\t\t\t\ttype: 'options',\n\t\t\t\t// eslint-disable-next-line n8n-nodes-base/node-param-options-type-unsorted-items\n\t\t\t\toptions: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'All Time',\n\t\t\t\t\t\tvalue: 'allTime',\n\t\t\t\t\t\tdescription: 'Fetch statistics for all period',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Today',\n\t\t\t\t\t\tvalue: 'TODAY',\n\t\t\t\t\t\tdescription: 'Today only',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Yesterday',\n\t\t\t\t\t\tvalue: 'YESTERDAY',\n\t\t\t\t\t\tdescription: 'Yesterday only',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Last 7 Days',\n\t\t\t\t\t\tvalue: 'LAST_7_DAYS',\n\t\t\t\t\t\tdescription: 'Last 7 days, not including today',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Last Business Week',\n\t\t\t\t\t\tvalue: 'LAST_BUSINESS_WEEK',\n\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t'The 5 day business week, Monday through Friday, of the previous business week',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'This Month',\n\t\t\t\t\t\tvalue: 'THIS_MONTH',\n\t\t\t\t\t\tdescription: 'All days in the current month',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Last Month',\n\t\t\t\t\t\tvalue: 'LAST_MONTH',\n\t\t\t\t\t\tdescription: 'All days in the previous month',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Last 14 Days',\n\t\t\t\t\t\tvalue: 'LAST_14_DAYS',\n\t\t\t\t\t\tdescription: 'The last 14 days not including today',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Last 30 Days',\n\t\t\t\t\t\tvalue: 'LAST_30_DAYS',\n\t\t\t\t\t\tdescription: 'The last 30 days not including today',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tdefault: 'allTime',\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Show Campaigns by Status',\n\t\t\t\tname: 'campaignStatus',\n\t\t\t\tdescription: 'Filters campaigns by status',\n\t\t\t\ttype: 'options',\n\t\t\t\toptions: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'All',\n\t\t\t\t\t\tvalue: 'all',\n\t\t\t\t\t\tdescription: 'Fetch all campaigns regardless of status',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Enabled',\n\t\t\t\t\t\tvalue: 'ENABLED',\n\t\t\t\t\t\tdescription: 'Filter only active campaigns',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Paused',\n\t\t\t\t\t\tvalue: 'PAUSED',\n\t\t\t\t\t\tdescription: 'Filter only paused campaigns',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Removed',\n\t\t\t\t\t\tvalue: 'REMOVED',\n\t\t\t\t\t\tdescription: 'Filter only removed campaigns',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tdefault: 'all',\n\t\t\t},\n\t\t],\n\t},\n];\n\ntype GoogleAdsCampaignElement = [\n\t{\n\t\tcampaign: object;\n\t\tmetrics: object;\n\t\tcampaignBudget: object;\n\t},\n];\n"],"mappings":"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","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../nodes/Google/Ads/GoogleAds.node.ts"],"sourcesContent":["import { NodeConnectionTypes, type INodeType, type INodeTypeDescription } from 'n8n-workflow';\n\nimport { campaignFields, campaignOperations } from './CampaignDescription';\n\nexport class GoogleAds implements INodeType {\n\tdescription: INodeTypeDescription = {\n\t\tdisplayName: 'Google Ads',\n\t\tname: 'googleAds',\n\t\ticon: 'file:googleAds.svg',\n\t\tgroup: ['transform'],\n\t\tversion: 1,\n\t\tsubtitle: '={{$parameter[\"operation\"] + \": \" + $parameter[\"resource\"]}}',\n\t\tdescription: 'Use the Google Ads API',\n\t\tdefaults: {\n\t\t\tname: 'Google Ads',\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: 'googleAdsOAuth2Api',\n\t\t\t\trequired: true,\n\t\t\t\ttestedBy: {\n\t\t\t\t\trequest: {\n\t\t\t\t\t\tmethod: 'GET',\n\t\t\t\t\t\turl: '/
|
|
1
|
+
{"version":3,"sources":["../../../../nodes/Google/Ads/GoogleAds.node.ts"],"sourcesContent":["import { NodeConnectionTypes, type INodeType, type INodeTypeDescription } from 'n8n-workflow';\n\nimport { campaignFields, campaignOperations } from './CampaignDescription';\n\nexport class GoogleAds implements INodeType {\n\tdescription: INodeTypeDescription = {\n\t\tdisplayName: 'Google Ads',\n\t\tname: 'googleAds',\n\t\ticon: 'file:googleAds.svg',\n\t\tgroup: ['transform'],\n\t\tversion: 1,\n\t\tsubtitle: '={{$parameter[\"operation\"] + \": \" + $parameter[\"resource\"]}}',\n\t\tdescription: 'Use the Google Ads API',\n\t\tdefaults: {\n\t\t\tname: 'Google Ads',\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: 'googleAdsOAuth2Api',\n\t\t\t\trequired: true,\n\t\t\t\ttestedBy: {\n\t\t\t\t\trequest: {\n\t\t\t\t\t\tmethod: 'GET',\n\t\t\t\t\t\turl: '/v20/customers:listAccessibleCustomers',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t],\n\t\trequestDefaults: {\n\t\t\treturnFullResponse: true,\n\t\t\tbaseURL: 'https://googleads.googleapis.com',\n\t\t\theaders: {\n\t\t\t\t'developer-token': '={{$credentials.developerToken}}',\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: 'Campaign',\n\t\t\t\t\t\tvalue: 'campaign',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tdefault: 'campaign',\n\t\t\t},\n\t\t\t//-------------------------------\n\t\t\t// Campaign Operations\n\t\t\t//-------------------------------\n\t\t\t...campaignOperations,\n\t\t\t{\n\t\t\t\tdisplayName:\n\t\t\t\t\t'Divide field names expressed with <i>micros</i> by 1,000,000 to get the actual value',\n\t\t\t\tname: 'campaigsNotice',\n\t\t\t\ttype: 'notice',\n\t\t\t\tdefault: '',\n\t\t\t\tdisplayOptions: {\n\t\t\t\t\tshow: {\n\t\t\t\t\t\tresource: ['campaign'],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\t...campaignFields,\n\t\t],\n\t};\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0BAA+E;AAE/E,iCAAmD;AAE5C,MAAM,UAA+B;AAAA,EAArC;AACN,uBAAoC;AAAA,MACnC,aAAa;AAAA,MACb,MAAM;AAAA,MACN,MAAM;AAAA,MACN,OAAO,CAAC,WAAW;AAAA,MACnB,SAAS;AAAA,MACT,UAAU;AAAA,MACV,aAAa;AAAA,MACb,UAAU;AAAA,QACT,MAAM;AAAA,MACP;AAAA,MACA,cAAc;AAAA,MACd,QAAQ,CAAC,wCAAoB,IAAI;AAAA,MACjC,SAAS,CAAC,wCAAoB,IAAI;AAAA,MAClC,aAAa;AAAA,QACZ;AAAA,UACC,MAAM;AAAA,UACN,UAAU;AAAA,UACV,UAAU;AAAA,YACT,SAAS;AAAA,cACR,QAAQ;AAAA,cACR,KAAK;AAAA,YACN;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,MACA,iBAAiB;AAAA,QAChB,oBAAoB;AAAA,QACpB,SAAS;AAAA,QACT,SAAS;AAAA,UACR,mBAAmB;AAAA,QACpB;AAAA,MACD;AAAA,MACA,YAAY;AAAA,QACX;AAAA,UACC,aAAa;AAAA,UACb,MAAM;AAAA,UACN,MAAM;AAAA,UACN,kBAAkB;AAAA,UAClB,SAAS;AAAA,YACR;AAAA,cACC,MAAM;AAAA,cACN,OAAO;AAAA,YACR;AAAA,UACD;AAAA,UACA,SAAS;AAAA,QACV;AAAA;AAAA;AAAA;AAAA,QAIA,GAAG;AAAA,QACH;AAAA,UACC,aACC;AAAA,UACD,MAAM;AAAA,UACN,MAAM;AAAA,UACN,SAAS;AAAA,UACT,gBAAgB;AAAA,YACf,MAAM;AAAA,cACL,UAAU,CAAC,UAAU;AAAA,YACtB;AAAA,UACD;AAAA,QACD;AAAA,QACA,GAAG;AAAA,MACJ;AAAA,IACD;AAAA;AACD;","names":[]}
|
|
@@ -305,7 +305,7 @@ const deviceFields = [
|
|
|
305
305
|
loadOptionsMethod: "getOrgUnits"
|
|
306
306
|
},
|
|
307
307
|
default: [],
|
|
308
|
-
description: '
|
|
308
|
+
description: 'The full path to the organizational unit. Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code/expressions/">expression</a>.'
|
|
309
309
|
},
|
|
310
310
|
{
|
|
311
311
|
displayName: "Annotated User",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../nodes/Google/GSuiteAdmin/DeviceDescription.ts"],"sourcesContent":["import type { INodeProperties } from 'n8n-workflow';\n\nexport const deviceOperations: INodeProperties[] = [\n\t{\n\t\tdisplayName: 'Operation',\n\t\tname: 'operation',\n\t\ttype: 'options',\n\t\tnoDataExpression: true,\n\t\tdisplayOptions: {\n\t\t\tshow: {\n\t\t\t\tresource: ['device'],\n\t\t\t},\n\t\t},\n\t\toptions: [\n\t\t\t{\n\t\t\t\tname: 'Get',\n\t\t\t\tvalue: 'get',\n\t\t\t\tdescription: 'Get a ChromeOS device',\n\t\t\t\taction: 'Get ChromeOS device',\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'Get Many',\n\t\t\t\tvalue: 'getAll',\n\t\t\t\tdescription: 'Get many ChromeOS devices',\n\t\t\t\taction: 'Get many ChromeOS devices',\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'Update',\n\t\t\t\tvalue: 'update',\n\t\t\t\tdescription: 'Update a ChromeOS device',\n\t\t\t\taction: 'Update ChromeOS device',\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'Change Status',\n\t\t\t\tvalue: 'changeStatus',\n\t\t\t\tdescription: 'Change the status of a ChromeOS device',\n\t\t\t\taction: 'Change status of ChromeOS device',\n\t\t\t},\n\t\t],\n\t\tdefault: 'get',\n\t},\n];\n\nexport const deviceFields: INodeProperties[] = [\n\t/* -------------------------------------------------------------------------- */\n\t/* device */\n\t/* -------------------------------------------------------------------------- */\n\t{\n\t\tdisplayName: 'Device',\n\t\tname: 'deviceId',\n\t\ttype: 'resourceLocator',\n\t\trequired: true,\n\t\tdisplayOptions: {\n\t\t\tshow: {\n\t\t\t\toperation: ['get', 'update', 'changeStatus'],\n\t\t\t\tresource: ['device'],\n\t\t\t},\n\t\t},\n\t\tdefault: {\n\t\t\tmode: 'list',\n\t\t\tvalue: '',\n\t\t},\n\t\tdescription: 'Select the device you want to retrieve',\n\t\tmodes: [\n\t\t\t{\n\t\t\t\tdisplayName: 'From List',\n\t\t\t\tname: 'list',\n\t\t\t\ttype: 'list',\n\t\t\t\ttypeOptions: {\n\t\t\t\t\tsearchListMethod: 'searchDevices',\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'By ID',\n\t\t\t\tname: 'deviceId',\n\t\t\t\ttype: 'string',\n\t\t\t\thint: 'Enter the device id',\n\t\t\t\tplaceholder: 'e.g. 123e4567-e89b-12d3-a456-426614174000',\n\t\t\t},\n\t\t],\n\t},\n\n\t/* -------------------------------------------------------------------------- */\n\t/* device:get */\n\t/* -------------------------------------------------------------------------- */\n\n\t/* -------------------------------------------------------------------------- */\n\t/* device:getAll */\n\t/* -------------------------------------------------------------------------- */\n\t{\n\t\tdisplayName: 'Return All',\n\t\tname: 'returnAll',\n\t\ttype: 'boolean',\n\t\tdefault: false,\n\t\tdescription: 'Whether to return all results or only up to a given limit',\n\t\tdisplayOptions: {\n\t\t\tshow: {\n\t\t\t\toperation: ['getAll'],\n\t\t\t\tresource: ['device'],\n\t\t\t},\n\t\t},\n\t},\n\t{\n\t\tdisplayName: 'Limit',\n\t\tname: 'limit',\n\t\ttype: 'number',\n\t\tdisplayOptions: {\n\t\t\tshow: {\n\t\t\t\toperation: ['getAll'],\n\t\t\t\tresource: ['device'],\n\t\t\t\treturnAll: [false],\n\t\t\t},\n\t\t},\n\t\ttypeOptions: {\n\t\t\tminValue: 1,\n\t\t\tmaxValue: 500,\n\t\t},\n\t\tdefault: 100,\n\t\tdescription: 'Max number of results to return',\n\t},\n\t{\n\t\tdisplayName: 'Output',\n\t\tname: 'projection',\n\t\ttype: 'options',\n\t\trequired: true,\n\t\toptions: [\n\t\t\t{\n\t\t\t\tname: 'Basic',\n\t\t\t\tvalue: 'basic',\n\t\t\t\tdescription: 'Do not include any custom fields for the user',\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'Full',\n\t\t\t\tvalue: 'full',\n\t\t\t\tdescription: 'Include all fields associated with this user',\n\t\t\t},\n\t\t],\n\t\tdisplayOptions: {\n\t\t\tshow: {\n\t\t\t\toperation: ['get', 'getAll'],\n\t\t\t\tresource: ['device'],\n\t\t\t},\n\t\t},\n\t\tdefault: 'basic',\n\t\tdescription: 'What subset of fields to fetch for this device',\n\t},\n\t{\n\t\tdisplayName: 'Include Children',\n\t\tname: 'includeChildOrgunits',\n\t\ttype: 'boolean',\n\t\tdefault: false,\n\t\tdescription:\n\t\t\t'Whether to include devices from organizational units below your specified organizational unit',\n\t\tdisplayOptions: {\n\t\t\tshow: {\n\t\t\t\toperation: ['getAll'],\n\t\t\t\tresource: ['device'],\n\t\t\t},\n\t\t},\n\t},\n\t{\n\t\tdisplayName: 'Filter',\n\t\tname: 'filter',\n\t\ttype: 'collection',\n\t\tplaceholder: 'Add Filter',\n\t\tdefault: {},\n\t\tdisplayOptions: {\n\t\t\tshow: {\n\t\t\t\toperation: ['getAll'],\n\t\t\t\tresource: ['device'],\n\t\t\t},\n\t\t},\n\t\toptions: [\n\t\t\t{\n\t\t\t\tdisplayName: 'Organizational Unit Name or ID',\n\t\t\t\tname: 'orgUnitPath',\n\t\t\t\ttype: 'options',\n\t\t\t\ttypeOptions: {\n\t\t\t\t\tloadOptionsMethod: 'getOrgUnits',\n\t\t\t\t},\n\t\t\t\tdefault: [],\n\t\t\t\tdescription:\n\t\t\t\t\t'Specify the organizational unit name or ID. Choose from the list or use an expression. Choose from the list, or specify an ID using an <a href=\"https://docs.n8n.io/code/expressions/\">expression</a>.',\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Query',\n\t\t\t\tname: 'query',\n\t\t\t\ttype: 'string',\n\t\t\t\tplaceholder: 'e.g. name:contact* email:contact*',\n\t\t\t\tdefault: '',\n\t\t\t\tdescription: \"Use Google's querying syntax to filter results\",\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tdisplayName: 'Sort',\n\t\tname: 'sort',\n\t\ttype: 'fixedCollection',\n\t\tplaceholder: 'Add Sort Rule',\n\t\tdefault: {},\n\t\tdisplayOptions: {\n\t\t\tshow: {\n\t\t\t\toperation: ['getAll'],\n\t\t\t\tresource: ['device'],\n\t\t\t},\n\t\t},\n\t\toptions: [\n\t\t\t{\n\t\t\t\tname: 'sortRules',\n\t\t\t\tdisplayName: 'Sort Rules',\n\t\t\t\tvalues: [\n\t\t\t\t\t{\n\t\t\t\t\t\tdisplayName: 'Order By',\n\t\t\t\t\t\tname: 'orderBy',\n\t\t\t\t\t\ttype: 'options',\n\t\t\t\t\t\toptions: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: 'Annotated Location',\n\t\t\t\t\t\t\t\tvalue: 'annotatedLocation',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: 'Annotated User',\n\t\t\t\t\t\t\t\tvalue: 'annotatedUser',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: 'Last Sync',\n\t\t\t\t\t\t\t\tvalue: 'lastSync',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: 'Notes',\n\t\t\t\t\t\t\t\tvalue: 'notes',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: 'Serial Number',\n\t\t\t\t\t\t\t\tvalue: 'serialNumber',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: 'Status',\n\t\t\t\t\t\t\t\tvalue: 'status',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t\tdefault: '',\n\t\t\t\t\t\tdescription: 'Field to sort the results by',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tdisplayName: 'Sort Order',\n\t\t\t\t\t\tname: 'sortBy',\n\t\t\t\t\t\ttype: 'options',\n\t\t\t\t\t\toptions: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: 'Ascending',\n\t\t\t\t\t\t\t\tvalue: 'ascending',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: 'Descending',\n\t\t\t\t\t\t\t\tvalue: 'descending',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t\tdefault: '',\n\t\t\t\t\t\tdescription: 'Sort order direction',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t\tdescription: 'Define sorting rules for the results',\n\t},\n\n\t/* -------------------------------------------------------------------------- */\n\t/* device:update */\n\t/* -------------------------------------------------------------------------- */\n\t{\n\t\tdisplayName: 'Update Fields',\n\t\tname: 'updateOptions',\n\t\ttype: 'collection',\n\t\tplaceholder: 'Add Option',\n\t\tdefault: {},\n\t\tdisplayOptions: {\n\t\t\tshow: {\n\t\t\t\toperation: ['update'],\n\t\t\t\tresource: ['device'],\n\t\t\t},\n\t\t},\n\t\toptions: [\n\t\t\t{\n\t\t\t\tdisplayName: 'Move to Organizational Unit Name or ID',\n\t\t\t\tname: 'orgUnitPath',\n\t\t\t\ttype: 'options',\n\t\t\t\ttypeOptions: {\n\t\t\t\t\tloadOptionsMethod: 'getOrgUnits',\n\t\t\t\t},\n\t\t\t\tdefault: [],\n\t\t\t\tdescription:\n\t\t\t\t\t'A comma-separated list of schema names. All fields from these schemas are fetched. This should only be set when projection=custom. Choose from the list, or specify IDs using an <a href=\"https://docs.n8n.io/code-examples/expressions/\">expression</a>. Choose from the list, or specify an ID using an <a href=\"https://docs.n8n.io/code-examples/expressions/\">expression</a>. Choose from the list, or specify an ID using an <a href=\"https://docs.n8n.io/code/expressions/\">expression</a>.',\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Annotated User',\n\t\t\t\tname: 'annotatedUser',\n\t\t\t\ttype: 'string',\n\t\t\t\tdefault: '',\n\t\t\t\tdescription: 'The annotated user of the device',\n\t\t\t\tplaceholder: 'e.g. help desk',\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Annotated Location',\n\t\t\t\tname: 'annotatedLocation',\n\t\t\t\ttype: 'string',\n\t\t\t\tdefault: '',\n\t\t\t\tdescription: 'The annotated location of the device',\n\t\t\t\tplaceholder: 'e.g. Mountain View help desk Chromebook',\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Annotated Asset ID',\n\t\t\t\tname: 'annotatedAssetId',\n\t\t\t\ttype: 'string',\n\t\t\t\tdefault: '',\n\t\t\t\tdescription: 'The annotated asset ID of a device',\n\t\t\t\tplaceholder: 'e.g. 1234567890',\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Notes',\n\t\t\t\tname: 'notes',\n\t\t\t\ttype: 'string',\n\t\t\t\tdefault: '',\n\t\t\t\tdescription: 'Add notes to a device',\n\t\t\t\tplaceholder: 'e.g. Loaned from support',\n\t\t\t},\n\t\t],\n\t},\n\n\t/* -------------------------------------------------------------------------- */\n\t/* device:changeStatus */\n\t/* -------------------------------------------------------------------------- */\n\t{\n\t\tdisplayName: 'Status',\n\t\tname: 'action',\n\t\ttype: 'options',\n\t\trequired: true,\n\t\toptions: [\n\t\t\t{\n\t\t\t\tname: 'Enabled',\n\t\t\t\tvalue: 'reenable',\n\t\t\t\tdescription: 'Re-enable a disabled chromebook',\n\t\t\t\taction: 'Enable a device',\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'Disabled',\n\t\t\t\tvalue: 'disable',\n\t\t\t\tdescription: 'Disable a chromebook',\n\t\t\t\taction: 'Disable a device',\n\t\t\t},\n\t\t],\n\t\tdisplayOptions: {\n\t\t\tshow: {\n\t\t\t\toperation: ['changeStatus'],\n\t\t\t\tresource: ['device'],\n\t\t\t},\n\t\t},\n\t\tdefault: 'reenable',\n\t\tdescription: 'Set the status of a device',\n\t},\n];\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../../nodes/Google/GSuiteAdmin/DeviceDescription.ts"],"sourcesContent":["import type { INodeProperties } from 'n8n-workflow';\n\nexport const deviceOperations: INodeProperties[] = [\n\t{\n\t\tdisplayName: 'Operation',\n\t\tname: 'operation',\n\t\ttype: 'options',\n\t\tnoDataExpression: true,\n\t\tdisplayOptions: {\n\t\t\tshow: {\n\t\t\t\tresource: ['device'],\n\t\t\t},\n\t\t},\n\t\toptions: [\n\t\t\t{\n\t\t\t\tname: 'Get',\n\t\t\t\tvalue: 'get',\n\t\t\t\tdescription: 'Get a ChromeOS device',\n\t\t\t\taction: 'Get ChromeOS device',\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'Get Many',\n\t\t\t\tvalue: 'getAll',\n\t\t\t\tdescription: 'Get many ChromeOS devices',\n\t\t\t\taction: 'Get many ChromeOS devices',\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'Update',\n\t\t\t\tvalue: 'update',\n\t\t\t\tdescription: 'Update a ChromeOS device',\n\t\t\t\taction: 'Update ChromeOS device',\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'Change Status',\n\t\t\t\tvalue: 'changeStatus',\n\t\t\t\tdescription: 'Change the status of a ChromeOS device',\n\t\t\t\taction: 'Change status of ChromeOS device',\n\t\t\t},\n\t\t],\n\t\tdefault: 'get',\n\t},\n];\n\nexport const deviceFields: INodeProperties[] = [\n\t/* -------------------------------------------------------------------------- */\n\t/* device */\n\t/* -------------------------------------------------------------------------- */\n\t{\n\t\tdisplayName: 'Device',\n\t\tname: 'deviceId',\n\t\ttype: 'resourceLocator',\n\t\trequired: true,\n\t\tdisplayOptions: {\n\t\t\tshow: {\n\t\t\t\toperation: ['get', 'update', 'changeStatus'],\n\t\t\t\tresource: ['device'],\n\t\t\t},\n\t\t},\n\t\tdefault: {\n\t\t\tmode: 'list',\n\t\t\tvalue: '',\n\t\t},\n\t\tdescription: 'Select the device you want to retrieve',\n\t\tmodes: [\n\t\t\t{\n\t\t\t\tdisplayName: 'From List',\n\t\t\t\tname: 'list',\n\t\t\t\ttype: 'list',\n\t\t\t\ttypeOptions: {\n\t\t\t\t\tsearchListMethod: 'searchDevices',\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'By ID',\n\t\t\t\tname: 'deviceId',\n\t\t\t\ttype: 'string',\n\t\t\t\thint: 'Enter the device id',\n\t\t\t\tplaceholder: 'e.g. 123e4567-e89b-12d3-a456-426614174000',\n\t\t\t},\n\t\t],\n\t},\n\n\t/* -------------------------------------------------------------------------- */\n\t/* device:get */\n\t/* -------------------------------------------------------------------------- */\n\n\t/* -------------------------------------------------------------------------- */\n\t/* device:getAll */\n\t/* -------------------------------------------------------------------------- */\n\t{\n\t\tdisplayName: 'Return All',\n\t\tname: 'returnAll',\n\t\ttype: 'boolean',\n\t\tdefault: false,\n\t\tdescription: 'Whether to return all results or only up to a given limit',\n\t\tdisplayOptions: {\n\t\t\tshow: {\n\t\t\t\toperation: ['getAll'],\n\t\t\t\tresource: ['device'],\n\t\t\t},\n\t\t},\n\t},\n\t{\n\t\tdisplayName: 'Limit',\n\t\tname: 'limit',\n\t\ttype: 'number',\n\t\tdisplayOptions: {\n\t\t\tshow: {\n\t\t\t\toperation: ['getAll'],\n\t\t\t\tresource: ['device'],\n\t\t\t\treturnAll: [false],\n\t\t\t},\n\t\t},\n\t\ttypeOptions: {\n\t\t\tminValue: 1,\n\t\t\tmaxValue: 500,\n\t\t},\n\t\tdefault: 100,\n\t\tdescription: 'Max number of results to return',\n\t},\n\t{\n\t\tdisplayName: 'Output',\n\t\tname: 'projection',\n\t\ttype: 'options',\n\t\trequired: true,\n\t\toptions: [\n\t\t\t{\n\t\t\t\tname: 'Basic',\n\t\t\t\tvalue: 'basic',\n\t\t\t\tdescription: 'Do not include any custom fields for the user',\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'Full',\n\t\t\t\tvalue: 'full',\n\t\t\t\tdescription: 'Include all fields associated with this user',\n\t\t\t},\n\t\t],\n\t\tdisplayOptions: {\n\t\t\tshow: {\n\t\t\t\toperation: ['get', 'getAll'],\n\t\t\t\tresource: ['device'],\n\t\t\t},\n\t\t},\n\t\tdefault: 'basic',\n\t\tdescription: 'What subset of fields to fetch for this device',\n\t},\n\t{\n\t\tdisplayName: 'Include Children',\n\t\tname: 'includeChildOrgunits',\n\t\ttype: 'boolean',\n\t\tdefault: false,\n\t\tdescription:\n\t\t\t'Whether to include devices from organizational units below your specified organizational unit',\n\t\tdisplayOptions: {\n\t\t\tshow: {\n\t\t\t\toperation: ['getAll'],\n\t\t\t\tresource: ['device'],\n\t\t\t},\n\t\t},\n\t},\n\t{\n\t\tdisplayName: 'Filter',\n\t\tname: 'filter',\n\t\ttype: 'collection',\n\t\tplaceholder: 'Add Filter',\n\t\tdefault: {},\n\t\tdisplayOptions: {\n\t\t\tshow: {\n\t\t\t\toperation: ['getAll'],\n\t\t\t\tresource: ['device'],\n\t\t\t},\n\t\t},\n\t\toptions: [\n\t\t\t{\n\t\t\t\tdisplayName: 'Organizational Unit Name or ID',\n\t\t\t\tname: 'orgUnitPath',\n\t\t\t\ttype: 'options',\n\t\t\t\ttypeOptions: {\n\t\t\t\t\tloadOptionsMethod: 'getOrgUnits',\n\t\t\t\t},\n\t\t\t\tdefault: [],\n\t\t\t\tdescription:\n\t\t\t\t\t'Specify the organizational unit name or ID. Choose from the list or use an expression. Choose from the list, or specify an ID using an <a href=\"https://docs.n8n.io/code/expressions/\">expression</a>.',\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Query',\n\t\t\t\tname: 'query',\n\t\t\t\ttype: 'string',\n\t\t\t\tplaceholder: 'e.g. name:contact* email:contact*',\n\t\t\t\tdefault: '',\n\t\t\t\tdescription: \"Use Google's querying syntax to filter results\",\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tdisplayName: 'Sort',\n\t\tname: 'sort',\n\t\ttype: 'fixedCollection',\n\t\tplaceholder: 'Add Sort Rule',\n\t\tdefault: {},\n\t\tdisplayOptions: {\n\t\t\tshow: {\n\t\t\t\toperation: ['getAll'],\n\t\t\t\tresource: ['device'],\n\t\t\t},\n\t\t},\n\t\toptions: [\n\t\t\t{\n\t\t\t\tname: 'sortRules',\n\t\t\t\tdisplayName: 'Sort Rules',\n\t\t\t\tvalues: [\n\t\t\t\t\t{\n\t\t\t\t\t\tdisplayName: 'Order By',\n\t\t\t\t\t\tname: 'orderBy',\n\t\t\t\t\t\ttype: 'options',\n\t\t\t\t\t\toptions: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: 'Annotated Location',\n\t\t\t\t\t\t\t\tvalue: 'annotatedLocation',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: 'Annotated User',\n\t\t\t\t\t\t\t\tvalue: 'annotatedUser',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: 'Last Sync',\n\t\t\t\t\t\t\t\tvalue: 'lastSync',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: 'Notes',\n\t\t\t\t\t\t\t\tvalue: 'notes',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: 'Serial Number',\n\t\t\t\t\t\t\t\tvalue: 'serialNumber',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: 'Status',\n\t\t\t\t\t\t\t\tvalue: 'status',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t\tdefault: '',\n\t\t\t\t\t\tdescription: 'Field to sort the results by',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tdisplayName: 'Sort Order',\n\t\t\t\t\t\tname: 'sortBy',\n\t\t\t\t\t\ttype: 'options',\n\t\t\t\t\t\toptions: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: 'Ascending',\n\t\t\t\t\t\t\t\tvalue: 'ascending',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: 'Descending',\n\t\t\t\t\t\t\t\tvalue: 'descending',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t\tdefault: '',\n\t\t\t\t\t\tdescription: 'Sort order direction',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t\tdescription: 'Define sorting rules for the results',\n\t},\n\n\t/* -------------------------------------------------------------------------- */\n\t/* device:update */\n\t/* -------------------------------------------------------------------------- */\n\t{\n\t\tdisplayName: 'Update Fields',\n\t\tname: 'updateOptions',\n\t\ttype: 'collection',\n\t\tplaceholder: 'Add Option',\n\t\tdefault: {},\n\t\tdisplayOptions: {\n\t\t\tshow: {\n\t\t\t\toperation: ['update'],\n\t\t\t\tresource: ['device'],\n\t\t\t},\n\t\t},\n\t\toptions: [\n\t\t\t{\n\t\t\t\tdisplayName: 'Move to Organizational Unit Name or ID',\n\t\t\t\tname: 'orgUnitPath',\n\t\t\t\ttype: 'options',\n\t\t\t\ttypeOptions: {\n\t\t\t\t\tloadOptionsMethod: 'getOrgUnits',\n\t\t\t\t},\n\t\t\t\tdefault: [],\n\t\t\t\tdescription:\n\t\t\t\t\t'The full path to the organizational unit. Choose from the list, or specify an ID using an <a href=\"https://docs.n8n.io/code/expressions/\">expression</a>.',\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Annotated User',\n\t\t\t\tname: 'annotatedUser',\n\t\t\t\ttype: 'string',\n\t\t\t\tdefault: '',\n\t\t\t\tdescription: 'The annotated user of the device',\n\t\t\t\tplaceholder: 'e.g. help desk',\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Annotated Location',\n\t\t\t\tname: 'annotatedLocation',\n\t\t\t\ttype: 'string',\n\t\t\t\tdefault: '',\n\t\t\t\tdescription: 'The annotated location of the device',\n\t\t\t\tplaceholder: 'e.g. Mountain View help desk Chromebook',\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Annotated Asset ID',\n\t\t\t\tname: 'annotatedAssetId',\n\t\t\t\ttype: 'string',\n\t\t\t\tdefault: '',\n\t\t\t\tdescription: 'The annotated asset ID of a device',\n\t\t\t\tplaceholder: 'e.g. 1234567890',\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Notes',\n\t\t\t\tname: 'notes',\n\t\t\t\ttype: 'string',\n\t\t\t\tdefault: '',\n\t\t\t\tdescription: 'Add notes to a device',\n\t\t\t\tplaceholder: 'e.g. Loaned from support',\n\t\t\t},\n\t\t],\n\t},\n\n\t/* -------------------------------------------------------------------------- */\n\t/* device:changeStatus */\n\t/* -------------------------------------------------------------------------- */\n\t{\n\t\tdisplayName: 'Status',\n\t\tname: 'action',\n\t\ttype: 'options',\n\t\trequired: true,\n\t\toptions: [\n\t\t\t{\n\t\t\t\tname: 'Enabled',\n\t\t\t\tvalue: 'reenable',\n\t\t\t\tdescription: 'Re-enable a disabled chromebook',\n\t\t\t\taction: 'Enable a device',\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'Disabled',\n\t\t\t\tvalue: 'disable',\n\t\t\t\tdescription: 'Disable a chromebook',\n\t\t\t\taction: 'Disable a device',\n\t\t\t},\n\t\t],\n\t\tdisplayOptions: {\n\t\t\tshow: {\n\t\t\t\toperation: ['changeStatus'],\n\t\t\t\tresource: ['device'],\n\t\t\t},\n\t\t},\n\t\tdefault: 'reenable',\n\t\tdescription: 'Set the status of a device',\n\t},\n];\n"],"mappings":"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","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../nodes/Notion/shared/GenericFunctions.ts"],"sourcesContent":["import { camelCase, capitalCase, snakeCase } from 'change-case';\nimport set from 'lodash/set';\nimport moment from 'moment-timezone';\nimport type {\n\tIBinaryKeyData,\n\tIDataObject,\n\tIDisplayOptions,\n\tIExecuteFunctions,\n\tIHookFunctions,\n\tIHttpRequestMethods,\n\tILoadOptionsFunctions,\n\tINode,\n\tINodeExecutionData,\n\tINodeParameterResourceLocator,\n\tINodeProperties,\n\tIPairedItemData,\n\tIPollFunctions,\n\tIRequestOptions,\n\tJsonObject,\n} from 'n8n-workflow';\nimport { NodeApiError, NodeOperationError } from 'n8n-workflow';\nimport { validate as uuidValidate } from 'uuid';\n\nimport { blockUrlExtractionRegexp, databasePageUrlValidationRegexp } from './constants';\nimport { filters } from './descriptions/Filters';\n\nfunction uuidValidateWithoutDashes(this: IExecuteFunctions, value: string) {\n\tif (uuidValidate(value)) return true;\n\tif (value.length == 32) {\n\t\tconst strWithDashes = `${value.slice(0, 8)}-${value.slice(8, 12)}-${value.slice(12, 16)}-${value.slice(16, 20)}-${value.slice(20)}`;\n\t\tif (uuidValidate(strWithDashes)) return true;\n\t}\n\tthrow new NodeOperationError(\n\t\tthis.getNode(),\n\t\t`The relation id \"${value}\" is not a valid uuid with optional dashes.`,\n\t);\n}\n\nexport type SortData = { key: string; type: string; direction: string; timestamp: boolean };\n\nconst apiVersion: { [key: number]: string } = {\n\t1: '2021-05-13',\n\t2: '2021-08-16',\n\t2.1: '2021-08-16',\n\t2.2: '2021-08-16',\n};\n\nexport async function notionApiRequest(\n\tthis: IHookFunctions | IExecuteFunctions | ILoadOptionsFunctions | IPollFunctions,\n\tmethod: IHttpRequestMethods,\n\tresource: string,\n\n\tbody: any = {},\n\tqs: IDataObject = {},\n\turi?: string,\n\toption: IDataObject = {},\n): Promise<any> {\n\ttry {\n\t\tlet options: IRequestOptions = {\n\t\t\theaders: {\n\t\t\t\t'Notion-Version': apiVersion[this.getNode().typeVersion],\n\t\t\t},\n\t\t\tmethod,\n\t\t\tqs,\n\t\t\tbody,\n\t\t\turi: uri || `https://api.notion.com/v1${resource}`,\n\t\t\tjson: true,\n\t\t};\n\t\toptions = Object.assign({}, options, option);\n\t\tif (Object.keys(body as IDataObject).length === 0) {\n\t\t\tdelete options.body;\n\t\t}\n\t\tif (!uri) {\n\t\t\treturn await this.helpers.requestWithAuthentication.call(this, 'notionApi', options);\n\t\t}\n\t\treturn await this.helpers.request(options);\n\t} catch (error) {\n\t\tthrow new NodeApiError(this.getNode(), error as JsonObject);\n\t}\n}\n\nexport async function notionApiRequestAllItems(\n\tthis: IExecuteFunctions | ILoadOptionsFunctions | IPollFunctions,\n\tpropertyName: string,\n\tmethod: IHttpRequestMethods,\n\tendpoint: string,\n\tbody: any = {},\n\tquery: IDataObject = {},\n): Promise<any> {\n\tconst resource = this.getNodeParameter('resource', 0);\n\n\tconst returnData: IDataObject[] = [];\n\n\tlet responseData;\n\n\tdo {\n\t\tresponseData = await notionApiRequest.call(this, method, endpoint, body, query);\n\t\tconst { next_cursor } = responseData;\n\t\tif (resource === 'block' || resource === 'user') {\n\t\t\tquery.start_cursor = next_cursor;\n\t\t} else {\n\t\t\tbody.start_cursor = next_cursor;\n\t\t}\n\t\treturnData.push.apply(returnData, responseData[propertyName] as IDataObject[]);\n\t\tconst limit = query.limit as number | undefined;\n\t\tif (limit && limit <= returnData.length) {\n\t\t\treturn returnData;\n\t\t}\n\t} while (responseData.has_more !== false);\n\n\treturn returnData;\n}\n\nexport async function notionApiRequestGetBlockChildrens(\n\tthis: IExecuteFunctions | ILoadOptionsFunctions | IPollFunctions,\n\tblocks: IDataObject[],\n\tresponseData: IDataObject[] = [],\n\tlimit?: number,\n) {\n\tif (blocks.length === 0) return responseData;\n\n\tfor (const block of blocks) {\n\t\tresponseData.push(block);\n\n\t\tif (block.type === 'child_page') continue;\n\n\t\tif (block.has_children) {\n\t\t\tlet childrens = await notionApiRequestAllItems.call(\n\t\t\t\tthis,\n\t\t\t\t'results',\n\t\t\t\t'GET',\n\t\t\t\t`/blocks/${block.id}/children`,\n\t\t\t);\n\n\t\t\tchildrens = (childrens || []).map((entry: IDataObject) => ({\n\t\t\t\tobject: entry.object,\n\t\t\t\tparent_id: block.id,\n\t\t\t\t...entry,\n\t\t\t}));\n\n\t\t\tawait notionApiRequestGetBlockChildrens.call(this, childrens, responseData);\n\t\t}\n\n\t\tif (limit && responseData.length === limit) {\n\t\t\treturn responseData;\n\t\t}\n\n\t\tif (limit && responseData.length > limit) {\n\t\t\treturn responseData.slice(0, limit);\n\t\t}\n\t}\n\n\treturn responseData;\n}\n\nexport function getBlockTypesOptions() {\n\treturn [\n\t\t{\n\t\t\tname: 'Paragraph',\n\t\t\tvalue: 'paragraph',\n\t\t},\n\t\t{\n\t\t\tname: 'Heading 1',\n\t\t\tvalue: 'heading_1',\n\t\t},\n\t\t{\n\t\t\tname: 'Heading 2',\n\t\t\tvalue: 'heading_2',\n\t\t},\n\t\t{\n\t\t\tname: 'Heading 3',\n\t\t\tvalue: 'heading_3',\n\t\t},\n\t\t{\n\t\t\tname: 'Toggle',\n\t\t\tvalue: 'toggle',\n\t\t},\n\t\t{\n\t\t\tname: 'To-Do',\n\t\t\tvalue: 'to_do',\n\t\t},\n\t\t// {\n\t\t// \tname: 'Child Page',\n\t\t// \tvalue: 'child_page',\n\t\t// },\n\t\t{\n\t\t\tname: 'Bulleted List Item',\n\t\t\tvalue: 'bulleted_list_item',\n\t\t},\n\t\t{\n\t\t\tname: 'Numbered List Item',\n\t\t\tvalue: 'numbered_list_item',\n\t\t},\n\t\t{\n\t\t\tname: 'Image',\n\t\t\tvalue: 'image',\n\t\t},\n\t];\n}\n\nfunction textContent(content: string) {\n\treturn {\n\t\ttext: {\n\t\t\tcontent,\n\t\t},\n\t};\n}\n\nexport function formatTitle(content: string) {\n\treturn {\n\t\ttitle: [textContent(content)],\n\t};\n}\n\nexport function formatText(content: string) {\n\treturn {\n\t\ttext: [textContent(content)],\n\t};\n}\n\nfunction getLink(text: { textLink: string; isLink: boolean }) {\n\tif (text.isLink && text.textLink !== '') {\n\t\treturn {\n\t\t\tlink: {\n\t\t\t\turl: text.textLink,\n\t\t\t},\n\t\t};\n\t}\n\treturn {};\n}\n\ntype TextData = {\n\ttextType: string;\n\ttext: string;\n\tisLink: boolean;\n\trange: boolean;\n\ttextLink: string;\n\tmentionType: string;\n\tdateStart: string;\n\tdateEnd: string;\n\tdate: string;\n\tannotationUi: IDataObject;\n\texpression: string;\n};\nfunction getTexts(texts: TextData[]) {\n\tconst results = [];\n\tfor (const text of texts) {\n\t\tif (text.textType === 'text') {\n\t\t\tresults.push({\n\t\t\t\ttype: 'text',\n\t\t\t\ttext: {\n\t\t\t\t\tcontent: text.text,\n\t\t\t\t\t...getLink(text),\n\t\t\t\t},\n\t\t\t\tannotations: text.annotationUi,\n\t\t\t});\n\t\t} else if (text.textType === 'mention') {\n\t\t\tif (text.mentionType === 'date') {\n\t\t\t\tresults.push({\n\t\t\t\t\ttype: 'mention',\n\t\t\t\t\tmention: {\n\t\t\t\t\t\ttype: text.mentionType,\n\t\t\t\t\t\t[text.mentionType]: text.range\n\t\t\t\t\t\t\t? { start: text.dateStart, end: text.dateEnd }\n\t\t\t\t\t\t\t: { start: text.date, end: null },\n\t\t\t\t\t},\n\t\t\t\t\tannotations: text.annotationUi,\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tresults.push({\n\t\t\t\t\ttype: 'mention',\n\t\t\t\t\tmention: {\n\t\t\t\t\t\ttype: text.mentionType,\n\t\t\t\t\t\t//@ts-expect-error any\n\t\t\t\t\t\t[text.mentionType]: { id: text[text.mentionType] as string },\n\t\t\t\t\t},\n\t\t\t\t\tannotations: text.annotationUi,\n\t\t\t\t});\n\t\t\t}\n\t\t} else if (text.textType === 'equation') {\n\t\t\tresults.push({\n\t\t\t\ttype: 'equation',\n\t\t\t\tequation: {\n\t\t\t\t\texpression: text.expression,\n\t\t\t\t},\n\t\t\t\tannotations: text.annotationUi,\n\t\t\t});\n\t\t}\n\t}\n\treturn results;\n}\n\nfunction getTextBlocks(block: IDataObject) {\n\treturn {\n\t\ttext:\n\t\t\tblock.richText === false\n\t\t\t\t? formatText(block.textContent as string).text\n\t\t\t\t: getTexts(((block.text as IDataObject).text as TextData[]) || []),\n\t};\n}\n\nexport function formatBlocks(blocks: IDataObject[]) {\n\tconst results = [];\n\tfor (const block of blocks) {\n\t\tresults.push({\n\t\t\tobject: 'block',\n\t\t\ttype: block.type,\n\t\t\t[block.type as string]: {\n\t\t\t\t...(block.type === 'to_do' ? { checked: block.checked } : {}),\n\t\t\t\t...(block.type === 'image' ? { type: 'external', external: { url: block.url } } : {}),\n\t\t\t\t...(!['image'].includes(block.type as string) ? getTextBlocks(block) : {}),\n\t\t\t},\n\t\t});\n\t}\n\treturn results;\n}\n\nfunction getDateFormat(includeTime: boolean) {\n\tif (!includeTime) {\n\t\treturn 'yyyy-MM-DD';\n\t}\n\treturn '';\n}\n\nfunction isEmpty(value: unknown): boolean {\n\treturn value === undefined || value === null || value === '';\n}\n\nfunction getPropertyKeyValue(\n\tthis: IExecuteFunctions,\n\tvalue: any,\n\ttype: string,\n\ttimezone: string,\n\tversion = 1,\n) {\n\tconst ignoreIfEmpty = <T>(v: T, cb: (v: T) => any) =>\n\t\t!v && value.ignoreIfEmpty ? undefined : cb(v);\n\tlet result: IDataObject = {};\n\n\tswitch (type) {\n\t\tcase 'rich_text':\n\t\t\tif (value.richText === false) {\n\t\t\t\tresult = { rich_text: [{ text: { content: value.textContent } }] };\n\t\t\t} else {\n\t\t\t\tresult = { rich_text: getTexts(value.text.text as TextData[]) };\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'title':\n\t\t\tresult = { title: [{ text: { content: value.title } }] };\n\t\t\tbreak;\n\t\tcase 'number':\n\t\t\tresult = { type: 'number', number: value.numberValue };\n\t\t\tbreak;\n\t\tcase 'url':\n\t\t\tresult = ignoreIfEmpty(value.urlValue, (url) => ({ type: 'url', url }));\n\t\t\tbreak;\n\t\tcase 'checkbox':\n\t\t\tresult = { type: 'checkbox', checkbox: value.checkboxValue };\n\t\t\tbreak;\n\t\tcase 'relation':\n\t\t\tresult = {\n\t\t\t\ttype: 'relation',\n\t\t\t\trelation: value.relationValue\n\t\t\t\t\t.filter((relation: IDataObject) => {\n\t\t\t\t\t\treturn relation && typeof relation === 'string';\n\t\t\t\t\t})\n\t\t\t\t\t.reduce((acc: string[], cur: string) => {\n\t\t\t\t\t\treturn acc.concat(cur.split(',').map((relation: string) => relation.trim()));\n\t\t\t\t\t}, [])\n\t\t\t\t\t.filter((relation: string) => {\n\t\t\t\t\t\treturn uuidValidateWithoutDashes.call(this, relation);\n\t\t\t\t\t})\n\t\t\t\t\t.map((relation: string) => ({ id: relation })),\n\t\t\t};\n\t\t\tbreak;\n\t\tcase 'multi_select':\n\t\t\tif (isEmpty(value.multiSelectValue)) {\n\t\t\t\tresult = {\n\t\t\t\t\ttype: 'multi_select',\n\t\t\t\t\tmulti_select: [],\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tconst multiSelectValue = value.multiSelectValue;\n\n\t\t\tresult = {\n\t\t\t\ttype: 'multi_select',\n\t\t\t\tmulti_select: (Array.isArray(multiSelectValue)\n\t\t\t\t\t? multiSelectValue\n\t\t\t\t\t: multiSelectValue.split(',').map((v: string) => v.trim())\n\t\t\t\t)\n\t\t\t\t\t.filter((entry: any) => entry !== null)\n\t\t\t\t\t.map((option: string) => (!uuidValidate(option) ? { name: option } : { id: option })),\n\t\t\t};\n\t\t\tbreak;\n\t\tcase 'email':\n\t\t\tresult = {\n\t\t\t\ttype: 'email',\n\t\t\t\temail: value.emailValue,\n\t\t\t};\n\t\t\tbreak;\n\t\tcase 'people':\n\t\t\t//if expression it's a single value, make it an array\n\t\t\tif (!Array.isArray(value.peopleValue)) {\n\t\t\t\tvalue.peopleValue = [value.peopleValue];\n\t\t\t}\n\n\t\t\tresult = {\n\t\t\t\ttype: 'people',\n\t\t\t\tpeople: value.peopleValue.map((option: string) => ({ id: option })),\n\t\t\t};\n\t\t\tbreak;\n\t\tcase 'phone_number':\n\t\t\tresult = {\n\t\t\t\ttype: 'phone_number',\n\t\t\t\tphone_number: value.phoneValue,\n\t\t\t};\n\t\t\tbreak;\n\t\tcase 'select':\n\t\t\tif (isEmpty(value.selectValue)) {\n\t\t\t\tresult = {\n\t\t\t\t\ttype: 'select',\n\t\t\t\t\tselect: null,\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tresult = {\n\t\t\t\ttype: 'select',\n\t\t\t\tselect: version === 1 ? { id: value.selectValue } : { name: value.selectValue },\n\t\t\t};\n\t\t\tbreak;\n\t\tcase 'status':\n\t\t\tresult = {\n\t\t\t\ttype: 'status',\n\t\t\t\tstatus: { name: value.statusValue },\n\t\t\t};\n\t\t\tbreak;\n\t\tcase 'date':\n\t\t\tconst format = getDateFormat(value.includeTime as boolean);\n\t\t\tconst timezoneValue = value.timezone === 'default' ? timezone : value.timezone;\n\t\t\tif (value.range === true) {\n\t\t\t\tresult = {\n\t\t\t\t\ttype: 'date',\n\t\t\t\t\tdate: {\n\t\t\t\t\t\tstart: moment.tz(value.dateStart as number, timezoneValue as string).format(format),\n\t\t\t\t\t\tend: moment.tz(value.dateEnd as number, timezoneValue as string).format(format),\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\tresult = {\n\t\t\t\t\ttype: 'date',\n\t\t\t\t\tdate: {\n\t\t\t\t\t\tstart: moment.tz(value.date as number, timezoneValue as string).format(format),\n\t\t\t\t\t\tend: null,\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t//if the date was left empty, set it to null so it resets the value in notion\n\t\t\tif (value.date === '' || (value.dateStart === '' && value.dateEnd === '')) {\n\t\t\t\tresult.date = null;\n\t\t\t}\n\n\t\t\tbreak;\n\t\tcase 'files':\n\t\t\tresult = {\n\t\t\t\ttype: 'files',\n\t\t\t\tfiles: value.fileUrls.fileUrl.map((file: { name: string; url: string }) => ({\n\t\t\t\t\tname: file.name,\n\t\t\t\t\ttype: 'external',\n\t\t\t\t\texternal: { url: file.url },\n\t\t\t\t})),\n\t\t\t};\n\t\t\tbreak;\n\t\tdefault:\n\t}\n\treturn result;\n}\n\nfunction getNameAndType(key: string) {\n\tconst [name, type] = key.split('|');\n\treturn {\n\t\tname,\n\t\ttype,\n\t};\n}\n\nexport function mapProperties(\n\tthis: IExecuteFunctions,\n\tproperties: IDataObject[],\n\ttimezone: string,\n\tversion = 1,\n) {\n\treturn properties\n\t\t.filter(\n\t\t\t(property): property is Record<string, { key: string; [k: string]: any }> =>\n\t\t\t\ttypeof property.key === 'string',\n\t\t)\n\t\t.map(\n\t\t\t(property) =>\n\t\t\t\t[\n\t\t\t\t\t`${property.key.split('|')[0]}`,\n\t\t\t\t\tgetPropertyKeyValue.call(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\tproperty,\n\t\t\t\t\t\tproperty.key.split('|')[1] as string,\n\t\t\t\t\t\ttimezone,\n\t\t\t\t\t\tversion,\n\t\t\t\t\t),\n\t\t\t\t] as const,\n\t\t)\n\t\t.filter(([, value]) => value)\n\t\t.reduce(\n\t\t\t(obj, [key, value]) =>\n\t\t\t\tObject.assign(obj, {\n\t\t\t\t\t[key]: value,\n\t\t\t\t}),\n\t\t\t{},\n\t\t);\n}\n\nexport function mapSorting(data: SortData[]) {\n\treturn data.map((sort) => {\n\t\treturn {\n\t\t\tdirection: sort.direction,\n\t\t\t[sort.timestamp ? 'timestamp' : 'property']: sort.key.split('|')[0],\n\t\t};\n\t});\n}\n\nexport function mapFilters(filtersList: IDataObject[], timezone: string) {\n\treturn filtersList.reduce((obj, value: { [key: string]: any }) => {\n\t\tlet key = getNameAndType(value.key as string).type;\n\n\t\tlet valuePropertyName =\n\t\t\tkey === 'last_edited_time' ? value[camelCase(key)] : value[`${camelCase(key)}Value`];\n\n\t\tif (['is_empty', 'is_not_empty'].includes(value.condition as string)) {\n\t\t\tvaluePropertyName = true;\n\t\t} else if (\n\t\t\t['past_week', 'past_month', 'past_year', 'next_week', 'next_month', 'next_year'].includes(\n\t\t\t\tvalue.condition as string,\n\t\t\t)\n\t\t) {\n\t\t\tvaluePropertyName = {};\n\t\t}\n\t\tif (key === 'rich_text' || key === 'text') {\n\t\t\tkey = 'text';\n\t\t} else if (key === 'phone_number') {\n\t\t\tkey = 'phone';\n\t\t} else if (\n\t\t\tkey === 'date' &&\n\t\t\t!['is_empty', 'is_not_empty'].includes(value.condition as string)\n\t\t) {\n\t\t\tvaluePropertyName = value.date === '' ? {} : moment.tz(value.date, timezone).utc().format();\n\t\t} else if (key === 'boolean') {\n\t\t\tkey = 'checkbox';\n\t\t}\n\n\t\tif (value.type === 'formula') {\n\t\t\tif (['is_empty', 'is_not_empty'].includes(value.condition as string)) {\n\t\t\t\tkey = value.returnType;\n\t\t\t} else {\n\t\t\t\tconst vpropertyName = value[`${camelCase(value.returnType as string)}Value`];\n\n\t\t\t\treturn Object.assign(obj, {\n\t\t\t\t\t['property']: getNameAndType(value.key as string).name,\n\t\t\t\t\t[key]: { [value.returnType]: { [`${value.condition}`]: vpropertyName } },\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn Object.assign(obj, {\n\t\t\t['property']: getNameAndType(value.key as string)?.name,\n\t\t\t[key]: { [`${value.condition}`]: valuePropertyName },\n\t\t});\n\t}, {});\n}\n\nfunction simplifyProperty(property: any) {\n\tlet result: any;\n\tconst type = (property as IDataObject).type as string;\n\tif (['text'].includes(property.type as string)) {\n\t\tresult = property.plain_text;\n\t} else if (['rich_text', 'title'].includes(property.type as string)) {\n\t\tif (Array.isArray(property[type]) && property[type].length !== 0) {\n\t\t\tresult = property[type].map((text: any) => simplifyProperty(text) as string).join('');\n\t\t} else {\n\t\t\tresult = '';\n\t\t}\n\t} else if (\n\t\t[\n\t\t\t'url',\n\t\t\t'created_time',\n\t\t\t'checkbox',\n\t\t\t'number',\n\t\t\t'last_edited_time',\n\t\t\t'email',\n\t\t\t'phone_number',\n\t\t\t'date',\n\t\t].includes(property.type as string)\n\t) {\n\t\tresult = property[type];\n\t} else if (['created_by', 'last_edited_by', 'select'].includes(property.type as string)) {\n\t\tresult = property[type] ? property[type]?.name : null;\n\t} else if (['people'].includes(property.type as string)) {\n\t\tif (Array.isArray(property[type])) {\n\t\t\tresult = property[type].map((person: any) => person.person?.email || {});\n\t\t} else {\n\t\t\tresult = property[type];\n\t\t}\n\t} else if (['multi_select'].includes(property.type as string)) {\n\t\tif (Array.isArray(property[type])) {\n\t\t\tresult = property[type].map((e: IDataObject) => e?.name || {});\n\t\t} else {\n\t\t\tresult = property[type].options.map((e: IDataObject) => e?.name || {});\n\t\t}\n\t} else if (['relation'].includes(property.type as string)) {\n\t\tif (Array.isArray(property[type])) {\n\t\t\tresult = property[type].map((e: IDataObject) => e?.id || {});\n\t\t} else {\n\t\t\tresult = property[type]?.database_id;\n\t\t}\n\t} else if (['formula'].includes(property.type as string)) {\n\t\tresult = property[type]?.[property[type]?.type];\n\t} else if (['rollup'].includes(property.type as string)) {\n\t\tconst rollupFunction = property[type]?.function as string;\n\t\tif (rollupFunction.startsWith('count') || rollupFunction.includes('empty')) {\n\t\t\tresult = property[type]?.number;\n\t\t\tif (rollupFunction.includes('percent')) {\n\t\t\t\tresult = result * 100;\n\t\t\t}\n\t\t} else if (rollupFunction.startsWith('show') && property[type]?.type === 'array') {\n\t\t\tconst elements = property[type].array.map(simplifyProperty).flat();\n\t\t\tresult = rollupFunction === 'show_unique' ? [...new Set(elements as string)] : elements;\n\t\t}\n\t} else if (['files'].includes(property.type as string)) {\n\t\tresult = property[type].map(\n\t\t\t(file: { type: string; [key: string]: any }) => file[file.type]?.url,\n\t\t);\n\t} else if (['status'].includes(property.type as string)) {\n\t\tresult = property[type]?.name;\n\t}\n\treturn result;\n}\n\nexport function simplifyProperties(properties: any) {\n\tconst results: any = {};\n\tfor (const key of Object.keys(properties as IDataObject)) {\n\t\tresults[`${key}`] = simplifyProperty(properties[key]);\n\t}\n\treturn results;\n}\n\nexport function getPropertyTitle(properties: { [key: string]: any }) {\n\treturn (\n\t\tObject.values(properties).filter((property) => property.type === 'title')[0].title[0]\n\t\t\t?.plain_text || ''\n\t);\n}\n\nfunction prepend(stringKey: string, properties: { [key: string]: any }) {\n\tfor (const key of Object.keys(properties)) {\n\t\tproperties[`${stringKey}_${snakeCase(key)}`] = properties[key];\n\t\tdelete properties[key];\n\t}\n\treturn properties;\n}\n\nexport function simplifyObjects(objects: any, download = false, version = 2) {\n\tif (!Array.isArray(objects)) {\n\t\tobjects = [objects];\n\t}\n\tconst results: IDataObject[] = [];\n\tfor (const { object, id, properties, parent, title, json, binary, url } of objects) {\n\t\tif (object === 'page' && (parent.type === 'page_id' || parent.type === 'workspace')) {\n\t\t\tresults.push({\n\t\t\t\tid,\n\t\t\t\tname: properties.title.title[0].plain_text,\n\t\t\t\t...(version === 2 ? { url } : {}),\n\t\t\t});\n\t\t} else if (object === 'page' && parent.type === 'database_id') {\n\t\t\tresults.push({\n\t\t\t\tid,\n\t\t\t\t...(version === 2 ? { name: getPropertyTitle(properties as IDataObject) } : {}),\n\t\t\t\t...(version === 2 ? { url } : {}),\n\t\t\t\t...(version === 2\n\t\t\t\t\t? { ...prepend('property', simplifyProperties(properties) as IDataObject) }\n\t\t\t\t\t: { ...simplifyProperties(properties) }),\n\t\t\t} as IDataObject);\n\t\t} else if (download && json.object === 'page' && json.parent.type === 'database_id') {\n\t\t\tresults.push({\n\t\t\t\tjson: {\n\t\t\t\t\tid: json.id,\n\t\t\t\t\t...(version === 2 ? { name: getPropertyTitle(json.properties as IDataObject) } : {}),\n\t\t\t\t\t...(version === 2 ? { url: json.url } : {}),\n\t\t\t\t\t...(version === 2\n\t\t\t\t\t\t? { ...prepend('property', simplifyProperties(json.properties) as IDataObject) }\n\t\t\t\t\t\t: { ...simplifyProperties(json.properties) }),\n\t\t\t\t},\n\t\t\t\tbinary,\n\t\t\t});\n\t\t} else if (object === 'database') {\n\t\t\tresults.push({\n\t\t\t\tid,\n\t\t\t\t...(version === 2\n\t\t\t\t\t? { name: title[0]?.plain_text || '' }\n\t\t\t\t\t: { title: title[0]?.plain_text || '' }),\n\t\t\t\t...(version === 2 ? { url } : {}),\n\t\t\t});\n\t\t}\n\t}\n\treturn results;\n}\n\nexport function getFormattedChildren(children: IDataObject[]) {\n\tconst results: IDataObject[] = [];\n\tfor (const child of children) {\n\t\tconst type = child.type;\n\t\tresults.push({ [`${type}`]: child, object: 'block', type });\n\t}\n\treturn results;\n}\n\nexport function getConditions() {\n\tconst elements: INodeProperties[] = [];\n\n\tconst types: { [key: string]: string } = {\n\t\ttitle: 'rich_text',\n\t\trich_text: 'rich_text',\n\t\tnumber: 'number',\n\t\tcheckbox: 'checkbox',\n\t\tselect: 'select',\n\t\tmulti_select: 'multi_select',\n\t\tstatus: 'status',\n\t\tdate: 'date',\n\t\tpeople: 'people',\n\t\tfiles: 'files',\n\t\turl: 'rich_text',\n\t\temail: 'rich_text',\n\t\tphone_number: 'rich_text',\n\t\trelation: 'relation',\n\t\t//formula: 'formula',\n\t\tcreated_by: 'people',\n\t\tcreated_time: 'date',\n\t\tlast_edited_by: 'people',\n\t\tlast_edited_time: 'date',\n\t};\n\n\tconst typeConditions: { [key: string]: string[] } = {\n\t\trich_text: [\n\t\t\t'equals',\n\t\t\t'does_not_equal',\n\t\t\t'contains',\n\t\t\t'does_not_contain',\n\t\t\t'starts_with',\n\t\t\t'ends_with',\n\t\t\t'is_empty',\n\t\t\t'is_not_empty',\n\t\t],\n\t\tnumber: [\n\t\t\t'equals',\n\t\t\t'does_not_equal',\n\t\t\t'grater_than',\n\t\t\t'less_than',\n\t\t\t'greater_than_or_equal_to',\n\t\t\t'less_than_or_equal_to',\n\t\t\t'is_empty',\n\t\t\t'is_not_empty',\n\t\t],\n\t\tcheckbox: ['equals', 'does_not_equal'],\n\t\tselect: ['equals', 'does_not_equal', 'is_empty', 'is_not_empty'],\n\t\tmulti_select: ['contains', 'does_not_equal', 'is_empty', 'is_not_empty'],\n\t\tstatus: ['equals', 'does_not_equal'],\n\t\tdate: [\n\t\t\t'equals',\n\t\t\t'before',\n\t\t\t'after',\n\t\t\t'on_or_before',\n\t\t\t'is_empty',\n\t\t\t'is_not_empty',\n\t\t\t'on_or_after',\n\t\t\t'past_week',\n\t\t\t'past_month',\n\t\t\t'past_year',\n\t\t\t'next_week',\n\t\t\t'next_month',\n\t\t\t'next_year',\n\t\t],\n\t\tpeople: ['contains', 'does_not_contain', 'is_empty', 'is_not_empty'],\n\t\tfiles: ['is_empty', 'is_not_empty'],\n\t\trelation: ['contains', 'does_not_contain', 'is_empty', 'is_not_empty'],\n\t};\n\n\tconst formula: { [key: string]: string[] } = {\n\t\ttext: [...typeConditions.rich_text],\n\t\tcheckbox: [...typeConditions.checkbox],\n\t\tnumber: [...typeConditions.number],\n\t\tdate: [...typeConditions.date],\n\t};\n\n\tfor (const type of Object.keys(types)) {\n\t\telements.push({\n\t\t\tdisplayName: 'Condition',\n\t\t\tname: 'condition',\n\t\t\ttype: 'options',\n\t\t\tdisplayOptions: {\n\t\t\t\tshow: {\n\t\t\t\t\ttype: [type],\n\t\t\t\t},\n\t\t\t} as IDisplayOptions,\n\t\t\toptions: typeConditions[types[type]].map((entry: string) => ({\n\t\t\t\tname: capitalCase(entry),\n\t\t\t\tvalue: entry,\n\t\t\t})),\n\t\t\tdefault: '',\n\t\t\tdescription: 'The value of the property to filter by',\n\t\t} as INodeProperties);\n\t}\n\n\telements.push({\n\t\tdisplayName: 'Return Type',\n\t\tname: 'returnType',\n\t\ttype: 'options',\n\t\tdisplayOptions: {\n\t\t\tshow: {\n\t\t\t\ttype: ['formula'],\n\t\t\t},\n\t\t} as IDisplayOptions,\n\t\toptions: Object.keys(formula).map((key: string) => ({ name: capitalCase(key), value: key })),\n\t\tdefault: '',\n\t\tdescription: 'The formula return type',\n\t} as INodeProperties);\n\n\tfor (const key of Object.keys(formula)) {\n\t\telements.push({\n\t\t\tdisplayName: 'Condition',\n\t\t\tname: 'condition',\n\t\t\ttype: 'options',\n\t\t\tdisplayOptions: {\n\t\t\t\tshow: {\n\t\t\t\t\ttype: ['formula'],\n\t\t\t\t\treturnType: [key],\n\t\t\t\t},\n\t\t\t} as IDisplayOptions,\n\t\t\toptions: formula[key].map((entry: string) => ({ name: capitalCase(entry), value: entry })),\n\t\t\tdefault: '',\n\t\t\tdescription: 'The value of the property to filter by',\n\t\t} as INodeProperties);\n\t}\n\n\treturn elements;\n}\n\nexport type FileRecord = {\n\tproperties: {\n\t\t[key: string]:\n\t\t\t| any\n\t\t\t| {\n\t\t\t\t\tid: string;\n\t\t\t\t\ttype: string;\n\t\t\t\t\tfiles: [{ external: { url: string } } | { file: { url: string } }];\n\t\t\t };\n\t};\n};\n\nexport async function downloadFiles(\n\tthis: IExecuteFunctions | IPollFunctions,\n\trecords: FileRecord[],\n\tpairedItem?: IPairedItemData[],\n): Promise<INodeExecutionData[]> {\n\tconst elements: INodeExecutionData[] = [];\n\tfor (const record of records) {\n\t\tconst element: INodeExecutionData = { json: {}, binary: {} };\n\t\telement.json = record as unknown as IDataObject;\n\t\tif (pairedItem) {\n\t\t\telement.pairedItems = pairedItem;\n\t\t}\n\t\tfor (const key of Object.keys(record.properties)) {\n\t\t\tif (record.properties[key].type === 'files') {\n\t\t\t\tif (record.properties[key].files.length) {\n\t\t\t\t\tfor (const [index, file] of record.properties[key].files.entries()) {\n\t\t\t\t\t\tconst data = await notionApiRequest.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'',\n\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\t(file?.file?.url as string) || (file?.external?.url as string),\n\t\t\t\t\t\t\t{ json: false, encoding: null },\n\t\t\t\t\t\t);\n\t\t\t\t\t\telement.binary![`${key}_${index}`] = await this.helpers.prepareBinaryData(\n\t\t\t\t\t\t\tdata as Buffer,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (Object.keys(element.binary as IBinaryKeyData).length === 0) {\n\t\t\tdelete element.binary;\n\t\t}\n\t\telements.push(element);\n\t}\n\treturn elements;\n}\n\nexport function extractPageId(page = '') {\n\tif (page.includes('p=')) {\n\t\treturn page.split('p=')[1];\n\t} else if (page.includes('-') && page.includes('https')) {\n\t\treturn page.split('-')[page.split('-').length - 1];\n\t}\n\treturn page;\n}\n\nexport function getPageId(this: IExecuteFunctions, i: number) {\n\tconst page = this.getNodeParameter('pageId', i, {}) as INodeParameterResourceLocator;\n\tlet pageId = '';\n\n\tif (page.value && typeof page.value === 'string') {\n\t\tif (page.mode === 'id') {\n\t\t\tpageId = page.value;\n\t\t} else if (page.value.includes('p=')) {\n\t\t\t// e.g https://www.notion.so/xxxxx?v=xxxxx&p=xxxxx&pm=s\n\t\t\tpageId = new URLSearchParams(page.value).get('p') || '';\n\t\t} else {\n\t\t\t// e.g https://www.notion.so/page_name-xxxxx\n\t\t\tpageId = page.value.match(databasePageUrlValidationRegexp)?.[1] || '';\n\t\t}\n\t}\n\n\tif (!pageId) {\n\t\tthrow new NodeOperationError(\n\t\t\tthis.getNode(),\n\t\t\t'Could not extract page ID from URL: ' + page.value,\n\t\t);\n\t}\n\n\treturn pageId;\n}\n\nexport function extractDatabaseId(database: string) {\n\tif (database.includes('?v=')) {\n\t\tconst data = database.split('?v=')[0].split('/');\n\t\tconst index = data.length - 1;\n\t\treturn data[index];\n\t} else if (database.includes('/')) {\n\t\tconst index = database.split('/').length - 1;\n\t\treturn database.split('/')[index];\n\t} else {\n\t\treturn database;\n\t}\n}\n\nexport function getSearchFilters(resource: string) {\n\treturn [\n\t\t{\n\t\t\tdisplayName: 'Filter',\n\t\t\tname: 'filterType',\n\t\t\ttype: 'options',\n\t\t\toptions: [\n\t\t\t\t{\n\t\t\t\t\tname: 'None',\n\t\t\t\t\tvalue: 'none',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: 'Build Manually',\n\t\t\t\t\tvalue: 'manual',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: 'JSON',\n\t\t\t\t\tvalue: 'json',\n\t\t\t\t},\n\t\t\t],\n\t\t\tdisplayOptions: {\n\t\t\t\tshow: {\n\t\t\t\t\tresource: [resource],\n\t\t\t\t\toperation: ['getAll'],\n\t\t\t\t},\n\t\t\t\thide: {\n\t\t\t\t\t'@version': [1],\n\t\t\t\t},\n\t\t\t},\n\t\t\tdefault: 'none',\n\t\t},\n\t\t{\n\t\t\tdisplayName: 'Must Match',\n\t\t\tname: 'matchType',\n\t\t\ttype: 'options',\n\t\t\toptions: [\n\t\t\t\t{\n\t\t\t\t\tname: 'Any filter',\n\t\t\t\t\tvalue: 'anyFilter',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: 'All Filters',\n\t\t\t\t\tvalue: 'allFilters',\n\t\t\t\t},\n\t\t\t],\n\t\t\tdisplayOptions: {\n\t\t\t\tshow: {\n\t\t\t\t\tresource: [resource],\n\t\t\t\t\toperation: ['getAll'],\n\t\t\t\t\tfilterType: ['manual'],\n\t\t\t\t},\n\t\t\t\thide: {\n\t\t\t\t\t'@version': [1],\n\t\t\t\t},\n\t\t\t},\n\t\t\tdefault: 'anyFilter',\n\t\t},\n\t\t{\n\t\t\tdisplayName: 'Filters',\n\t\t\tname: 'filters',\n\t\t\ttype: 'fixedCollection',\n\t\t\ttypeOptions: {\n\t\t\t\tmultipleValues: true,\n\t\t\t},\n\t\t\tdisplayOptions: {\n\t\t\t\tshow: {\n\t\t\t\t\tresource: [resource],\n\t\t\t\t\toperation: ['getAll'],\n\t\t\t\t\tfilterType: ['manual'],\n\t\t\t\t},\n\t\t\t\thide: {\n\t\t\t\t\t'@version': [1],\n\t\t\t\t},\n\t\t\t},\n\t\t\tdefault: {},\n\t\t\tplaceholder: 'Add Condition',\n\t\t\toptions: [\n\t\t\t\t{\n\t\t\t\t\tdisplayName: 'Conditions',\n\t\t\t\t\tname: 'conditions',\n\t\t\t\t\tvalues: [...filters(getConditions())],\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tdisplayName:\n\t\t\t\t'See <a href=\"https://developers.notion.com/reference/post-database-query#post-database-query-filter\" target=\"_blank\">Notion guide</a> to creating filters',\n\t\t\tname: 'jsonNotice',\n\t\t\ttype: 'notice',\n\t\t\tdisplayOptions: {\n\t\t\t\tshow: {\n\t\t\t\t\tresource: [resource],\n\t\t\t\t\toperation: ['getAll'],\n\t\t\t\t\tfilterType: ['json'],\n\t\t\t\t},\n\t\t\t\thide: {\n\t\t\t\t\t'@version': [1],\n\t\t\t\t},\n\t\t\t},\n\t\t\tdefault: '',\n\t\t},\n\t\t{\n\t\t\tdisplayName: 'Filters (JSON)',\n\t\t\tname: 'filterJson',\n\t\t\ttype: 'string',\n\t\t\tdisplayOptions: {\n\t\t\t\tshow: {\n\t\t\t\t\tresource: [resource],\n\t\t\t\t\toperation: ['getAll'],\n\t\t\t\t\tfilterType: ['json'],\n\t\t\t\t},\n\t\t\t\thide: {\n\t\t\t\t\t'@version': [1],\n\t\t\t\t},\n\t\t\t},\n\t\t\tdefault: '',\n\t\t},\n\t];\n}\n\nexport function validateJSON(json: string | undefined): any {\n\tlet result;\n\ttry {\n\t\tresult = JSON.parse(json!);\n\t} catch (exception) {\n\t\tresult = undefined;\n\t}\n\treturn result;\n}\n\n/**\n * Manually extract a richtext's database mention RLC parameter.\n * @param blockValues the blockUi.blockValues node parameter.\n */\nexport function extractDatabaseMentionRLC(blockValues: IDataObject[]) {\n\tblockValues.forEach((bv) => {\n\t\tif (bv.richText && bv.text) {\n\t\t\tconst texts = (\n\t\t\t\tbv.text as {\n\t\t\t\t\ttext: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttextType: string;\n\t\t\t\t\t\t\tmentionType: string;\n\t\t\t\t\t\t\tdatabase: string | { value: string; mode: string; __rl: boolean; __regex: string };\n\t\t\t\t\t\t},\n\t\t\t\t\t];\n\t\t\t\t}\n\t\t\t).text;\n\t\t\ttexts.forEach((txt) => {\n\t\t\t\tif (txt.textType === 'mention' && txt.mentionType === 'database') {\n\t\t\t\t\tif (typeof txt.database === 'object' && txt.database.__rl) {\n\t\t\t\t\t\tif (txt.database.__regex) {\n\t\t\t\t\t\t\tconst regex = new RegExp(txt.database.__regex);\n\t\t\t\t\t\t\tconst extracted = regex.exec(txt.database.value);\n\t\t\t\t\t\t\ttxt.database = extracted![1];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ttxt.database = txt.database.value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n}\n\nexport function simplifyBlocksOutput(blocks: IDataObject[], rootId: string) {\n\tfor (const block of blocks) {\n\t\tconst type = block.type as string;\n\t\tblock.root_id = rootId;\n\n\t\t['created_time', 'last_edited_time', 'created_by'].forEach((key) => {\n\t\t\tdelete block[key];\n\t\t});\n\n\t\ttry {\n\t\t\tif (['code'].includes(type)) {\n\t\t\t\tconst text = (block[type] as IDataObject).text as IDataObject[];\n\t\t\t\tif (text && Array.isArray(text)) {\n\t\t\t\t\tconst content = text.map((entry) => entry.plain_text || '').join('');\n\t\t\t\t\tblock.content = content;\n\t\t\t\t\tdelete block[type];\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (['child_page', 'child_database'].includes(type)) {\n\t\t\t\tconst content = (block[type] as IDataObject).title as string;\n\t\t\t\tblock.content = content;\n\t\t\t\tdelete block[type];\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst text = (block[type] as IDataObject)?.text as IDataObject[];\n\n\t\t\tif (text && Array.isArray(text)) {\n\t\t\t\tconst content = text.map((entry) => entry.plain_text || '').join('');\n\t\t\t\tblock.content = content;\n\t\t\t\tdelete block[type];\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tcontinue;\n\t\t}\n\t}\n\n\treturn blocks;\n}\n\nexport function extractBlockId(this: IExecuteFunctions, nodeVersion: number, itemIndex: number) {\n\tlet blockId: string;\n\n\tif (nodeVersion < 2.2) {\n\t\tblockId = extractPageId(\n\t\t\tthis.getNodeParameter('blockId', itemIndex, '', { extractValue: true }) as string,\n\t\t);\n\t} else {\n\t\tconst blockIdRLCData = this.getNodeParameter('blockId', itemIndex, {}) as IDataObject;\n\n\t\tif (blockIdRLCData.mode === 'id') {\n\t\t\tblockId = blockIdRLCData.value as string;\n\t\t} else {\n\t\t\tconst blockRegex = /https:\\/\\/www\\.notion\\.so\\/.+\\?pvs=[0-9]+#([a-f0-9]{2,})/;\n\t\t\tconst match = (blockIdRLCData.value as string).match(blockRegex);\n\n\t\t\tif (match === null) {\n\t\t\t\tconst pageRegex = new RegExp(blockUrlExtractionRegexp);\n\t\t\t\tconst pageMatch = (blockIdRLCData.value as string).match(pageRegex);\n\n\t\t\t\tif (pageMatch === null) {\n\t\t\t\t\tthrow new NodeOperationError(\n\t\t\t\t\t\tthis.getNode(),\n\t\t\t\t\t\t'Invalid URL, could not find block ID or page ID',\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\titemIndex,\n\t\t\t\t\t\t},\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tblockId = extractPageId(pageMatch[1]);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tblockId = match[1];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn blockId;\n}\n\nexport const prepareNotionError = (node: INode, error: Error, itemIndex: number) => {\n\tif (error instanceof NodeApiError) {\n\t\tset(error, 'context.itemIndex', itemIndex);\n\t\treturn error;\n\t}\n\n\tif (error instanceof NodeOperationError && error?.context?.itemIndex === undefined) {\n\t\tset(error, 'context.itemIndex', itemIndex);\n\t\treturn error;\n\t}\n\n\treturn new NodeOperationError(node, error, { itemIndex });\n};\n"],"mappings":"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","names":["uuidValidate","moment","text","set"]}
|
|
1
|
+
{"version":3,"sources":["../../../../nodes/Notion/shared/GenericFunctions.ts"],"sourcesContent":["import { camelCase, capitalCase, snakeCase } from 'change-case';\nimport set from 'lodash/set';\nimport moment from 'moment-timezone';\nimport type {\n\tIBinaryKeyData,\n\tIDataObject,\n\tIDisplayOptions,\n\tIExecuteFunctions,\n\tIHookFunctions,\n\tIHttpRequestMethods,\n\tILoadOptionsFunctions,\n\tINode,\n\tINodeExecutionData,\n\tINodeParameterResourceLocator,\n\tINodeProperties,\n\tIPairedItemData,\n\tIPollFunctions,\n\tIRequestOptions,\n\tJsonObject,\n} from 'n8n-workflow';\nimport { NodeApiError, NodeOperationError } from 'n8n-workflow';\nimport { validate as uuidValidate } from 'uuid';\n\nimport { blockUrlExtractionRegexp, databasePageUrlValidationRegexp } from './constants';\nimport { filters } from './descriptions/Filters';\n\nfunction uuidValidateWithoutDashes(this: IExecuteFunctions, value: string) {\n\tif (uuidValidate(value)) return true;\n\tif (value.length == 32) {\n\t\tconst strWithDashes = `${value.slice(0, 8)}-${value.slice(8, 12)}-${value.slice(12, 16)}-${value.slice(16, 20)}-${value.slice(20)}`;\n\t\tif (uuidValidate(strWithDashes)) return true;\n\t}\n\tthrow new NodeOperationError(\n\t\tthis.getNode(),\n\t\t`The relation id \"${value}\" is not a valid uuid with optional dashes.`,\n\t);\n}\n\nexport type SortData = { key: string; type: string; direction: string; timestamp: boolean };\n\nconst apiVersion: { [key: number]: string } = {\n\t1: '2021-05-13',\n\t2: '2021-08-16',\n\t2.1: '2021-08-16',\n\t2.2: '2021-08-16',\n};\n\nexport async function notionApiRequest(\n\tthis: IHookFunctions | IExecuteFunctions | ILoadOptionsFunctions | IPollFunctions,\n\tmethod: IHttpRequestMethods,\n\tresource: string,\n\n\tbody: any = {},\n\tqs: IDataObject = {},\n\turi?: string,\n\toption: IDataObject = {},\n): Promise<any> {\n\ttry {\n\t\tlet options: IRequestOptions = {\n\t\t\theaders: {\n\t\t\t\t'Notion-Version': apiVersion[this.getNode().typeVersion],\n\t\t\t},\n\t\t\tmethod,\n\t\t\tqs,\n\t\t\tbody,\n\t\t\turi: uri || `https://api.notion.com/v1${resource}`,\n\t\t\tjson: true,\n\t\t};\n\t\toptions = Object.assign({}, options, option);\n\t\tif (Object.keys(body as IDataObject).length === 0) {\n\t\t\tdelete options.body;\n\t\t}\n\t\tif (!uri) {\n\t\t\treturn await this.helpers.requestWithAuthentication.call(this, 'notionApi', options);\n\t\t}\n\t\treturn await this.helpers.request(options);\n\t} catch (error) {\n\t\tthrow new NodeApiError(this.getNode(), error as JsonObject);\n\t}\n}\n\nexport async function notionApiRequestAllItems(\n\tthis: IExecuteFunctions | ILoadOptionsFunctions | IPollFunctions,\n\tpropertyName: string,\n\tmethod: IHttpRequestMethods,\n\tendpoint: string,\n\tbody: any = {},\n\tquery: IDataObject = {},\n): Promise<any> {\n\tconst resource = this.getNodeParameter('resource', 0);\n\n\tconst returnData: IDataObject[] = [];\n\n\tlet responseData;\n\n\tdo {\n\t\tresponseData = await notionApiRequest.call(this, method, endpoint, body, query);\n\t\tconst { next_cursor } = responseData;\n\t\tif (resource === 'block' || resource === 'user') {\n\t\t\tquery.start_cursor = next_cursor;\n\t\t} else {\n\t\t\tbody.start_cursor = next_cursor;\n\t\t}\n\t\treturnData.push.apply(returnData, responseData[propertyName] as IDataObject[]);\n\t\tconst limit = query.limit as number | undefined;\n\t\tif (limit && limit <= returnData.length) {\n\t\t\treturn returnData;\n\t\t}\n\t} while (responseData.has_more !== false);\n\n\treturn returnData;\n}\n\nexport async function notionApiRequestGetBlockChildrens(\n\tthis: IExecuteFunctions | ILoadOptionsFunctions | IPollFunctions,\n\tblocks: IDataObject[],\n\tresponseData: IDataObject[] = [],\n\tlimit?: number,\n) {\n\tif (blocks.length === 0) return responseData;\n\n\tfor (const block of blocks) {\n\t\tresponseData.push(block);\n\n\t\tif (block.type === 'child_page') continue;\n\n\t\tif (block.has_children) {\n\t\t\tlet childrens = await notionApiRequestAllItems.call(\n\t\t\t\tthis,\n\t\t\t\t'results',\n\t\t\t\t'GET',\n\t\t\t\t`/blocks/${block.id}/children`,\n\t\t\t);\n\n\t\t\tchildrens = (childrens || []).map((entry: IDataObject) => ({\n\t\t\t\tobject: entry.object,\n\t\t\t\tparent_id: block.id,\n\t\t\t\t...entry,\n\t\t\t}));\n\n\t\t\tawait notionApiRequestGetBlockChildrens.call(this, childrens, responseData);\n\t\t}\n\n\t\tif (limit && responseData.length === limit) {\n\t\t\treturn responseData;\n\t\t}\n\n\t\tif (limit && responseData.length > limit) {\n\t\t\treturn responseData.slice(0, limit);\n\t\t}\n\t}\n\n\treturn responseData;\n}\n\nexport function getBlockTypesOptions() {\n\treturn [\n\t\t{\n\t\t\tname: 'Paragraph',\n\t\t\tvalue: 'paragraph',\n\t\t},\n\t\t{\n\t\t\tname: 'Heading 1',\n\t\t\tvalue: 'heading_1',\n\t\t},\n\t\t{\n\t\t\tname: 'Heading 2',\n\t\t\tvalue: 'heading_2',\n\t\t},\n\t\t{\n\t\t\tname: 'Heading 3',\n\t\t\tvalue: 'heading_3',\n\t\t},\n\t\t{\n\t\t\tname: 'Toggle',\n\t\t\tvalue: 'toggle',\n\t\t},\n\t\t{\n\t\t\tname: 'To-Do',\n\t\t\tvalue: 'to_do',\n\t\t},\n\t\t// {\n\t\t// \tname: 'Child Page',\n\t\t// \tvalue: 'child_page',\n\t\t// },\n\t\t{\n\t\t\tname: 'Bulleted List Item',\n\t\t\tvalue: 'bulleted_list_item',\n\t\t},\n\t\t{\n\t\t\tname: 'Numbered List Item',\n\t\t\tvalue: 'numbered_list_item',\n\t\t},\n\t\t{\n\t\t\tname: 'Image',\n\t\t\tvalue: 'image',\n\t\t},\n\t];\n}\n\nfunction textContent(content: string) {\n\treturn {\n\t\ttext: {\n\t\t\tcontent,\n\t\t},\n\t};\n}\n\nexport function formatTitle(content: string) {\n\treturn {\n\t\ttitle: [textContent(content)],\n\t};\n}\n\nexport function formatText(content: string) {\n\treturn {\n\t\ttext: [textContent(content)],\n\t};\n}\n\nfunction getLink(text: { textLink: string; isLink: boolean }) {\n\tif (text.isLink && text.textLink !== '') {\n\t\treturn {\n\t\t\tlink: {\n\t\t\t\turl: text.textLink,\n\t\t\t},\n\t\t};\n\t}\n\treturn {};\n}\n\ntype TextData = {\n\ttextType: string;\n\ttext: string;\n\tisLink: boolean;\n\trange: boolean;\n\ttextLink: string;\n\tmentionType: string;\n\tdateStart: string;\n\tdateEnd: string;\n\tdate: string;\n\tannotationUi: IDataObject;\n\texpression: string;\n};\nfunction getTexts(texts: TextData[]) {\n\tconst results = [];\n\tfor (const text of texts) {\n\t\tif (text.textType === 'text') {\n\t\t\tresults.push({\n\t\t\t\ttype: 'text',\n\t\t\t\ttext: {\n\t\t\t\t\tcontent: text.text,\n\t\t\t\t\t...getLink(text),\n\t\t\t\t},\n\t\t\t\tannotations: text.annotationUi,\n\t\t\t});\n\t\t} else if (text.textType === 'mention') {\n\t\t\tif (text.mentionType === 'date') {\n\t\t\t\tresults.push({\n\t\t\t\t\ttype: 'mention',\n\t\t\t\t\tmention: {\n\t\t\t\t\t\ttype: text.mentionType,\n\t\t\t\t\t\t[text.mentionType]: text.range\n\t\t\t\t\t\t\t? { start: text.dateStart, end: text.dateEnd }\n\t\t\t\t\t\t\t: { start: text.date, end: null },\n\t\t\t\t\t},\n\t\t\t\t\tannotations: text.annotationUi,\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tresults.push({\n\t\t\t\t\ttype: 'mention',\n\t\t\t\t\tmention: {\n\t\t\t\t\t\ttype: text.mentionType,\n\t\t\t\t\t\t//@ts-expect-error any\n\t\t\t\t\t\t[text.mentionType]: { id: text[text.mentionType] as string },\n\t\t\t\t\t},\n\t\t\t\t\tannotations: text.annotationUi,\n\t\t\t\t});\n\t\t\t}\n\t\t} else if (text.textType === 'equation') {\n\t\t\tresults.push({\n\t\t\t\ttype: 'equation',\n\t\t\t\tequation: {\n\t\t\t\t\texpression: text.expression,\n\t\t\t\t},\n\t\t\t\tannotations: text.annotationUi,\n\t\t\t});\n\t\t}\n\t}\n\treturn results;\n}\n\nfunction getTextBlocks(block: IDataObject) {\n\treturn {\n\t\ttext:\n\t\t\tblock.richText === false\n\t\t\t\t? formatText(block.textContent as string).text\n\t\t\t\t: getTexts(((block.text as IDataObject).text as TextData[]) || []),\n\t};\n}\n\nexport function formatBlocks(blocks: IDataObject[]) {\n\tconst results = [];\n\tfor (const block of blocks) {\n\t\tresults.push({\n\t\t\tobject: 'block',\n\t\t\ttype: block.type,\n\t\t\t[block.type as string]: {\n\t\t\t\t...(block.type === 'to_do' ? { checked: block.checked } : {}),\n\t\t\t\t...(block.type === 'image' ? { type: 'external', external: { url: block.url } } : {}),\n\t\t\t\t...(!['image'].includes(block.type as string) ? getTextBlocks(block) : {}),\n\t\t\t},\n\t\t});\n\t}\n\treturn results;\n}\n\nfunction getDateFormat(includeTime: boolean) {\n\tif (!includeTime) {\n\t\treturn 'yyyy-MM-DD';\n\t}\n\treturn '';\n}\n\nfunction isEmpty(value: unknown): boolean {\n\treturn value === undefined || value === null || value === '';\n}\n\nfunction getPropertyKeyValue(\n\tthis: IExecuteFunctions,\n\tvalue: any,\n\ttype: string,\n\ttimezone: string,\n\tversion = 1,\n) {\n\tconst ignoreIfEmpty = <T>(v: T, cb: (v: T) => any) =>\n\t\t!v && value.ignoreIfEmpty ? undefined : cb(v);\n\tlet result: IDataObject = {};\n\n\tswitch (type) {\n\t\tcase 'rich_text':\n\t\t\tif (value.richText === false) {\n\t\t\t\tresult = { rich_text: [{ text: { content: value.textContent } }] };\n\t\t\t} else {\n\t\t\t\tresult = { rich_text: getTexts(value.text.text as TextData[]) };\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'title':\n\t\t\tresult = { title: [{ text: { content: value.title } }] };\n\t\t\tbreak;\n\t\tcase 'number':\n\t\t\tresult = { type: 'number', number: value.numberValue };\n\t\t\tbreak;\n\t\tcase 'url':\n\t\t\tresult = ignoreIfEmpty(value.urlValue, (url) => ({ type: 'url', url }));\n\t\t\tbreak;\n\t\tcase 'checkbox':\n\t\t\tresult = { type: 'checkbox', checkbox: value.checkboxValue };\n\t\t\tbreak;\n\t\tcase 'relation':\n\t\t\tresult = {\n\t\t\t\ttype: 'relation',\n\t\t\t\trelation: value.relationValue\n\t\t\t\t\t.filter((relation: IDataObject) => {\n\t\t\t\t\t\treturn relation && typeof relation === 'string';\n\t\t\t\t\t})\n\t\t\t\t\t.reduce((acc: string[], cur: string) => {\n\t\t\t\t\t\treturn acc.concat(cur.split(',').map((relation: string) => relation.trim()));\n\t\t\t\t\t}, [])\n\t\t\t\t\t.filter((relation: string) => {\n\t\t\t\t\t\treturn uuidValidateWithoutDashes.call(this, relation);\n\t\t\t\t\t})\n\t\t\t\t\t.map((relation: string) => ({ id: relation })),\n\t\t\t};\n\t\t\tbreak;\n\t\tcase 'multi_select':\n\t\t\tif (isEmpty(value.multiSelectValue)) {\n\t\t\t\tresult = {\n\t\t\t\t\ttype: 'multi_select',\n\t\t\t\t\tmulti_select: [],\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tconst multiSelectValue = value.multiSelectValue;\n\n\t\t\tresult = {\n\t\t\t\ttype: 'multi_select',\n\t\t\t\tmulti_select: (Array.isArray(multiSelectValue)\n\t\t\t\t\t? multiSelectValue\n\t\t\t\t\t: multiSelectValue.split(',').map((v: string) => v.trim())\n\t\t\t\t)\n\t\t\t\t\t.filter((entry: any) => entry !== null)\n\t\t\t\t\t.map((option: string) => (!uuidValidate(option) ? { name: option } : { id: option })),\n\t\t\t};\n\t\t\tbreak;\n\t\tcase 'email':\n\t\t\tresult = {\n\t\t\t\ttype: 'email',\n\t\t\t\temail: value.emailValue,\n\t\t\t};\n\t\t\tbreak;\n\t\tcase 'people':\n\t\t\t//if expression it's a single value, make it an array\n\t\t\tif (!Array.isArray(value.peopleValue)) {\n\t\t\t\tvalue.peopleValue = [value.peopleValue];\n\t\t\t}\n\n\t\t\tresult = {\n\t\t\t\ttype: 'people',\n\t\t\t\tpeople: value.peopleValue.map((option: string) => ({ id: option })),\n\t\t\t};\n\t\t\tbreak;\n\t\tcase 'phone_number':\n\t\t\tresult = {\n\t\t\t\ttype: 'phone_number',\n\t\t\t\tphone_number: value.phoneValue,\n\t\t\t};\n\t\t\tbreak;\n\t\tcase 'select':\n\t\t\tif (isEmpty(value.selectValue)) {\n\t\t\t\tresult = {\n\t\t\t\t\ttype: 'select',\n\t\t\t\t\tselect: null,\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tresult = {\n\t\t\t\ttype: 'select',\n\t\t\t\tselect: version === 1 ? { id: value.selectValue } : { name: value.selectValue },\n\t\t\t};\n\t\t\tbreak;\n\t\tcase 'status':\n\t\t\tresult = {\n\t\t\t\ttype: 'status',\n\t\t\t\tstatus: { name: value.statusValue },\n\t\t\t};\n\t\t\tbreak;\n\t\tcase 'date':\n\t\t\tconst format = getDateFormat(value.includeTime as boolean);\n\t\t\tconst timezoneValue = value.timezone === 'default' ? timezone : value.timezone;\n\t\t\tif (value.range === true) {\n\t\t\t\tresult = {\n\t\t\t\t\ttype: 'date',\n\t\t\t\t\tdate: {\n\t\t\t\t\t\tstart: moment.tz(value.dateStart as number, timezoneValue as string).format(format),\n\t\t\t\t\t\tend: moment.tz(value.dateEnd as number, timezoneValue as string).format(format),\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\tresult = {\n\t\t\t\t\ttype: 'date',\n\t\t\t\t\tdate: {\n\t\t\t\t\t\tstart: moment.tz(value.date as number, timezoneValue as string).format(format),\n\t\t\t\t\t\tend: null,\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t//if the date was left empty, set it to null so it resets the value in notion\n\t\t\tif (value.date === '' || (value.dateStart === '' && value.dateEnd === '')) {\n\t\t\t\tresult.date = null;\n\t\t\t}\n\n\t\t\tbreak;\n\t\tcase 'files':\n\t\t\tresult = {\n\t\t\t\ttype: 'files',\n\t\t\t\tfiles: value.fileUrls.fileUrl.map((file: { name: string; url: string }) => ({\n\t\t\t\t\tname: file.name,\n\t\t\t\t\ttype: 'external',\n\t\t\t\t\texternal: { url: file.url },\n\t\t\t\t})),\n\t\t\t};\n\t\t\tbreak;\n\t\tdefault:\n\t}\n\treturn result;\n}\n\nfunction getNameAndType(key: string) {\n\tconst [name, type] = key.split('|');\n\treturn {\n\t\tname,\n\t\ttype,\n\t};\n}\n\nexport function mapProperties(\n\tthis: IExecuteFunctions,\n\tproperties: IDataObject[],\n\ttimezone: string,\n\tversion = 1,\n) {\n\treturn properties\n\t\t.filter(\n\t\t\t(property): property is Record<string, { key: string; [k: string]: any }> =>\n\t\t\t\ttypeof property.key === 'string',\n\t\t)\n\t\t.map(\n\t\t\t(property) =>\n\t\t\t\t[\n\t\t\t\t\t`${property.key.split('|')[0]}`,\n\t\t\t\t\tgetPropertyKeyValue.call(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\tproperty,\n\t\t\t\t\t\tproperty.key.split('|')[1] as string,\n\t\t\t\t\t\ttimezone,\n\t\t\t\t\t\tversion,\n\t\t\t\t\t),\n\t\t\t\t] as const,\n\t\t)\n\t\t.filter(([, value]) => value)\n\t\t.reduce(\n\t\t\t(obj, [key, value]) =>\n\t\t\t\tObject.assign(obj, {\n\t\t\t\t\t[key]: value,\n\t\t\t\t}),\n\t\t\t{},\n\t\t);\n}\n\nexport function mapSorting(data: SortData[]) {\n\treturn data.map((sort) => {\n\t\treturn {\n\t\t\tdirection: sort.direction,\n\t\t\t[sort.timestamp ? 'timestamp' : 'property']: sort.key.split('|')[0],\n\t\t};\n\t});\n}\n\nexport function mapFilters(filtersList: IDataObject[], timezone: string) {\n\treturn filtersList.reduce((obj, value: { [key: string]: any }) => {\n\t\tlet key = getNameAndType(value.key as string).type;\n\n\t\tlet valuePropertyName =\n\t\t\tkey === 'last_edited_time' ? value[camelCase(key)] : value[`${camelCase(key)}Value`];\n\n\t\tif (['is_empty', 'is_not_empty'].includes(value.condition as string)) {\n\t\t\tvaluePropertyName = true;\n\t\t} else if (\n\t\t\t['past_week', 'past_month', 'past_year', 'next_week', 'next_month', 'next_year'].includes(\n\t\t\t\tvalue.condition as string,\n\t\t\t)\n\t\t) {\n\t\t\tvaluePropertyName = {};\n\t\t}\n\t\tif (key === 'rich_text' || key === 'text') {\n\t\t\tkey = 'text';\n\t\t} else if (key === 'phone_number') {\n\t\t\tkey = 'phone';\n\t\t} else if (\n\t\t\tkey === 'date' &&\n\t\t\t!['is_empty', 'is_not_empty'].includes(value.condition as string)\n\t\t) {\n\t\t\tvaluePropertyName = value.date === '' ? {} : moment.tz(value.date, timezone).utc().format();\n\t\t} else if (key === 'boolean') {\n\t\t\tkey = 'checkbox';\n\t\t}\n\n\t\tif (value.type === 'formula') {\n\t\t\tif (['is_empty', 'is_not_empty'].includes(value.condition as string)) {\n\t\t\t\tkey = value.returnType;\n\t\t\t} else {\n\t\t\t\tconst vpropertyName = value[`${camelCase(value.returnType as string)}Value`];\n\n\t\t\t\treturn Object.assign(obj, {\n\t\t\t\t\t['property']: getNameAndType(value.key as string).name,\n\t\t\t\t\t[key]: { [value.returnType]: { [`${value.condition}`]: vpropertyName } },\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn Object.assign(obj, {\n\t\t\t['property']: getNameAndType(value.key as string)?.name,\n\t\t\t[key]: { [`${value.condition}`]: valuePropertyName },\n\t\t});\n\t}, {});\n}\n\nfunction simplifyProperty(property: any) {\n\tlet result: any;\n\tconst type = (property as IDataObject).type as string;\n\tif (['text'].includes(property.type as string)) {\n\t\tresult = property.plain_text;\n\t} else if (['rich_text', 'title'].includes(property.type as string)) {\n\t\tif (Array.isArray(property[type]) && property[type].length !== 0) {\n\t\t\tresult = property[type].map((text: any) => simplifyProperty(text) as string).join('');\n\t\t} else {\n\t\t\tresult = '';\n\t\t}\n\t} else if (\n\t\t[\n\t\t\t'url',\n\t\t\t'created_time',\n\t\t\t'checkbox',\n\t\t\t'number',\n\t\t\t'last_edited_time',\n\t\t\t'email',\n\t\t\t'phone_number',\n\t\t\t'date',\n\t\t].includes(property.type as string)\n\t) {\n\t\tresult = property[type];\n\t} else if (['created_by', 'last_edited_by', 'select'].includes(property.type as string)) {\n\t\tresult = property[type] ? property[type]?.name : null;\n\t} else if (['people'].includes(property.type as string)) {\n\t\tif (Array.isArray(property[type])) {\n\t\t\tresult = property[type].map((person: any) => person.person?.email || {});\n\t\t} else {\n\t\t\tresult = property[type];\n\t\t}\n\t} else if (['multi_select'].includes(property.type as string)) {\n\t\tif (Array.isArray(property[type])) {\n\t\t\tresult = property[type].map((e: IDataObject) => e?.name || {});\n\t\t} else {\n\t\t\tresult = property[type].options.map((e: IDataObject) => e?.name || {});\n\t\t}\n\t} else if (['relation'].includes(property.type as string)) {\n\t\tif (Array.isArray(property[type])) {\n\t\t\tresult = property[type].map((e: IDataObject) => e?.id || {});\n\t\t} else {\n\t\t\tresult = property[type]?.database_id;\n\t\t}\n\t} else if (['formula'].includes(property.type as string)) {\n\t\tresult = property[type]?.[property[type]?.type];\n\t} else if (['rollup'].includes(property.type as string)) {\n\t\tconst rollupFunction = property[type]?.function as string;\n\t\tif (rollupFunction.startsWith('count') || rollupFunction.includes('empty')) {\n\t\t\tresult = property[type]?.number;\n\t\t\tif (rollupFunction.includes('percent')) {\n\t\t\t\tresult = result * 100;\n\t\t\t}\n\t\t} else if (rollupFunction.startsWith('show') && property[type]?.type === 'array') {\n\t\t\tconst elements = property[type].array.map(simplifyProperty).flat();\n\t\t\tresult = rollupFunction === 'show_unique' ? [...new Set(elements as string)] : elements;\n\t\t}\n\t} else if (['files'].includes(property.type as string)) {\n\t\tresult = property[type].map(\n\t\t\t(file: { type: string; [key: string]: any }) => file[file.type]?.url,\n\t\t);\n\t} else if (['status'].includes(property.type as string)) {\n\t\tresult = property[type]?.name;\n\t}\n\treturn result;\n}\n\nexport function simplifyProperties(properties: any) {\n\tconst results: any = {};\n\tfor (const key of Object.keys(properties as IDataObject)) {\n\t\tresults[`${key}`] = simplifyProperty(properties[key]);\n\t}\n\treturn results;\n}\n\nexport function getPropertyTitle(properties: { [key: string]: any }) {\n\treturn (\n\t\tObject.values(properties).filter((property) => property.type === 'title')[0].title[0]\n\t\t\t?.plain_text || ''\n\t);\n}\n\nfunction prepend(stringKey: string, properties: { [key: string]: any }) {\n\tfor (const key of Object.keys(properties)) {\n\t\tproperties[`${stringKey}_${snakeCase(key)}`] = properties[key];\n\t\tdelete properties[key];\n\t}\n\treturn properties;\n}\n\nexport function simplifyObjects(objects: any, download = false, version = 2) {\n\tif (!Array.isArray(objects)) {\n\t\tobjects = [objects];\n\t}\n\tconst results: IDataObject[] = [];\n\tfor (const { object, id, properties, parent, title, json, binary, url } of objects) {\n\t\tif (object === 'page' && (parent.type === 'page_id' || parent.type === 'workspace')) {\n\t\t\tresults.push({\n\t\t\t\tid,\n\t\t\t\tname: properties.title.title[0].plain_text,\n\t\t\t\t...(version === 2 ? { url } : {}),\n\t\t\t});\n\t\t} else if (object === 'page' && parent.type === 'database_id') {\n\t\t\tresults.push({\n\t\t\t\tid,\n\t\t\t\t...(version === 2 ? { name: getPropertyTitle(properties as IDataObject) } : {}),\n\t\t\t\t...(version === 2 ? { url } : {}),\n\t\t\t\t...(version === 2\n\t\t\t\t\t? { ...prepend('property', simplifyProperties(properties) as IDataObject) }\n\t\t\t\t\t: { ...simplifyProperties(properties) }),\n\t\t\t} as IDataObject);\n\t\t} else if (download && json.object === 'page' && json.parent.type === 'database_id') {\n\t\t\tresults.push({\n\t\t\t\tjson: {\n\t\t\t\t\tid: json.id,\n\t\t\t\t\t...(version === 2 ? { name: getPropertyTitle(json.properties as IDataObject) } : {}),\n\t\t\t\t\t...(version === 2 ? { url: json.url } : {}),\n\t\t\t\t\t...(version === 2\n\t\t\t\t\t\t? { ...prepend('property', simplifyProperties(json.properties) as IDataObject) }\n\t\t\t\t\t\t: { ...simplifyProperties(json.properties) }),\n\t\t\t\t},\n\t\t\t\tbinary,\n\t\t\t});\n\t\t} else if (object === 'database') {\n\t\t\tresults.push({\n\t\t\t\tid,\n\t\t\t\t...(version === 2\n\t\t\t\t\t? { name: title[0]?.plain_text || '' }\n\t\t\t\t\t: { title: title[0]?.plain_text || '' }),\n\t\t\t\t...(version === 2 ? { url } : {}),\n\t\t\t});\n\t\t}\n\t}\n\treturn results;\n}\n\nexport function getFormattedChildren(children: IDataObject[]) {\n\tconst results: IDataObject[] = [];\n\tfor (const child of children) {\n\t\tconst type = child.type;\n\t\tresults.push({ [`${type}`]: child, object: 'block', type });\n\t}\n\treturn results;\n}\n\nexport function getConditions() {\n\tconst elements: INodeProperties[] = [];\n\n\tconst types: { [key: string]: string } = {\n\t\ttitle: 'rich_text',\n\t\trich_text: 'rich_text',\n\t\tnumber: 'number',\n\t\tcheckbox: 'checkbox',\n\t\tselect: 'select',\n\t\tmulti_select: 'multi_select',\n\t\tstatus: 'status',\n\t\tdate: 'date',\n\t\tpeople: 'people',\n\t\tfiles: 'files',\n\t\turl: 'rich_text',\n\t\temail: 'rich_text',\n\t\tphone_number: 'rich_text',\n\t\trelation: 'relation',\n\t\t//formula: 'formula',\n\t\tcreated_by: 'people',\n\t\tcreated_time: 'date',\n\t\tlast_edited_by: 'people',\n\t\tlast_edited_time: 'date',\n\t};\n\n\tconst typeConditions: { [key: string]: string[] } = {\n\t\trich_text: [\n\t\t\t'equals',\n\t\t\t'does_not_equal',\n\t\t\t'contains',\n\t\t\t'does_not_contain',\n\t\t\t'starts_with',\n\t\t\t'ends_with',\n\t\t\t'is_empty',\n\t\t\t'is_not_empty',\n\t\t],\n\t\tnumber: [\n\t\t\t'equals',\n\t\t\t'does_not_equal',\n\t\t\t'greater_than',\n\t\t\t'less_than',\n\t\t\t'greater_than_or_equal_to',\n\t\t\t'less_than_or_equal_to',\n\t\t\t'is_empty',\n\t\t\t'is_not_empty',\n\t\t],\n\t\tcheckbox: ['equals', 'does_not_equal'],\n\t\tselect: ['equals', 'does_not_equal', 'is_empty', 'is_not_empty'],\n\t\tmulti_select: ['contains', 'does_not_equal', 'is_empty', 'is_not_empty'],\n\t\tstatus: ['equals', 'does_not_equal'],\n\t\tdate: [\n\t\t\t'equals',\n\t\t\t'before',\n\t\t\t'after',\n\t\t\t'on_or_before',\n\t\t\t'is_empty',\n\t\t\t'is_not_empty',\n\t\t\t'on_or_after',\n\t\t\t'past_week',\n\t\t\t'past_month',\n\t\t\t'past_year',\n\t\t\t'next_week',\n\t\t\t'next_month',\n\t\t\t'next_year',\n\t\t],\n\t\tpeople: ['contains', 'does_not_contain', 'is_empty', 'is_not_empty'],\n\t\tfiles: ['is_empty', 'is_not_empty'],\n\t\trelation: ['contains', 'does_not_contain', 'is_empty', 'is_not_empty'],\n\t};\n\n\tconst formula: { [key: string]: string[] } = {\n\t\ttext: [...typeConditions.rich_text],\n\t\tcheckbox: [...typeConditions.checkbox],\n\t\tnumber: [...typeConditions.number],\n\t\tdate: [...typeConditions.date],\n\t};\n\n\tfor (const type of Object.keys(types)) {\n\t\telements.push({\n\t\t\tdisplayName: 'Condition',\n\t\t\tname: 'condition',\n\t\t\ttype: 'options',\n\t\t\tdisplayOptions: {\n\t\t\t\tshow: {\n\t\t\t\t\ttype: [type],\n\t\t\t\t},\n\t\t\t} as IDisplayOptions,\n\t\t\toptions: typeConditions[types[type]].map((entry: string) => ({\n\t\t\t\tname: capitalCase(entry),\n\t\t\t\tvalue: entry,\n\t\t\t})),\n\t\t\tdefault: '',\n\t\t\tdescription: 'The value of the property to filter by',\n\t\t} as INodeProperties);\n\t}\n\n\telements.push({\n\t\tdisplayName: 'Return Type',\n\t\tname: 'returnType',\n\t\ttype: 'options',\n\t\tdisplayOptions: {\n\t\t\tshow: {\n\t\t\t\ttype: ['formula'],\n\t\t\t},\n\t\t} as IDisplayOptions,\n\t\toptions: Object.keys(formula).map((key: string) => ({ name: capitalCase(key), value: key })),\n\t\tdefault: '',\n\t\tdescription: 'The formula return type',\n\t} as INodeProperties);\n\n\tfor (const key of Object.keys(formula)) {\n\t\telements.push({\n\t\t\tdisplayName: 'Condition',\n\t\t\tname: 'condition',\n\t\t\ttype: 'options',\n\t\t\tdisplayOptions: {\n\t\t\t\tshow: {\n\t\t\t\t\ttype: ['formula'],\n\t\t\t\t\treturnType: [key],\n\t\t\t\t},\n\t\t\t} as IDisplayOptions,\n\t\t\toptions: formula[key].map((entry: string) => ({ name: capitalCase(entry), value: entry })),\n\t\t\tdefault: '',\n\t\t\tdescription: 'The value of the property to filter by',\n\t\t} as INodeProperties);\n\t}\n\n\treturn elements;\n}\n\nexport type FileRecord = {\n\tproperties: {\n\t\t[key: string]:\n\t\t\t| any\n\t\t\t| {\n\t\t\t\t\tid: string;\n\t\t\t\t\ttype: string;\n\t\t\t\t\tfiles: [{ external: { url: string } } | { file: { url: string } }];\n\t\t\t };\n\t};\n};\n\nexport async function downloadFiles(\n\tthis: IExecuteFunctions | IPollFunctions,\n\trecords: FileRecord[],\n\tpairedItem?: IPairedItemData[],\n): Promise<INodeExecutionData[]> {\n\tconst elements: INodeExecutionData[] = [];\n\tfor (const record of records) {\n\t\tconst element: INodeExecutionData = { json: {}, binary: {} };\n\t\telement.json = record as unknown as IDataObject;\n\t\tif (pairedItem) {\n\t\t\telement.pairedItems = pairedItem;\n\t\t}\n\t\tfor (const key of Object.keys(record.properties)) {\n\t\t\tif (record.properties[key].type === 'files') {\n\t\t\t\tif (record.properties[key].files.length) {\n\t\t\t\t\tfor (const [index, file] of record.properties[key].files.entries()) {\n\t\t\t\t\t\tconst data = await notionApiRequest.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'',\n\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\t(file?.file?.url as string) || (file?.external?.url as string),\n\t\t\t\t\t\t\t{ json: false, encoding: null },\n\t\t\t\t\t\t);\n\t\t\t\t\t\telement.binary![`${key}_${index}`] = await this.helpers.prepareBinaryData(\n\t\t\t\t\t\t\tdata as Buffer,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (Object.keys(element.binary as IBinaryKeyData).length === 0) {\n\t\t\tdelete element.binary;\n\t\t}\n\t\telements.push(element);\n\t}\n\treturn elements;\n}\n\nexport function extractPageId(page = '') {\n\tif (page.includes('p=')) {\n\t\treturn page.split('p=')[1];\n\t} else if (page.includes('-') && page.includes('https')) {\n\t\treturn page.split('-')[page.split('-').length - 1];\n\t}\n\treturn page;\n}\n\nexport function getPageId(this: IExecuteFunctions, i: number) {\n\tconst page = this.getNodeParameter('pageId', i, {}) as INodeParameterResourceLocator;\n\tlet pageId = '';\n\n\tif (page.value && typeof page.value === 'string') {\n\t\tif (page.mode === 'id') {\n\t\t\tpageId = page.value;\n\t\t} else if (page.value.includes('p=')) {\n\t\t\t// e.g https://www.notion.so/xxxxx?v=xxxxx&p=xxxxx&pm=s\n\t\t\tpageId = new URLSearchParams(page.value).get('p') || '';\n\t\t} else {\n\t\t\t// e.g https://www.notion.so/page_name-xxxxx\n\t\t\tpageId = page.value.match(databasePageUrlValidationRegexp)?.[1] || '';\n\t\t}\n\t}\n\n\tif (!pageId) {\n\t\tthrow new NodeOperationError(\n\t\t\tthis.getNode(),\n\t\t\t'Could not extract page ID from URL: ' + page.value,\n\t\t);\n\t}\n\n\treturn pageId;\n}\n\nexport function extractDatabaseId(database: string) {\n\tif (database.includes('?v=')) {\n\t\tconst data = database.split('?v=')[0].split('/');\n\t\tconst index = data.length - 1;\n\t\treturn data[index];\n\t} else if (database.includes('/')) {\n\t\tconst index = database.split('/').length - 1;\n\t\treturn database.split('/')[index];\n\t} else {\n\t\treturn database;\n\t}\n}\n\nexport function getSearchFilters(resource: string) {\n\treturn [\n\t\t{\n\t\t\tdisplayName: 'Filter',\n\t\t\tname: 'filterType',\n\t\t\ttype: 'options',\n\t\t\toptions: [\n\t\t\t\t{\n\t\t\t\t\tname: 'None',\n\t\t\t\t\tvalue: 'none',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: 'Build Manually',\n\t\t\t\t\tvalue: 'manual',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: 'JSON',\n\t\t\t\t\tvalue: 'json',\n\t\t\t\t},\n\t\t\t],\n\t\t\tdisplayOptions: {\n\t\t\t\tshow: {\n\t\t\t\t\tresource: [resource],\n\t\t\t\t\toperation: ['getAll'],\n\t\t\t\t},\n\t\t\t\thide: {\n\t\t\t\t\t'@version': [1],\n\t\t\t\t},\n\t\t\t},\n\t\t\tdefault: 'none',\n\t\t},\n\t\t{\n\t\t\tdisplayName: 'Must Match',\n\t\t\tname: 'matchType',\n\t\t\ttype: 'options',\n\t\t\toptions: [\n\t\t\t\t{\n\t\t\t\t\tname: 'Any filter',\n\t\t\t\t\tvalue: 'anyFilter',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: 'All Filters',\n\t\t\t\t\tvalue: 'allFilters',\n\t\t\t\t},\n\t\t\t],\n\t\t\tdisplayOptions: {\n\t\t\t\tshow: {\n\t\t\t\t\tresource: [resource],\n\t\t\t\t\toperation: ['getAll'],\n\t\t\t\t\tfilterType: ['manual'],\n\t\t\t\t},\n\t\t\t\thide: {\n\t\t\t\t\t'@version': [1],\n\t\t\t\t},\n\t\t\t},\n\t\t\tdefault: 'anyFilter',\n\t\t},\n\t\t{\n\t\t\tdisplayName: 'Filters',\n\t\t\tname: 'filters',\n\t\t\ttype: 'fixedCollection',\n\t\t\ttypeOptions: {\n\t\t\t\tmultipleValues: true,\n\t\t\t},\n\t\t\tdisplayOptions: {\n\t\t\t\tshow: {\n\t\t\t\t\tresource: [resource],\n\t\t\t\t\toperation: ['getAll'],\n\t\t\t\t\tfilterType: ['manual'],\n\t\t\t\t},\n\t\t\t\thide: {\n\t\t\t\t\t'@version': [1],\n\t\t\t\t},\n\t\t\t},\n\t\t\tdefault: {},\n\t\t\tplaceholder: 'Add Condition',\n\t\t\toptions: [\n\t\t\t\t{\n\t\t\t\t\tdisplayName: 'Conditions',\n\t\t\t\t\tname: 'conditions',\n\t\t\t\t\tvalues: [...filters(getConditions())],\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tdisplayName:\n\t\t\t\t'See <a href=\"https://developers.notion.com/reference/post-database-query#post-database-query-filter\" target=\"_blank\">Notion guide</a> to creating filters',\n\t\t\tname: 'jsonNotice',\n\t\t\ttype: 'notice',\n\t\t\tdisplayOptions: {\n\t\t\t\tshow: {\n\t\t\t\t\tresource: [resource],\n\t\t\t\t\toperation: ['getAll'],\n\t\t\t\t\tfilterType: ['json'],\n\t\t\t\t},\n\t\t\t\thide: {\n\t\t\t\t\t'@version': [1],\n\t\t\t\t},\n\t\t\t},\n\t\t\tdefault: '',\n\t\t},\n\t\t{\n\t\t\tdisplayName: 'Filters (JSON)',\n\t\t\tname: 'filterJson',\n\t\t\ttype: 'string',\n\t\t\tdisplayOptions: {\n\t\t\t\tshow: {\n\t\t\t\t\tresource: [resource],\n\t\t\t\t\toperation: ['getAll'],\n\t\t\t\t\tfilterType: ['json'],\n\t\t\t\t},\n\t\t\t\thide: {\n\t\t\t\t\t'@version': [1],\n\t\t\t\t},\n\t\t\t},\n\t\t\tdefault: '',\n\t\t},\n\t];\n}\n\nexport function validateJSON(json: string | undefined): any {\n\tlet result;\n\ttry {\n\t\tresult = JSON.parse(json!);\n\t} catch (exception) {\n\t\tresult = undefined;\n\t}\n\treturn result;\n}\n\n/**\n * Manually extract a richtext's database mention RLC parameter.\n * @param blockValues the blockUi.blockValues node parameter.\n */\nexport function extractDatabaseMentionRLC(blockValues: IDataObject[]) {\n\tblockValues.forEach((bv) => {\n\t\tif (bv.richText && bv.text) {\n\t\t\tconst texts = (\n\t\t\t\tbv.text as {\n\t\t\t\t\ttext: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttextType: string;\n\t\t\t\t\t\t\tmentionType: string;\n\t\t\t\t\t\t\tdatabase: string | { value: string; mode: string; __rl: boolean; __regex: string };\n\t\t\t\t\t\t},\n\t\t\t\t\t];\n\t\t\t\t}\n\t\t\t).text;\n\t\t\ttexts.forEach((txt) => {\n\t\t\t\tif (txt.textType === 'mention' && txt.mentionType === 'database') {\n\t\t\t\t\tif (typeof txt.database === 'object' && txt.database.__rl) {\n\t\t\t\t\t\tif (txt.database.__regex) {\n\t\t\t\t\t\t\tconst regex = new RegExp(txt.database.__regex);\n\t\t\t\t\t\t\tconst extracted = regex.exec(txt.database.value);\n\t\t\t\t\t\t\ttxt.database = extracted![1];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ttxt.database = txt.database.value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n}\n\nexport function simplifyBlocksOutput(blocks: IDataObject[], rootId: string) {\n\tfor (const block of blocks) {\n\t\tconst type = block.type as string;\n\t\tblock.root_id = rootId;\n\n\t\t['created_time', 'last_edited_time', 'created_by'].forEach((key) => {\n\t\t\tdelete block[key];\n\t\t});\n\n\t\ttry {\n\t\t\tif (['code'].includes(type)) {\n\t\t\t\tconst text = (block[type] as IDataObject).text as IDataObject[];\n\t\t\t\tif (text && Array.isArray(text)) {\n\t\t\t\t\tconst content = text.map((entry) => entry.plain_text || '').join('');\n\t\t\t\t\tblock.content = content;\n\t\t\t\t\tdelete block[type];\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (['child_page', 'child_database'].includes(type)) {\n\t\t\t\tconst content = (block[type] as IDataObject).title as string;\n\t\t\t\tblock.content = content;\n\t\t\t\tdelete block[type];\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst text = (block[type] as IDataObject)?.text as IDataObject[];\n\n\t\t\tif (text && Array.isArray(text)) {\n\t\t\t\tconst content = text.map((entry) => entry.plain_text || '').join('');\n\t\t\t\tblock.content = content;\n\t\t\t\tdelete block[type];\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tcontinue;\n\t\t}\n\t}\n\n\treturn blocks;\n}\n\nexport function extractBlockId(this: IExecuteFunctions, nodeVersion: number, itemIndex: number) {\n\tlet blockId: string;\n\n\tif (nodeVersion < 2.2) {\n\t\tblockId = extractPageId(\n\t\t\tthis.getNodeParameter('blockId', itemIndex, '', { extractValue: true }) as string,\n\t\t);\n\t} else {\n\t\tconst blockIdRLCData = this.getNodeParameter('blockId', itemIndex, {}) as IDataObject;\n\n\t\tif (blockIdRLCData.mode === 'id') {\n\t\t\tblockId = blockIdRLCData.value as string;\n\t\t} else {\n\t\t\tconst blockRegex = /https:\\/\\/www\\.notion\\.so\\/.+\\?pvs=[0-9]+#([a-f0-9]{2,})/;\n\t\t\tconst match = (blockIdRLCData.value as string).match(blockRegex);\n\n\t\t\tif (match === null) {\n\t\t\t\tconst pageRegex = new RegExp(blockUrlExtractionRegexp);\n\t\t\t\tconst pageMatch = (blockIdRLCData.value as string).match(pageRegex);\n\n\t\t\t\tif (pageMatch === null) {\n\t\t\t\t\tthrow new NodeOperationError(\n\t\t\t\t\t\tthis.getNode(),\n\t\t\t\t\t\t'Invalid URL, could not find block ID or page ID',\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\titemIndex,\n\t\t\t\t\t\t},\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tblockId = extractPageId(pageMatch[1]);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tblockId = match[1];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn blockId;\n}\n\nexport const prepareNotionError = (node: INode, error: Error, itemIndex: number) => {\n\tif (error instanceof NodeApiError) {\n\t\tset(error, 'context.itemIndex', itemIndex);\n\t\treturn error;\n\t}\n\n\tif (error instanceof NodeOperationError && error?.context?.itemIndex === undefined) {\n\t\tset(error, 'context.itemIndex', itemIndex);\n\t\treturn error;\n\t}\n\n\treturn new NodeOperationError(node, error, { itemIndex });\n};\n"],"mappings":"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","names":["uuidValidate","moment","text","set"]}
|
|
@@ -19,19 +19,13 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
19
19
|
var GenericFunctions_exports = {};
|
|
20
20
|
__export(GenericFunctions_exports, {
|
|
21
21
|
getToken: () => getToken,
|
|
22
|
-
removeTrailingSlash: () => removeTrailingSlash,
|
|
23
22
|
strapiApiRequest: () => strapiApiRequest,
|
|
24
23
|
strapiApiRequestAllItems: () => strapiApiRequestAllItems,
|
|
25
24
|
validateJSON: () => validateJSON
|
|
26
25
|
});
|
|
27
26
|
module.exports = __toCommonJS(GenericFunctions_exports);
|
|
28
27
|
var import_n8n_workflow = require("n8n-workflow");
|
|
29
|
-
|
|
30
|
-
if (url.endsWith("/")) {
|
|
31
|
-
return url.slice(0, -1);
|
|
32
|
-
}
|
|
33
|
-
return url;
|
|
34
|
-
};
|
|
28
|
+
var import_utilities = require("../../utils/utilities");
|
|
35
29
|
async function strapiApiRequest(method, resource, body = {}, qs = {}, uri, headers = {}) {
|
|
36
30
|
const authenticationMethod = this.getNodeParameter("authentication", 0);
|
|
37
31
|
let credentials;
|
|
@@ -40,7 +34,7 @@ async function strapiApiRequest(method, resource, body = {}, qs = {}, uri, heade
|
|
|
40
34
|
} else {
|
|
41
35
|
credentials = await this.getCredentials("strapiTokenApi");
|
|
42
36
|
}
|
|
43
|
-
const url = removeTrailingSlash(credentials.url);
|
|
37
|
+
const url = (0, import_utilities.removeTrailingSlash)(credentials.url);
|
|
44
38
|
try {
|
|
45
39
|
const options = {
|
|
46
40
|
headers: {},
|
|
@@ -70,7 +64,7 @@ async function strapiApiRequest(method, resource, body = {}, qs = {}, uri, heade
|
|
|
70
64
|
}
|
|
71
65
|
async function getToken() {
|
|
72
66
|
const credentials = await this.getCredentials("strapiApi");
|
|
73
|
-
const url = removeTrailingSlash(credentials.url);
|
|
67
|
+
const url = (0, import_utilities.removeTrailingSlash)(credentials.url);
|
|
74
68
|
let options = {};
|
|
75
69
|
options = {
|
|
76
70
|
headers: {
|
|
@@ -136,7 +130,6 @@ function validateJSON(json) {
|
|
|
136
130
|
// Annotate the CommonJS export names for ESM import in node:
|
|
137
131
|
0 && (module.exports = {
|
|
138
132
|
getToken,
|
|
139
|
-
removeTrailingSlash,
|
|
140
133
|
strapiApiRequest,
|
|
141
134
|
strapiApiRequestAllItems,
|
|
142
135
|
validateJSON
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../nodes/Strapi/GenericFunctions.ts"],"sourcesContent":["import type {\n\tICredentialDataDecryptedObject,\n\tIDataObject,\n\tIExecuteFunctions,\n\tIHookFunctions,\n\tIHttpRequestMethods,\n\tILoadOptionsFunctions,\n\tIRequestOptions,\n\tIWebhookFunctions,\n\tJsonObject,\n} from 'n8n-workflow';\nimport { NodeApiError } from 'n8n-workflow';\n\
|
|
1
|
+
{"version":3,"sources":["../../../nodes/Strapi/GenericFunctions.ts"],"sourcesContent":["import type {\n\tICredentialDataDecryptedObject,\n\tIDataObject,\n\tIExecuteFunctions,\n\tIHookFunctions,\n\tIHttpRequestMethods,\n\tILoadOptionsFunctions,\n\tIRequestOptions,\n\tIWebhookFunctions,\n\tJsonObject,\n} from 'n8n-workflow';\nimport { NodeApiError } from 'n8n-workflow';\n\nimport { removeTrailingSlash } from '../../utils/utilities';\n\nexport async function strapiApiRequest(\n\tthis: IExecuteFunctions | ILoadOptionsFunctions | IHookFunctions | IWebhookFunctions,\n\tmethod: IHttpRequestMethods,\n\tresource: string,\n\tbody: IDataObject = {},\n\tqs: IDataObject = {},\n\turi?: string,\n\theaders: IDataObject = {},\n) {\n\tconst authenticationMethod = this.getNodeParameter('authentication', 0);\n\tlet credentials: ICredentialDataDecryptedObject;\n\n\tif (authenticationMethod === 'password') {\n\t\tcredentials = await this.getCredentials('strapiApi');\n\t} else {\n\t\tcredentials = await this.getCredentials('strapiTokenApi');\n\t}\n\n\tconst url = removeTrailingSlash(credentials.url as string);\n\n\ttry {\n\t\tconst options: IRequestOptions = {\n\t\t\theaders: {},\n\t\t\tmethod,\n\t\t\tbody,\n\t\t\tqs,\n\t\t\turi: uri || credentials.apiVersion === 'v4' ? `${url}/api${resource}` : `${url}${resource}`,\n\t\t\tjson: true,\n\t\t\tqsStringifyOptions: {\n\t\t\t\tarrayFormat: 'indices',\n\t\t\t},\n\t\t};\n\t\tif (Object.keys(headers).length !== 0) {\n\t\t\toptions.headers = Object.assign({}, options.headers, headers);\n\t\t}\n\t\tif (Object.keys(body).length === 0) {\n\t\t\tdelete options.body;\n\t\t}\n\n\t\treturn await this.helpers.requestWithAuthentication.call(\n\t\t\tthis,\n\t\t\tauthenticationMethod === 'password' ? 'strapiApi' : 'strapiTokenApi',\n\t\t\toptions,\n\t\t);\n\t} catch (error) {\n\t\tthrow new NodeApiError(this.getNode(), error as JsonObject);\n\t}\n}\n\nexport async function getToken(\n\tthis: IExecuteFunctions | ILoadOptionsFunctions | IHookFunctions | IWebhookFunctions,\n): Promise<{ jwt: string }> {\n\tconst credentials = await this.getCredentials('strapiApi');\n\n\tconst url = removeTrailingSlash(credentials.url as string);\n\n\tlet options = {} as IRequestOptions;\n\toptions = {\n\t\theaders: {\n\t\t\t'content-type': 'application/json',\n\t\t},\n\t\tmethod: 'POST',\n\t\tbody: {\n\t\t\tidentifier: credentials.email,\n\t\t\tpassword: credentials.password,\n\t\t},\n\t\turi: credentials.apiVersion === 'v4' ? `${url}/api/auth/local` : `${url}/auth/local`,\n\t\tjson: true,\n\t};\n\treturn await (this.helpers.request(options) as Promise<{ jwt: string }>);\n}\n\nexport async function strapiApiRequestAllItems(\n\tthis: IHookFunctions | ILoadOptionsFunctions | IExecuteFunctions,\n\tmethod: IHttpRequestMethods,\n\tresource: string,\n\tbody: IDataObject = {},\n\tquery: IDataObject = {},\n\theaders: IDataObject = {},\n\tapiVersion: string = 'v3',\n) {\n\tconst returnData: IDataObject[] = [];\n\n\tlet responseData;\n\tif (apiVersion === 'v4') {\n\t\tquery['pagination[pageSize]'] = 20;\n\t\tquery['pagination[page]'] = 1;\n\t\tdo {\n\t\t\t({ data: responseData } = await strapiApiRequest.call(\n\t\t\t\tthis,\n\t\t\t\tmethod,\n\t\t\t\tresource,\n\t\t\t\tbody,\n\t\t\t\tquery,\n\t\t\t\tundefined,\n\t\t\t\theaders,\n\t\t\t));\n\t\t\tquery['pagination[page]']++;\n\t\t\treturnData.push.apply(returnData, responseData as IDataObject[]);\n\t\t} while (responseData.length !== 0);\n\t} else {\n\t\tquery._limit = 20;\n\t\tquery._start = 0;\n\t\tdo {\n\t\t\tresponseData = await strapiApiRequest.call(\n\t\t\t\tthis,\n\t\t\t\tmethod,\n\t\t\t\tresource,\n\t\t\t\tbody,\n\t\t\t\tquery,\n\t\t\t\tundefined,\n\t\t\t\theaders,\n\t\t\t);\n\t\t\tquery._start += query._limit;\n\t\t\treturnData.push.apply(returnData, responseData as IDataObject[]);\n\t\t} while (responseData.length !== 0);\n\t}\n\treturn returnData;\n}\n\nexport function validateJSON(json: string | undefined): any {\n\tlet result;\n\ttry {\n\t\tresult = JSON.parse(json!);\n\t} catch (exception) {\n\t\tresult = undefined;\n\t}\n\treturn result;\n}\n"],"mappings":"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","names":[]}
|