@opentabs-dev/plugin-sdk 0.0.15 → 0.0.17

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/dom.d.ts CHANGED
@@ -15,7 +15,7 @@ export interface ObserveDOMOptions {
15
15
  * Uses MutationObserver for efficient detection, falls back to an
16
16
  * initial querySelector check for elements already present.
17
17
  */
18
- export declare const waitForSelector: (selector: string, opts?: WaitForSelectorOptions) => Promise<Element>;
18
+ export declare const waitForSelector: <T extends Element = Element>(selector: string, opts?: WaitForSelectorOptions) => Promise<T>;
19
19
  /**
20
20
  * Waits for an element matching `selector` to be removed from the DOM.
21
21
  * Resolves immediately if no matching element exists.
package/dist/dom.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"dom.d.ts","sourceRoot":"","sources":["../src/dom.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,sBAAsB;IACrC,+CAA+C;IAC/C,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,0DAA0D;IAC1D,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,mDAAmD;IACnD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,+CAA+C;IAC/C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;;GAIG;AACH,eAAO,MAAM,eAAe,GAAI,UAAU,MAAM,EAAE,OAAO,sBAAsB,KAAG,OAAO,CAAC,OAAO,CA+BhG,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,sBAAsB,GAAI,UAAU,MAAM,EAAE,OAAO,sBAAsB,KAAG,OAAO,CAAC,IAAI,CA6BpG,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAAI,CAAC,SAAS,OAAO,GAAG,OAAO,EAAE,UAAU,MAAM,KAAG,CAAC,EAC9B,CAAC;AAErD;;;GAGG;AACH,eAAO,MAAM,cAAc,GAAI,UAAU,MAAM,KAAG,MAAM,GAAG,IAI1D,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,UAAU,GACrB,UAAU,MAAM,EAChB,UAAU,CAAC,SAAS,EAAE,cAAc,EAAE,EAAE,QAAQ,EAAE,gBAAgB,KAAK,IAAI,EAC3E,UAAU,iBAAiB,KAC1B,CAAC,MAAM,IAAI,CAcb,CAAC"}
1
+ {"version":3,"file":"dom.d.ts","sourceRoot":"","sources":["../src/dom.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,sBAAsB;IACrC,+CAA+C;IAC/C,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,0DAA0D;IAC1D,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,mDAAmD;IACnD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,+CAA+C;IAC/C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;;GAIG;AACH,eAAO,MAAM,eAAe,GAAI,CAAC,SAAS,OAAO,GAAG,OAAO,EACzD,UAAU,MAAM,EAChB,OAAO,sBAAsB,KAC5B,OAAO,CAAC,CAAC,CA+BX,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,sBAAsB,GAAI,UAAU,MAAM,EAAE,OAAO,sBAAsB,KAAG,OAAO,CAAC,IAAI,CA6BpG,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAAI,CAAC,SAAS,OAAO,GAAG,OAAO,EAAE,UAAU,MAAM,KAAG,CAAC,EAC9B,CAAC;AAErD;;;GAGG;AACH,eAAO,MAAM,cAAc,GAAI,UAAU,MAAM,KAAG,MAAM,GAAG,IAI1D,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,UAAU,GACrB,UAAU,MAAM,EAChB,UAAU,CAAC,SAAS,EAAE,cAAc,EAAE,EAAE,QAAQ,EAAE,gBAAgB,KAAK,IAAI,EAC3E,UAAU,iBAAiB,KAC1B,CAAC,MAAM,IAAI,CAcb,CAAC"}
package/dist/dom.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"dom.js","sourceRoot":"","sources":["../src/dom.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dom.js","sourceRoot":"","sources":["../src/dom.ts"],"names":[],"mappings":"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"}
package/dist/errors.d.ts CHANGED
@@ -22,17 +22,17 @@ export declare class ToolError extends Error {
22
22
  constructor(message: string,
23
23
  /** Machine-readable error code (e.g., 'CHANNEL_NOT_FOUND') */
24
24
  code: string, opts?: ToolErrorOptions);
25
- /** Authentication or authorization error (not retryable). */
26
- static auth(message: string): ToolError;
25
+ /** Authentication or authorization error (not retryable). Accepts an optional domain-specific code. */
26
+ static auth(message: string, code?: string): ToolError;
27
27
  /** Resource not found (not retryable). Accepts an optional domain-specific code. */
28
28
  static notFound(message: string, code?: string): ToolError;
29
- /** Rate limited (retryable). Accepts an optional retry delay in milliseconds. */
30
- static rateLimited(message: string, retryAfterMs?: number): ToolError;
31
- /** Input validation error (not retryable). */
32
- static validation(message: string): ToolError;
33
- /** Operation timed out (retryable). */
34
- static timeout(message: string): ToolError;
35
- /** Internal/unexpected error (not retryable). */
36
- static internal(message: string): ToolError;
29
+ /** Rate limited (retryable). Accepts an optional retry delay in milliseconds and an optional domain-specific code. */
30
+ static rateLimited(message: string, retryAfterMs?: number, code?: string): ToolError;
31
+ /** Input validation error (not retryable). Accepts an optional domain-specific code. */
32
+ static validation(message: string, code?: string): ToolError;
33
+ /** Operation timed out (retryable). Accepts an optional domain-specific code. */
34
+ static timeout(message: string, code?: string): ToolError;
35
+ /** Internal/unexpected error (not retryable). Accepts an optional domain-specific code. */
36
+ static internal(message: string, code?: string): ToolError;
37
37
  }
38
38
  //# sourceMappingURL=errors.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAIA,+DAA+D;AAC/D,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,YAAY,GAAG,WAAW,GAAG,YAAY,GAAG,UAAU,GAAG,SAAS,CAAC;AAExG,kDAAkD;AAClD,MAAM,WAAW,gBAAgB;IAC/B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,aAAa,CAAC;CAC1B;AAED;;;GAGG;AACH,qBAAa,SAAU,SAAQ,KAAK;IAUhC,8DAA8D;aAC9C,IAAI,EAAE,MAAM;IAV9B,2DAA2D;IAC3D,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,wDAAwD;IACxD,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1C,0DAA0D;IAC1D,QAAQ,CAAC,QAAQ,EAAE,aAAa,GAAG,SAAS,CAAC;gBAG3C,OAAO,EAAE,MAAM;IACf,8DAA8D;IAC9C,IAAI,EAAE,MAAM,EAC5B,IAAI,CAAC,EAAE,gBAAgB;IASzB,6DAA6D;IAC7D,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS;IAIvC,oFAAoF;IACpF,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS;IAI1D,iFAAiF;IACjF,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS;IAIrE,8CAA8C;IAC9C,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS;IAI7C,uCAAuC;IACvC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS;IAI1C,iDAAiD;IACjD,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS;CAG5C"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAIA,+DAA+D;AAC/D,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,YAAY,GAAG,WAAW,GAAG,YAAY,GAAG,UAAU,GAAG,SAAS,CAAC;AAExG,kDAAkD;AAClD,MAAM,WAAW,gBAAgB;IAC/B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,aAAa,CAAC;CAC1B;AAED;;;GAGG;AACH,qBAAa,SAAU,SAAQ,KAAK;IAUhC,8DAA8D;aAC9C,IAAI,EAAE,MAAM;IAV9B,2DAA2D;IAC3D,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,wDAAwD;IACxD,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1C,0DAA0D;IAC1D,QAAQ,CAAC,QAAQ,EAAE,aAAa,GAAG,SAAS,CAAC;gBAG3C,OAAO,EAAE,MAAM;IACf,8DAA8D;IAC9C,IAAI,EAAE,MAAM,EAC5B,IAAI,CAAC,EAAE,gBAAgB;IASzB,uGAAuG;IACvG,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS;IAItD,oFAAoF;IACpF,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS;IAI1D,sHAAsH;IACtH,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS;IAIpF,wFAAwF;IACxF,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS;IAI5D,iFAAiF;IACjF,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS;IAIzD,2FAA2F;IAC3F,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS;CAG3D"}
