@xquik/tweetclaw 1.6.19 → 1.6.20

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.
@@ -40,19 +40,29 @@ async function handleTweetclaw(options) {
40
40
  try {
41
41
  const requestInfo = resolveCatalogRequest(params, { mppMode });
42
42
  const request = createProxiedRequest(baseUrl, credential, fetchFunction);
43
- const result = await Promise.race([
44
- request(requestInfo.path, {
45
- ...(requestInfo.body === undefined ? {} : { body: requestInfo.body }),
46
- method: requestInfo.method,
47
- ...(requestInfo.query === undefined ? {} : { query: requestInfo.query }),
48
- }),
49
- new Promise((_resolve, reject) => {
50
- setTimeout(() => {
51
- reject(new Error(`Execution timed out after ${String(timeoutMs / MS_PER_SECOND)}s`));
52
- }, timeoutMs);
53
- }),
54
- ]);
55
- return successResult(result);
43
+ let rejectTimeout = (reason) => {
44
+ throw reason;
45
+ };
46
+ const timeoutPromise = new Promise((_resolve, reject) => {
47
+ rejectTimeout = reject;
48
+ });
49
+ const timeoutId = setTimeout(() => {
50
+ rejectTimeout(new Error(`Execution timed out after ${String(timeoutMs / MS_PER_SECOND)}s`));
51
+ }, timeoutMs);
52
+ try {
53
+ const result = await Promise.race([
54
+ request(requestInfo.path, {
55
+ ...(requestInfo.body === undefined ? {} : { body: requestInfo.body }),
56
+ method: requestInfo.method,
57
+ ...(requestInfo.query === undefined ? {} : { query: requestInfo.query }),
58
+ }),
59
+ timeoutPromise,
60
+ ]);
61
+ return successResult(result);
62
+ }
63
+ finally {
64
+ clearTimeout(timeoutId);
65
+ }
56
66
  }
57
67
  catch (error) {
58
68
  return errorResult(error);
@@ -1 +1 @@
1
- {"version":3,"file":"tweetclaw.js","sourceRoot":"","sources":["../../src/tools/tweetclaw.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGzD,MAAM,mBAAmB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+B1B,CAAC;AAEH,MAAM,oBAAoB,GAAG,MAAM,CAAC;AACpC,MAAM,aAAa,GAAG,IAAI,CAAC;AAW3B,KAAK,UAAU,eAAe,CAAC,OAAmC;IAChE,MAAM,EACJ,OAAO,EACP,UAAU,EACV,aAAa,EACb,OAAO,GAAG,KAAK,EACf,MAAM,EACN,SAAS,GAAG,oBAAoB,GACjC,GAAG,OAAO,CAAC;IAEZ,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,qBAAqB,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;QAC/D,MAAM,OAAO,GAAoB,oBAAoB,CAAC,OAAO,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;QAC1F,MAAM,MAAM,GAAY,MAAM,OAAO,CAAC,IAAI,CAAC;YACzC,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE;gBACxB,GAAG,CAAC,WAAW,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,CAAC,IAAI,EAAE,CAAC;gBACrE,MAAM,EAAE,WAAW,CAAC,MAAM;gBAC1B,GAAG,CAAC,WAAW,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,EAAE,CAAC;aACzE,CAAC;YACF,IAAI,OAAO,CAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE;gBACtC,UAAU,CAAC,GAAG,EAAE;oBACd,MAAM,CAAC,IAAI,KAAK,CAAC,6BAA6B,MAAM,CAAC,SAAS,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC;gBACvF,CAAC,EAAE,SAAS,CAAC,CAAC;YAChB,CAAC,CAAC;SACH,CAAC,CAAC;QAEH,OAAO,aAAa,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;AACH,CAAC;AAED,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,aAAa,EAAE,CAAC"}
1
+ {"version":3,"file":"tweetclaw.js","sourceRoot":"","sources":["../../src/tools/tweetclaw.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGzD,MAAM,mBAAmB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+B1B,CAAC;AAEH,MAAM,oBAAoB,GAAG,MAAM,CAAC;AACpC,MAAM,aAAa,GAAG,IAAI,CAAC;AAW3B,KAAK,UAAU,eAAe,CAAC,OAAmC;IAChE,MAAM,EACJ,OAAO,EACP,UAAU,EACV,aAAa,EACb,OAAO,GAAG,KAAK,EACf,MAAM,EACN,SAAS,GAAG,oBAAoB,GACjC,GAAG,OAAO,CAAC;IAEZ,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,qBAAqB,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;QAC/D,MAAM,OAAO,GAAoB,oBAAoB,CAAC,OAAO,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;QAC1F,IAAI,aAAa,GAA4B,CAAC,MAAM,EAAE,EAAE;YACtD,MAAM,MAAM,CAAC;QACf,CAAC,CAAC;QACF,MAAM,cAAc,GAAG,IAAI,OAAO,CAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE;YAC7D,aAAa,GAAG,MAAM,CAAC;QACzB,CAAC,CAAC,CAAC;QACH,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE;YAChC,aAAa,CAAC,IAAI,KAAK,CAAC,6BAA6B,MAAM,CAAC,SAAS,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC;QAC9F,CAAC,EAAE,SAAS,CAAC,CAAC;QAEd,IAAI,CAAC;YACH,MAAM,MAAM,GAAY,MAAM,OAAO,CAAC,IAAI,CAAC;gBACzC,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE;oBACxB,GAAG,CAAC,WAAW,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,CAAC,IAAI,EAAE,CAAC;oBACrE,MAAM,EAAE,WAAW,CAAC,MAAM;oBAC1B,GAAG,CAAC,WAAW,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,EAAE,CAAC;iBACzE,CAAC;gBACF,cAAc;aACf,CAAC,CAAC;YAEH,OAAO,aAAa,CAAC,MAAM,CAAC,CAAC;QAC/B,CAAC;gBAAS,CAAC;YACT,YAAY,CAAC,SAAS,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;AACH,CAAC;AAED,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,aAAa,EAAE,CAAC"}
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "tweetclaw",
3
3
  "name": "TweetClaw",
4
- "version": "1.6.19",
4
+ "version": "1.6.20",
5
5
  "description": "Post tweets, reply, like, retweet, follow, DM, search, and monitor X/Twitter through structured Xquik endpoints.",
6
6
  "activation": {
7
7
  "onStartup": false,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xquik/tweetclaw",
3
- "version": "1.6.19",
3
+ "version": "1.6.20",
4
4
  "description": "Post tweets, reply, like, retweet, follow, DM & more from OpenClaw through structured Xquik endpoints.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -32,7 +32,7 @@
32
32
  },
33
33
  "install": {
34
34
  "defaultChoice": "npm",
35
- "npmSpec": "@xquik/tweetclaw@1.6.19",
35
+ "npmSpec": "@xquik/tweetclaw@1.6.20",
36
36
  "minHostVersion": ">=2026.5.4"
37
37
  }
38
38
  },
@@ -61,20 +61,30 @@ async function handleTweetclaw(options: Readonly<TweetclawOptions>): Promise<Too
61
61
  try {
62
62
  const requestInfo = resolveCatalogRequest(params, { mppMode });
63
63
  const request: RequestFunction = createProxiedRequest(baseUrl, credential, fetchFunction);
64
- const result: unknown = await Promise.race([
65
- request(requestInfo.path, {
66
- ...(requestInfo.body === undefined ? {} : { body: requestInfo.body }),
67
- method: requestInfo.method,
68
- ...(requestInfo.query === undefined ? {} : { query: requestInfo.query }),
69
- }),
70
- new Promise<never>((_resolve, reject) => {
71
- setTimeout(() => {
72
- reject(new Error(`Execution timed out after ${String(timeoutMs / MS_PER_SECOND)}s`));
73
- }, timeoutMs);
74
- }),
75
- ]);
64
+ let rejectTimeout: (reason: Error) => void = (reason) => {
65
+ throw reason;
66
+ };
67
+ const timeoutPromise = new Promise<never>((_resolve, reject) => {
68
+ rejectTimeout = reject;
69
+ });
70
+ const timeoutId = setTimeout(() => {
71
+ rejectTimeout(new Error(`Execution timed out after ${String(timeoutMs / MS_PER_SECOND)}s`));
72
+ }, timeoutMs);
76
73
 
77
- return successResult(result);
74
+ try {
75
+ const result: unknown = await Promise.race([
76
+ request(requestInfo.path, {
77
+ ...(requestInfo.body === undefined ? {} : { body: requestInfo.body }),
78
+ method: requestInfo.method,
79
+ ...(requestInfo.query === undefined ? {} : { query: requestInfo.query }),
80
+ }),
81
+ timeoutPromise,
82
+ ]);
83
+
84
+ return successResult(result);
85
+ } finally {
86
+ clearTimeout(timeoutId);
87
+ }
78
88
  } catch (error: unknown) {
79
89
  return errorResult(error);
80
90
  }