@tabstack/sdk 1.0.0

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.
Files changed (155) hide show
  1. package/LICENSE +190 -0
  2. package/README.md +485 -0
  3. package/dist/cjs/automate.d.ts +156 -0
  4. package/dist/cjs/automate.d.ts.map +1 -0
  5. package/dist/cjs/automate.js +211 -0
  6. package/dist/cjs/automate.js.map +1 -0
  7. package/dist/cjs/automate.test.d.ts +5 -0
  8. package/dist/cjs/automate.test.d.ts.map +1 -0
  9. package/dist/cjs/automate.test.js +441 -0
  10. package/dist/cjs/automate.test.js.map +1 -0
  11. package/dist/cjs/client.d.ts +58 -0
  12. package/dist/cjs/client.d.ts.map +1 -0
  13. package/dist/cjs/client.js +58 -0
  14. package/dist/cjs/client.js.map +1 -0
  15. package/dist/cjs/client.test.d.ts +5 -0
  16. package/dist/cjs/client.test.d.ts.map +1 -0
  17. package/dist/cjs/client.test.js +256 -0
  18. package/dist/cjs/client.test.js.map +1 -0
  19. package/dist/cjs/exceptions.d.ts +57 -0
  20. package/dist/cjs/exceptions.d.ts.map +1 -0
  21. package/dist/cjs/exceptions.js +95 -0
  22. package/dist/cjs/exceptions.js.map +1 -0
  23. package/dist/cjs/exceptions.test.d.ts +5 -0
  24. package/dist/cjs/exceptions.test.d.ts.map +1 -0
  25. package/dist/cjs/exceptions.test.js +239 -0
  26. package/dist/cjs/exceptions.test.js.map +1 -0
  27. package/dist/cjs/extract.d.ts +206 -0
  28. package/dist/cjs/extract.d.ts.map +1 -0
  29. package/dist/cjs/extract.js +223 -0
  30. package/dist/cjs/extract.js.map +1 -0
  31. package/dist/cjs/extract.test.d.ts +5 -0
  32. package/dist/cjs/extract.test.d.ts.map +1 -0
  33. package/dist/cjs/extract.test.js +364 -0
  34. package/dist/cjs/extract.test.js.map +1 -0
  35. package/dist/cjs/generate.d.ts +113 -0
  36. package/dist/cjs/generate.d.ts.map +1 -0
  37. package/dist/cjs/generate.js +124 -0
  38. package/dist/cjs/generate.js.map +1 -0
  39. package/dist/cjs/generate.test.d.ts +5 -0
  40. package/dist/cjs/generate.test.d.ts.map +1 -0
  41. package/dist/cjs/generate.test.js +314 -0
  42. package/dist/cjs/generate.test.js.map +1 -0
  43. package/dist/cjs/index.d.ts +52 -0
  44. package/dist/cjs/index.d.ts.map +1 -0
  45. package/dist/cjs/index.js +72 -0
  46. package/dist/cjs/index.js.map +1 -0
  47. package/dist/cjs/package.json +3 -0
  48. package/dist/cjs/types.d.ts +73 -0
  49. package/dist/cjs/types.d.ts.map +1 -0
  50. package/dist/cjs/types.js +118 -0
  51. package/dist/cjs/types.js.map +1 -0
  52. package/dist/cjs/types.test.d.ts +5 -0
  53. package/dist/cjs/types.test.d.ts.map +1 -0
  54. package/dist/cjs/types.test.js +370 -0
  55. package/dist/cjs/types.test.js.map +1 -0
  56. package/dist/cjs/util/http.d.ts +29 -0
  57. package/dist/cjs/util/http.d.ts.map +1 -0
  58. package/dist/cjs/util/http.js +201 -0
  59. package/dist/cjs/util/http.js.map +1 -0
  60. package/dist/cjs/util/http.test.d.ts +5 -0
  61. package/dist/cjs/util/http.test.d.ts.map +1 -0
  62. package/dist/cjs/util/http.test.js +237 -0
  63. package/dist/cjs/util/http.test.js.map +1 -0
  64. package/dist/esm/automate.d.ts +156 -0
  65. package/dist/esm/automate.d.ts.map +1 -0
  66. package/dist/esm/automate.js +207 -0
  67. package/dist/esm/automate.js.map +1 -0
  68. package/dist/esm/automate.test.d.ts +5 -0
  69. package/dist/esm/automate.test.d.ts.map +1 -0
  70. package/dist/esm/automate.test.js +439 -0
  71. package/dist/esm/automate.test.js.map +1 -0
  72. package/dist/esm/client.d.ts +58 -0
  73. package/dist/esm/client.d.ts.map +1 -0
  74. package/dist/esm/client.js +54 -0
  75. package/dist/esm/client.js.map +1 -0
  76. package/dist/esm/client.test.d.ts +5 -0
  77. package/dist/esm/client.test.d.ts.map +1 -0
  78. package/dist/esm/client.test.js +254 -0
  79. package/dist/esm/client.test.js.map +1 -0
  80. package/dist/esm/exceptions.d.ts +57 -0
  81. package/dist/esm/exceptions.d.ts.map +1 -0
  82. package/dist/esm/exceptions.js +85 -0
  83. package/dist/esm/exceptions.js.map +1 -0
  84. package/dist/esm/exceptions.test.d.ts +5 -0
  85. package/dist/esm/exceptions.test.d.ts.map +1 -0
  86. package/dist/esm/exceptions.test.js +237 -0
  87. package/dist/esm/exceptions.test.js.map +1 -0
  88. package/dist/esm/extract.d.ts +206 -0
  89. package/dist/esm/extract.d.ts.map +1 -0
  90. package/dist/esm/extract.js +219 -0
  91. package/dist/esm/extract.js.map +1 -0
  92. package/dist/esm/extract.test.d.ts +5 -0
  93. package/dist/esm/extract.test.d.ts.map +1 -0
  94. package/dist/esm/extract.test.js +362 -0
  95. package/dist/esm/extract.test.js.map +1 -0
  96. package/dist/esm/generate.d.ts +113 -0
  97. package/dist/esm/generate.d.ts.map +1 -0
  98. package/dist/esm/generate.js +120 -0
  99. package/dist/esm/generate.js.map +1 -0
  100. package/dist/esm/generate.test.d.ts +5 -0
  101. package/dist/esm/generate.test.d.ts.map +1 -0
  102. package/dist/esm/generate.test.js +312 -0
  103. package/dist/esm/generate.test.js.map +1 -0
  104. package/dist/esm/index.d.ts +52 -0
  105. package/dist/esm/index.d.ts.map +1 -0
  106. package/dist/esm/index.js +53 -0
  107. package/dist/esm/index.js.map +1 -0
  108. package/dist/esm/package.json +3 -0
  109. package/dist/esm/types.d.ts +73 -0
  110. package/dist/esm/types.d.ts.map +1 -0
  111. package/dist/esm/types.js +110 -0
  112. package/dist/esm/types.js.map +1 -0
  113. package/dist/esm/types.test.d.ts +5 -0
  114. package/dist/esm/types.test.d.ts.map +1 -0
  115. package/dist/esm/types.test.js +368 -0
  116. package/dist/esm/types.test.js.map +1 -0
  117. package/dist/esm/util/http.d.ts +29 -0
  118. package/dist/esm/util/http.d.ts.map +1 -0
  119. package/dist/esm/util/http.js +164 -0
  120. package/dist/esm/util/http.js.map +1 -0
  121. package/dist/esm/util/http.test.d.ts +5 -0
  122. package/dist/esm/util/http.test.d.ts.map +1 -0
  123. package/dist/esm/util/http.test.js +232 -0
  124. package/dist/esm/util/http.test.js.map +1 -0
  125. package/dist/types/automate.d.ts +156 -0
  126. package/dist/types/automate.d.ts.map +1 -0
  127. package/dist/types/automate.test.d.ts +5 -0
  128. package/dist/types/automate.test.d.ts.map +1 -0
  129. package/dist/types/client.d.ts +58 -0
  130. package/dist/types/client.d.ts.map +1 -0
  131. package/dist/types/client.test.d.ts +5 -0
  132. package/dist/types/client.test.d.ts.map +1 -0
  133. package/dist/types/exceptions.d.ts +57 -0
  134. package/dist/types/exceptions.d.ts.map +1 -0
  135. package/dist/types/exceptions.test.d.ts +5 -0
  136. package/dist/types/exceptions.test.d.ts.map +1 -0
  137. package/dist/types/extract.d.ts +206 -0
  138. package/dist/types/extract.d.ts.map +1 -0
  139. package/dist/types/extract.test.d.ts +5 -0
  140. package/dist/types/extract.test.d.ts.map +1 -0
  141. package/dist/types/generate.d.ts +113 -0
  142. package/dist/types/generate.d.ts.map +1 -0
  143. package/dist/types/generate.test.d.ts +5 -0
  144. package/dist/types/generate.test.d.ts.map +1 -0
  145. package/dist/types/index.d.ts +52 -0
  146. package/dist/types/index.d.ts.map +1 -0
  147. package/dist/types/types.d.ts +73 -0
  148. package/dist/types/types.d.ts.map +1 -0
  149. package/dist/types/types.test.d.ts +5 -0
  150. package/dist/types/types.test.d.ts.map +1 -0
  151. package/dist/types/util/http.d.ts +29 -0
  152. package/dist/types/util/http.d.ts.map +1 -0
  153. package/dist/types/util/http.test.d.ts +5 -0
  154. package/dist/types/util/http.test.d.ts.map +1 -0
  155. package/package.json +90 -0