package/dist/errors.js CHANGED
@@ -23,29 +23,29 @@ export class ToolError extends Error {
23
23
  this.retryAfterMs = opts?.retryAfterMs;
24
24
  this.category = opts?.category;
25
25
  }
26
- /** Authentication or authorization error (not retryable). */
27
- static auth(message) {
28
- return new ToolError(message, 'AUTH_ERROR', { category: 'auth', retryable: false });
26
+ /** Authentication or authorization error (not retryable). Accepts an optional domain-specific code. */
27
+ static auth(message, code) {
28
+ return new ToolError(message, code ?? 'AUTH_ERROR', { category: 'auth', retryable: false });
29
29
  }
30
30
  /** Resource not found (not retryable). Accepts an optional domain-specific code. */
31
31
  static notFound(message, code) {
32
32
  return new ToolError(message, code ?? 'NOT_FOUND', { category: 'not_found', retryable: false });
33
33
  }
34
- /** Rate limited (retryable). Accepts an optional retry delay in milliseconds. */
35
- static rateLimited(message, retryAfterMs) {
36
- return new ToolError(message, 'RATE_LIMITED', { category: 'rate_limit', retryable: true, retryAfterMs });
34
+ /** Rate limited (retryable). Accepts an optional retry delay in milliseconds and an optional domain-specific code. */
35
+ static rateLimited(message, retryAfterMs, code) {
36
+ return new ToolError(message, code ?? 'RATE_LIMITED', { category: 'rate_limit', retryable: true, retryAfterMs });
37
37
  }
38
- /** Input validation error (not retryable). */
39
- static validation(message) {
40
- return new ToolError(message, 'VALIDATION_ERROR', { category: 'validation', retryable: false });
38
+ /** Input validation error (not retryable). Accepts an optional domain-specific code. */
39
+ static validation(message, code) {
40
+ return new ToolError(message, code ?? 'VALIDATION_ERROR', { category: 'validation', retryable: false });
41
41
  }
42
- /** Operation timed out (retryable). */
43
- static timeout(message) {
44
- return new ToolError(message, 'TIMEOUT', { category: 'timeout', retryable: true });
42
+ /** Operation timed out (retryable). Accepts an optional domain-specific code. */
43
+ static timeout(message, code) {
44
+ return new ToolError(message, code ?? 'TIMEOUT', { category: 'timeout', retryable: true });
45
45
  }
46
- /** Internal/unexpected error (not retryable). */
47
- static internal(message) {
48
- return new ToolError(message, 'INTERNAL_ERROR', { category: 'internal', retryable: false });
46
+ /** Internal/unexpected error (not retryable). Accepts an optional domain-specific code. */
47
+ static internal(message, code) {
48
+ return new ToolError(message, code ?? 'INTERNAL_ERROR', { category: 'internal', retryable: false });
49
49
  }
50
50
  }
51
51
  //# sourceMappingURL=errors.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,iCAAiC;AACjC,8EAA8E;AAY9E;;;GAGG;AACH,MAAM,OAAO,SAAU,SAAQ,KAAK;IAWhB;IAVlB,2DAA2D;IAClD,SAAS,CAAU;IAC5B,wDAAwD;IAC/C,YAAY,CAAqB;IAC1C,0DAA0D;IACjD,QAAQ,CAA4B;IAE7C,YACE,OAAe;IACf,8DAA8D;IAC9C,IAAY,EAC5B,IAAuB;QAEvB,KAAK,CAAC,OAAO,CAAC,CAAC;QAHC,SAAI,GAAJ,IAAI,CAAQ;QAI5B,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;QACxB,IAAI,CAAC,SAAS,GAAG,IAAI,EAAE,SAAS,IAAI,KAAK,CAAC;QAC1C,IAAI,CAAC,YAAY,GAAG,IAAI,EAAE,YAAY,CAAC;QACvC,IAAI,CAAC,QAAQ,GAAG,IAAI,EAAE,QAAQ,CAAC;IACjC,CAAC;IAED,6DAA6D;IAC7D,MAAM,CAAC,IAAI,CAAC,OAAe;QACzB,OAAO,IAAI,SAAS,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;IACtF,CAAC;IAED,oFAAoF;IACpF,MAAM,CAAC,QAAQ,CAAC,OAAe,EAAE,IAAa;QAC5C,OAAO,IAAI,SAAS,CAAC,OAAO,EAAE,IAAI,IAAI,WAAW,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;IAClG,CAAC;IAED,iFAAiF;IACjF,MAAM,CAAC,WAAW,CAAC,OAAe,EAAE,YAAqB;QACvD,OAAO,IAAI,SAAS,CAAC,OAAO,EAAE,cAAc,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;IAC3G,CAAC;IAED,8CAA8C;IAC9C,MAAM,CAAC,UAAU,CAAC,OAAe;QAC/B,OAAO,IAAI,SAAS,CAAC,OAAO,EAAE,kBAAkB,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;IAClG,CAAC;IAED,uCAAuC;IACvC,MAAM,CAAC,OAAO,CAAC,OAAe;QAC5B,OAAO,IAAI,SAAS,CAAC,OAAO,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACrF,CAAC;IAED,iDAAiD;IACjD,MAAM,CAAC,QAAQ,CAAC,OAAe;QAC7B,OAAO,IAAI,SAAS,CAAC,OAAO,EAAE,gBAAgB,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;IAC9F,CAAC;CACF"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,iCAAiC;AACjC,8EAA8E;AAY9E;;;GAGG;AACH,MAAM,OAAO,SAAU,SAAQ,KAAK;IAWhB;IAVlB,2DAA2D;IAClD,SAAS,CAAU;IAC5B,wDAAwD;IAC/C,YAAY,CAAqB;IAC1C,0DAA0D;IACjD,QAAQ,CAA4B;IAE7C,YACE,OAAe;IACf,8DAA8D;IAC9C,IAAY,EAC5B,IAAuB;QAEvB,KAAK,CAAC,OAAO,CAAC,CAAC;QAHC,SAAI,GAAJ,IAAI,CAAQ;QAI5B,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;QACxB,IAAI,CAAC,SAAS,GAAG,IAAI,EAAE,SAAS,IAAI,KAAK,CAAC;QAC1C,IAAI,CAAC,YAAY,GAAG,IAAI,EAAE,YAAY,CAAC;QACvC,IAAI,CAAC,QAAQ,GAAG,IAAI,EAAE,QAAQ,CAAC;IACjC,CAAC;IAED,uGAAuG;IACvG,MAAM,CAAC,IAAI,CAAC,OAAe,EAAE,IAAa;QACxC,OAAO,IAAI,SAAS,CAAC,OAAO,EAAE,IAAI,IAAI,YAAY,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;IAC9F,CAAC;IAED,oFAAoF;IACpF,MAAM,CAAC,QAAQ,CAAC,OAAe,EAAE,IAAa;QAC5C,OAAO,IAAI,SAAS,CAAC,OAAO,EAAE,IAAI,IAAI,WAAW,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;IAClG,CAAC;IAED,sHAAsH;IACtH,MAAM,CAAC,WAAW,CAAC,OAAe,EAAE,YAAqB,EAAE,IAAa;QACtE,OAAO,IAAI,SAAS,CAAC,OAAO,EAAE,IAAI,IAAI,cAAc,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;IACnH,CAAC;IAED,wFAAwF;IACxF,MAAM,CAAC,UAAU,CAAC,OAAe,EAAE,IAAa;QAC9C,OAAO,IAAI,SAAS,CAAC,OAAO,EAAE,IAAI,IAAI,kBAAkB,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;IAC1G,CAAC;IAED,iFAAiF;IACjF,MAAM,CAAC,OAAO,CAAC,OAAe,EAAE,IAAa;QAC3C,OAAO,IAAI,SAAS,CAAC,OAAO,EAAE,IAAI,IAAI,SAAS,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7F,CAAC;IAED,2FAA2F;IAC3F,MAAM,CAAC,QAAQ,CAAC,OAAe,EAAE,IAAa;QAC5C,OAAO,IAAI,SAAS,CAAC,OAAO,EAAE,IAAI,IAAI,gBAAgB,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;IACtG,CAAC;CACF"}
package/dist/fetch.d.ts CHANGED
@@ -1,21 +1,100 @@
1
+ import { ToolError } from './errors.js';
2
+ import type { z } from 'zod';
1
3
  export interface FetchFromPageOptions extends RequestInit {
2
4
  /** Request timeout in milliseconds (default: 30000) */
3
5
  timeout?: number;
4
6
  }
7
+ /** Maps an HTTP error response to a ToolError with the appropriate category. */
8
+ export declare const httpStatusToToolError: (response: Response, message: string) => ToolError;
9
+ /** Parses a Retry-After header value (seconds or HTTP-date) into milliseconds. */
10
+ export declare const parseRetryAfterMs: (value: string) => number | undefined;
5
11
  /**
6
12
  * Fetches a URL using the page's authenticated session (credentials: 'include').
7
13
  * Provides built-in timeout via AbortSignal and throws a descriptive ToolError
8
14
  * on non-ok HTTP status codes.
9
15
  */
10
16
  export declare const fetchFromPage: (url: string, init?: FetchFromPageOptions) => Promise<Response>;
17
+ /** Shared implementation for fetchJSON and postJSON — fetches, parses JSON, optionally validates. */
18
+ export declare const fetchJSONImpl: (url: string, init?: FetchFromPageOptions, schema?: z.ZodType) => Promise<unknown>;
19
+ /**
20
+ * Overloaded call signature for fetchJSON — validates against a Zod schema
21
+ * when provided, or returns an unchecked cast when omitted.
22
+ */
23
+ export interface FetchJSON {
24
+ /** Fetch JSON and validate against a Zod schema. Returns the validated, typed result. */
25
+ <T extends z.ZodType>(url: string, init: FetchFromPageOptions | undefined, schema: T): Promise<z.infer<T>>;
26
+ /** Fetch JSON with an unchecked cast to T (backward compatible). */
27
+ <T>(url: string, init?: FetchFromPageOptions): Promise<T>;
28
+ }
11
29
  /**
12
30
  * Fetches a URL and parses the response as JSON. Uses the page's session
13
31
  * cookies (credentials: 'include') and provides timeout + error handling.
32
+ * When a Zod schema is provided as the third argument, the parsed JSON is
33
+ * validated against it and a ToolError.validation is thrown on failure.
14
34
  */
15
- export declare const fetchJSON: <T>(url: string, init?: FetchFromPageOptions) => Promise<T>;
35
+ export declare const fetchJSON: FetchJSON;
36
+ /**
37
+ * Overloaded call signature for postJSON — validates against a Zod schema
38
+ * when provided, or returns an unchecked cast when omitted.
39
+ */
40
+ export interface PostJSON {
41
+ /** POST JSON and validate the response against a Zod schema. Returns the validated, typed result. */
42
+ <T extends z.ZodType>(url: string, body: unknown, init: FetchFromPageOptions | undefined, schema: T): Promise<z.infer<T>>;
43
+ /** POST JSON with an unchecked cast to T (backward compatible). */
44
+ <T>(url: string, body: unknown, init?: FetchFromPageOptions): Promise<T>;
45
+ }
16
46
  /**
17
47
  * Convenience wrapper for POST requests with a JSON body. Sets Content-Type,
18
- * stringifies the body, and parses the JSON response.
48
+ * stringifies the body, and parses the JSON response. When a Zod schema is
49
+ * provided as the fourth argument, the parsed JSON is validated against it.
50
+ */
51
+ export declare const postJSON: PostJSON;
52
+ /**
53
+ * Overloaded call signature for putJSON — validates against a Zod schema
54
+ * when provided, or returns an unchecked cast when omitted.
55
+ */
56
+ export interface PutJSON {
57
+ /** PUT JSON and validate the response against a Zod schema. Returns the validated, typed result. */
58
+ <T extends z.ZodType>(url: string, body: unknown, init: FetchFromPageOptions | undefined, schema: T): Promise<z.infer<T>>;
59
+ /** PUT JSON with an unchecked cast to T (backward compatible). */
60
+ <T>(url: string, body: unknown, init?: FetchFromPageOptions): Promise<T>;
61
+ }
62
+ /**
63
+ * Convenience wrapper for PUT requests with a JSON body. Sets Content-Type,
64
+ * stringifies the body, and parses the JSON response. When a Zod schema is
65
+ * provided as the fourth argument, the parsed JSON is validated against it.
66
+ */
67
+ export declare const putJSON: PutJSON;
68
+ /**
69
+ * Overloaded call signature for patchJSON — validates against a Zod schema
70
+ * when provided, or returns an unchecked cast when omitted.
71
+ */
72
+ export interface PatchJSON {
73
+ /** PATCH JSON and validate the response against a Zod schema. Returns the validated, typed result. */
74
+ <T extends z.ZodType>(url: string, body: unknown, init: FetchFromPageOptions | undefined, schema: T): Promise<z.infer<T>>;
75
+ /** PATCH JSON with an unchecked cast to T (backward compatible). */
76
+ <T>(url: string, body: unknown, init?: FetchFromPageOptions): Promise<T>;
77
+ }
78
+ /**
79
+ * Convenience wrapper for PATCH requests with a JSON body. Sets Content-Type,
80
+ * stringifies the body, and parses the JSON response. When a Zod schema is
81
+ * provided as the fourth argument, the parsed JSON is validated against it.
82
+ */
83
+ export declare const patchJSON: PatchJSON;
84
+ /**
85
+ * Overloaded call signature for deleteJSON — validates against a Zod schema
86
+ * when provided, or returns an unchecked cast when omitted.
87
+ */
88
+ export interface DeleteJSON {
89
+ /** DELETE and validate the response against a Zod schema. Returns the validated, typed result. */
90
+ <T extends z.ZodType>(url: string, init: FetchFromPageOptions | undefined, schema: T): Promise<z.infer<T>>;
91
+ /** DELETE with an unchecked cast to T (backward compatible). */
92
+ <T>(url: string, init?: FetchFromPageOptions): Promise<T>;
93
+ }
94
+ /**
95
+ * Convenience wrapper for DELETE requests. Parses the JSON response.
96
+ * When a Zod schema is provided as the third argument, the parsed JSON
97
+ * is validated against it.
19
98
  */
20
- export declare const postJSON: <T>(url: string, body: unknown, init?: FetchFromPageOptions) => Promise<T>;
99
+ export declare const deleteJSON: DeleteJSON;
21
100
  //# sourceMappingURL=fetch.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../src/fetch.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,oBAAqB,SAAQ,WAAW;IACvD,uDAAuD;IACvD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;GAIG;AACH,eAAO,MAAM,aAAa,GAAU,KAAK,MAAM,EAAE,OAAO,oBAAoB,KAAG,OAAO,CAAC,QAAQ,CAgC9F,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,SAAS,GAAU,CAAC,EAAE,KAAK,MAAM,EAAE,OAAO,oBAAoB,KAAG,OAAO,CAAC,CAAC,CAQtF,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,QAAQ,GAAU,CAAC,EAAE,KAAK,MAAM,EAAE,MAAM,OAAO,EAAE,OAAO,oBAAoB,KAAG,OAAO,CAAC,CAAC,CAQpG,CAAC"}
1
+ {"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../src/fetch.ts"],"names":[],"mappings":"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"}
package/dist/fetch.js CHANGED
@@ -2,6 +2,35 @@
2
2
  // Fetch utilities for plugin authors
3
3
  // ---------------------------------------------------------------------------
4
4
  import { ToolError } from './errors.js';
5
+ /** Maps an HTTP error response to a ToolError with the appropriate category. */
6
+ export const httpStatusToToolError = (response, message) => {
7
+ const status = response.status;
8
+ if (status === 401 || status === 403) {
9
+ return ToolError.auth(message);
10
+ }
11
+ if (status === 404) {
12
+ return ToolError.notFound(message);
13
+ }
14
+ if (status === 429) {
15
+ const retryAfter = response.headers.get('Retry-After');
16
+ const retryAfterMs = retryAfter !== null ? parseRetryAfterMs(retryAfter) : undefined;
17
+ return ToolError.rateLimited(message, retryAfterMs);
18
+ }
19
+ return new ToolError(message, 'http_error', { category: 'internal' });
20
+ };
21
+ /** Parses a Retry-After header value (seconds or HTTP-date) into milliseconds. */
22
+ export const parseRetryAfterMs = (value) => {
23
+ const seconds = Number(value);
24
+ if (!Number.isNaN(seconds) && seconds >= 0) {
25
+ return seconds * 1000;
26
+ }
27
+ const date = Date.parse(value);
28
+ if (!Number.isNaN(date)) {
29
+ const ms = date - Date.now();
30
+ return ms > 0 ? ms : undefined;
31
+ }
32
+ return undefined;
33
+ };
5
34
  /**
6
35
  * Fetches a URL using the page's authenticated session (credentials: 'include').
7
36
  * Provides built-in timeout via AbortSignal and throws a descriptive ToolError
@@ -21,43 +50,92 @@ export const fetchFromPage = async (url, init) => {
21
50
  }
22
51
  catch (error) {
23
52
  if (error instanceof DOMException && error.name === 'TimeoutError') {
24
- throw new ToolError(`fetchFromPage: request timed out after ${timeout}ms for ${url}`, 'timeout');
53
+ throw ToolError.timeout(`fetchFromPage: request timed out after ${timeout}ms for ${url}`);
25
54
  }
26
55
  if (error instanceof DOMException && error.name === 'AbortError') {
27
56
  throw new ToolError(`fetchFromPage: request aborted for ${url}`, 'aborted');
28
57
  }
29
- throw new ToolError(`fetchFromPage: network error for ${url}: ${error instanceof Error ? error.message : String(error)}`, 'network_error');
58
+ throw new ToolError(`fetchFromPage: network error for ${url}: ${error instanceof Error ? error.message : String(error)}`, 'network_error', { category: 'internal', retryable: true });
30
59
  }
31
60
  if (!response.ok) {
32
61
  const errorText = await response.text().catch(() => response.statusText);
33
- throw new ToolError(`fetchFromPage: HTTP ${response.status} for ${url}: ${errorText}`, 'http_error');
62
+ const msg = `fetchFromPage: HTTP ${response.status} for ${url}: ${errorText}`;
63
+ throw httpStatusToToolError(response, msg);
34
64
  }
35
65
  return response;
36
66
  };
37
- /**
38
- * Fetches a URL and parses the response as JSON. Uses the page's session
39
- * cookies (credentials: 'include') and provides timeout + error handling.
40
- */
41
- export const fetchJSON = async (url, init) => {
67
+ /** Shared implementation for fetchJSON and postJSON — fetches, parses JSON, optionally validates. */
68
+ export const fetchJSONImpl = async (url, init, schema) => {
42
69
  const response = await fetchFromPage(url, init);
70
+ let data;
43
71
  try {
44
- return (await response.json());
72
+ data = await response.json();
45
73
  }
46
74
  catch {
47
- throw new ToolError(`fetchJSON: failed to parse JSON response from ${url}`, 'json_parse_error');
75
+ throw ToolError.validation(`fetchJSON: failed to parse JSON response from ${url}`);
76
+ }
77
+ if (schema) {
78
+ const result = schema.safeParse(data);
79
+ if (!result.success) {
80
+ throw ToolError.validation(`fetchJSON: response from ${url} failed schema validation: ${result.error.message}`);
81
+ }
82
+ return result.data;
48
83
  }
84
+ return data;
49
85
  };
86
+ /**
87
+ * Fetches a URL and parses the response as JSON. Uses the page's session
88
+ * cookies (credentials: 'include') and provides timeout + error handling.
89
+ * When a Zod schema is provided as the third argument, the parsed JSON is
90
+ * validated against it and a ToolError.validation is thrown on failure.
91
+ */
92
+ export const fetchJSON = fetchJSONImpl;
50
93
  /**
51
94
  * Convenience wrapper for POST requests with a JSON body. Sets Content-Type,
52
- * stringifies the body, and parses the JSON response.
95
+ * stringifies the body, and parses the JSON response. When a Zod schema is
96
+ * provided as the fourth argument, the parsed JSON is validated against it.
53
97
  */
54
- export const postJSON = async (url, body, init) => {
98
+ export const postJSON = (async (url, body, init, schema) => {
55
99
  const extraHeaders = init?.headers ? Object.fromEntries(new Headers(init.headers).entries()) : {};
56
- return fetchJSON(url, {
100
+ return fetchJSONImpl(url, {
57
101
  ...init,
58
102
  method: 'POST',
59
103
  headers: { 'Content-Type': 'application/json', ...extraHeaders },
60
104
  body: JSON.stringify(body),
61
- });
62
- };
105
+ }, schema);
106
+ });
107
+ /**
108
+ * Convenience wrapper for PUT requests with a JSON body. Sets Content-Type,
109
+ * stringifies the body, and parses the JSON response. When a Zod schema is
110
+ * provided as the fourth argument, the parsed JSON is validated against it.
111
+ */
112
+ export const putJSON = (async (url, body, init, schema) => {
113
+ const extraHeaders = init?.headers ? Object.fromEntries(new Headers(init.headers).entries()) : {};
114
+ return fetchJSONImpl(url, {
115
+ ...init,
116
+ method: 'PUT',
117
+ headers: { 'Content-Type': 'application/json', ...extraHeaders },
118
+ body: JSON.stringify(body),
119
+ }, schema);
120
+ });
121
+ /**
122
+ * Convenience wrapper for PATCH requests with a JSON body. Sets Content-Type,
123
+ * stringifies the body, and parses the JSON response. When a Zod schema is
124
+ * provided as the fourth argument, the parsed JSON is validated against it.
125
+ */
126
+ export const patchJSON = (async (url, body, init, schema) => {
127
+ const extraHeaders = init?.headers ? Object.fromEntries(new Headers(init.headers).entries()) : {};
128
+ return fetchJSONImpl(url, {
129
+ ...init,
130
+ method: 'PATCH',
131
+ headers: { 'Content-Type': 'application/json', ...extraHeaders },
132
+ body: JSON.stringify(body),
133
+ }, schema);
134
+ });
135
+ /**
136
+ * Convenience wrapper for DELETE requests. Parses the JSON response.
137
+ * When a Zod schema is provided as the third argument, the parsed JSON
138
+ * is validated against it.
139
+ */
140
+ export const deleteJSON = (async (url, init, schema) => fetchJSONImpl(url, { ...init, method: 'DELETE' }, schema));
63
141
  //# sourceMappingURL=fetch.js.map
package/dist/fetch.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"fetch.js","sourceRoot":"","sources":["../src/fetch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fetch.js","sourceRoot":"","sources":["../src/fetch.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,qCAAqC;AACrC,8EAA8E;AAE9E,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAQxC,gFAAgF;AAChF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,QAAkB,EAAE,OAAe,EAAa,EAAE;IACtF,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;IAC/B,IAAI,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;QACrC,OAAO,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC;IACD,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;QACnB,OAAO,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IACD,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;QACnB,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QACvD,MAAM,YAAY,GAAG,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACrF,OAAO,SAAS,CAAC,WAAW,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IACtD,CAAC;IACD,OAAO,IAAI,SAAS,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAC;AACxE,CAAC,CAAC;AAEF,kFAAkF;AAClF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,KAAa,EAAsB,EAAE;IACrE,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC9B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,OAAO,IAAI,CAAC,EAAE,CAAC;QAC3C,OAAO,OAAO,GAAG,IAAI,CAAC;IACxB,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC/B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,MAAM,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IACjC,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAAE,GAAW,EAAE,IAA2B,EAAqB,EAAE;IACjG,MAAM,EAAE,OAAO,GAAG,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC;IAEzD,MAAM,aAAa,GAAG,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACnD,MAAM,cAAc,GAAG,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;IAEzF,IAAI,QAAkB,CAAC;IACvB,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAC1B,WAAW,EAAE,SAAS;YACtB,GAAG,IAAI;YACP,MAAM,EAAE,cAAc;SACvB,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,YAAY,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;YACnE,MAAM,SAAS,CAAC,OAAO,CAAC,0CAA0C,OAAO,UAAU,GAAG,EAAE,CAAC,CAAC;QAC5F,CAAC;QACD,IAAI,KAAK,YAAY,YAAY,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YACjE,MAAM,IAAI,SAAS,CAAC,sCAAsC,GAAG,EAAE,EAAE,SAAS,CAAC,CAAC;QAC9E,CAAC;QACD,MAAM,IAAI,SAAS,CACjB,oCAAoC,GAAG,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EACpG,eAAe,EACf,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,EAAE,CAC1C,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QACzE,MAAM,GAAG,GAAG,uBAAuB,QAAQ,CAAC,MAAM,QAAQ,GAAG,KAAK,SAAS,EAAE,CAAC;QAC9E,MAAM,qBAAqB,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IAC7C,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAEF,qGAAqG;AACrG,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAAE,GAAW,EAAE,IAA2B,EAAE,MAAkB,EAAoB,EAAE;IACpH,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAEhD,IAAI,IAAa,CAAC;IAClB,IAAI,CAAC;QACH,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,SAAS,CAAC,UAAU,CAAC,iDAAiD,GAAG,EAAE,CAAC,CAAC;IACrF,CAAC;IAED,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,SAAS,CAAC,UAAU,CAAC,4BAA4B,GAAG,8BAA8B,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAClH,CAAC;QACD,OAAO,MAAM,CAAC,IAAI,CAAC;IACrB,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAaF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,SAAS,GAAc,aAA0B,CAAC;AAkB/D;;;;GAIG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAa,CAAC,KAAK,EACtC,GAAW,EACX,IAAa,EACb,IAA2B,EAC3B,MAAkB,EACA,EAAE;IACpB,MAAM,YAAY,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAClG,OAAO,aAAa,CAClB,GAAG,EACH;QACE,GAAG,IAAI;QACP,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,GAAG,YAAY,EAAE;QAChE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;KAC3B,EACD,MAAM,CACP,CAAC;AACJ,CAAC,CAAa,CAAC;AAkBf;;;;GAIG;AACH,MAAM,CAAC,MAAM,OAAO,GAAY,CAAC,KAAK,EACpC,GAAW,EACX,IAAa,EACb,IAA2B,EAC3B,MAAkB,EACA,EAAE;IACpB,MAAM,YAAY,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAClG,OAAO,aAAa,CAClB,GAAG,EACH;QACE,GAAG,IAAI;QACP,MAAM,EAAE,KAAK;QACb,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,GAAG,YAAY,EAAE;QAChE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;KAC3B,EACD,MAAM,CACP,CAAC;AACJ,CAAC,CAAY,CAAC;AAkBd;;;;GAIG;AACH,MAAM,CAAC,MAAM,SAAS,GAAc,CAAC,KAAK,EACxC,GAAW,EACX,IAAa,EACb,IAA2B,EAC3B,MAAkB,EACA,EAAE;IACpB,MAAM,YAAY,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAClG,OAAO,aAAa,CAClB,GAAG,EACH;QACE,GAAG,IAAI;QACP,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,GAAG,YAAY,EAAE;QAChE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;KAC3B,EACD,MAAM,CACP,CAAC;AACJ,CAAC,CAAc,CAAC;AAahB;;;;GAIG;AACH,MAAM,CAAC,MAAM,UAAU,GAAe,CAAC,KAAK,EAC1C,GAAW,EACX,IAA2B,EAC3B,MAAkB,EACA,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,MAAM,CAAC,CAAe,CAAC"}
package/dist/index.d.ts CHANGED
@@ -6,10 +6,10 @@ export type { LucideIconName } from './lucide-icon-names.js';
6
6
  export { LUCIDE_ICON_NAMES } from './lucide-icon-names.js';
7
7
  /** Options for reporting incremental progress during long-running tool operations. */
8
8
  export interface ProgressOptions {
9
- /** Current progress value (e.g., 3 of 10 items processed). */
10
- progress: number;
11
- /** Total expected value (e.g., 10 items total). */
12
- total: number;
9
+ /** Current progress value (e.g., 3 of 10 items processed). Omit for indeterminate progress. */
10
+ progress?: number;
11
+ /** Total expected value (e.g., 10 items total). Omit for indeterminate progress. */
12
+ total?: number;
13
13
  /** Optional human-readable message describing the current step. */
14
14
  message?: string;
15
15
  }
@@ -18,15 +18,121 @@ export interface ToolHandlerContext {
18
18
  /** Report incremental progress during a long-running operation. Fire-and-forget. */
19
19
  reportProgress(opts: ProgressOptions): void;
20
20
  }
21
+ /** Content returned from reading a resource. Aligns with MCP ReadResourceResult.contents[n]. */
22
+ export interface ResourceContent {
23
+ /** URI identifying this resource. */
24
+ uri: string;
25
+ /** Text content (mutually exclusive with blob for a given resource). */
26
+ text?: string;
27
+ /** Base64-encoded binary content (mutually exclusive with text for a given resource). */
28
+ blob?: string;
29
+ /** MIME type of the content (e.g., 'application/json', 'text/plain'). */
30
+ mimeType?: string;
31
+ }
32
+ /** A plugin resource definition. The read() handler executes in the browser page context. */
33
+ export interface ResourceDefinition<TContent extends z.ZodType = z.ZodType> {
34
+ /** Resource URI (e.g., 'slack://channels'). Must be non-empty. */
35
+ uri: string;
36
+ /** Human-readable name for the resource. */
37
+ name: string;
38
+ /** Human-readable description of the resource. */
39
+ description?: string;
40
+ /** MIME type of the resource content (e.g., 'application/json'). */
41
+ mimeType?: string;
42
+ /**
43
+ * Optional Zod schema describing the shape of the resource content.
44
+ * Provides a type-level contract for documentation and autocomplete — the
45
+ * runtime dispatch path does not validate against this schema.
46
+ *
47
+ * Use it for documentation and to derive content types:
48
+ * ```ts
49
+ * const schema = z.object({ channels: z.array(channelSchema) });
50
+ * const myResource = defineResource({ schema, ... });
51
+ * type Content = ResourceContentType<typeof myResource>; // { channels: Channel[] }
52
+ * ```
53
+ */
54
+ schema?: TContent;
55
+ /** Read the resource content. Runs in the browser page context. */
56
+ read(uri: string): Promise<ResourceContent>;
57
+ }
58
+ /** Type-safe factory — provides generic inference when `schema` is present, and plain type checking otherwise. */
59
+ export declare const defineResource: <TContent extends z.ZodType = z.ZodType>(config: ResourceDefinition<TContent>) => ResourceDefinition<TContent>;
60
+ /**
61
+ * Extracts the content type from a ResourceDefinition's schema.
62
+ * Useful for deriving typed content from resource definitions.
63
+ *
64
+ * @example
65
+ * const myResource = defineResource({
66
+ * schema: z.object({ channels: z.array(z.string()) }),
67
+ * // ...
68
+ * });
69
+ * type Content = ResourceContentType<typeof myResource>; // { channels: string[] }
70
+ */
71
+ export type ResourceContentType<R extends ResourceDefinition> = R extends ResourceDefinition<infer T> ? z.infer<T> : unknown;
72
+ /** A single argument for a prompt. Aligns with MCP PromptArgument. */
73
+ export interface PromptArgument {
74
+ /** Argument name. */
75
+ name: string;
76
+ /** Human-readable description of the argument. */
77
+ description?: string;
78
+ /** Whether this argument is required. */
79
+ required?: boolean;
80
+ }
81
+ /** A single message in a prompt result. Aligns with MCP GetPromptResult.messages[n]. */
82
+ export interface PromptMessage {
83
+ /** Message role. */
84
+ role: 'user' | 'assistant';
85
+ /** Message content. */
86
+ content: {
87
+ type: 'text';
88
+ text: string;
89
+ };
90
+ }
91
+ /** A plugin prompt definition. The render() handler executes in the browser page context. */
92
+ export interface PromptDefinition {
93
+ /** Prompt name (e.g., 'compose_message'). Must be non-empty. */
94
+ name: string;
95
+ /** Human-readable description of the prompt. */
96
+ description?: string;
97
+ /**
98
+ * Optional Zod schema for prompt arguments. When provided and passed to
99
+ * `definePrompt`, the render() function receives a typed object inferred
100
+ * from the schema. Argument metadata is auto-generated during build when
101
+ * the explicit `arguments` array is not provided.
102
+ */
103
+ args?: z.ZodObject<z.ZodRawShape>;
104
+ /** Arguments the prompt accepts (metadata for MCP registration). Auto-generated from `args` schema during build when not provided. */
105
+ arguments?: PromptArgument[];
106
+ /** Render the prompt messages. Runs in the browser page context. */
107
+ render(args: Record<string, string>): Promise<PromptMessage[]>;
108
+ }
109
+ /**
110
+ * Config type for definePrompt when `args` Zod schema is provided. The render
111
+ * function parameter is typed from the schema.
112
+ */
113
+ export interface TypedPromptConfig<TArgs extends z.ZodObject<z.ZodRawShape>> {
114
+ name: string;
115
+ description?: string;
116
+ args: TArgs;
117
+ arguments?: PromptArgument[];
118
+ render(args: z.infer<TArgs>): Promise<PromptMessage[]>;
119
+ }
120
+ /** Overloaded call signature for definePrompt — typed when `args` is present, plain otherwise. */
121
+ export interface DefinePrompt {
122
+ <TArgs extends z.ZodObject<z.ZodRawShape>>(config: TypedPromptConfig<TArgs>): PromptDefinition;
123
+ (config: PromptDefinition): PromptDefinition;
124
+ }
125
+ /** Type-safe factory — provides generic inference when `args` schema is present, and plain type checking otherwise. */
126
+ export declare const definePrompt: DefinePrompt;
21
127
  export interface ToolDefinition<TInput extends z.ZodObject<z.ZodRawShape> = z.ZodObject<z.ZodRawShape>, TOutput extends z.ZodType = z.ZodType> {
22
128
  /** Tool name — auto-prefixed with plugin name (e.g., 'send_message' → 'slack_send_message') */
23
129
  name: string;
24
- /** Human-readable display name shown in the side panel (e.g., 'Send Message') */
25
- displayName: string;
130
+ /** Human-readable display name shown in the side panel (e.g., 'Send Message'). Auto-derived from name during build when omitted. */
131
+ displayName?: string;
26
132
  /** Human-readable description shown to MCP clients / AI agents */
27
133
  description: string;
28
- /** Lucide icon name (kebab-case) displayed in the side panel. See https://lucide.dev/icons */
29
- icon: LucideIconName;
134
+ /** Lucide icon name (kebab-case) displayed in the side panel. Defaults to 'wrench' during build when omitted. See https://lucide.dev/icons */
135
+ icon?: LucideIconName;
30
136
  /** Zod schema — used for MCP registration + server-side input validation */
31
137
  input: TInput;
32
138
  /** Zod schema describing the tool output shape. Used for manifest generation and MCP tool registration. */
@@ -54,6 +160,10 @@ export declare abstract class OpenTabsPlugin {
54
160
  abstract readonly urlPatterns: string[];
55
161
  /** All tool definitions for this plugin */
56
162
  abstract readonly tools: ToolDefinition[];
163
+ /** Resource definitions for this plugin (optional). */
164
+ readonly resources?: ResourceDefinition[];
165
+ /** Prompt definitions for this plugin (optional). */
166
+ readonly prompts?: PromptDefinition[];
57
167
  /**
58
168
  * Readiness probe (Kubernetes convention).
59
169
  * Called by the extension to determine if the service in the current
@@ -124,12 +234,12 @@ export { ToolError } from './errors.js';
124
234
  export type { ErrorCategory, ToolErrorOptions } from './errors.js';
125
235
  export { waitForSelector, waitForSelectorRemoval, querySelectorAll, getTextContent, observeDOM } from './dom.js';
126
236
  export type { WaitForSelectorOptions, ObserveDOMOptions } from './dom.js';
127
- export { fetchFromPage, fetchJSON, postJSON } from './fetch.js';
128
- export type { FetchFromPageOptions } from './fetch.js';
237
+ export { fetchFromPage, fetchJSON, fetchJSONImpl, httpStatusToToolError, parseRetryAfterMs, postJSON, putJSON, patchJSON, deleteJSON, } from './fetch.js';
238
+ export type { FetchFromPageOptions, FetchJSON, PostJSON, PutJSON, PatchJSON, DeleteJSON } from './fetch.js';
129
239
  export { retry, sleep, waitUntil } from './timing.js';
130
240
  export type { RetryOptions, WaitUntilOptions } from './timing.js';
131
- export { getLocalStorage, setLocalStorage, getSessionStorage, getCookie } from './storage.js';
241
+ export { getLocalStorage, setLocalStorage, removeLocalStorage, getSessionStorage, setSessionStorage, removeSessionStorage, getCookie, } from './storage.js';
132
242
  export { getPageGlobal, getCurrentUrl, getPageTitle } from './page-state.js';
133
- export { log, _setLogTransport } from './log.js';
243
+ export { log } from './log.js';
134
244
  export type { LogLevel, LogEntry, LogTransport } from './log.js';
135
245
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -3,6 +3,10 @@
3
3
  // ---------------------------------------------------------------------------
4
4
  export { NAME_REGEX, RESERVED_NAMES, validatePluginName, validateUrlPattern } from '@opentabs-dev/shared';
5
5
  export { LUCIDE_ICON_NAMES } from './lucide-icon-names.js';
6
+ /** Type-safe factory — provides generic inference when `schema` is present, and plain type checking otherwise. */
7
+ export const defineResource = (config) => config;
8
+ /** Type-safe factory — provides generic inference when `args` schema is present, and plain type checking otherwise. */
9
+ export const definePrompt = (config) => config;
6
10
  /** Type-safe factory — identity function that provides generic inference */
7
11
  export const defineTool = (config) => config;
8
12
  /**
@@ -10,6 +14,10 @@ export const defineTool = (config) => config;
10
14
  * Plugin authors extend this and export an instance.
11
15
  */
12
16
  export class OpenTabsPlugin {
17
+ /** Resource definitions for this plugin (optional). */
18
+ resources;
19
+ /** Prompt definitions for this plugin (optional). */
20
+ prompts;
13
21
  }
14
22
  // ---------------------------------------------------------------------------
15
23
  // Errors
@@ -22,7 +30,7 @@ export { waitForSelector, waitForSelectorRemoval, querySelectorAll, getTextConte
22
30
  // ---------------------------------------------------------------------------
23
31
  // SDK utilities — Fetch
24
32
  // ---------------------------------------------------------------------------
25
- export { fetchFromPage, fetchJSON, postJSON } from './fetch.js';
33
+ export { fetchFromPage, fetchJSON, fetchJSONImpl, httpStatusToToolError, parseRetryAfterMs, postJSON, putJSON, patchJSON, deleteJSON, } from './fetch.js';
26
34
  // ---------------------------------------------------------------------------
27
35
  // SDK utilities — Timing
28
36
  // ---------------------------------------------------------------------------
@@ -30,7 +38,7 @@ export { retry, sleep, waitUntil } from './timing.js';
30
38
  // ---------------------------------------------------------------------------
31
39
  // SDK utilities — Storage
32
40
  // ---------------------------------------------------------------------------
33
- export { getLocalStorage, setLocalStorage, getSessionStorage, getCookie } from './storage.js';
41
+ export { getLocalStorage, setLocalStorage, removeLocalStorage, getSessionStorage, setSessionStorage, removeSessionStorage, getCookie, } from './storage.js';
34
42
  // ---------------------------------------------------------------------------
35
43
  // SDK utilities — Page State
36
44
  // ---------------------------------------------------------------------------
@@ -38,5 +46,5 @@ export { getPageGlobal, getCurrentUrl, getPageTitle } from './page-state.js';
38
46
  // ---------------------------------------------------------------------------
39
47
  // SDK utilities — Logging
40
48
  // ---------------------------------------------------------------------------
41
- export { log, _setLogTransport } from './log.js';
49
+ export { log } from './log.js';
42
50
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,8EAA8E;AAC9E,gEAAgE;AAChE,8EAA8E;AAE9E,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG1G,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AA8C3D,4EAA4E;AAC5E,MAAM,CAAC,MAAM,UAAU,GAAG,CACxB,MAAuC,EACN,EAAE,CAAC,MAAM,CAAC;AAE7C;;;GAGG;AACH,MAAM,OAAgB,cAAc;CA+EnC;AAED,8EAA8E;AAC9E,SAAS;AACT,8EAA8E;AAE9E,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxC,8EAA8E;AAC9E,sBAAsB;AACtB,8EAA8E;AAE9E,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAGjH,8EAA8E;AAC9E,wBAAwB;AACxB,8EAA8E;AAE9E,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAGhE,8EAA8E;AAC9E,yBAAyB;AACzB,8EAA8E;AAE9E,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGtD,8EAA8E;AAC9E,0BAA0B;AAC1B,8EAA8E;AAE9E,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9F,8EAA8E;AAC9E,6BAA6B;AAC7B,8EAA8E;AAE9E,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE7E,8EAA8E;AAC9E,0BAA0B;AAC1B,8EAA8E;AAE9E,OAAO,EAAE,GAAG,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,8EAA8E;AAC9E,gEAAgE;AAChE,8EAA8E;AAE9E,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG1G,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAiE3D,kHAAkH;AAClH,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,MAAoC,EACN,EAAE,CAAC,MAAM,CAAC;AA2E1C,uHAAuH;AACvH,MAAM,CAAC,MAAM,YAAY,GAAiB,CAAC,MAAwB,EAAoB,EAAE,CAAC,MAAM,CAAC;AA0BjG,4EAA4E;AAC5E,MAAM,CAAC,MAAM,UAAU,GAAG,CACxB,MAAuC,EACN,EAAE,CAAC,MAAM,CAAC;AAE7C;;;GAGG;AACH,MAAM,OAAgB,cAAc;IAclC,uDAAuD;IAC9C,SAAS,CAAwB;IAC1C,qDAAqD;IAC5C,OAAO,CAAsB;CAkEvC;AAED,8EAA8E;AAC9E,SAAS;AACT,8EAA8E;AAE9E,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxC,8EAA8E;AAC9E,sBAAsB;AACtB,8EAA8E;AAE9E,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAGjH,8EAA8E;AAC9E,wBAAwB;AACxB,8EAA8E;AAE9E,OAAO,EACL,aAAa,EACb,SAAS,EACT,aAAa,EACb,qBAAqB,EACrB,iBAAiB,EACjB,QAAQ,EACR,OAAO,EACP,SAAS,EACT,UAAU,GACX,MAAM,YAAY,CAAC;AAGpB,8EAA8E;AAC9E,yBAAyB;AACzB,8EAA8E;AAE9E,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGtD,8EAA8E;AAC9E,0BAA0B;AAC1B,8EAA8E;AAE9E,OAAO,EACL,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,oBAAoB,EACpB,SAAS,GACV,MAAM,cAAc,CAAC;AAEtB,8EAA8E;AAC9E,6BAA6B;AAC7B,8EAA8E;AAE9E,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE7E,8EAA8E;AAC9E,0BAA0B;AAC1B,8EAA8E;AAE9E,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC"}
@@ -1,7 +1,6 @@
1
1
  /**
2
2
  * Safe deep property access on `globalThis` using dot-notation path.
3
- * Returns `undefined` if any segment in the path is missing or if a getter
4
- * throws. Callers can narrow the result with `as` at the call site.
3
+ * Returns `undefined` if any segment in the path is missing or if a getter throws.
5
4
  *
6
5
  * @example
7
6
  * const token = getPageGlobal('TS.boot_data.api_token') as string | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"page-state.d.ts","sourceRoot":"","sources":["../src/page-state.ts"],"names":[],"mappings":"AAIA;;;;;;;GAOG;AACH,eAAO,MAAM,aAAa,GAAI,MAAM,MAAM,KAAG,OAY5C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,aAAa,QAAO,MAA8B,CAAC;AAEhE;;GAEG;AACH,eAAO,MAAM,YAAY,QAAO,MAAwB,CAAC"}
1
+ {"version":3,"file":"page-state.d.ts","sourceRoot":"","sources":["../src/page-state.ts"],"names":[],"mappings":"AAIA;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,GAAI,MAAM,MAAM,KAAG,OAY5C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,aAAa,QAAO,MAA8B,CAAC;AAEhE;;GAEG;AACH,eAAO,MAAM,YAAY,QAAO,MAAwB,CAAC"}
@@ -3,8 +3,7 @@
3
3
  // ---------------------------------------------------------------------------
4
4
  /**
5
5
  * Safe deep property access on `globalThis` using dot-notation path.
6
- * Returns `undefined` if any segment in the path is missing or if a getter
7
- * throws. Callers can narrow the result with `as` at the call site.
6
+ * Returns `undefined` if any segment in the path is missing or if a getter throws.
8
7
  *
9
8
  * @example
10
9
  * const token = getPageGlobal('TS.boot_data.api_token') as string | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"page-state.js","sourceRoot":"","sources":["../src/page-state.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,0CAA0C;AAC1C,8EAA8E;AAE9E;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,IAAY,EAAW,EAAE;IACrD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,OAAO,GAAY,UAAU,CAAC;QAClC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,OAAO,KAAK,QAAQ;gBAAE,OAAO,SAAS,CAAC;YAC/F,OAAO,GAAI,OAAmC,CAAC,OAAO,CAAC,CAAC;QAC1D,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,GAAW,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;AAEhE;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,GAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC"}
1
+ {"version":3,"file":"page-state.js","sourceRoot":"","sources":["../src/page-state.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,0CAA0C;AAC1C,8EAA8E;AAE9E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,IAAY,EAAW,EAAE;IACrD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,OAAO,GAAY,UAAU,CAAC;QAClC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,OAAO,KAAK,QAAQ;gBAAE,OAAO,SAAS,CAAC;YAC/F,OAAO,GAAI,OAAmC,CAAC,OAAO,CAAC,CAAC;QAC1D,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,GAAW,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;AAEhE;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,GAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC"}
package/dist/storage.d.ts CHANGED
@@ -13,6 +13,21 @@ export declare const setLocalStorage: (key: string, value: string) => void;
13
13
  * if storage access throws (e.g., SecurityError in sandboxed iframes).
14
14
  */
15
15
  export declare const getSessionStorage: (key: string) => string | null;
16
+ /**
17
+ * Writes a value to sessionStorage. Silently fails if storage access throws
18
+ * (e.g., SecurityError in sandboxed iframes or when storage is full).
19
+ */
20
+ export declare const setSessionStorage: (key: string, value: string) => void;
21
+ /**
22
+ * Removes a key from localStorage. Silently fails if storage access throws
23
+ * (e.g., SecurityError in sandboxed iframes).
24
+ */
25
+ export declare const removeLocalStorage: (key: string) => void;
26
+ /**
27
+ * Removes a key from sessionStorage. Silently fails if storage access throws
28
+ * (e.g., SecurityError in sandboxed iframes).
29
+ */
30
+ export declare const removeSessionStorage: (key: string) => void;
16
31
  /**
17
32
  * Reads a cookie by name from `document.cookie`. Handles URI-encoded values.
18
33
  * Returns null if the cookie is not found.
@@ -1 +1 @@
1
- {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"AAIA;;;GAGG;AACH,eAAO,MAAM,eAAe,GAAI,KAAK,MAAM,KAAG,MAAM,GAAG,IAMtD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,eAAe,GAAI,KAAK,MAAM,EAAE,OAAO,MAAM,KAAG,IAM5D,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,iBAAiB,GAAI,KAAK,MAAM,KAAG,MAAM,GAAG,IAMxD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,SAAS,GAAI,MAAM,MAAM,KAAG,MAAM,GAAG,IAajD,CAAC"}
1
+ {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"AAIA;;;GAGG;AACH,eAAO,MAAM,eAAe,GAAI,KAAK,MAAM,KAAG,MAAM,GAAG,IAMtD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,eAAe,GAAI,KAAK,MAAM,EAAE,OAAO,MAAM,KAAG,IAM5D,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,iBAAiB,GAAI,KAAK,MAAM,KAAG,MAAM,GAAG,IAMxD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,iBAAiB,GAAI,KAAK,MAAM,EAAE,OAAO,MAAM,KAAG,IAM9D,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,kBAAkB,GAAI,KAAK,MAAM,KAAG,IAMhD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,oBAAoB,GAAI,KAAK,MAAM,KAAG,IAMlD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,SAAS,GAAI,MAAM,MAAM,KAAG,MAAM,GAAG,IAajD,CAAC"}
package/dist/storage.js CHANGED
@@ -37,6 +37,42 @@ export const getSessionStorage = (key) => {
37
37
  return null;
38
38
  }
39
39
  };
40
+ /**
41
+ * Writes a value to sessionStorage. Silently fails if storage access throws
42
+ * (e.g., SecurityError in sandboxed iframes or when storage is full).
43
+ */
44
+ export const setSessionStorage = (key, value) => {
45
+ try {
46
+ sessionStorage.setItem(key, value);
47
+ }
48
+ catch {
49
+ // Silently fail on SecurityError or QuotaExceededError
50
+ }
51
+ };
52
+ /**
53
+ * Removes a key from localStorage. Silently fails if storage access throws
54
+ * (e.g., SecurityError in sandboxed iframes).
55
+ */
56
+ export const removeLocalStorage = (key) => {
57
+ try {
58
+ localStorage.removeItem(key);
59
+ }
60
+ catch {
61
+ // Silently fail on SecurityError
62
+ }
63
+ };
64
+ /**
65
+ * Removes a key from sessionStorage. Silently fails if storage access throws
66
+ * (e.g., SecurityError in sandboxed iframes).
67
+ */
68
+ export const removeSessionStorage = (key) => {
69
+ try {
70
+ sessionStorage.removeItem(key);
71
+ }
72
+ catch {
73
+ // Silently fail on SecurityError
74
+ }
75
+ };
40
76
  /**
41
77
  * Reads a cookie by name from `document.cookie`. Handles URI-encoded values.
42
78
  * Returns null if the cookie is not found.
@@ -1 +1 @@
1
- {"version":3,"file":"storage.js","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,uCAAuC;AACvC,8EAA8E;AAE9E;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,GAAW,EAAiB,EAAE;IAC5D,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACnC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,GAAW,EAAE,KAAa,EAAQ,EAAE;IAClE,IAAI,CAAC;QACH,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACnC,CAAC;IAAC,MAAM,CAAC;QACP,uDAAuD;IACzD,CAAC;AACH,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,GAAW,EAAiB,EAAE;IAC9D,IAAI,CAAC;QACH,OAAO,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACrC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,IAAY,EAAiB,EAAE;IACvD,MAAM,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC;IAC1B,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC5C,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAC7B,IAAI,CAAC;gBACH,OAAO,kBAAkB,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;YACxD,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC,CAAC"}
1
+ {"version":3,"file":"storage.js","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,uCAAuC;AACvC,8EAA8E;AAE9E;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,GAAW,EAAiB,EAAE;IAC5D,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACnC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,GAAW,EAAE,KAAa,EAAQ,EAAE;IAClE,IAAI,CAAC;QACH,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACnC,CAAC;IAAC,MAAM,CAAC;QACP,uDAAuD;IACzD,CAAC;AACH,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,GAAW,EAAiB,EAAE;IAC9D,IAAI,CAAC;QACH,OAAO,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACrC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,GAAW,EAAE,KAAa,EAAQ,EAAE;IACpE,IAAI,CAAC;QACH,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACrC,CAAC;IAAC,MAAM,CAAC;QACP,uDAAuD;IACzD,CAAC;AACH,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,GAAW,EAAQ,EAAE;IACtD,IAAI,CAAC;QACH,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,iCAAiC;IACnC,CAAC;AACH,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,GAAW,EAAQ,EAAE;IACxD,IAAI,CAAC;QACH,cAAc,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IACjC,CAAC;IAAC,MAAM,CAAC;QACP,iCAAiC;IACnC,CAAC;AACH,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,IAAY,EAAiB,EAAE;IACvD,MAAM,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC;IAC1B,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC5C,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAC7B,IAAI,CAAC;gBACH,OAAO,kBAAkB,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;YACxD,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opentabs-dev/plugin-sdk",
3
- "version": "0.0.15",
3
+ "version": "0.0.17",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": {
@@ -20,7 +20,7 @@
20
20
  "generate:icons": "bun scripts/generate-icon-names.ts"
21
21
  },
22
22
  "dependencies": {
23
- "@opentabs-dev/shared": "^0.0.15"
23
+ "@opentabs-dev/shared": "^0.0.17"
24
24
  },
25
25
  "peerDependencies": {
26
26
  "zod": "^4.0.0"