@credal/actions 0.1.22 → 0.1.24
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/actions/autogen/templates.js +24 -5
- package/dist/actions/autogen/types.d.ts +25 -5
- package/dist/actions/autogen/types.js +10 -1
- package/dist/actions/providers/confluence/updatePage.js +15 -14
- package/dist/actions/providers/credal/callCopilot.js +1 -0
- package/dist/actions/providers/workday/requestTimeOff.d.ts +23 -0
- package/dist/actions/providers/workday/requestTimeOff.js +88 -0
- package/dist/actions/providers/zendesk/createZendeskTicket.js +15 -18
- package/package.json +1 -1
- package/dist/actions/providers/googlemaps/nearbysearch.d.ts +0 -3
- package/dist/actions/providers/googlemaps/nearbysearch.js +0 -96
- package/dist/actions/providers/x/scrapeTweetDataWithNitter.d.ts +0 -3
- package/dist/actions/providers/x/scrapeTweetDataWithNitter.js +0 -45
@@ -538,6 +538,29 @@ exports.credalCallCopilotDefinition = {
|
|
538
538
|
},
|
539
539
|
},
|
540
540
|
},
|
541
|
+
webSearchResults: {
|
542
|
+
type: "array",
|
543
|
+
description: "The web search results in the response",
|
544
|
+
items: {
|
545
|
+
type: "object",
|
546
|
+
description: "The web search result in the response",
|
547
|
+
required: ["title", "url"],
|
548
|
+
properties: {
|
549
|
+
title: {
|
550
|
+
type: "string",
|
551
|
+
description: "The title of the web search result",
|
552
|
+
},
|
553
|
+
url: {
|
554
|
+
type: "string",
|
555
|
+
description: "The url of the web search result",
|
556
|
+
},
|
557
|
+
contents: {
|
558
|
+
type: "string",
|
559
|
+
description: "The contents of the web search result",
|
560
|
+
},
|
561
|
+
},
|
562
|
+
},
|
563
|
+
},
|
541
564
|
},
|
542
565
|
},
|
543
566
|
name: "callCopilot",
|
@@ -548,7 +571,7 @@ exports.zendeskCreateZendeskTicketDefinition = {
|
|
548
571
|
scopes: [],
|
549
572
|
parameters: {
|
550
573
|
type: "object",
|
551
|
-
required: ["subject", "
|
574
|
+
required: ["subject", "subdomain"],
|
552
575
|
properties: {
|
553
576
|
subject: {
|
554
577
|
type: "string",
|
@@ -558,10 +581,6 @@ exports.zendeskCreateZendeskTicketDefinition = {
|
|
558
581
|
type: "string",
|
559
582
|
description: "The body of the ticket",
|
560
583
|
},
|
561
|
-
requesterEmail: {
|
562
|
-
type: "string",
|
563
|
-
description: "The email of the requester",
|
564
|
-
},
|
565
584
|
subdomain: {
|
566
585
|
type: "string",
|
567
586
|
description: "The subdomain of the Zendesk account",
|
@@ -545,6 +545,19 @@ export declare const credalCallCopilotOutputSchema: z.ZodObject<{
|
|
545
545
|
};
|
546
546
|
url?: string | undefined;
|
547
547
|
}>, "many">>;
|
548
|
+
webSearchResults: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
549
|
+
title: z.ZodString;
|
550
|
+
url: z.ZodString;
|
551
|
+
contents: z.ZodOptional<z.ZodString>;
|
552
|
+
}, "strip", z.ZodTypeAny, {
|
553
|
+
title: string;
|
554
|
+
url: string;
|
555
|
+
contents?: string | undefined;
|
556
|
+
}, {
|
557
|
+
title: string;
|
558
|
+
url: string;
|
559
|
+
contents?: string | undefined;
|
560
|
+
}>, "many">>;
|
548
561
|
}, "strip", z.ZodTypeAny, {
|
549
562
|
response: string;
|
550
563
|
referencedSources?: {
|
@@ -565,6 +578,11 @@ export declare const credalCallCopilotOutputSchema: z.ZodObject<{
|
|
565
578
|
};
|
566
579
|
url?: string | undefined;
|
567
580
|
}[] | undefined;
|
581
|
+
webSearchResults?: {
|
582
|
+
title: string;
|
583
|
+
url: string;
|
584
|
+
contents?: string | undefined;
|
585
|
+
}[] | undefined;
|
568
586
|
}, {
|
569
587
|
response: string;
|
570
588
|
referencedSources?: {
|
@@ -585,22 +603,24 @@ export declare const credalCallCopilotOutputSchema: z.ZodObject<{
|
|
585
603
|
};
|
586
604
|
url?: string | undefined;
|
587
605
|
}[] | undefined;
|
606
|
+
webSearchResults?: {
|
607
|
+
title: string;
|
608
|
+
url: string;
|
609
|
+
contents?: string | undefined;
|
610
|
+
}[] | undefined;
|
588
611
|
}>;
|
589
612
|
export type credalCallCopilotOutputType = z.infer<typeof credalCallCopilotOutputSchema>;
|
590
613
|
export type credalCallCopilotFunction = ActionFunction<credalCallCopilotParamsType, AuthParamsType, credalCallCopilotOutputType>;
|
591
614
|
export declare const zendeskCreateZendeskTicketParamsSchema: z.ZodObject<{
|
592
615
|
subject: z.ZodString;
|
593
616
|
body: z.ZodOptional<z.ZodString>;
|
594
|
-
requesterEmail: z.ZodString;
|
595
617
|
subdomain: z.ZodString;
|
596
618
|
}, "strip", z.ZodTypeAny, {
|
597
619
|
subject: string;
|
598
|
-
requesterEmail: string;
|
599
620
|
subdomain: string;
|
600
621
|
body?: string | undefined;
|
601
622
|
}, {
|
602
623
|
subject: string;
|
603
|
-
requesterEmail: string;
|
604
624
|
subdomain: string;
|
605
625
|
body?: string | undefined;
|
606
626
|
}>;
|
@@ -621,11 +641,11 @@ export declare const linkedinCreateShareLinkedinPostUrlParamsSchema: z.ZodObject
|
|
621
641
|
text: z.ZodOptional<z.ZodString>;
|
622
642
|
url: z.ZodOptional<z.ZodString>;
|
623
643
|
}, "strip", z.ZodTypeAny, {
|
624
|
-
text?: string | undefined;
|
625
644
|
url?: string | undefined;
|
626
|
-
}, {
|
627
645
|
text?: string | undefined;
|
646
|
+
}, {
|
628
647
|
url?: string | undefined;
|
648
|
+
text?: string | undefined;
|
629
649
|
}>;
|
630
650
|
export type linkedinCreateShareLinkedinPostUrlParamsType = z.infer<typeof linkedinCreateShareLinkedinPostUrlParamsSchema>;
|
631
651
|
export declare const linkedinCreateShareLinkedinPostUrlOutputSchema: z.ZodObject<{
|
@@ -185,11 +185,20 @@ exports.credalCallCopilotOutputSchema = zod_1.z.object({
|
|
185
185
|
.describe("The source in the data context of the response"))
|
186
186
|
.describe("The sources in the data context of the response")
|
187
187
|
.optional(),
|
188
|
+
webSearchResults: zod_1.z
|
189
|
+
.array(zod_1.z
|
190
|
+
.object({
|
191
|
+
title: zod_1.z.string().describe("The title of the web search result"),
|
192
|
+
url: zod_1.z.string().describe("The url of the web search result"),
|
193
|
+
contents: zod_1.z.string().describe("The contents of the web search result").optional(),
|
194
|
+
})
|
195
|
+
.describe("The web search result in the response"))
|
196
|
+
.describe("The web search results in the response")
|
197
|
+
.optional(),
|
188
198
|
});
|
189
199
|
exports.zendeskCreateZendeskTicketParamsSchema = zod_1.z.object({
|
190
200
|
subject: zod_1.z.string().describe("The subject of the ticket"),
|
191
201
|
body: zod_1.z.string().describe("The body of the ticket").optional(),
|
192
|
-
requesterEmail: zod_1.z.string().describe("The email of the requester"),
|
193
202
|
subdomain: zod_1.z.string().describe("The subdomain of the Zendesk account"),
|
194
203
|
});
|
195
204
|
exports.zendeskCreateZendeskTicketOutputSchema = zod_1.z.object({
|
@@ -8,28 +8,30 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
8
8
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
9
9
|
});
|
10
10
|
};
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
13
|
+
};
|
11
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
12
|
-
const
|
13
|
-
function
|
14
|
-
|
15
|
+
const axios_1 = __importDefault(require("axios"));
|
16
|
+
function getConfluenceApi(baseUrl, username, apiToken) {
|
17
|
+
const api = axios_1.default.create({
|
15
18
|
baseURL: baseUrl,
|
16
19
|
headers: {
|
17
20
|
Accept: "application/json",
|
21
|
+
// Tokens are associated with a specific user.
|
18
22
|
Authorization: `Basic ${Buffer.from(`${username}:${apiToken}`).toString("base64")}`,
|
19
23
|
},
|
20
|
-
};
|
24
|
+
});
|
25
|
+
return api;
|
21
26
|
}
|
22
27
|
const confluenceUpdatePage = (_a) => __awaiter(void 0, [_a], void 0, function* ({ params, authParams, }) {
|
23
|
-
const { pageId, content, title } = params;
|
24
|
-
const { baseUrl, authToken
|
25
|
-
|
26
|
-
throw new Error("Missing required authentication information");
|
27
|
-
}
|
28
|
-
const config = getConfluenceRequestConfig(baseUrl, username, authToken);
|
28
|
+
const { pageId, username, content, title } = params;
|
29
|
+
const { baseUrl, authToken } = authParams;
|
30
|
+
const api = getConfluenceApi(baseUrl, username, authToken);
|
29
31
|
// Get current version number
|
30
|
-
const response = yield
|
32
|
+
const response = yield api.get(`/api/v2/pages/${pageId}`);
|
31
33
|
const currVersion = response.data.version.number;
|
32
|
-
|
34
|
+
yield api.put(`/api/v2/pages/${pageId}`, {
|
33
35
|
id: pageId,
|
34
36
|
status: "current",
|
35
37
|
title,
|
@@ -40,7 +42,6 @@ const confluenceUpdatePage = (_a) => __awaiter(void 0, [_a], void 0, function* (
|
|
40
42
|
version: {
|
41
43
|
number: currVersion + 1,
|
42
44
|
},
|
43
|
-
};
|
44
|
-
yield axiosClient_1.axiosClient.put(`/api/v2/pages/${pageId}`, payload, config);
|
45
|
+
});
|
45
46
|
});
|
46
47
|
exports.default = confluenceUpdatePage;
|
@@ -30,6 +30,7 @@ const callCopilot = (_a) => __awaiter(void 0, [_a], void 0, function* ({ params,
|
|
30
30
|
: "Error getting response",
|
31
31
|
referencedSources: response.sendChatResult.type === "ai_response_result" ? response.sendChatResult.referencedSources : [],
|
32
32
|
sourcesInDataContext: response.sendChatResult.type === "ai_response_result" ? response.sendChatResult.sourcesInDataContext : [],
|
33
|
+
webSearchResults: response.sendChatResult.type === "ai_response_result" ? response.sendChatResult.webSearchResults : [],
|
33
34
|
};
|
34
35
|
});
|
35
36
|
exports.default = callCopilot;
|
@@ -0,0 +1,23 @@
|
|
1
|
+
declare const axios: any;
|
2
|
+
declare const WORKDAY_BASE_URL = "https://your-workday-url/ccx/service/YOUR_TENANT/Absence_Management/v43.2";
|
3
|
+
declare const TOKEN_URL = "https://your-workday-url/oauth2/YOUR_TENANT/token";
|
4
|
+
declare const CLIENT_ID = "your-client-id";
|
5
|
+
declare const CLIENT_SECRET = "your-client-secret";
|
6
|
+
/**
|
7
|
+
* Fetches an OAuth 2.0 access token from Workday.
|
8
|
+
*/
|
9
|
+
declare function getAccessToken(): Promise<any>;
|
10
|
+
/**
|
11
|
+
* Submits a time-off request to Workday.
|
12
|
+
* @param {Object} params - Time-off details.
|
13
|
+
* @param {string} params.workerId - Worker's ID in Workday.
|
14
|
+
* @param {string} params.startDate - Start date (YYYY-MM-DD).
|
15
|
+
* @param {string} params.endDate - End date (YYYY-MM-DD).
|
16
|
+
* @param {string} params.timeOffType - Time-off type (e.g., "SICK_LEAVE").
|
17
|
+
*/
|
18
|
+
declare function submitTimeOff({ workerId, startDate, endDate, timeOffType }: {
|
19
|
+
workerId: any;
|
20
|
+
startDate: any;
|
21
|
+
endDate: any;
|
22
|
+
timeOffType: any;
|
23
|
+
}): Promise<any>;
|
@@ -0,0 +1,88 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
9
|
+
});
|
10
|
+
};
|
11
|
+
const axios = require("axios");
|
12
|
+
const WORKDAY_BASE_URL = "https://your-workday-url/ccx/service/YOUR_TENANT/Absence_Management/v43.2";
|
13
|
+
const TOKEN_URL = "https://your-workday-url/oauth2/YOUR_TENANT/token"; // OAuth token endpoint
|
14
|
+
const CLIENT_ID = "your-client-id";
|
15
|
+
const CLIENT_SECRET = "your-client-secret";
|
16
|
+
/**
|
17
|
+
* Fetches an OAuth 2.0 access token from Workday.
|
18
|
+
*/
|
19
|
+
function getAccessToken() {
|
20
|
+
return __awaiter(this, void 0, void 0, function* () {
|
21
|
+
var _a;
|
22
|
+
try {
|
23
|
+
const response = yield axios.post(TOKEN_URL, new URLSearchParams({ grant_type: "client_credentials" }), {
|
24
|
+
auth: {
|
25
|
+
username: CLIENT_ID,
|
26
|
+
password: CLIENT_SECRET
|
27
|
+
},
|
28
|
+
headers: { "Content-Type": "application/x-www-form-urlencoded" }
|
29
|
+
});
|
30
|
+
return response.data.access_token;
|
31
|
+
}
|
32
|
+
catch (error) {
|
33
|
+
console.error("Error fetching access token:", ((_a = error.response) === null || _a === void 0 ? void 0 : _a.data) || error.message);
|
34
|
+
throw error;
|
35
|
+
}
|
36
|
+
});
|
37
|
+
}
|
38
|
+
/**
|
39
|
+
* Submits a time-off request to Workday.
|
40
|
+
* @param {Object} params - Time-off details.
|
41
|
+
* @param {string} params.workerId - Worker's ID in Workday.
|
42
|
+
* @param {string} params.startDate - Start date (YYYY-MM-DD).
|
43
|
+
* @param {string} params.endDate - End date (YYYY-MM-DD).
|
44
|
+
* @param {string} params.timeOffType - Time-off type (e.g., "SICK_LEAVE").
|
45
|
+
*/
|
46
|
+
function submitTimeOff(_a) {
|
47
|
+
return __awaiter(this, arguments, void 0, function* ({ workerId, startDate, endDate, timeOffType }) {
|
48
|
+
var _b;
|
49
|
+
try {
|
50
|
+
const token = yield getAccessToken(); // Get OAuth token
|
51
|
+
const requestBody = {
|
52
|
+
"wd:Enter_Time_Off_Request": {
|
53
|
+
"wd:Worker_Reference": {
|
54
|
+
"wd:ID": [{ "_": workerId, "$": { "wd:type": "WID" } }]
|
55
|
+
},
|
56
|
+
"wd:Time_Off_Entries": [
|
57
|
+
{
|
58
|
+
"wd:Start_Date": startDate,
|
59
|
+
"wd:End_Date": endDate,
|
60
|
+
"wd:Time_Off_Type_Reference": {
|
61
|
+
"wd:ID": [{ "_": timeOffType, "$": { "wd:type": "Time_Off_Type_ID" } }]
|
62
|
+
}
|
63
|
+
}
|
64
|
+
]
|
65
|
+
}
|
66
|
+
};
|
67
|
+
const response = yield axios.post(`${WORKDAY_BASE_URL}/Enter_Time_Off`, requestBody, {
|
68
|
+
headers: {
|
69
|
+
"Authorization": `Bearer ${token}`,
|
70
|
+
"Content-Type": "application/json"
|
71
|
+
}
|
72
|
+
});
|
73
|
+
console.log("Time-off request submitted successfully:", response.data);
|
74
|
+
return response.data;
|
75
|
+
}
|
76
|
+
catch (error) {
|
77
|
+
console.error("Error submitting time-off request:", ((_b = error.response) === null || _b === void 0 ? void 0 : _b.data) || error.message);
|
78
|
+
throw error;
|
79
|
+
}
|
80
|
+
});
|
81
|
+
}
|
82
|
+
// Example Usage:
|
83
|
+
submitTimeOff({
|
84
|
+
workerId: "12345",
|
85
|
+
startDate: "2025-03-10",
|
86
|
+
endDate: "2025-03-12",
|
87
|
+
timeOffType: "SICK_LEAVE"
|
88
|
+
}).then(console.log).catch(console.error);
|
@@ -11,8 +11,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
12
12
|
const axiosClient_1 = require("../../util/axiosClient");
|
13
13
|
const createZendeskTicket = (_a) => __awaiter(void 0, [_a], void 0, function* ({ params, authParams, }) {
|
14
|
-
const { apiKey } = authParams;
|
15
|
-
const { subdomain, subject, body
|
14
|
+
const { apiKey, username } = authParams;
|
15
|
+
const { subdomain, subject, body } = params;
|
16
16
|
const url = `https://${subdomain}.zendesk.com/api/v2/tickets.json`;
|
17
17
|
const payload = {
|
18
18
|
ticket: {
|
@@ -25,21 +25,18 @@ const createZendeskTicket = (_a) => __awaiter(void 0, [_a], void 0, function* ({
|
|
25
25
|
if (!apiKey) {
|
26
26
|
throw new Error("API key is required");
|
27
27
|
}
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
console.error("Error creating ticket", error);
|
42
|
-
return { ticketId: "Error" };
|
43
|
-
}
|
28
|
+
const response = yield axiosClient_1.axiosClient.post(url, payload, {
|
29
|
+
auth: {
|
30
|
+
username: `${username}/token`,
|
31
|
+
password: apiKey,
|
32
|
+
},
|
33
|
+
headers: {
|
34
|
+
"Content-Type": "application/json",
|
35
|
+
},
|
36
|
+
});
|
37
|
+
return {
|
38
|
+
ticketId: response.data.ticket.id,
|
39
|
+
ticketUrl: `https://${subdomain}.zendesk.com/requests/${response.data.ticket.id}`,
|
40
|
+
};
|
44
41
|
});
|
45
42
|
exports.default = createZendeskTicket;
|
package/package.json
CHANGED
@@ -1,96 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
9
|
-
});
|
10
|
-
};
|
11
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
12
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
13
|
-
};
|
14
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
15
|
-
const axios_1 = __importDefault(require("axios"));
|
16
|
-
const types_1 = require("../../autogen/types");
|
17
|
-
const INCLUDED_TYPES = [
|
18
|
-
"monument",
|
19
|
-
"museum",
|
20
|
-
"art_gallery",
|
21
|
-
"sculpture",
|
22
|
-
"cultural_landmark",
|
23
|
-
"historical_place",
|
24
|
-
"performing_arts_theater",
|
25
|
-
"university",
|
26
|
-
"aquarium",
|
27
|
-
"botanical_garden",
|
28
|
-
"comedy_club",
|
29
|
-
"park",
|
30
|
-
"movie_theater",
|
31
|
-
"national_park",
|
32
|
-
"garden",
|
33
|
-
"night_club",
|
34
|
-
"tourist_attraction",
|
35
|
-
"water_park",
|
36
|
-
"zoo",
|
37
|
-
"bar",
|
38
|
-
"restaurant",
|
39
|
-
"food_court",
|
40
|
-
"bakery",
|
41
|
-
"cafe",
|
42
|
-
"coffee_shop",
|
43
|
-
"pub",
|
44
|
-
"wine_bar",
|
45
|
-
"spa",
|
46
|
-
"beach",
|
47
|
-
"market",
|
48
|
-
"shopping_mall",
|
49
|
-
"stadium",
|
50
|
-
];
|
51
|
-
const nearbysearch = (_a) => __awaiter(void 0, [_a], void 0, function* ({ params, authParams, }) {
|
52
|
-
const url = `https://places.googleapis.com/v1/places:searchNearby`;
|
53
|
-
const fieldMask = [
|
54
|
-
"places.displayName",
|
55
|
-
"places.formattedAddress",
|
56
|
-
"places.priceLevel",
|
57
|
-
"places.rating",
|
58
|
-
"places.primaryTypeDisplayName",
|
59
|
-
"places.editorialSummary",
|
60
|
-
"places.regularOpeningHours",
|
61
|
-
].join(",");
|
62
|
-
const response = yield axios_1.default.post(url, {
|
63
|
-
maxResultCount: 20,
|
64
|
-
includedTypes: INCLUDED_TYPES,
|
65
|
-
locationRestriction: {
|
66
|
-
circle: {
|
67
|
-
center: {
|
68
|
-
latitude: params.latitude,
|
69
|
-
longitude: params.longitude,
|
70
|
-
},
|
71
|
-
radius: 10000,
|
72
|
-
},
|
73
|
-
},
|
74
|
-
}, {
|
75
|
-
headers: {
|
76
|
-
"X-Goog-Api-Key": authParams.apiKey,
|
77
|
-
"X-Goog-FieldMask": fieldMask,
|
78
|
-
"Content-Type": "application/json",
|
79
|
-
},
|
80
|
-
});
|
81
|
-
return types_1.googlemapsNearbysearchOutputSchema.parse({
|
82
|
-
results: response.data.places.map((place) => {
|
83
|
-
var _a, _b;
|
84
|
-
return ({
|
85
|
-
name: place.displayName.text,
|
86
|
-
address: place.formattedAddress,
|
87
|
-
priceLevel: place.priceLevel,
|
88
|
-
rating: place.rating,
|
89
|
-
primaryType: place.primaryTypeDisplayName.text,
|
90
|
-
editorialSummary: ((_a = place.editorialSummary) === null || _a === void 0 ? void 0 : _a.text) || "",
|
91
|
-
openingHours: ((_b = place.regularOpeningHours) === null || _b === void 0 ? void 0 : _b.weekdayDescriptions.join("\n")) || "",
|
92
|
-
});
|
93
|
-
}),
|
94
|
-
});
|
95
|
-
});
|
96
|
-
exports.default = nearbysearch;
|
@@ -1,45 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
9
|
-
});
|
10
|
-
};
|
11
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
12
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
13
|
-
};
|
14
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
15
|
-
const firecrawl_js_1 = __importDefault(require("@mendable/firecrawl-js"));
|
16
|
-
const scrapeTweetDataWithNitter = (_a) => __awaiter(void 0, [_a], void 0, function* ({ params, authParams, }) {
|
17
|
-
const tweetUrlRegex = /^(?:https?:\/\/)?(?:www\.)?(?:twitter\.com|x\.com)\/([a-zA-Z0-9_]+)\/status\/(\d+)(?:\?.*)?$/;
|
18
|
-
if (!tweetUrlRegex.test(params.tweetUrl)) {
|
19
|
-
throw new Error("Invalid tweet URL. Expected format: https://twitter.com/username/status/id or https://x.com/username/status/id");
|
20
|
-
}
|
21
|
-
const nitterUrl = params.tweetUrl.replace(/^(?:https?:\/\/)?(?:www\.)?(?:twitter\.com|x\.com)/i, "https://nitter.net");
|
22
|
-
// Initialize Firecrawl
|
23
|
-
if (!authParams.apiKey) {
|
24
|
-
throw new Error("API key is required for X+Nitter+Firecrawl");
|
25
|
-
}
|
26
|
-
const firecrawl = new firecrawl_js_1.default({
|
27
|
-
apiKey: authParams.apiKey,
|
28
|
-
});
|
29
|
-
try {
|
30
|
-
// Scrape the Nitter URL
|
31
|
-
const result = yield firecrawl.scrapeUrl(nitterUrl);
|
32
|
-
if (!result.success) {
|
33
|
-
throw new Error(`Failed to scrape tweet: ${result.error || "Unknown error"}`);
|
34
|
-
}
|
35
|
-
// Extract the tweet text from the scraped content - simple approach - in practice, you might need more robust parsing based on nitter html structure
|
36
|
-
const tweetContent = result.markdown;
|
37
|
-
return {
|
38
|
-
text: tweetContent || "Error scraping with firecrawl",
|
39
|
-
};
|
40
|
-
}
|
41
|
-
catch (error) {
|
42
|
-
throw new Error(`Error scraping tweet: ${error instanceof Error ? error.message : error}`);
|
43
|
-
}
|
44
|
-
});
|
45
|
-
exports.default = scrapeTweetDataWithNitter;
|