@@ -0,0 +1,312 @@
1
+ /**
2
+ * Tests for Generate operator
3
+ */
4
+ import { Generate } from './generate.js';
5
+ import { HTTPClient } from './util/http.js';
6
+ import { JsonResponse } from './types.js';
7
+ // Mock HTTPClient
8
+ jest.mock('./util/http');
9
+ describe('Generate', () => {
10
+ let generate;
11
+ let mockHttpClient;
12
+ beforeEach(() => {
13
+ mockHttpClient = new HTTPClient({ apiKey: 'test-key' });
14
+ generate = new Generate(mockHttpClient);
15
+ });
16
+ afterEach(() => {
17
+ jest.clearAllMocks();
18
+ });
19
+ describe('json', () => {
20
+ const testSchema = {
21
+ type: 'object',
22
+ properties: {
23
+ title: { type: 'string' },
24
+ category: { type: 'string' },
25
+ summary: { type: 'string' },
26
+ },
27
+ required: ['title', 'category', 'summary'],
28
+ };
29
+ const testInstructions = 'Categorize and summarize the content';
30
+ it('should generate JSON data from URL', async () => {
31
+ const mockData = {
32
+ title: 'Test Article',
33
+ category: 'technology',
34
+ summary: 'A test article about tech',
35
+ };
36
+ mockHttpClient.post = jest.fn().mockResolvedValue(mockData);
37
+ const result = await generate.json('https://example.com', testSchema, testInstructions);
38
+ expect(mockHttpClient.post).toHaveBeenCalledWith('v1/generate/json', {
39
+ url: 'https://example.com',
40
+ json_schema: testSchema,
41
+ instructions: testInstructions,
42
+ });
43
+ expect(result).toBeInstanceOf(JsonResponse);
44
+ expect(result.data).toEqual(mockData);
45
+ });
46
+ it('should generate JSON with nocache option', async () => {
47
+ const mockData = { fresh: true };
48
+ mockHttpClient.post = jest.fn().mockResolvedValue(mockData);
49
+ await generate.json('https://example.com', testSchema, testInstructions, { nocache: true });
50
+ expect(mockHttpClient.post).toHaveBeenCalledWith('v1/generate/json', {
51
+ url: 'https://example.com',
52
+ json_schema: testSchema,
53
+ instructions: testInstructions,
54
+ nocache: true,
55
+ });
56
+ });
57
+ it('should handle array data generation', async () => {
58
+ const schema = {
59
+ type: 'object',
60
+ properties: {
61
+ summaries: {
62
+ type: 'array',
63
+ items: {
64
+ type: 'object',
65
+ properties: {
66
+ title: { type: 'string' },
67
+ summary: { type: 'string' },
68
+ },
69
+ },
70
+ },
71
+ },
72
+ };
73
+ const mockData = {
74
+ summaries: [
75
+ { title: 'Story 1', summary: 'Summary 1' },
76
+ { title: 'Story 2', summary: 'Summary 2' },
77
+ ],
78
+ };
79
+ mockHttpClient.post = jest.fn().mockResolvedValue(mockData);
80
+ const result = await generate.json('https://example.com', schema, 'Create summaries for each story');
81
+ expect(result.data).toEqual(mockData);
82
+ });
83
+ it('should handle complex nested data generation', async () => {
84
+ const schema = {
85
+ type: 'object',
86
+ properties: {
87
+ analysis: {
88
+ type: 'object',
89
+ properties: {
90
+ sentiment: { type: 'string' },
91
+ topics: {
92
+ type: 'array',
93
+ items: { type: 'string' },
94
+ },
95
+ entities: {
96
+ type: 'array',
97
+ items: {
98
+ type: 'object',
99
+ properties: {
100
+ name: { type: 'string' },
101
+ type: { type: 'string' },
102
+ },
103
+ },
104
+ },
105
+ },
106
+ },
107
+ },
108
+ };
109
+ const mockData = {
110
+ analysis: {
111
+ sentiment: 'positive',
112
+ topics: ['AI', 'Technology', 'Innovation'],
113
+ entities: [
114
+ { name: 'OpenAI', type: 'organization' },
115
+ { name: 'GPT-4', type: 'product' },
116
+ ],
117
+ },
118
+ };
119
+ mockHttpClient.post = jest.fn().mockResolvedValue(mockData);
120
+ const result = await generate.json('https://example.com', schema, 'Analyze the content for sentiment, topics, and entities');
121
+ expect(result.data).toEqual(mockData);
122
+ });
123
+ it('should work with TypeScript generics', async () => {
124
+ const mockData = {
125
+ title: 'AI News',
126
+ category: 'technology',
127
+ tags: ['AI', 'ML', 'Innovation'],
128
+ summary: 'Latest developments in AI technology',
129
+ };
130
+ mockHttpClient.post = jest.fn().mockResolvedValue(mockData);
131
+ const result = await generate.json('https://example.com', testSchema, 'Generate structured content');
132
+ expect(result.data.title).toBe('AI News');
133
+ expect(result.data.category).toBe('technology');
134
+ expect(result.data.tags).toEqual(['AI', 'ML', 'Innovation']);
135
+ expect(result.data.summary).toBe('Latest developments in AI technology');
136
+ });
137
+ it('should handle simple text generation', async () => {
138
+ const schema = {
139
+ type: 'object',
140
+ properties: {
141
+ summary: { type: 'string' },
142
+ },
143
+ };
144
+ const mockData = {
145
+ summary: 'This is a generated summary of the content.',
146
+ };
147
+ mockHttpClient.post = jest.fn().mockResolvedValue(mockData);
148
+ const result = await generate.json('https://example.com', schema, 'Summarize the content');
149
+ expect(result.data).toEqual(mockData);
150
+ });
151
+ it('should handle sentiment analysis generation', async () => {
152
+ const schema = {
153
+ type: 'object',
154
+ properties: {
155
+ sentiment: { type: 'string' },
156
+ confidence: { type: 'number' },
157
+ reasoning: { type: 'string' },
158
+ },
159
+ };
160
+ const mockData = {
161
+ sentiment: 'positive',
162
+ confidence: 0.87,
163
+ reasoning: 'The article uses optimistic language and discusses benefits',
164
+ };
165
+ mockHttpClient.post = jest.fn().mockResolvedValue(mockData);
166
+ const result = await generate.json('https://example.com', schema, 'Analyze sentiment with confidence score and reasoning');
167
+ expect(result.data).toEqual(mockData);
168
+ });
169
+ it('should handle categorization generation', async () => {
170
+ const schema = {
171
+ type: 'object',
172
+ properties: {
173
+ categories: {
174
+ type: 'array',
175
+ items: { type: 'string' },
176
+ },
177
+ primaryCategory: { type: 'string' },
178
+ },
179
+ };
180
+ const mockData = {
181
+ categories: ['technology', 'business', 'innovation'],
182
+ primaryCategory: 'technology',
183
+ };
184
+ mockHttpClient.post = jest.fn().mockResolvedValue(mockData);
185
+ const result = await generate.json('https://example.com', schema, 'Categorize the content and identify primary category');
186
+ expect(result.data).toEqual(mockData);
187
+ });
188
+ it('should handle key points extraction generation', async () => {
189
+ const schema = {
190
+ type: 'object',
191
+ properties: {
192
+ keyPoints: {
193
+ type: 'array',
194
+ items: { type: 'string' },
195
+ },
196
+ },
197
+ };
198
+ const mockData = {
199
+ keyPoints: [
200
+ 'First important point from the article',
201
+ 'Second key takeaway',
202
+ 'Third major insight',
203
+ ],
204
+ };
205
+ mockHttpClient.post = jest.fn().mockResolvedValue(mockData);
206
+ const result = await generate.json('https://example.com', schema, 'Extract the main key points');
207
+ expect(result.data).toEqual(mockData);
208
+ });
209
+ it('should handle long instructions', async () => {
210
+ const longInstructions = 'Analyze the content comprehensively. For each section, identify the main topic, ' +
211
+ 'extract key points, determine sentiment, categorize by subject area, and create ' +
212
+ 'a concise summary. Additionally, identify any mentioned entities such as people, ' +
213
+ 'organizations, or products, and classify them appropriately.';
214
+ const mockData = {
215
+ sections: [
216
+ {
217
+ topic: 'AI Development',
218
+ keyPoints: ['Point 1', 'Point 2'],
219
+ sentiment: 'positive',
220
+ category: 'technology',
221
+ summary: 'Summary text',
222
+ },
223
+ ],
224
+ };
225
+ mockHttpClient.post = jest.fn().mockResolvedValue(mockData);
226
+ await generate.json('https://example.com', testSchema, longInstructions);
227
+ expect(mockHttpClient.post).toHaveBeenCalledWith('v1/generate/json', {
228
+ url: 'https://example.com',
229
+ json_schema: testSchema,
230
+ instructions: longInstructions,
231
+ });
232
+ });
233
+ it('should handle empty schema', async () => {
234
+ const mockData = { result: 'data' };
235
+ mockHttpClient.post = jest.fn().mockResolvedValue(mockData);
236
+ const result = await generate.json('https://example.com', {}, 'Generate content');
237
+ expect(result.data).toEqual(mockData);
238
+ });
239
+ it('should handle null data', async () => {
240
+ mockHttpClient.post = jest.fn().mockResolvedValue(null);
241
+ const result = await generate.json('https://example.com', testSchema, testInstructions);
242
+ expect(result.data).toBeNull();
243
+ });
244
+ it('should propagate errors from HTTP client', async () => {
245
+ const error = new Error('Generation failed');
246
+ mockHttpClient.post = jest.fn().mockRejectedValue(error);
247
+ await expect(generate.json('https://example.com', testSchema, testInstructions)).rejects.toThrow('Generation failed');
248
+ });
249
+ });
250
+ describe('Integration scenarios', () => {
251
+ it('should generate different analyses from same URL', async () => {
252
+ const sentimentSchema = {
253
+ type: 'object',
254
+ properties: { sentiment: { type: 'string' } },
255
+ };
256
+ const summarySchema = {
257
+ type: 'object',
258
+ properties: { summary: { type: 'string' } },
259
+ };
260
+ mockHttpClient.post = jest
261
+ .fn()
262
+ .mockResolvedValueOnce({ sentiment: 'positive' })
263
+ .mockResolvedValueOnce({ summary: 'A summary of the content' });
264
+ const sentiment = await generate.json('https://example.com', sentimentSchema, 'Analyze sentiment');
265
+ const summary = await generate.json('https://example.com', summarySchema, 'Create summary');
266
+ expect(sentiment.data).toEqual({ sentiment: 'positive' });
267
+ expect(summary.data).toEqual({ summary: 'A summary of the content' });
268
+ });
269
+ it('should handle batch content generation', async () => {
270
+ const schema = {
271
+ type: 'object',
272
+ properties: {
273
+ items: {
274
+ type: 'array',
275
+ items: {
276
+ type: 'object',
277
+ properties: {
278
+ title: { type: 'string' },
279
+ category: { type: 'string' },
280
+ },
281
+ },
282
+ },
283
+ },
284
+ };
285
+ const mockData = {
286
+ items: [
287
+ { title: 'Item 1', category: 'tech' },
288
+ { title: 'Item 2', category: 'business' },
289
+ { title: 'Item 3', category: 'science' },
290
+ ],
291
+ };
292
+ mockHttpClient.post = jest.fn().mockResolvedValue(mockData);
293
+ const result = await generate.json('https://example.com', schema, 'Categorize all items on the page');
294
+ expect(result.data.items).toHaveLength(3);
295
+ expect(result.data.items[0]?.category).toBe('tech');
296
+ });
297
+ it('should work with nocache for fresh generation', async () => {
298
+ mockHttpClient.post = jest
299
+ .fn()
300
+ .mockResolvedValueOnce({ version: 'cached' })
301
+ .mockResolvedValueOnce({ version: 'fresh' });
302
+ const schema = { type: 'object', properties: { version: { type: 'string' } } };
303
+ const cached = await generate.json('https://example.com', schema, 'Generate data');
304
+ const fresh = await generate.json('https://example.com', schema, 'Generate data', {
305
+ nocache: true,
306
+ });
307
+ expect(cached.data).toEqual({ version: 'cached' });
308
+ expect(fresh.data).toEqual({ version: 'fresh' });
309
+ });
310
+ });
311
+ });
312
+ //# sourceMappingURL=generate.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate.test.js","sourceRoot":"","sources":["../../src/generate.test.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,kBAAkB;AAClB,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AAEzB,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;IACxB,IAAI,QAAkB,CAAC;IACvB,IAAI,cAAuC,CAAC;IAE5C,UAAU,CAAC,GAAG,EAAE;QACd,cAAc,GAAG,IAAI,UAAU,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAA4B,CAAC;QACnF,QAAQ,GAAG,IAAI,QAAQ,CAAC,cAAc,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE;QACpB,MAAM,UAAU,GAAG;YACjB,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACzB,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBAC5B,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;aAC5B;YACD,QAAQ,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,CAAC;SAC3C,CAAC;QAEF,MAAM,gBAAgB,GAAG,sCAAsC,CAAC;QAEhE,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;YAClD,MAAM,QAAQ,GAAG;gBACf,KAAK,EAAE,cAAc;gBACrB,QAAQ,EAAE,YAAY;gBACtB,OAAO,EAAE,2BAA2B;aACrC,CAAC;YAEF,cAAc,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;YAE5D,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,qBAAqB,EAAE,UAAU,EAAE,gBAAgB,CAAC,CAAC;YAExF,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,oBAAoB,CAAC,kBAAkB,EAAE;gBACnE,GAAG,EAAE,qBAAqB;gBAC1B,WAAW,EAAE,UAAU;gBACvB,YAAY,EAAE,gBAAgB;aAC/B,CAAC,CAAC;YACH,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;YAC5C,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;YACxD,MAAM,QAAQ,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;YAEjC,cAAc,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;YAE5D,MAAM,QAAQ,CAAC,IAAI,CAAC,qBAAqB,EAAE,UAAU,EAAE,gBAAgB,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YAE5F,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,oBAAoB,CAAC,kBAAkB,EAAE;gBACnE,GAAG,EAAE,qBAAqB;gBAC1B,WAAW,EAAE,UAAU;gBACvB,YAAY,EAAE,gBAAgB;gBAC9B,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;YACnD,MAAM,MAAM,GAAG;gBACb,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,SAAS,EAAE;wBACT,IAAI,EAAE,OAAO;wBACb,KAAK,EAAE;4BACL,IAAI,EAAE,QAAQ;4BACd,UAAU,EAAE;gCACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gCACzB,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;6BAC5B;yBACF;qBACF;iBACF;aACF,CAAC;YAEF,MAAM,QAAQ,GAAG;gBACf,SAAS,EAAE;oBACT,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE;oBAC1C,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE;iBAC3C;aACF,CAAC;YAEF,cAAc,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;YAE5D,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,CAChC,qBAAqB,EACrB,MAAM,EACN,iCAAiC,CAClC,CAAC;YAEF,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;YAC5D,MAAM,MAAM,GAAG;gBACb,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,QAAQ,EAAE;wBACR,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;4BAC7B,MAAM,EAAE;gCACN,IAAI,EAAE,OAAO;gCACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;6BAC1B;4BACD,QAAQ,EAAE;gCACR,IAAI,EAAE,OAAO;gCACb,KAAK,EAAE;oCACL,IAAI,EAAE,QAAQ;oCACd,UAAU,EAAE;wCACV,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;wCACxB,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;qCACzB;iCACF;6BACF;yBACF;qBACF;iBACF;aACF,CAAC;YAEF,MAAM,QAAQ,GAAG;gBACf,QAAQ,EAAE;oBACR,SAAS,EAAE,UAAU;oBACrB,MAAM,EAAE,CAAC,IAAI,EAAE,YAAY,EAAE,YAAY,CAAC;oBAC1C,QAAQ,EAAE;wBACR,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,cAAc,EAAE;wBACxC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE;qBACnC;iBACF;aACF,CAAC;YAEF,cAAc,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;YAE5D,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,CAChC,qBAAqB,EACrB,MAAM,EACN,yDAAyD,CAC1D,CAAC;YAEF,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;YAQpD,MAAM,QAAQ,GAAqB;gBACjC,KAAK,EAAE,SAAS;gBAChB,QAAQ,EAAE,YAAY;gBACtB,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,YAAY,CAAC;gBAChC,OAAO,EAAE,sCAAsC;aAChD,CAAC;YAEF,cAAc,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;YAE5D,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,CAChC,qBAAqB,EACrB,UAAU,EACV,6BAA6B,CAC9B,CAAC;YAEF,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC1C,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAChD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC;YAC7D,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;QAC3E,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;YACpD,MAAM,MAAM,GAAG;gBACb,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;iBAC5B;aACF,CAAC;YAEF,MAAM,QAAQ,GAAG;gBACf,OAAO,EAAE,6CAA6C;aACvD,CAAC;YAEF,cAAc,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;YAE5D,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,qBAAqB,EAAE,MAAM,EAAE,uBAAuB,CAAC,CAAC;YAE3F,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;YAC3D,MAAM,MAAM,GAAG;gBACb,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBAC7B,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBAC9B,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;iBAC9B;aACF,CAAC;YAEF,MAAM,QAAQ,GAAG;gBACf,SAAS,EAAE,UAAU;gBACrB,UAAU,EAAE,IAAI;gBAChB,SAAS,EAAE,6DAA6D;aACzE,CAAC;YAEF,cAAc,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;YAE5D,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,CAChC,qBAAqB,EACrB,MAAM,EACN,uDAAuD,CACxD,CAAC;YAEF,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;YACvD,MAAM,MAAM,GAAG;gBACb,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,UAAU,EAAE;wBACV,IAAI,EAAE,OAAO;wBACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;qBAC1B;oBACD,eAAe,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;iBACpC;aACF,CAAC;YAEF,MAAM,QAAQ,GAAG;gBACf,UAAU,EAAE,CAAC,YAAY,EAAE,UAAU,EAAE,YAAY,CAAC;gBACpD,eAAe,EAAE,YAAY;aAC9B,CAAC;YAEF,cAAc,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;YAE5D,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,CAChC,qBAAqB,EACrB,MAAM,EACN,sDAAsD,CACvD,CAAC;YAEF,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;YAC9D,MAAM,MAAM,GAAG;gBACb,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,SAAS,EAAE;wBACT,IAAI,EAAE,OAAO;wBACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;qBAC1B;iBACF;aACF,CAAC;YAEF,MAAM,QAAQ,GAAG;gBACf,SAAS,EAAE;oBACT,wCAAwC;oBACxC,qBAAqB;oBACrB,qBAAqB;iBACtB;aACF,CAAC;YAEF,cAAc,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;YAE5D,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,CAChC,qBAAqB,EACrB,MAAM,EACN,6BAA6B,CAC9B,CAAC;YAEF,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;YAC/C,MAAM,gBAAgB,GACpB,kFAAkF;gBAClF,kFAAkF;gBAClF,mFAAmF;gBACnF,8DAA8D,CAAC;YAEjE,MAAM,QAAQ,GAAG;gBACf,QAAQ,EAAE;oBACR;wBACE,KAAK,EAAE,gBAAgB;wBACvB,SAAS,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC;wBACjC,SAAS,EAAE,UAAU;wBACrB,QAAQ,EAAE,YAAY;wBACtB,OAAO,EAAE,cAAc;qBACxB;iBACF;aACF,CAAC;YAEF,cAAc,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;YAE5D,MAAM,QAAQ,CAAC,IAAI,CAAC,qBAAqB,EAAE,UAAU,EAAE,gBAAgB,CAAC,CAAC;YAEzE,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,oBAAoB,CAAC,kBAAkB,EAAE;gBACnE,GAAG,EAAE,qBAAqB;gBAC1B,WAAW,EAAE,UAAU;gBACvB,YAAY,EAAE,gBAAgB;aAC/B,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;YAC1C,MAAM,QAAQ,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;YAEpC,cAAc,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;YAE5D,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE,EAAE,kBAAkB,CAAC,CAAC;YAElF,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yBAAyB,EAAE,KAAK,IAAI,EAAE;YACvC,cAAc,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;YAExD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,qBAAqB,EAAE,UAAU,EAAE,gBAAgB,CAAC,CAAC;YAExF,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;QACjC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;YACxD,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;YAC7C,cAAc,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;YAEzD,MAAM,MAAM,CACV,QAAQ,CAAC,IAAI,CAAC,qBAAqB,EAAE,UAAU,EAAE,gBAAgB,CAAC,CACnE,CAAC,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;QACrC,EAAE,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;YAChE,MAAM,eAAe,GAAG;gBACtB,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;aAC9C,CAAC;YAEF,MAAM,aAAa,GAAG;gBACpB,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;aAC5C,CAAC;YAEF,cAAc,CAAC,IAAI,GAAG,IAAI;iBACvB,EAAE,EAAE;iBACJ,qBAAqB,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;iBAChD,qBAAqB,CAAC,EAAE,OAAO,EAAE,0BAA0B,EAAE,CAAC,CAAC;YAElE,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,CACnC,qBAAqB,EACrB,eAAe,EACf,mBAAmB,CACpB,CAAC;YAEF,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,qBAAqB,EAAE,aAAa,EAAE,gBAAgB,CAAC,CAAC;YAE5F,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,CAAC;YAC1D,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,0BAA0B,EAAE,CAAC,CAAC;QACxE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;YACtD,MAAM,MAAM,GAAG;gBACb,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,KAAK,EAAE;wBACL,IAAI,EAAE,OAAO;wBACb,KAAK,EAAE;4BACL,IAAI,EAAE,QAAQ;4BACd,UAAU,EAAE;gCACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gCACzB,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;6BAC7B;yBACF;qBACF;iBACF;aACF,CAAC;YAEF,MAAM,QAAQ,GAAG;gBACf,KAAK,EAAE;oBACL,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE;oBACrC,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE;oBACzC,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE;iBACzC;aACF,CAAC;YAEF,cAAc,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;YAE5D,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,CAChC,qBAAqB,EACrB,MAAM,EACN,kCAAkC,CACnC,CAAC;YAEF,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC1C,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;YAC7D,cAAc,CAAC,IAAI,GAAG,IAAI;iBACvB,EAAE,EAAE;iBACJ,qBAAqB,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;iBAC5C,qBAAqB,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;YAE/C,MAAM,MAAM,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;YAE/E,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,qBAAqB,EAAE,MAAM,EAAE,eAAe,CAAC,CAAC;YAEnF,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,qBAAqB,EAAE,MAAM,EAAE,eAAe,EAAE;gBAChF,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;YAEH,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;YACnD,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * TABStack AI TypeScript/JavaScript SDK
3
+ *
4
+ * This SDK provides a TypeScript/JavaScript interface to the TABStack AI API for web
5
+ * content extraction, AI-powered content generation, and browser automation.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * import { TABStack } from '@tabstack/sdk';
10
+ *
11
+ * const tabs = new TABStack({
12
+ * apiKey: process.env.TABSTACK_API_KEY!
13
+ * });
14
+ *
15
+ * // Extract markdown
16
+ * const result = await tabs.extract.markdown('https://example.com');
17
+ * console.log(result.content);
18
+ *
19
+ * // Extract structured JSON
20
+ * const schema = {
21
+ * type: 'object',
22
+ * properties: {
23
+ * stories: {
24
+ * type: 'array',
25
+ * items: {
26
+ * type: 'object',
27
+ * properties: {
28
+ * title: { type: 'string' },
29
+ * points: { type: 'number' },
30
+ * author: { type: 'string' }
31
+ * }
32
+ * }
33
+ * }
34
+ * }
35
+ * };
36
+ *
37
+ * const data = await tabs.extract.json('https://news.ycombinator.com', schema);
38
+ * console.log(data.data);
39
+ * ```
40
+ *
41
+ * @packageDocumentation
42
+ */
43
+ export { TABStack, TABStackOptions } from './client';
44
+ export { Extract } from './extract';
45
+ export { Generate } from './generate';
46
+ export { Automate } from './automate';
47
+ export { Metadata, MetadataFields, MarkdownResponse, JsonResponse, AutomateEvent, EventData, } from './types';
48
+ export { TABStackError, BadRequestError, UnauthorizedError, InvalidURLError, ServerError, ServiceUnavailableError, APIError, } from './exceptions';
49
+ export type { ExtractMarkdownOptions, ExtractSchemaOptions, ExtractJsonOptions } from './extract';
50
+ export type { GenerateJsonOptions } from './generate';
51
+ export type { AutomateExecuteOptions } from './automate';
52
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +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,QAAQ,EAAE,MAAM,YAAY,CAAC;AAGtC,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,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAClG,YAAY,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACtD,YAAY,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * TABStack AI TypeScript/JavaScript SDK
3
+ *
4
+ * This SDK provides a TypeScript/JavaScript interface to the TABStack AI API for web
5
+ * content extraction, AI-powered content generation, and browser automation.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * import { TABStack } from '@tabstack/sdk';
10
+ *
11
+ * const tabs = new TABStack({
12
+ * apiKey: process.env.TABSTACK_API_KEY!
13
+ * });
14
+ *
15
+ * // Extract markdown
16
+ * const result = await tabs.extract.markdown('https://example.com');
17
+ * console.log(result.content);
18
+ *
19
+ * // Extract structured JSON
20
+ * const schema = {
21
+ * type: 'object',
22
+ * properties: {
23
+ * stories: {
24
+ * type: 'array',
25
+ * items: {
26
+ * type: 'object',
27
+ * properties: {
28
+ * title: { type: 'string' },
29
+ * points: { type: 'number' },
30
+ * author: { type: 'string' }
31
+ * }
32
+ * }
33
+ * }
34
+ * }
35
+ * };
36
+ *
37
+ * const data = await tabs.extract.json('https://news.ycombinator.com', schema);
38
+ * console.log(data.data);
39
+ * ```
40
+ *
41
+ * @packageDocumentation
42
+ */
43
+ // Main client
44
+ export { TABStack } from './client.js';
45
+ // Operators
46
+ export { Extract } from './extract.js';
47
+ export { Generate } from './generate.js';
48
+ export { Automate } from './automate.js';
49
+ // Response types
50
+ export { Metadata, MarkdownResponse, JsonResponse, AutomateEvent, EventData, } from './types.js';
51
+ // Exceptions
52
+ export { TABStackError, BadRequestError, UnauthorizedError, InvalidURLError, ServerError, ServiceUnavailableError, APIError, } from './exceptions.js';
53
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAEH,cAAc;AACd,OAAO,EAAE,QAAQ,EAAmB,MAAM,UAAU,CAAC;AAErD,YAAY;AACZ,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,iBAAiB;AACjB,OAAO,EACL,QAAQ,EAER,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACb,SAAS,GACV,MAAM,SAAS,CAAC;AAEjB,aAAa;AACb,OAAO,EACL,aAAa,EACb,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,WAAW,EACX,uBAAuB,EACvB,QAAQ,GACT,MAAM,cAAc,CAAC"}
@@ -0,0 +1,3 @@
1
+ {
2
+ "type": "module"
3
+ }
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Type definitions and response models for TABStack AI SDK
3
+ */
4
+ /**
5
+ * Metadata extracted from a web page
6
+ */
7
+ export interface MetadataFields {
8
+ title?: string;
9
+ description?: string;
10
+ author?: string;
11
+ publisher?: string;
12
+ image?: string;
13
+ siteName?: string;
14
+ url?: string;
15
+ type?: string;
16
+ }
17
+ export declare class Metadata {
18
+ title?: string;
19
+ description?: string;
20
+ author?: string;
21
+ publisher?: string;
22
+ image?: string;
23
+ siteName?: string;
24
+ url?: string;
25
+ type?: string;
26
+ constructor(data: MetadataFields);
27
+ static fromJSON(data: Record<string, unknown>): Metadata;
28
+ toJSON(): MetadataFields;
29
+ }
30
+ /**
31
+ * Response from markdown extraction
32
+ */
33
+ export declare class MarkdownResponse {
34
+ url: string;
35
+ content: string;
36
+ metadata?: Metadata | undefined;
37
+ constructor(url: string, content: string, metadata?: Metadata | undefined);
38
+ static fromJSON(data: Record<string, unknown>): MarkdownResponse;
39
+ }
40
+ /**
41
+ * Response from JSON extraction or generation
42
+ */
43
+ export declare class JsonResponse<T = unknown> {
44
+ data: T;
45
+ constructor(data: T);
46
+ static fromJSON<T = unknown>(data: T): JsonResponse<T>;
47
+ }
48
+ /**
49
+ * Event data with dynamic property access
50
+ */
51
+ export declare class EventData {
52
+ private raw;
53
+ constructor(data: Record<string, unknown>);
54
+ /**
55
+ * Get a property from the event data
56
+ */
57
+ get<T = unknown>(key: string, defaultValue?: T): T | undefined;
58
+ /**
59
+ * Get the raw event data
60
+ */
61
+ getRaw(): Record<string, unknown>;
62
+ }
63
+ /**
64
+ * Event from the automate streaming endpoint
65
+ */
66
+ export declare class AutomateEvent {
67
+ type: string;
68
+ data: EventData;
69
+ constructor(type: string, data: EventData);
70
+ static fromJSON(type: string, data: Record<string, unknown>): AutomateEvent;
71
+ toString(): string;
72
+ }
73
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,qBAAa,QAAQ;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;gBAEF,IAAI,EAAE,cAAc;IAWhC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,QAAQ;IAaxD,MAAM,IAAI,cAAc;CAYzB;AAED;;GAEG;AACH,qBAAa,gBAAgB;IAElB,GAAG,EAAE,MAAM;IACX,OAAO,EAAE,MAAM;IACf,QAAQ,CAAC,EAAE,QAAQ;gBAFnB,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,QAAQ,YAAA;IAG5B,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,gBAAgB;CAQjE;AAED;;GAEG;AACH,qBAAa,YAAY,CAAC,CAAC,GAAG,OAAO;IAChB,IAAI,EAAE,CAAC;gBAAP,IAAI,EAAE,CAAC;IAE1B,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;CAGvD;AAED;;GAEG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,GAAG,CAA0B;gBAEzB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAIzC;;OAEG;IACH,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,SAAS;IAI9D;;OAEG;IACH,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAGlC;AAED;;GAEG;AACH,qBAAa,aAAa;IAEf,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,SAAS;gBADf,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,SAAS;IAGxB,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,aAAa;IAI3E,QAAQ,IAAI,MAAM;CAGnB"}
@@ -0,0 +1,110 @@
1
+ /**
2
+ * Type definitions and response models for TABStack AI SDK
3
+ */
4
+ export class Metadata {
5
+ constructor(data) {
6
+ this.title = data.title;
7
+ this.description = data.description;
8
+ this.author = data.author;
9
+ this.publisher = data.publisher;
10
+ this.image = data.image;
11
+ this.siteName = data.siteName;
12
+ this.url = data.url;
13
+ this.type = data.type;
14
+ }
15
+ static fromJSON(data) {
16
+ return new Metadata({
17
+ title: data.title,
18
+ description: data.description,
19
+ author: data.author,
20
+ publisher: data.publisher,
21
+ image: data.image,
22
+ siteName: data.site_name,
23
+ url: data.url,
24
+ type: data.type,
25
+ });
26
+ }
27
+ toJSON() {
28
+ const result = {};
29
+ if (this.title !== undefined)
30
+ result.title = this.title;
31
+ if (this.description !== undefined)
32
+ result.description = this.description;
33
+ if (this.author !== undefined)
34
+ result.author = this.author;
35
+ if (this.publisher !== undefined)
36
+ result.publisher = this.publisher;
37
+ if (this.image !== undefined)
38
+ result.image = this.image;
39
+ if (this.siteName !== undefined)
40
+ result.siteName = this.siteName;
41
+ if (this.url !== undefined)
42
+ result.url = this.url;
43
+ if (this.type !== undefined)
44
+ result.type = this.type;
45
+ return result;
46
+ }
47
+ }
48
+ /**
49
+ * Response from markdown extraction
50
+ */
51
+ export class MarkdownResponse {
52
+ constructor(url, content, metadata) {
53
+ this.url = url;
54
+ this.content = content;
55
+ this.metadata = metadata;
56
+ }
57
+ static fromJSON(data) {
58
+ const metadata = data.metadata && typeof data.metadata === 'object'
59
+ ? Metadata.fromJSON(data.metadata)
60
+ : undefined;
61
+ return new MarkdownResponse(data.url, data.content, metadata);
62
+ }
63
+ }
64
+ /**
65
+ * Response from JSON extraction or generation
66
+ */
67
+ export class JsonResponse {
68
+ constructor(data) {
69
+ this.data = data;
70
+ }
71
+ static fromJSON(data) {
72
+ return new JsonResponse(data);
73
+ }
74
+ }
75
+ /**
76
+ * Event data with dynamic property access
77
+ */
78
+ export class EventData {
79
+ constructor(data) {
80
+ this.raw = data;
81
+ }
82
+ /**
83
+ * Get a property from the event data
84
+ */
85
+ get(key, defaultValue) {
86
+ return this.raw[key] ?? defaultValue;
87
+ }
88
+ /**
89
+ * Get the raw event data
90
+ */
91
+ getRaw() {
92
+ return this.raw;
93
+ }
94
+ }
95
+ /**
96
+ * Event from the automate streaming endpoint
97
+ */
98
+ export class AutomateEvent {
99
+ constructor(type, data) {
100
+ this.type = type;
101
+ this.data = data;
102
+ }
103
+ static fromJSON(type, data) {
104
+ return new AutomateEvent(type, new EventData(data));
105
+ }
106
+ toString() {
107
+ return `AutomateEvent(type='${this.type}', data=${JSON.stringify(this.data.getRaw())})`;
108
+ }
109
+ }
110
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Tests for Type classes
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=types.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.test.d.ts","sourceRoot":"","sources":["../../src/types.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}