@apify/n8n-nodes-apify
Version:
n8n nodes for Apify
108 lines • 3.43 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.overrideUserActorProperties = overrideUserActorProperties;
exports.listUserActors = listUserActors;
const genericFunctions_1 = require("./genericFunctions");
const resourceLocatorProperty = {
displayName: 'Actor',
name: 'userActorId',
type: 'resourceLocator',
default: { mode: 'list', value: '' },
modes: [
{
displayName: 'From list',
name: 'list',
type: 'list',
placeholder: 'Choose...',
typeOptions: {
searchListMethod: 'listUserActors',
searchFilterRequired: false,
searchable: true,
},
},
{
displayName: 'By URL',
name: 'url',
type: 'string',
placeholder: 'https://console.apify.com/actors/AtBpiepuIUNs2k2ku/input',
validation: [
{
type: 'regex',
properties: {
regex: 'https://console.apify.com/actors/([a-zA-Z0-9]+).*',
errorMessage: 'Not a valid Actor URL',
},
},
],
extractValue: {
type: 'regex',
regex: `https://console.apify.com/actors/([a-zA-Z0-9]+).*`,
},
},
{
displayName: 'ID',
name: 'id',
type: 'string',
validation: [
{
type: 'regex',
properties: {
regex: '[a-zA-Z0-9]+',
errorMessage: 'Not a valid Actor ID',
},
},
],
placeholder: 'NVCnbrChXaPbhVs8bISltEhngFg',
url: '=http:/console.apify.com/actors/{{ $value }}/input',
},
],
};
function mapProperty(property) {
return {
...property,
...resourceLocatorProperty,
};
}
function overrideUserActorProperties(properties) {
const result = [];
for (const property of properties) {
if (property.name === 'userActorId') {
result.push(mapProperty(property));
}
else {
result.push(property);
}
}
return result;
}
async function listUserActors(searchTerm) {
const mapToN8nResult = (actor) => ({
name: actor.title
? `${actor.title} (${actor.username}/${actor.name})`
: `${actor.username}/${actor.name}`,
value: actor.id,
url: `https://console.apify.com/actors/${actor.id}/input`,
description: actor.description || actor.name,
});
const { data: { items: recentActors }, } = await genericFunctions_1.apiRequestAllItems.call(this, {
method: 'GET',
uri: '/v2/acts',
qs: {
limit: 1000,
offset: 0,
sortBy: 'stats.lastRunStartedAt',
desc: true,
},
});
if (searchTerm) {
const regex = new RegExp(searchTerm, 'i');
const filteredActors = recentActors.filter((actor) => regex.test(actor.title || '') || regex.test(actor.name || ''));
return {
results: filteredActors.map(mapToN8nResult),
};
}
return {
results: recentActors.map(mapToN8nResult),
};
}
//# sourceMappingURL=userActorResourceLocator.js.map