@gravity-platform/x-search 1.0.1
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/XSearch/node/executor.d.ts +9 -0
- package/dist/XSearch/node/executor.d.ts.map +1 -0
- package/dist/XSearch/node/executor.js +45 -0
- package/dist/XSearch/node/executor.js.map +1 -0
- package/dist/XSearch/node/index.d.ts +6 -0
- package/dist/XSearch/node/index.d.ts.map +1 -0
- package/dist/XSearch/node/index.js +88 -0
- package/dist/XSearch/node/index.js.map +1 -0
- package/dist/XSearch/service/index.d.ts +24 -0
- package/dist/XSearch/service/index.d.ts.map +1 -0
- package/dist/XSearch/service/index.js +28 -0
- package/dist/XSearch/service/index.js.map +1 -0
- package/dist/credentials/index.d.ts +15 -0
- package/dist/credentials/index.d.ts.map +1 -0
- package/dist/credentials/index.js +20 -0
- package/dist/credentials/index.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +53 -0
- package/dist/index.js.map +1 -0
- package/package.json +23 -0
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { PromiseNode, type NodeExecutionContext, type ValidationResult } from "@gravity-platform/plugin-base";
|
|
2
|
+
import { type XSearchConfig } from "../service";
|
|
3
|
+
export default class XSearchExecutor extends PromiseNode {
|
|
4
|
+
constructor();
|
|
5
|
+
protected validateConfig(config: XSearchConfig): Promise<ValidationResult>;
|
|
6
|
+
protected executeNode(inputs: Record<string, any>, config: XSearchConfig, context: NodeExecutionContext): Promise<any>;
|
|
7
|
+
private buildCredentialContext;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=executor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../../src/XSearch/node/executor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,KAAK,oBAAoB,EAAE,KAAK,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAC9G,OAAO,EAAkB,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhE,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,WAAW;;cAKtC,cAAc,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,gBAAgB,CAAC;cAOhE,WAAW,CACzB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC3B,MAAM,EAAE,aAAa,EACrB,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,GAAG,CAAC;IAqBf,OAAO,CAAC,sBAAsB;CAW/B"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const plugin_base_1 = require("@gravity-platform/plugin-base");
|
|
4
|
+
const service_1 = require("../service");
|
|
5
|
+
class XSearchExecutor extends plugin_base_1.PromiseNode {
|
|
6
|
+
constructor() {
|
|
7
|
+
super("XSearch");
|
|
8
|
+
}
|
|
9
|
+
async validateConfig(config) {
|
|
10
|
+
if (!config.query?.trim()) {
|
|
11
|
+
return { success: false, errors: ["Query is required"] };
|
|
12
|
+
}
|
|
13
|
+
return { success: true };
|
|
14
|
+
}
|
|
15
|
+
async executeNode(inputs, config, context) {
|
|
16
|
+
const credentialContext = this.buildCredentialContext(context);
|
|
17
|
+
const creds = await context.api.getNodeCredentials(credentialContext, "xCredential");
|
|
18
|
+
const bearerToken = creds?.bearerToken;
|
|
19
|
+
if (!bearerToken) {
|
|
20
|
+
throw new Error("X Bearer Token not configured");
|
|
21
|
+
}
|
|
22
|
+
const query = config.query || inputs?.query;
|
|
23
|
+
const result = await (0, service_1.xSearchService)({ ...config, query }, bearerToken);
|
|
24
|
+
return {
|
|
25
|
+
__outputs: {
|
|
26
|
+
tweets: result.tweets,
|
|
27
|
+
resultCount: result.resultCount,
|
|
28
|
+
raw: result.raw,
|
|
29
|
+
},
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
buildCredentialContext(context) {
|
|
33
|
+
const { workflowId, executionId, nodeId } = this.validateAndGetContext(context);
|
|
34
|
+
return {
|
|
35
|
+
workflowId,
|
|
36
|
+
executionId,
|
|
37
|
+
nodeId,
|
|
38
|
+
nodeType: this.nodeType,
|
|
39
|
+
config: context.config,
|
|
40
|
+
credentials: context.credentials || {},
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
exports.default = XSearchExecutor;
|
|
45
|
+
//# sourceMappingURL=executor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../src/XSearch/node/executor.ts"],"names":[],"mappings":";;AAAA,+DAA8G;AAC9G,wCAAgE;AAEhE,MAAqB,eAAgB,SAAQ,yBAAW;IACtD;QACE,KAAK,CAAC,SAAS,CAAC,CAAC;IACnB,CAAC;IAES,KAAK,CAAC,cAAc,CAAC,MAAqB;QAClD,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC;YAC1B,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,mBAAmB,CAAC,EAAE,CAAC;QAC3D,CAAC;QACD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3B,CAAC;IAES,KAAK,CAAC,WAAW,CACzB,MAA2B,EAC3B,MAAqB,EACrB,OAA6B;QAE7B,MAAM,iBAAiB,GAAG,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;QAC/D,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,iBAAiB,EAAE,aAAa,CAAC,CAAC;QACrF,MAAM,WAAW,GAAG,KAAK,EAAE,WAAW,CAAC;QAEvC,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACnD,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,MAAM,EAAE,KAAK,CAAC;QAC5C,MAAM,MAAM,GAAG,MAAM,IAAA,wBAAc,EAAC,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,EAAE,WAAW,CAAC,CAAC;QAEvE,OAAO;YACL,SAAS,EAAE;gBACT,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,GAAG,EAAE,MAAM,CAAC,GAAG;aAChB;SACF,CAAC;IACJ,CAAC;IAEO,sBAAsB,CAAC,OAA6B;QAC1D,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;QAChF,OAAO;YACL,UAAU;YACV,WAAW;YACX,MAAM;YACN,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,EAAE;SACvC,CAAC;IACJ,CAAC;CACF;AAhDD,kCAgDC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/XSearch/node/index.ts"],"names":[],"mappings":"AACA,OAAO,eAAe,MAAM,YAAY,CAAC;AA4EzC,eAAO,MAAM,WAAW;;;CAKvB,CAAC"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.XSearchNode = void 0;
|
|
7
|
+
const plugin_base_1 = require("@gravity-platform/plugin-base");
|
|
8
|
+
const executor_1 = __importDefault(require("./executor"));
|
|
9
|
+
function createNodeDefinition() {
|
|
10
|
+
return {
|
|
11
|
+
packageVersion: "1.0.0",
|
|
12
|
+
type: "XSearch",
|
|
13
|
+
isService: false,
|
|
14
|
+
name: "X Search",
|
|
15
|
+
description: "Search recent X (Twitter) posts and return structured tweet data",
|
|
16
|
+
category: "Ingest",
|
|
17
|
+
color: "#000000",
|
|
18
|
+
logoUrl: "https://res.cloudinary.com/sonik/image/upload/v1777865512/gravity/icons/X_logo.jpg",
|
|
19
|
+
inputs: [
|
|
20
|
+
{
|
|
21
|
+
name: "query",
|
|
22
|
+
type: plugin_base_1.NodeInputType.STRING,
|
|
23
|
+
description: "Search query (overrides config if provided)",
|
|
24
|
+
required: false,
|
|
25
|
+
},
|
|
26
|
+
],
|
|
27
|
+
outputs: [
|
|
28
|
+
{
|
|
29
|
+
name: "tweets",
|
|
30
|
+
type: plugin_base_1.NodeInputType.ARRAY,
|
|
31
|
+
description: "Array of tweet objects",
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
name: "resultCount",
|
|
35
|
+
type: plugin_base_1.NodeInputType.NUMBER,
|
|
36
|
+
description: "Number of tweets returned",
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
name: "raw",
|
|
40
|
+
type: plugin_base_1.NodeInputType.STRING,
|
|
41
|
+
description: "Raw JSON response from X API",
|
|
42
|
+
},
|
|
43
|
+
],
|
|
44
|
+
configSchema: {
|
|
45
|
+
type: "object",
|
|
46
|
+
properties: {
|
|
47
|
+
query: {
|
|
48
|
+
type: "string",
|
|
49
|
+
title: "Search Query",
|
|
50
|
+
description: "X search query. Supports: from:user, #hashtag, -exclude, lang:en, OR (no parentheses). Wrap phrases in quotes e.g. \"Miro board\" lang:en -is:retweet",
|
|
51
|
+
},
|
|
52
|
+
maxResults: {
|
|
53
|
+
type: "number",
|
|
54
|
+
title: "Max Results",
|
|
55
|
+
description: "Number of tweets to return (1–100)",
|
|
56
|
+
default: 10,
|
|
57
|
+
minimum: 1,
|
|
58
|
+
maximum: 100,
|
|
59
|
+
},
|
|
60
|
+
tweetFields: {
|
|
61
|
+
type: "string",
|
|
62
|
+
title: "Tweet Fields",
|
|
63
|
+
description: "Comma-separated X API tweet fields to include",
|
|
64
|
+
default: "created_at,public_metrics,author_id",
|
|
65
|
+
},
|
|
66
|
+
},
|
|
67
|
+
required: ["query"],
|
|
68
|
+
"ui:order": ["query", "maxResults", "tweetFields"],
|
|
69
|
+
},
|
|
70
|
+
capabilities: { isTrigger: false },
|
|
71
|
+
serviceConnectors: [],
|
|
72
|
+
credentials: [
|
|
73
|
+
{
|
|
74
|
+
name: "xCredential",
|
|
75
|
+
required: true,
|
|
76
|
+
displayName: "X API Credentials",
|
|
77
|
+
description: "X API v2 Bearer Token",
|
|
78
|
+
},
|
|
79
|
+
],
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
exports.XSearchNode = {
|
|
83
|
+
get definition() {
|
|
84
|
+
return createNodeDefinition();
|
|
85
|
+
},
|
|
86
|
+
executor: executor_1.default,
|
|
87
|
+
};
|
|
88
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/XSearch/node/index.ts"],"names":[],"mappings":";;;;;;AAAA,+DAA2F;AAC3F,0DAAyC;AAEzC,SAAS,oBAAoB;IAC3B,OAAO;QACL,cAAc,EAAE,OAAO;QACvB,IAAI,EAAE,SAAS;QACf,SAAS,EAAE,KAAK;QAChB,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,kEAAkE;QAC/E,QAAQ,EAAE,QAAQ;QAClB,KAAK,EAAE,SAAS;QAChB,OAAO,EAAE,oFAAoF;QAC7F,MAAM,EAAE;YACN;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,2BAAa,CAAC,MAAM;gBAC1B,WAAW,EAAE,6CAA6C;gBAC1D,QAAQ,EAAE,KAAK;aAChB;SACF;QACD,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,2BAAa,CAAC,KAAK;gBACzB,WAAW,EAAE,wBAAwB;aACtC;YACD;gBACE,IAAI,EAAE,aAAa;gBACnB,IAAI,EAAE,2BAAa,CAAC,MAAM;gBAC1B,WAAW,EAAE,2BAA2B;aACzC;YACD;gBACE,IAAI,EAAE,KAAK;gBACX,IAAI,EAAE,2BAAa,CAAC,MAAM;gBAC1B,WAAW,EAAE,8BAA8B;aAC5C;SACF;QACD,YAAY,EAAE;YACZ,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,KAAK,EAAE;oBACL,IAAI,EAAE,QAAQ;oBACd,KAAK,EAAE,cAAc;oBACrB,WAAW,EAAE,uJAAuJ;iBACrK;gBACD,UAAU,EAAE;oBACV,IAAI,EAAE,QAAQ;oBACd,KAAK,EAAE,aAAa;oBACpB,WAAW,EAAE,oCAAoC;oBACjD,OAAO,EAAE,EAAE;oBACX,OAAO,EAAE,CAAC;oBACV,OAAO,EAAE,GAAG;iBACb;gBACD,WAAW,EAAE;oBACX,IAAI,EAAE,QAAQ;oBACd,KAAK,EAAE,cAAc;oBACrB,WAAW,EAAE,+CAA+C;oBAC5D,OAAO,EAAE,qCAAqC;iBAC/C;aACF;YACD,QAAQ,EAAE,CAAC,OAAO,CAAC;YACnB,UAAU,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,aAAa,CAAC;SACnD;QACD,YAAY,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE;QAClC,iBAAiB,EAAE,EAAE;QACrB,WAAW,EAAE;YACX;gBACE,IAAI,EAAE,aAAa;gBACnB,QAAQ,EAAE,IAAI;gBACd,WAAW,EAAE,mBAAmB;gBAChC,WAAW,EAAE,uBAAuB;aACrC;SACF;KACF,CAAC;AACJ,CAAC;AAEY,QAAA,WAAW,GAAG;IACzB,IAAI,UAAU;QACZ,OAAO,oBAAoB,EAAE,CAAC;IAChC,CAAC;IACD,QAAQ,EAAE,kBAAe;CAC1B,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export interface XSearchConfig {
|
|
2
|
+
query: string;
|
|
3
|
+
maxResults: number;
|
|
4
|
+
tweetFields: string;
|
|
5
|
+
}
|
|
6
|
+
export interface XTweet {
|
|
7
|
+
id: string;
|
|
8
|
+
text: string;
|
|
9
|
+
author_id?: string;
|
|
10
|
+
created_at?: string;
|
|
11
|
+
public_metrics?: {
|
|
12
|
+
retweet_count: number;
|
|
13
|
+
reply_count: number;
|
|
14
|
+
like_count: number;
|
|
15
|
+
impression_count: number;
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
export interface XSearchResult {
|
|
19
|
+
tweets: XTweet[];
|
|
20
|
+
resultCount: number;
|
|
21
|
+
raw: string;
|
|
22
|
+
}
|
|
23
|
+
export declare function xSearchService(config: XSearchConfig, bearerToken: string): Promise<XSearchResult>;
|
|
24
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/XSearch/service/index.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE;QACf,aAAa,EAAE,MAAM,CAAC;QACtB,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,MAAM,CAAC;QACnB,gBAAgB,EAAE,MAAM,CAAC;KAC1B,CAAC;CACH;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,wBAAsB,cAAc,CAClC,MAAM,EAAE,aAAa,EACrB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,aAAa,CAAC,CA8BxB"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.xSearchService = xSearchService;
|
|
4
|
+
async function xSearchService(config, bearerToken) {
|
|
5
|
+
const params = new URLSearchParams({
|
|
6
|
+
query: config.query,
|
|
7
|
+
max_results: String(Math.min(Math.max(config.maxResults ?? 10, 1), 100)),
|
|
8
|
+
"tweet.fields": config.tweetFields || "created_at,public_metrics,author_id",
|
|
9
|
+
});
|
|
10
|
+
const res = await fetch(`https://api.x.com/2/tweets/search/recent?${params.toString()}`, {
|
|
11
|
+
headers: {
|
|
12
|
+
Authorization: `Bearer ${bearerToken}`,
|
|
13
|
+
"Content-Type": "application/json",
|
|
14
|
+
},
|
|
15
|
+
});
|
|
16
|
+
if (!res.ok) {
|
|
17
|
+
const body = await res.text();
|
|
18
|
+
throw new Error(`X API error ${res.status}: ${body}`);
|
|
19
|
+
}
|
|
20
|
+
const json = await res.json();
|
|
21
|
+
const tweets = json.data ?? [];
|
|
22
|
+
return {
|
|
23
|
+
tweets,
|
|
24
|
+
resultCount: tweets.length,
|
|
25
|
+
raw: JSON.stringify(json),
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/XSearch/service/index.ts"],"names":[],"mappings":";;AAyBA,wCAiCC;AAjCM,KAAK,UAAU,cAAc,CAClC,MAAqB,EACrB,WAAmB;IAEnB,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC;QACjC,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACxE,cAAc,EAAE,MAAM,CAAC,WAAW,IAAI,qCAAqC;KAC5E,CAAC,CAAC;IAEH,MAAM,GAAG,GAAG,MAAM,KAAK,CACrB,4CAA4C,MAAM,CAAC,QAAQ,EAAE,EAAE,EAC/D;QACE,OAAO,EAAE;YACP,aAAa,EAAE,UAAU,WAAW,EAAE;YACtC,cAAc,EAAE,kBAAkB;SACnC;KACF,CACF,CAAC;IAEF,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,eAAe,GAAG,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC,CAAC;IACxD,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IAC9B,MAAM,MAAM,GAAa,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;IAEzC,OAAO;QACL,MAAM;QACN,WAAW,EAAE,MAAM,CAAC,MAAM;QAC1B,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;KAC1B,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export declare const XCredential: {
|
|
2
|
+
name: string;
|
|
3
|
+
displayName: string;
|
|
4
|
+
description: string;
|
|
5
|
+
properties: {
|
|
6
|
+
name: string;
|
|
7
|
+
displayName: string;
|
|
8
|
+
type: "string";
|
|
9
|
+
required: boolean;
|
|
10
|
+
secret: boolean;
|
|
11
|
+
description: string;
|
|
12
|
+
placeholder: string;
|
|
13
|
+
}[];
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/credentials/index.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW;;;;;;;;;;;;;CAevB,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.XCredential = void 0;
|
|
4
|
+
exports.XCredential = {
|
|
5
|
+
name: "xCredential",
|
|
6
|
+
displayName: "X (Twitter)",
|
|
7
|
+
description: "Credentials for X API v2",
|
|
8
|
+
properties: [
|
|
9
|
+
{
|
|
10
|
+
name: "bearerToken",
|
|
11
|
+
displayName: "Bearer Token",
|
|
12
|
+
type: "string",
|
|
13
|
+
required: true,
|
|
14
|
+
secret: true,
|
|
15
|
+
description: "X API v2 Bearer Token (app-only auth)",
|
|
16
|
+
placeholder: "AAAA...",
|
|
17
|
+
},
|
|
18
|
+
],
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/credentials/index.ts"],"names":[],"mappings":";;;AAAa,QAAA,WAAW,GAAG;IACzB,IAAI,EAAE,aAAa;IACnB,WAAW,EAAE,aAAa;IAC1B,WAAW,EAAE,0BAA0B;IACvC,UAAU,EAAE;QACV;YACE,IAAI,EAAE,aAAa;YACnB,WAAW,EAAE,cAAc;YAC3B,IAAI,EAAE,QAAiB;YACvB,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE,IAAI;YACZ,WAAW,EAAE,uCAAuC;YACpD,WAAW,EAAE,SAAS;SACvB;KACF;CACF,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,QAAA,MAAM,MAAM,uDAYV,CAAC;AAEH,eAAe,MAAM,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
const plugin_base_1 = require("@gravity-platform/plugin-base");
|
|
40
|
+
const package_json_1 = __importDefault(require("../package.json"));
|
|
41
|
+
const plugin = (0, plugin_base_1.createPlugin)({
|
|
42
|
+
name: package_json_1.default.name,
|
|
43
|
+
version: package_json_1.default.version,
|
|
44
|
+
description: package_json_1.default.description,
|
|
45
|
+
async setup(api) {
|
|
46
|
+
const { XSearchNode } = await Promise.resolve().then(() => __importStar(require("./XSearch/node")));
|
|
47
|
+
api.registerNode(XSearchNode);
|
|
48
|
+
const { XCredential } = await Promise.resolve().then(() => __importStar(require("./credentials")));
|
|
49
|
+
api.registerCredential(XCredential);
|
|
50
|
+
},
|
|
51
|
+
});
|
|
52
|
+
exports.default = plugin;
|
|
53
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+DAAoF;AACpF,mEAA0C;AAE1C,MAAM,MAAM,GAAG,IAAA,0BAAY,EAAC;IAC1B,IAAI,EAAE,sBAAW,CAAC,IAAI;IACtB,OAAO,EAAE,sBAAW,CAAC,OAAO;IAC5B,WAAW,EAAE,sBAAW,CAAC,WAAW;IAEpC,KAAK,CAAC,KAAK,CAAC,GAAqB;QAC/B,MAAM,EAAE,WAAW,EAAE,GAAG,wDAAa,gBAAgB,GAAC,CAAC;QACvD,GAAG,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;QAE9B,MAAM,EAAE,WAAW,EAAE,GAAG,wDAAa,eAAe,GAAC,CAAC;QACtD,GAAG,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC;IACtC,CAAC;CACF,CAAC,CAAC;AAEH,kBAAe,MAAM,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@gravity-platform/x-search",
|
|
3
|
+
"version": "1.0.1",
|
|
4
|
+
"description": "X (Twitter) search node for Gravity workflow system",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"files": [
|
|
8
|
+
"dist"
|
|
9
|
+
],
|
|
10
|
+
"scripts": {
|
|
11
|
+
"build": "tsc",
|
|
12
|
+
"clean": "rm -rf dist"
|
|
13
|
+
},
|
|
14
|
+
"dependencies": {
|
|
15
|
+
"@gravity-platform/plugin-base": "*"
|
|
16
|
+
},
|
|
17
|
+
"devDependencies": {
|
|
18
|
+
"typescript": "^5.0.0"
|
|
19
|
+
},
|
|
20
|
+
"publishConfig": {
|
|
21
|
+
"access": "public"
|
|
22
|
+
}
|
|
23
|
+
}
|