@tabstack/sdk 1.0.0 → 1.0.5
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/LICENSE +22 -11
- package/README.md +17 -44
- package/dist/cjs/{automate.d.ts → agent.d.ts} +10 -10
- package/dist/cjs/agent.d.ts.map +1 -0
- package/dist/cjs/{automate.js → agent.js} +11 -11
- package/dist/cjs/agent.js.map +1 -0
- package/dist/cjs/agent.test.d.ts +5 -0
- package/dist/cjs/agent.test.d.ts.map +1 -0
- package/dist/cjs/{automate.test.js → agent.test.js} +32 -32
- package/dist/cjs/agent.test.js.map +1 -0
- package/dist/cjs/client.d.ts +13 -13
- package/dist/cjs/client.d.ts.map +1 -1
- package/dist/cjs/client.js +12 -12
- package/dist/cjs/client.js.map +1 -1
- package/dist/cjs/client.test.d.ts +1 -1
- package/dist/cjs/client.test.js +50 -51
- package/dist/cjs/client.test.js.map +1 -1
- package/dist/cjs/exceptions.d.ts +9 -9
- package/dist/cjs/exceptions.js +13 -13
- package/dist/cjs/exceptions.test.js +30 -30
- package/dist/cjs/extract.d.ts +2 -57
- package/dist/cjs/extract.d.ts.map +1 -1
- package/dist/cjs/extract.js +2 -60
- package/dist/cjs/extract.js.map +1 -1
- package/dist/cjs/extract.test.js +0 -114
- package/dist/cjs/extract.test.js.map +1 -1
- package/dist/cjs/generate.d.ts +1 -1
- package/dist/cjs/generate.js +1 -1
- package/dist/cjs/index.d.ts +9 -9
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +9 -9
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/types.d.ts +1 -1
- package/dist/cjs/types.js +1 -1
- package/dist/cjs/util/http.d.ts +1 -1
- package/dist/cjs/util/http.js +4 -4
- package/dist/cjs/util/http.test.js +5 -5
- package/dist/esm/{automate.d.ts → agent.d.ts} +10 -10
- package/dist/esm/agent.d.ts.map +1 -0
- package/dist/esm/{automate.js → agent.js} +9 -9
- package/dist/esm/agent.js.map +1 -0
- package/dist/esm/agent.test.d.ts +5 -0
- package/dist/esm/agent.test.d.ts.map +1 -0
- package/dist/esm/{automate.test.js → agent.test.js} +32 -32
- package/dist/esm/agent.test.js.map +1 -0
- package/dist/esm/client.d.ts +13 -13
- package/dist/esm/client.d.ts.map +1 -1
- package/dist/esm/client.js +10 -10
- package/dist/esm/client.js.map +1 -1
- package/dist/esm/client.test.d.ts +1 -1
- package/dist/esm/client.test.js +51 -52
- package/dist/esm/client.test.js.map +1 -1
- package/dist/esm/exceptions.d.ts +9 -9
- package/dist/esm/exceptions.js +11 -11
- package/dist/esm/exceptions.test.js +31 -31
- package/dist/esm/extract.d.ts +2 -57
- package/dist/esm/extract.d.ts.map +1 -1
- package/dist/esm/extract.js +2 -60
- package/dist/esm/extract.js.map +1 -1
- package/dist/esm/extract.test.js +0 -114
- package/dist/esm/extract.test.js.map +1 -1
- package/dist/esm/generate.d.ts +1 -1
- package/dist/esm/generate.js +1 -1
- package/dist/esm/index.d.ts +9 -9
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +7 -7
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/types.d.ts +1 -1
- package/dist/esm/types.js +1 -1
- package/dist/esm/util/http.d.ts +1 -1
- package/dist/esm/util/http.js +5 -5
- package/dist/esm/util/http.test.js +6 -6
- package/dist/types/{automate.d.ts → agent.d.ts} +10 -10
- package/dist/types/agent.d.ts.map +1 -0
- package/dist/types/agent.test.d.ts +5 -0
- package/dist/types/agent.test.d.ts.map +1 -0
- package/dist/types/client.d.ts +13 -13
- package/dist/types/client.d.ts.map +1 -1
- package/dist/types/client.test.d.ts +1 -1
- package/dist/types/exceptions.d.ts +9 -9
- package/dist/types/extract.d.ts +2 -57
- package/dist/types/extract.d.ts.map +1 -1
- package/dist/types/generate.d.ts +1 -1
- package/dist/types/index.d.ts +9 -9
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/types.d.ts +1 -1
- package/dist/types/util/http.d.ts +1 -1
- package/package.json +5 -5
- package/dist/cjs/automate.d.ts.map +0 -1
- package/dist/cjs/automate.js.map +0 -1
- package/dist/cjs/automate.test.d.ts +0 -5
- package/dist/cjs/automate.test.d.ts.map +0 -1
- package/dist/cjs/automate.test.js.map +0 -1
- package/dist/esm/automate.d.ts.map +0 -1
- package/dist/esm/automate.js.map +0 -1
- package/dist/esm/automate.test.d.ts +0 -5
- package/dist/esm/automate.test.d.ts.map +0 -1
- package/dist/esm/automate.test.js.map +0 -1
- package/dist/types/automate.d.ts.map +0 -1
- package/dist/types/automate.test.d.ts +0 -5
- package/dist/types/automate.test.d.ts.map +0 -1
|
@@ -5,35 +5,35 @@
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const exceptions_1 = require("./exceptions");
|
|
7
7
|
describe('Exception Classes', () => {
|
|
8
|
-
describe('
|
|
8
|
+
describe('TabstackError', () => {
|
|
9
9
|
it('should create error with message', () => {
|
|
10
|
-
const error = new exceptions_1.
|
|
10
|
+
const error = new exceptions_1.TabstackError('Test error');
|
|
11
11
|
expect(error).toBeInstanceOf(Error);
|
|
12
|
-
expect(error).toBeInstanceOf(exceptions_1.
|
|
12
|
+
expect(error).toBeInstanceOf(exceptions_1.TabstackError);
|
|
13
13
|
expect(error.message).toBe('Test error');
|
|
14
|
-
expect(error.name).toBe('
|
|
14
|
+
expect(error.name).toBe('TabstackError');
|
|
15
15
|
});
|
|
16
16
|
it('should create error with message and status code', () => {
|
|
17
|
-
const error = new exceptions_1.
|
|
17
|
+
const error = new exceptions_1.TabstackError('Test error', 418);
|
|
18
18
|
expect(error.message).toBe('Test error');
|
|
19
19
|
expect(error.statusCode).toBe(418);
|
|
20
20
|
});
|
|
21
21
|
it('should create error without status code', () => {
|
|
22
|
-
const error = new exceptions_1.
|
|
22
|
+
const error = new exceptions_1.TabstackError('Test error');
|
|
23
23
|
expect(error.message).toBe('Test error');
|
|
24
24
|
expect(error.statusCode).toBeUndefined();
|
|
25
25
|
});
|
|
26
26
|
it('should have correct prototype chain', () => {
|
|
27
|
-
const error = new exceptions_1.
|
|
28
|
-
expect(Object.getPrototypeOf(error)).toBe(exceptions_1.
|
|
27
|
+
const error = new exceptions_1.TabstackError('Test');
|
|
28
|
+
expect(Object.getPrototypeOf(error)).toBe(exceptions_1.TabstackError.prototype);
|
|
29
29
|
});
|
|
30
30
|
it('should be catchable as Error', () => {
|
|
31
31
|
try {
|
|
32
|
-
throw new exceptions_1.
|
|
32
|
+
throw new exceptions_1.TabstackError('Test');
|
|
33
33
|
}
|
|
34
34
|
catch (error) {
|
|
35
35
|
expect(error).toBeInstanceOf(Error);
|
|
36
|
-
expect(error).toBeInstanceOf(exceptions_1.
|
|
36
|
+
expect(error).toBeInstanceOf(exceptions_1.TabstackError);
|
|
37
37
|
}
|
|
38
38
|
});
|
|
39
39
|
});
|
|
@@ -41,7 +41,7 @@ describe('Exception Classes', () => {
|
|
|
41
41
|
it('should create error with message', () => {
|
|
42
42
|
const error = new exceptions_1.BadRequestError('Invalid request');
|
|
43
43
|
expect(error).toBeInstanceOf(Error);
|
|
44
|
-
expect(error).toBeInstanceOf(exceptions_1.
|
|
44
|
+
expect(error).toBeInstanceOf(exceptions_1.TabstackError);
|
|
45
45
|
expect(error).toBeInstanceOf(exceptions_1.BadRequestError);
|
|
46
46
|
expect(error.message).toBe('Invalid request');
|
|
47
47
|
expect(error.name).toBe('BadRequestError');
|
|
@@ -53,14 +53,14 @@ describe('Exception Classes', () => {
|
|
|
53
53
|
it('should have correct prototype chain', () => {
|
|
54
54
|
const error = new exceptions_1.BadRequestError('Test');
|
|
55
55
|
expect(Object.getPrototypeOf(error)).toBe(exceptions_1.BadRequestError.prototype);
|
|
56
|
-
expect(error).toBeInstanceOf(exceptions_1.
|
|
56
|
+
expect(error).toBeInstanceOf(exceptions_1.TabstackError);
|
|
57
57
|
});
|
|
58
|
-
it('should be catchable as
|
|
58
|
+
it('should be catchable as TabstackError', () => {
|
|
59
59
|
try {
|
|
60
60
|
throw new exceptions_1.BadRequestError('Test');
|
|
61
61
|
}
|
|
62
62
|
catch (error) {
|
|
63
|
-
expect(error).toBeInstanceOf(exceptions_1.
|
|
63
|
+
expect(error).toBeInstanceOf(exceptions_1.TabstackError);
|
|
64
64
|
expect(error).toBeInstanceOf(exceptions_1.BadRequestError);
|
|
65
65
|
}
|
|
66
66
|
});
|
|
@@ -69,7 +69,7 @@ describe('Exception Classes', () => {
|
|
|
69
69
|
it('should create error with custom message', () => {
|
|
70
70
|
const error = new exceptions_1.UnauthorizedError('Custom auth error');
|
|
71
71
|
expect(error).toBeInstanceOf(Error);
|
|
72
|
-
expect(error).toBeInstanceOf(exceptions_1.
|
|
72
|
+
expect(error).toBeInstanceOf(exceptions_1.TabstackError);
|
|
73
73
|
expect(error).toBeInstanceOf(exceptions_1.UnauthorizedError);
|
|
74
74
|
expect(error.message).toBe('Custom auth error');
|
|
75
75
|
expect(error.name).toBe('UnauthorizedError');
|
|
@@ -85,14 +85,14 @@ describe('Exception Classes', () => {
|
|
|
85
85
|
it('should have correct prototype chain', () => {
|
|
86
86
|
const error = new exceptions_1.UnauthorizedError();
|
|
87
87
|
expect(Object.getPrototypeOf(error)).toBe(exceptions_1.UnauthorizedError.prototype);
|
|
88
|
-
expect(error).toBeInstanceOf(exceptions_1.
|
|
88
|
+
expect(error).toBeInstanceOf(exceptions_1.TabstackError);
|
|
89
89
|
});
|
|
90
90
|
});
|
|
91
91
|
describe('InvalidURLError', () => {
|
|
92
92
|
it('should create error with custom message', () => {
|
|
93
93
|
const error = new exceptions_1.InvalidURLError('URL is malformed');
|
|
94
94
|
expect(error).toBeInstanceOf(Error);
|
|
95
|
-
expect(error).toBeInstanceOf(exceptions_1.
|
|
95
|
+
expect(error).toBeInstanceOf(exceptions_1.TabstackError);
|
|
96
96
|
expect(error).toBeInstanceOf(exceptions_1.InvalidURLError);
|
|
97
97
|
expect(error.message).toBe('URL is malformed');
|
|
98
98
|
expect(error.name).toBe('InvalidURLError');
|
|
@@ -108,14 +108,14 @@ describe('Exception Classes', () => {
|
|
|
108
108
|
it('should have correct prototype chain', () => {
|
|
109
109
|
const error = new exceptions_1.InvalidURLError();
|
|
110
110
|
expect(Object.getPrototypeOf(error)).toBe(exceptions_1.InvalidURLError.prototype);
|
|
111
|
-
expect(error).toBeInstanceOf(exceptions_1.
|
|
111
|
+
expect(error).toBeInstanceOf(exceptions_1.TabstackError);
|
|
112
112
|
});
|
|
113
113
|
});
|
|
114
114
|
describe('ServerError', () => {
|
|
115
115
|
it('should create error with custom message', () => {
|
|
116
116
|
const error = new exceptions_1.ServerError('Database connection failed');
|
|
117
117
|
expect(error).toBeInstanceOf(Error);
|
|
118
|
-
expect(error).toBeInstanceOf(exceptions_1.
|
|
118
|
+
expect(error).toBeInstanceOf(exceptions_1.TabstackError);
|
|
119
119
|
expect(error).toBeInstanceOf(exceptions_1.ServerError);
|
|
120
120
|
expect(error.message).toBe('Database connection failed');
|
|
121
121
|
expect(error.name).toBe('ServerError');
|
|
@@ -131,14 +131,14 @@ describe('Exception Classes', () => {
|
|
|
131
131
|
it('should have correct prototype chain', () => {
|
|
132
132
|
const error = new exceptions_1.ServerError();
|
|
133
133
|
expect(Object.getPrototypeOf(error)).toBe(exceptions_1.ServerError.prototype);
|
|
134
|
-
expect(error).toBeInstanceOf(exceptions_1.
|
|
134
|
+
expect(error).toBeInstanceOf(exceptions_1.TabstackError);
|
|
135
135
|
});
|
|
136
136
|
});
|
|
137
137
|
describe('ServiceUnavailableError', () => {
|
|
138
138
|
it('should create error with custom message', () => {
|
|
139
139
|
const error = new exceptions_1.ServiceUnavailableError('Automate service is down');
|
|
140
140
|
expect(error).toBeInstanceOf(Error);
|
|
141
|
-
expect(error).toBeInstanceOf(exceptions_1.
|
|
141
|
+
expect(error).toBeInstanceOf(exceptions_1.TabstackError);
|
|
142
142
|
expect(error).toBeInstanceOf(exceptions_1.ServiceUnavailableError);
|
|
143
143
|
expect(error.message).toBe('Automate service is down');
|
|
144
144
|
expect(error.name).toBe('ServiceUnavailableError');
|
|
@@ -154,14 +154,14 @@ describe('Exception Classes', () => {
|
|
|
154
154
|
it('should have correct prototype chain', () => {
|
|
155
155
|
const error = new exceptions_1.ServiceUnavailableError();
|
|
156
156
|
expect(Object.getPrototypeOf(error)).toBe(exceptions_1.ServiceUnavailableError.prototype);
|
|
157
|
-
expect(error).toBeInstanceOf(exceptions_1.
|
|
157
|
+
expect(error).toBeInstanceOf(exceptions_1.TabstackError);
|
|
158
158
|
});
|
|
159
159
|
});
|
|
160
160
|
describe('APIError', () => {
|
|
161
161
|
it('should create error with message and status code', () => {
|
|
162
162
|
const error = new exceptions_1.APIError('Rate limit exceeded', 429);
|
|
163
163
|
expect(error).toBeInstanceOf(Error);
|
|
164
|
-
expect(error).toBeInstanceOf(exceptions_1.
|
|
164
|
+
expect(error).toBeInstanceOf(exceptions_1.TabstackError);
|
|
165
165
|
expect(error).toBeInstanceOf(exceptions_1.APIError);
|
|
166
166
|
expect(error.message).toBe('Rate limit exceeded');
|
|
167
167
|
expect(error.statusCode).toBe(429);
|
|
@@ -174,7 +174,7 @@ describe('Exception Classes', () => {
|
|
|
174
174
|
it('should have correct prototype chain', () => {
|
|
175
175
|
const error = new exceptions_1.APIError('Test', 999);
|
|
176
176
|
expect(Object.getPrototypeOf(error)).toBe(exceptions_1.APIError.prototype);
|
|
177
|
-
expect(error).toBeInstanceOf(exceptions_1.
|
|
177
|
+
expect(error).toBeInstanceOf(exceptions_1.TabstackError);
|
|
178
178
|
});
|
|
179
179
|
});
|
|
180
180
|
describe('Error inheritance and type checking', () => {
|
|
@@ -185,9 +185,9 @@ describe('Exception Classes', () => {
|
|
|
185
185
|
expect(badRequest).not.toBeInstanceOf(exceptions_1.UnauthorizedError);
|
|
186
186
|
expect(unauthorized).not.toBeInstanceOf(exceptions_1.BadRequestError);
|
|
187
187
|
expect(serverError).not.toBeInstanceOf(exceptions_1.UnauthorizedError);
|
|
188
|
-
expect(badRequest).toBeInstanceOf(exceptions_1.
|
|
189
|
-
expect(unauthorized).toBeInstanceOf(exceptions_1.
|
|
190
|
-
expect(serverError).toBeInstanceOf(exceptions_1.
|
|
188
|
+
expect(badRequest).toBeInstanceOf(exceptions_1.TabstackError);
|
|
189
|
+
expect(unauthorized).toBeInstanceOf(exceptions_1.TabstackError);
|
|
190
|
+
expect(serverError).toBeInstanceOf(exceptions_1.TabstackError);
|
|
191
191
|
});
|
|
192
192
|
it('should preserve error properties when caught and rethrown', () => {
|
|
193
193
|
try {
|
|
@@ -212,7 +212,7 @@ describe('Exception Classes', () => {
|
|
|
212
212
|
else if (error instanceof exceptions_1.UnauthorizedError) {
|
|
213
213
|
return 'unauthorized';
|
|
214
214
|
}
|
|
215
|
-
else if (error instanceof exceptions_1.
|
|
215
|
+
else if (error instanceof exceptions_1.TabstackError) {
|
|
216
216
|
return 'tabstack-error';
|
|
217
217
|
}
|
|
218
218
|
return 'unknown';
|
|
@@ -225,9 +225,9 @@ describe('Exception Classes', () => {
|
|
|
225
225
|
});
|
|
226
226
|
describe('Error stack traces', () => {
|
|
227
227
|
it('should have stack trace', () => {
|
|
228
|
-
const error = new exceptions_1.
|
|
228
|
+
const error = new exceptions_1.TabstackError('Test');
|
|
229
229
|
expect(error.stack).toBeDefined();
|
|
230
|
-
expect(error.stack).toContain('
|
|
230
|
+
expect(error.stack).toContain('TabstackError');
|
|
231
231
|
});
|
|
232
232
|
it('should have stack trace for derived errors', () => {
|
|
233
233
|
const error = new exceptions_1.BadRequestError('Test');
|
package/dist/cjs/extract.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Extract operator for
|
|
2
|
+
* Extract operator for Tabstack SDK
|
|
3
3
|
*/
|
|
4
4
|
import { HTTPClient } from './util/http';
|
|
5
5
|
import { MarkdownResponse, JsonResponse } from './types';
|
|
@@ -7,10 +7,6 @@ export interface ExtractMarkdownOptions {
|
|
|
7
7
|
metadata?: boolean;
|
|
8
8
|
nocache?: boolean;
|
|
9
9
|
}
|
|
10
|
-
export interface ExtractSchemaOptions {
|
|
11
|
-
instructions?: string;
|
|
12
|
-
nocache?: boolean;
|
|
13
|
-
}
|
|
14
10
|
export interface ExtractJsonOptions {
|
|
15
11
|
nocache?: boolean;
|
|
16
12
|
}
|
|
@@ -19,7 +15,6 @@ export interface ExtractJsonOptions {
|
|
|
19
15
|
*
|
|
20
16
|
* This class provides methods for extracting content from URLs in various formats:
|
|
21
17
|
* - Markdown conversion
|
|
22
|
-
* - Schema generation
|
|
23
18
|
* - Structured JSON extraction
|
|
24
19
|
*/
|
|
25
20
|
export declare class Extract {
|
|
@@ -73,51 +68,11 @@ export declare class Extract {
|
|
|
73
68
|
* ```
|
|
74
69
|
*/
|
|
75
70
|
markdown(url: string, options?: ExtractMarkdownOptions): Promise<MarkdownResponse>;
|
|
76
|
-
/**
|
|
77
|
-
* Generate JSON schema from URL content
|
|
78
|
-
*
|
|
79
|
-
* Analyzes URL content and generates a JSON schema that describes the structure
|
|
80
|
-
* of the data. Use this to create schemas for the json() method when you don't
|
|
81
|
-
* know the structure in advance. The generated schema can then be used to extract
|
|
82
|
-
* structured data from similar pages.
|
|
83
|
-
*
|
|
84
|
-
* @param url - URL to analyze and extract schema from
|
|
85
|
-
* @param options - Optional schema generation options
|
|
86
|
-
* @param options.instructions - Optional instructions to guide schema generation (max 1000 characters). Example: "extract only the top stories, for each story include the title, points, author, and comment count"
|
|
87
|
-
* @param options.nocache - Bypass cache and force fresh data retrieval. Default: false
|
|
88
|
-
*
|
|
89
|
-
* @returns The generated JSON schema object
|
|
90
|
-
*
|
|
91
|
-
* @throws {BadRequestError} When URL is missing or schema format is invalid
|
|
92
|
-
* @throws {UnauthorizedError} When API key is invalid or missing
|
|
93
|
-
* @throws {InvalidURLError} When URL is invalid
|
|
94
|
-
* @throws {ServerError} When server fails to fetch URL, page is too large, or schema generation fails
|
|
95
|
-
*
|
|
96
|
-
* @example
|
|
97
|
-
* Basic usage:
|
|
98
|
-
* ```typescript
|
|
99
|
-
* const schema = await tabs.extract.schema('https://news.ycombinator.com');
|
|
100
|
-
* console.log(schema); // JSON schema object describing the page structure
|
|
101
|
-
* ```
|
|
102
|
-
*
|
|
103
|
-
* @example
|
|
104
|
-
* With instructions:
|
|
105
|
-
* ```typescript
|
|
106
|
-
* const schema = await tabs.extract.schema('https://news.ycombinator.com', {
|
|
107
|
-
* instructions: 'extract only the top stories, for each story include the title, points, author, and comment count'
|
|
108
|
-
* });
|
|
109
|
-
* // Use the generated schema to extract data
|
|
110
|
-
* const data = await tabs.extract.json('https://news.ycombinator.com', schema);
|
|
111
|
-
* console.log(data.data); // Structured data matching the schema
|
|
112
|
-
* ```
|
|
113
|
-
*/
|
|
114
|
-
schema(url: string, options?: ExtractSchemaOptions): Promise<Record<string, unknown>>;
|
|
115
71
|
/**
|
|
116
72
|
* Extract structured JSON from URL content
|
|
117
73
|
*
|
|
118
74
|
* Fetches a URL and extracts structured data according to a provided JSON schema.
|
|
119
|
-
* The schema defines what data to extract and its structure.
|
|
120
|
-
* schema manually or generate one using the schema() method.
|
|
75
|
+
* The schema defines what data to extract and its structure.
|
|
121
76
|
*
|
|
122
77
|
* @param url - URL to fetch and extract data from
|
|
123
78
|
* @param schema - JSON schema object defining the structure of data to extract
|
|
@@ -184,16 +139,6 @@ export declare class Extract {
|
|
|
184
139
|
* ```
|
|
185
140
|
*
|
|
186
141
|
* @example
|
|
187
|
-
* Using generated schema:
|
|
188
|
-
* ```typescript
|
|
189
|
-
* const schema = await tabs.extract.schema('https://news.ycombinator.com', {
|
|
190
|
-
* instructions: 'extract top stories with title, points, and author'
|
|
191
|
-
* });
|
|
192
|
-
* const result = await tabs.extract.json('https://news.ycombinator.com', schema);
|
|
193
|
-
* console.log(result.data);
|
|
194
|
-
* ```
|
|
195
|
-
*
|
|
196
|
-
* @example
|
|
197
142
|
* Force fresh data retrieval:
|
|
198
143
|
* ```typescript
|
|
199
144
|
* const result = await tabs.extract.json('https://news.ycombinator.com', schema, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extract.d.ts","sourceRoot":"","sources":["../../src/extract.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEzD,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"extract.d.ts","sourceRoot":"","sources":["../../src/extract.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEzD,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;GAMG;AACH,qBAAa,OAAO;IACN,OAAO,CAAC,UAAU;gBAAV,UAAU,EAAE,UAAU;IAE1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8CG;IACG,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,sBAAsB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAYxF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6EG;IACG,IAAI,CAAC,CAAC,GAAG,OAAO,EACpB,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;CAU5B"}
|
package/dist/cjs/extract.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
|
-
* Extract operator for
|
|
3
|
+
* Extract operator for Tabstack SDK
|
|
4
4
|
*/
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.Extract = void 0;
|
|
@@ -10,7 +10,6 @@ const types_1 = require("./types");
|
|
|
10
10
|
*
|
|
11
11
|
* This class provides methods for extracting content from URLs in various formats:
|
|
12
12
|
* - Markdown conversion
|
|
13
|
-
* - Schema generation
|
|
14
13
|
* - Structured JSON extraction
|
|
15
14
|
*/
|
|
16
15
|
class Extract {
|
|
@@ -73,58 +72,11 @@ class Extract {
|
|
|
73
72
|
const response = await this.httpClient.post('v1/extract/markdown', requestData);
|
|
74
73
|
return types_1.MarkdownResponse.fromJSON(response);
|
|
75
74
|
}
|
|
76
|
-
/**
|
|
77
|
-
* Generate JSON schema from URL content
|
|
78
|
-
*
|
|
79
|
-
* Analyzes URL content and generates a JSON schema that describes the structure
|
|
80
|
-
* of the data. Use this to create schemas for the json() method when you don't
|
|
81
|
-
* know the structure in advance. The generated schema can then be used to extract
|
|
82
|
-
* structured data from similar pages.
|
|
83
|
-
*
|
|
84
|
-
* @param url - URL to analyze and extract schema from
|
|
85
|
-
* @param options - Optional schema generation options
|
|
86
|
-
* @param options.instructions - Optional instructions to guide schema generation (max 1000 characters). Example: "extract only the top stories, for each story include the title, points, author, and comment count"
|
|
87
|
-
* @param options.nocache - Bypass cache and force fresh data retrieval. Default: false
|
|
88
|
-
*
|
|
89
|
-
* @returns The generated JSON schema object
|
|
90
|
-
*
|
|
91
|
-
* @throws {BadRequestError} When URL is missing or schema format is invalid
|
|
92
|
-
* @throws {UnauthorizedError} When API key is invalid or missing
|
|
93
|
-
* @throws {InvalidURLError} When URL is invalid
|
|
94
|
-
* @throws {ServerError} When server fails to fetch URL, page is too large, or schema generation fails
|
|
95
|
-
*
|
|
96
|
-
* @example
|
|
97
|
-
* Basic usage:
|
|
98
|
-
* ```typescript
|
|
99
|
-
* const schema = await tabs.extract.schema('https://news.ycombinator.com');
|
|
100
|
-
* console.log(schema); // JSON schema object describing the page structure
|
|
101
|
-
* ```
|
|
102
|
-
*
|
|
103
|
-
* @example
|
|
104
|
-
* With instructions:
|
|
105
|
-
* ```typescript
|
|
106
|
-
* const schema = await tabs.extract.schema('https://news.ycombinator.com', {
|
|
107
|
-
* instructions: 'extract only the top stories, for each story include the title, points, author, and comment count'
|
|
108
|
-
* });
|
|
109
|
-
* // Use the generated schema to extract data
|
|
110
|
-
* const data = await tabs.extract.json('https://news.ycombinator.com', schema);
|
|
111
|
-
* console.log(data.data); // Structured data matching the schema
|
|
112
|
-
* ```
|
|
113
|
-
*/
|
|
114
|
-
async schema(url, options) {
|
|
115
|
-
const requestData = { url };
|
|
116
|
-
if (options?.instructions)
|
|
117
|
-
requestData.instructions = options.instructions;
|
|
118
|
-
if (options?.nocache)
|
|
119
|
-
requestData.nocache = options.nocache;
|
|
120
|
-
return await this.httpClient.post('v1/extract/json/schema', requestData);
|
|
121
|
-
}
|
|
122
75
|
/**
|
|
123
76
|
* Extract structured JSON from URL content
|
|
124
77
|
*
|
|
125
78
|
* Fetches a URL and extracts structured data according to a provided JSON schema.
|
|
126
|
-
* The schema defines what data to extract and its structure.
|
|
127
|
-
* schema manually or generate one using the schema() method.
|
|
79
|
+
* The schema defines what data to extract and its structure.
|
|
128
80
|
*
|
|
129
81
|
* @param url - URL to fetch and extract data from
|
|
130
82
|
* @param schema - JSON schema object defining the structure of data to extract
|
|
@@ -191,16 +143,6 @@ class Extract {
|
|
|
191
143
|
* ```
|
|
192
144
|
*
|
|
193
145
|
* @example
|
|
194
|
-
* Using generated schema:
|
|
195
|
-
* ```typescript
|
|
196
|
-
* const schema = await tabs.extract.schema('https://news.ycombinator.com', {
|
|
197
|
-
* instructions: 'extract top stories with title, points, and author'
|
|
198
|
-
* });
|
|
199
|
-
* const result = await tabs.extract.json('https://news.ycombinator.com', schema);
|
|
200
|
-
* console.log(result.data);
|
|
201
|
-
* ```
|
|
202
|
-
*
|
|
203
|
-
* @example
|
|
204
146
|
* Force fresh data retrieval:
|
|
205
147
|
* ```typescript
|
|
206
148
|
* const result = await tabs.extract.json('https://news.ycombinator.com', schema, {
|
package/dist/cjs/extract.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extract.js","sourceRoot":"","sources":["../../src/extract.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAGH,mCAAyD;
|
|
1
|
+
{"version":3,"file":"extract.js","sourceRoot":"","sources":["../../src/extract.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAGH,mCAAyD;AAWzD;;;;;;GAMG;AACH,MAAa,OAAO;IAClB,YAAoB,UAAsB;QAAtB,eAAU,GAAV,UAAU,CAAY;IAAG,CAAC;IAE9C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8CG;IACH,KAAK,CAAC,QAAQ,CAAC,GAAW,EAAE,OAAgC;QAC1D,MAAM,WAAW,GAA4B,EAAE,GAAG,EAAE,CAAC;QACrD,IAAI,OAAO,EAAE,QAAQ;YAAE,WAAW,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QAC/D,IAAI,OAAO,EAAE,OAAO;YAAE,WAAW,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAE5D,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CACzC,qBAAqB,EACrB,WAAW,CACZ,CAAC;QACF,OAAO,wBAAgB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC7C,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6EG;IACH,KAAK,CAAC,IAAI,CACR,GAAW,EACX,MAA+B,EAC/B,OAA4B;QAE5B,MAAM,WAAW,GAA4B;YAC3C,GAAG;YACH,WAAW,EAAE,MAAM;SACpB,CAAC;QACF,IAAI,OAAO,EAAE,OAAO;YAAE,WAAW,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAE5D,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAI,iBAAiB,EAAE,WAAW,CAAC,CAAC;QAC/E,OAAO,oBAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACzC,CAAC;CACF;AA1JD,0BA0JC"}
|
package/dist/cjs/extract.test.js
CHANGED
|
@@ -103,94 +103,6 @@ describe('Extract', () => {
|
|
|
103
103
|
await expect(extract.markdown('https://example.com')).rejects.toThrow('Network error');
|
|
104
104
|
});
|
|
105
105
|
});
|
|
106
|
-
describe('schema', () => {
|
|
107
|
-
it('should generate schema from URL', async () => {
|
|
108
|
-
const mockSchema = {
|
|
109
|
-
type: 'object',
|
|
110
|
-
properties: {
|
|
111
|
-
title: { type: 'string' },
|
|
112
|
-
items: {
|
|
113
|
-
type: 'array',
|
|
114
|
-
items: { type: 'string' },
|
|
115
|
-
},
|
|
116
|
-
},
|
|
117
|
-
};
|
|
118
|
-
mockHttpClient.post = jest.fn().mockResolvedValue(mockSchema);
|
|
119
|
-
const result = await extract.schema('https://example.com');
|
|
120
|
-
expect(mockHttpClient.post).toHaveBeenCalledWith('v1/extract/json/schema', {
|
|
121
|
-
url: 'https://example.com',
|
|
122
|
-
});
|
|
123
|
-
expect(result).toEqual(mockSchema);
|
|
124
|
-
});
|
|
125
|
-
it('should generate schema with instructions', async () => {
|
|
126
|
-
const mockSchema = {
|
|
127
|
-
type: 'object',
|
|
128
|
-
properties: {
|
|
129
|
-
stories: { type: 'array' },
|
|
130
|
-
},
|
|
131
|
-
};
|
|
132
|
-
mockHttpClient.post = jest.fn().mockResolvedValue(mockSchema);
|
|
133
|
-
await extract.schema('https://example.com', {
|
|
134
|
-
instructions: 'extract top stories with title and author',
|
|
135
|
-
});
|
|
136
|
-
expect(mockHttpClient.post).toHaveBeenCalledWith('v1/extract/json/schema', {
|
|
137
|
-
url: 'https://example.com',
|
|
138
|
-
instructions: 'extract top stories with title and author',
|
|
139
|
-
});
|
|
140
|
-
});
|
|
141
|
-
it('should generate schema with nocache option', async () => {
|
|
142
|
-
const mockSchema = { type: 'object' };
|
|
143
|
-
mockHttpClient.post = jest.fn().mockResolvedValue(mockSchema);
|
|
144
|
-
await extract.schema('https://example.com', { nocache: true });
|
|
145
|
-
expect(mockHttpClient.post).toHaveBeenCalledWith('v1/extract/json/schema', {
|
|
146
|
-
url: 'https://example.com',
|
|
147
|
-
nocache: true,
|
|
148
|
-
});
|
|
149
|
-
});
|
|
150
|
-
it('should generate schema with both instructions and nocache', async () => {
|
|
151
|
-
const mockSchema = { type: 'object' };
|
|
152
|
-
mockHttpClient.post = jest.fn().mockResolvedValue(mockSchema);
|
|
153
|
-
await extract.schema('https://example.com', {
|
|
154
|
-
instructions: 'extract products',
|
|
155
|
-
nocache: true,
|
|
156
|
-
});
|
|
157
|
-
expect(mockHttpClient.post).toHaveBeenCalledWith('v1/extract/json/schema', {
|
|
158
|
-
url: 'https://example.com',
|
|
159
|
-
instructions: 'extract products',
|
|
160
|
-
nocache: true,
|
|
161
|
-
});
|
|
162
|
-
});
|
|
163
|
-
it('should handle complex nested schemas', async () => {
|
|
164
|
-
const mockSchema = {
|
|
165
|
-
type: 'object',
|
|
166
|
-
properties: {
|
|
167
|
-
data: {
|
|
168
|
-
type: 'object',
|
|
169
|
-
properties: {
|
|
170
|
-
items: {
|
|
171
|
-
type: 'array',
|
|
172
|
-
items: {
|
|
173
|
-
type: 'object',
|
|
174
|
-
properties: {
|
|
175
|
-
name: { type: 'string' },
|
|
176
|
-
value: { type: 'number' },
|
|
177
|
-
},
|
|
178
|
-
},
|
|
179
|
-
},
|
|
180
|
-
},
|
|
181
|
-
},
|
|
182
|
-
},
|
|
183
|
-
};
|
|
184
|
-
mockHttpClient.post = jest.fn().mockResolvedValue(mockSchema);
|
|
185
|
-
const result = await extract.schema('https://example.com');
|
|
186
|
-
expect(result).toEqual(mockSchema);
|
|
187
|
-
});
|
|
188
|
-
it('should propagate errors from HTTP client', async () => {
|
|
189
|
-
const error = new Error('Schema generation failed');
|
|
190
|
-
mockHttpClient.post = jest.fn().mockRejectedValue(error);
|
|
191
|
-
await expect(extract.schema('https://example.com')).rejects.toThrow('Schema generation failed');
|
|
192
|
-
});
|
|
193
|
-
});
|
|
194
106
|
describe('json', () => {
|
|
195
107
|
const testSchema = {
|
|
196
108
|
type: 'object',
|
|
@@ -306,32 +218,6 @@ describe('Extract', () => {
|
|
|
306
218
|
});
|
|
307
219
|
});
|
|
308
220
|
describe('Integration scenarios', () => {
|
|
309
|
-
it('should use generated schema for extraction', async () => {
|
|
310
|
-
const mockSchema = {
|
|
311
|
-
type: 'object',
|
|
312
|
-
properties: {
|
|
313
|
-
stories: { type: 'array' },
|
|
314
|
-
},
|
|
315
|
-
};
|
|
316
|
-
const mockData = {
|
|
317
|
-
stories: [
|
|
318
|
-
{ title: 'Story 1', points: 100 },
|
|
319
|
-
{ title: 'Story 2', points: 50 },
|
|
320
|
-
],
|
|
321
|
-
};
|
|
322
|
-
mockHttpClient.post = jest
|
|
323
|
-
.fn()
|
|
324
|
-
.mockResolvedValueOnce(mockSchema)
|
|
325
|
-
.mockResolvedValueOnce(mockData);
|
|
326
|
-
// First generate schema
|
|
327
|
-
const schema = await extract.schema('https://example.com', {
|
|
328
|
-
instructions: 'extract top stories',
|
|
329
|
-
});
|
|
330
|
-
// Then use it for extraction
|
|
331
|
-
const result = await extract.json('https://example.com', schema);
|
|
332
|
-
expect(mockHttpClient.post).toHaveBeenCalledTimes(2);
|
|
333
|
-
expect(result.data).toEqual(mockData);
|
|
334
|
-
});
|
|
335
221
|
it('should handle multiple extractions with same schema', async () => {
|
|
336
222
|
const schema = { type: 'object', properties: { value: { type: 'string' } } };
|
|
337
223
|
mockHttpClient.post = jest
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extract.test.js","sourceRoot":"","sources":["../../src/extract.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"extract.test.js","sourceRoot":"","sources":["../../src/extract.test.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/generate.d.ts
CHANGED
package/dist/cjs/generate.js
CHANGED
package/dist/cjs/index.d.ts
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Tabstack TypeScript/JavaScript SDK
|
|
3
3
|
*
|
|
4
|
-
* This SDK provides a TypeScript/JavaScript interface to the
|
|
4
|
+
* This SDK provides a TypeScript/JavaScript interface to the Tabstack API for web
|
|
5
5
|
* content extraction, AI-powered content generation, and browser automation.
|
|
6
6
|
*
|
|
7
7
|
* @example
|
|
8
8
|
* ```typescript
|
|
9
|
-
* import {
|
|
9
|
+
* import { Tabstack } from '@tabstack/sdk';
|
|
10
10
|
*
|
|
11
|
-
* const tabs = new
|
|
11
|
+
* const tabs = new Tabstack({
|
|
12
12
|
* apiKey: process.env.TABSTACK_API_KEY!
|
|
13
13
|
* });
|
|
14
14
|
*
|
|
@@ -40,13 +40,13 @@
|
|
|
40
40
|
*
|
|
41
41
|
* @packageDocumentation
|
|
42
42
|
*/
|
|
43
|
-
export {
|
|
43
|
+
export { Tabstack, TabstackOptions } from './client';
|
|
44
44
|
export { Extract } from './extract';
|
|
45
45
|
export { Generate } from './generate';
|
|
46
|
-
export {
|
|
46
|
+
export { Agent } from './agent';
|
|
47
47
|
export { Metadata, MetadataFields, MarkdownResponse, JsonResponse, AutomateEvent, EventData, } from './types';
|
|
48
|
-
export {
|
|
49
|
-
export type { ExtractMarkdownOptions,
|
|
48
|
+
export { TabstackError, BadRequestError, UnauthorizedError, InvalidURLError, ServerError, ServiceUnavailableError, APIError, } from './exceptions';
|
|
49
|
+
export type { ExtractMarkdownOptions, ExtractJsonOptions } from './extract';
|
|
50
50
|
export type { GenerateJsonOptions } from './generate';
|
|
51
|
-
export type {
|
|
51
|
+
export type { AutomateOptions } from './agent';
|
|
52
52
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/cjs/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAGH,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAGrD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAGH,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAGrD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAGhC,OAAO,EACL,QAAQ,EACR,cAAc,EACd,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACb,SAAS,GACV,MAAM,SAAS,CAAC;AAGjB,OAAO,EACL,aAAa,EACb,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,WAAW,EACX,uBAAuB,EACvB,QAAQ,GACT,MAAM,cAAc,CAAC;AAGtB,YAAY,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC5E,YAAY,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACtD,YAAY,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC"}
|