@bubblelab/bubble-core 0.1.16 → 0.1.18
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/bubble-bundle.d.ts +84 -79
- package/dist/bubble-factory.js +1 -1
- package/dist/bubble-factory.js.map +1 -1
- package/dist/bubbles/service-bubble/agi-inc.d.ts +112 -112
- package/dist/bubbles/service-bubble/ai-agent.d.ts +8 -8
- package/dist/bubbles/service-bubble/airtable.d.ts +152 -152
- package/dist/bubbles/service-bubble/apify/apify.d.ts +8 -8
- package/dist/bubbles/service-bubble/browserbase/browserbase.d.ts +20 -20
- package/dist/bubbles/service-bubble/browserbase/browserbase.schema.d.ts +8 -8
- package/dist/bubbles/service-bubble/eleven-labs.d.ts +28 -28
- package/dist/bubbles/service-bubble/firecrawl.d.ts +140 -140
- package/dist/bubbles/service-bubble/followupboss.d.ts +128 -128
- package/dist/bubbles/service-bubble/github.d.ts +104 -104
- package/dist/bubbles/service-bubble/gmail.d.ts +456 -456
- package/dist/bubbles/service-bubble/google-calendar.d.ts +120 -120
- package/dist/bubbles/service-bubble/google-drive.d.ts +92 -92
- package/dist/bubbles/service-bubble/google-sheets/google-sheets.d.ts +22 -22
- package/dist/bubbles/service-bubble/google-sheets/google-sheets.schema.d.ts +10 -10
- package/dist/bubbles/service-bubble/hello-world.d.ts +4 -4
- package/dist/bubbles/service-bubble/http.d.ts +16 -16
- package/dist/bubbles/service-bubble/insforge-db.d.ts +10 -10
- package/dist/bubbles/service-bubble/notion/notion.d.ts +76 -76
- package/dist/bubbles/service-bubble/postgresql.d.ts +10 -10
- package/dist/bubbles/service-bubble/resend.d.ts +32 -32
- package/dist/bubbles/service-bubble/slack/index.d.ts +3 -0
- package/dist/bubbles/service-bubble/slack/index.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/slack/index.js +6 -0
- package/dist/bubbles/service-bubble/slack/index.js.map +1 -0
- package/dist/bubbles/service-bubble/slack/slack.d.ts +6812 -0
- package/dist/bubbles/service-bubble/slack/slack.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/slack/slack.js +1840 -0
- package/dist/bubbles/service-bubble/slack/slack.js.map +1 -0
- package/dist/bubbles/service-bubble/slack/slack.schema.d.ts +3980 -0
- package/dist/bubbles/service-bubble/slack/slack.schema.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/slack/slack.schema.js +1061 -0
- package/dist/bubbles/service-bubble/slack/slack.schema.js.map +1 -0
- package/dist/bubbles/service-bubble/slack/slack.utils.d.ts +141 -0
- package/dist/bubbles/service-bubble/slack/slack.utils.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/slack/slack.utils.js +408 -0
- package/dist/bubbles/service-bubble/slack/slack.utils.js.map +1 -0
- package/dist/bubbles/service-bubble/slack.d.ts +1 -6811
- package/dist/bubbles/service-bubble/slack.d.ts.map +1 -1
- package/dist/bubbles/service-bubble/slack.js +2 -1829
- package/dist/bubbles/service-bubble/slack.js.map +1 -1
- package/dist/bubbles/service-bubble/storage.d.ts +20 -20
- package/dist/bubbles/service-bubble/telegram.d.ts +246 -246
- package/dist/bubbles/tool-bubble/amazon-shopping-tool/amazon-shopping-tool.d.ts +16 -16
- package/dist/bubbles/tool-bubble/amazon-shopping-tool/amazon-shopping-tool.schema.d.ts +6 -6
- package/dist/bubbles/tool-bubble/bubbleflow-validation-tool.d.ts +4 -4
- package/dist/bubbles/tool-bubble/chart-js-tool.d.ts +4 -4
- package/dist/bubbles/tool-bubble/code-edit-tool.d.ts +4 -4
- package/dist/bubbles/tool-bubble/get-bubble-details-tool.d.ts +4 -4
- package/dist/bubbles/tool-bubble/get-trigger-detail-tool.d.ts +4 -4
- package/dist/bubbles/tool-bubble/google-maps-tool.d.ts +16 -16
- package/dist/bubbles/tool-bubble/instagram-tool.d.ts +4 -4
- package/dist/bubbles/tool-bubble/linkedin-tool.d.ts +34 -34
- package/dist/bubbles/tool-bubble/list-bubbles-tool.d.ts +4 -4
- package/dist/bubbles/tool-bubble/reddit-scrape-tool.d.ts +14 -14
- package/dist/bubbles/tool-bubble/research-agent-tool.d.ts +4 -4
- package/dist/bubbles/tool-bubble/sql-query-tool.d.ts +8 -8
- package/dist/bubbles/tool-bubble/tiktok-tool.d.ts +12 -12
- package/dist/bubbles/tool-bubble/tool-template.d.ts +4 -4
- package/dist/bubbles/tool-bubble/twitter-tool.d.ts +14 -14
- package/dist/bubbles/tool-bubble/web-crawl-tool.d.ts +4 -4
- package/dist/bubbles/tool-bubble/web-extract-tool.d.ts +4 -4
- package/dist/bubbles/tool-bubble/web-scrape-tool.d.ts +4 -4
- package/dist/bubbles/tool-bubble/web-search-tool.d.ts +10 -10
- package/dist/bubbles/tool-bubble/youtube-tool.d.ts +14 -14
- package/dist/bubbles/workflow-bubble/database-analyzer.workflow.d.ts +4 -4
- package/dist/bubbles/workflow-bubble/generate-document.workflow.d.ts +16 -16
- package/dist/bubbles/workflow-bubble/parse-document.workflow.d.ts +4 -4
- package/dist/bubbles/workflow-bubble/pdf-form-operations.workflow.d.ts +32 -32
- package/dist/bubbles/workflow-bubble/pdf-ocr.workflow.d.ts +8 -8
- package/dist/bubbles/workflow-bubble/slack-data-assistant.workflow.d.ts +8 -8
- package/dist/bubbles/workflow-bubble/slack-data-assistant.workflow.d.ts.map +1 -1
- package/dist/bubbles/workflow-bubble/slack-data-assistant.workflow.js +2 -2
- package/dist/bubbles/workflow-bubble/slack-data-assistant.workflow.js.map +1 -1
- package/dist/bubbles/workflow-bubble/slack-formatter-agent.d.ts +40 -40
- package/dist/bubbles/workflow-bubble/slack-notifier.workflow.d.ts +4 -4
- package/dist/bubbles/workflow-bubble/slack-notifier.workflow.js +1 -1
- package/dist/bubbles/workflow-bubble/slack-notifier.workflow.js.map +1 -1
- package/dist/bubbles.json +2 -2
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- package/dist/bubbles/service-bubble/browserbase/browserbase.integration.flow.d.ts +0 -37
- package/dist/bubbles/service-bubble/browserbase/browserbase.integration.flow.d.ts.map +0 -1
- package/dist/bubbles/service-bubble/browserbase/browserbase.integration.flow.js +0 -203
- package/dist/bubbles/service-bubble/browserbase/browserbase.integration.flow.js.map +0 -1
- package/dist/bubbles/service-bubble/crustdata/crustdata.d.ts +0 -1358
- package/dist/bubbles/service-bubble/crustdata/crustdata.d.ts.map +0 -1
- package/dist/bubbles/service-bubble/crustdata/crustdata.js +0 -219
- package/dist/bubbles/service-bubble/crustdata/crustdata.js.map +0 -1
- package/dist/bubbles/service-bubble/crustdata/crustdata.schema.d.ts +0 -1604
- package/dist/bubbles/service-bubble/crustdata/crustdata.schema.d.ts.map +0 -1
- package/dist/bubbles/service-bubble/crustdata/crustdata.schema.js +0 -194
- package/dist/bubbles/service-bubble/crustdata/crustdata.schema.js.map +0 -1
- package/dist/bubbles/service-bubble/crustdata/index.d.ts +0 -3
- package/dist/bubbles/service-bubble/crustdata/index.d.ts.map +0 -1
- package/dist/bubbles/service-bubble/crustdata/index.js +0 -3
- package/dist/bubbles/service-bubble/crustdata/index.js.map +0 -1
- package/dist/bubbles/service-bubble/http.integration.flow.d.ts +0 -49
- package/dist/bubbles/service-bubble/http.integration.flow.d.ts.map +0 -1
- package/dist/bubbles/service-bubble/http.integration.flow.js +0 -425
- package/dist/bubbles/service-bubble/http.integration.flow.js.map +0 -1
- package/dist/bubbles/tool-bubble/amazon-shopping-tool/amazon-shopping-tool.integration.flow.d.ts +0 -31
- package/dist/bubbles/tool-bubble/amazon-shopping-tool/amazon-shopping-tool.integration.flow.d.ts.map +0 -1
- package/dist/bubbles/tool-bubble/amazon-shopping-tool/amazon-shopping-tool.integration.flow.js +0 -100
- package/dist/bubbles/tool-bubble/amazon-shopping-tool/amazon-shopping-tool.integration.flow.js.map +0 -1
- package/dist/bubbles/tool-bubble/company-enrichment-tool.d.ts +0 -740
- package/dist/bubbles/tool-bubble/company-enrichment-tool.d.ts.map +0 -1
- package/dist/bubbles/tool-bubble/company-enrichment-tool.js +0 -350
- package/dist/bubbles/tool-bubble/company-enrichment-tool.js.map +0 -1
|
@@ -1,425 +0,0 @@
|
|
|
1
|
-
import { BubbleFlow, HttpBubble } from '@bubblelab/bubble-core';
|
|
2
|
-
export class HttpBubbleIntegrationTest extends BubbleFlow {
|
|
3
|
-
// Test basic GET request
|
|
4
|
-
async testBasicGet(baseUrl) {
|
|
5
|
-
const result = await new HttpBubble({
|
|
6
|
-
url: `${baseUrl}/get`,
|
|
7
|
-
method: 'GET',
|
|
8
|
-
}).action();
|
|
9
|
-
const data = result.data;
|
|
10
|
-
return {
|
|
11
|
-
operation: 'basic_get',
|
|
12
|
-
success: result.success && data?.status === 200,
|
|
13
|
-
details: `Status: ${data?.status}, Response time: ${data?.responseTime}ms`,
|
|
14
|
-
status: data?.status,
|
|
15
|
-
responseTime: data?.responseTime,
|
|
16
|
-
};
|
|
17
|
-
}
|
|
18
|
-
// Test GET with query parameters
|
|
19
|
-
async testGetWithParams(baseUrl) {
|
|
20
|
-
const result = await new HttpBubble({
|
|
21
|
-
url: `${baseUrl}/get?foo=bar&baz=123`,
|
|
22
|
-
method: 'GET',
|
|
23
|
-
}).action();
|
|
24
|
-
const data = result.data;
|
|
25
|
-
const json = data?.json;
|
|
26
|
-
const args = json?.args;
|
|
27
|
-
const hasParams = args?.foo === 'bar' && args?.baz === '123';
|
|
28
|
-
return {
|
|
29
|
-
operation: 'get_with_params',
|
|
30
|
-
success: result.success && hasParams,
|
|
31
|
-
details: `Query params preserved: ${hasParams}`,
|
|
32
|
-
status: data?.status,
|
|
33
|
-
responseTime: data?.responseTime,
|
|
34
|
-
};
|
|
35
|
-
}
|
|
36
|
-
// Test POST with JSON body
|
|
37
|
-
async testPostJson(baseUrl) {
|
|
38
|
-
const testData = {
|
|
39
|
-
name: 'Integration Test',
|
|
40
|
-
value: 42,
|
|
41
|
-
nested: { key: 'value' },
|
|
42
|
-
};
|
|
43
|
-
const result = await new HttpBubble({
|
|
44
|
-
url: `${baseUrl}/post`,
|
|
45
|
-
method: 'POST',
|
|
46
|
-
body: testData,
|
|
47
|
-
}).action();
|
|
48
|
-
const data = result.data;
|
|
49
|
-
const json = data?.json;
|
|
50
|
-
const echoedJson = json?.json;
|
|
51
|
-
const bodyMatches = echoedJson?.name === 'Integration Test' && echoedJson?.value === 42;
|
|
52
|
-
return {
|
|
53
|
-
operation: 'post_json',
|
|
54
|
-
success: result.success && bodyMatches,
|
|
55
|
-
details: `JSON body echoed correctly: ${bodyMatches}`,
|
|
56
|
-
status: data?.status,
|
|
57
|
-
responseTime: data?.responseTime,
|
|
58
|
-
};
|
|
59
|
-
}
|
|
60
|
-
// Test POST with string body
|
|
61
|
-
async testPostString(baseUrl) {
|
|
62
|
-
const rawData = 'raw string data for testing';
|
|
63
|
-
const result = await new HttpBubble({
|
|
64
|
-
url: `${baseUrl}/post`,
|
|
65
|
-
method: 'POST',
|
|
66
|
-
body: rawData,
|
|
67
|
-
headers: {
|
|
68
|
-
'Content-Type': 'text/plain',
|
|
69
|
-
},
|
|
70
|
-
}).action();
|
|
71
|
-
const data = result.data;
|
|
72
|
-
const json = data?.json;
|
|
73
|
-
const echoedData = json?.data;
|
|
74
|
-
return {
|
|
75
|
-
operation: 'post_string',
|
|
76
|
-
success: result.success && echoedData === rawData,
|
|
77
|
-
details: `String body echoed: ${echoedData === rawData}`,
|
|
78
|
-
status: data?.status,
|
|
79
|
-
responseTime: data?.responseTime,
|
|
80
|
-
};
|
|
81
|
-
}
|
|
82
|
-
// Test PUT request
|
|
83
|
-
async testPut(baseUrl) {
|
|
84
|
-
const result = await new HttpBubble({
|
|
85
|
-
url: `${baseUrl}/put`,
|
|
86
|
-
method: 'PUT',
|
|
87
|
-
body: { updated: true },
|
|
88
|
-
}).action();
|
|
89
|
-
const data = result.data;
|
|
90
|
-
const json = data?.json;
|
|
91
|
-
const echoedJson = json?.json;
|
|
92
|
-
return {
|
|
93
|
-
operation: 'put_request',
|
|
94
|
-
success: result.success && echoedJson?.updated === true,
|
|
95
|
-
details: `PUT successful`,
|
|
96
|
-
status: data?.status,
|
|
97
|
-
responseTime: data?.responseTime,
|
|
98
|
-
};
|
|
99
|
-
}
|
|
100
|
-
// Test PATCH request
|
|
101
|
-
async testPatch(baseUrl) {
|
|
102
|
-
const result = await new HttpBubble({
|
|
103
|
-
url: `${baseUrl}/patch`,
|
|
104
|
-
method: 'PATCH',
|
|
105
|
-
body: { patched: 'field' },
|
|
106
|
-
}).action();
|
|
107
|
-
const data = result.data;
|
|
108
|
-
const json = data?.json;
|
|
109
|
-
const echoedJson = json?.json;
|
|
110
|
-
return {
|
|
111
|
-
operation: 'patch_request',
|
|
112
|
-
success: result.success && echoedJson?.patched === 'field',
|
|
113
|
-
details: `PATCH successful`,
|
|
114
|
-
status: data?.status,
|
|
115
|
-
responseTime: data?.responseTime,
|
|
116
|
-
};
|
|
117
|
-
}
|
|
118
|
-
// Test DELETE request
|
|
119
|
-
async testDelete(baseUrl) {
|
|
120
|
-
const result = await new HttpBubble({
|
|
121
|
-
url: `${baseUrl}/delete`,
|
|
122
|
-
method: 'DELETE',
|
|
123
|
-
}).action();
|
|
124
|
-
const data = result.data;
|
|
125
|
-
return {
|
|
126
|
-
operation: 'delete_request',
|
|
127
|
-
success: result.success && data?.status === 200,
|
|
128
|
-
details: `DELETE successful`,
|
|
129
|
-
status: data?.status,
|
|
130
|
-
responseTime: data?.responseTime,
|
|
131
|
-
};
|
|
132
|
-
}
|
|
133
|
-
// Test custom headers
|
|
134
|
-
async testCustomHeaders(baseUrl) {
|
|
135
|
-
const result = await new HttpBubble({
|
|
136
|
-
url: `${baseUrl}/headers`,
|
|
137
|
-
method: 'GET',
|
|
138
|
-
headers: {
|
|
139
|
-
'X-Custom-Header': 'test-value',
|
|
140
|
-
'X-Another-Header': 'another-value',
|
|
141
|
-
},
|
|
142
|
-
}).action();
|
|
143
|
-
const data = result.data;
|
|
144
|
-
const json = data?.json;
|
|
145
|
-
const headers = json?.headers;
|
|
146
|
-
const headersReceived = headers?.['X-Custom-Header'] === 'test-value';
|
|
147
|
-
return {
|
|
148
|
-
operation: 'custom_headers',
|
|
149
|
-
success: result.success && headersReceived,
|
|
150
|
-
details: `Custom headers received: ${headersReceived}`,
|
|
151
|
-
status: data?.status,
|
|
152
|
-
responseTime: data?.responseTime,
|
|
153
|
-
};
|
|
154
|
-
}
|
|
155
|
-
// Test Bearer auth type (credentials injected at runtime)
|
|
156
|
-
async testBearerAuth(baseUrl) {
|
|
157
|
-
const result = await new HttpBubble({
|
|
158
|
-
url: `${baseUrl}/headers`,
|
|
159
|
-
method: 'GET',
|
|
160
|
-
authType: 'bearer',
|
|
161
|
-
// credentials will be injected at runtime by BubbleInjector
|
|
162
|
-
}).action();
|
|
163
|
-
const data = result.data;
|
|
164
|
-
const json = data?.json;
|
|
165
|
-
const headers = json?.headers;
|
|
166
|
-
const authHeader = headers?.Authorization;
|
|
167
|
-
const hasBearerToken = authHeader?.startsWith('Bearer ') ?? false;
|
|
168
|
-
return {
|
|
169
|
-
operation: 'bearer_auth',
|
|
170
|
-
success: result.success && hasBearerToken,
|
|
171
|
-
details: `Bearer auth header present: ${hasBearerToken}`,
|
|
172
|
-
status: data?.status,
|
|
173
|
-
responseTime: data?.responseTime,
|
|
174
|
-
};
|
|
175
|
-
}
|
|
176
|
-
// Test Basic auth type (credentials injected at runtime)
|
|
177
|
-
async testBasicAuth(baseUrl) {
|
|
178
|
-
const result = await new HttpBubble({
|
|
179
|
-
url: `${baseUrl}/headers`,
|
|
180
|
-
method: 'GET',
|
|
181
|
-
authType: 'basic',
|
|
182
|
-
// credentials will be injected at runtime by BubbleInjector
|
|
183
|
-
}).action();
|
|
184
|
-
const data = result.data;
|
|
185
|
-
const json = data?.json;
|
|
186
|
-
const headers = json?.headers;
|
|
187
|
-
const authHeader = headers?.Authorization;
|
|
188
|
-
const hasBasicToken = authHeader?.startsWith('Basic ') ?? false;
|
|
189
|
-
return {
|
|
190
|
-
operation: 'basic_auth',
|
|
191
|
-
success: result.success && hasBasicToken,
|
|
192
|
-
details: `Basic auth header present: ${hasBasicToken}`,
|
|
193
|
-
status: data?.status,
|
|
194
|
-
responseTime: data?.responseTime,
|
|
195
|
-
};
|
|
196
|
-
}
|
|
197
|
-
// Test X-API-Key auth type (credentials injected at runtime)
|
|
198
|
-
async testApiKeyAuth(baseUrl) {
|
|
199
|
-
const result = await new HttpBubble({
|
|
200
|
-
url: `${baseUrl}/headers`,
|
|
201
|
-
method: 'GET',
|
|
202
|
-
authType: 'api-key',
|
|
203
|
-
// credentials will be injected at runtime by BubbleInjector
|
|
204
|
-
}).action();
|
|
205
|
-
const data = result.data;
|
|
206
|
-
const json = data?.json;
|
|
207
|
-
const headers = json?.headers;
|
|
208
|
-
const apiKeyHeader = headers?.['X-Api-Key'];
|
|
209
|
-
const hasApiKey = !!apiKeyHeader;
|
|
210
|
-
return {
|
|
211
|
-
operation: 'api_key_auth',
|
|
212
|
-
success: result.success && hasApiKey,
|
|
213
|
-
details: `X-API-Key header present: ${hasApiKey}`,
|
|
214
|
-
status: data?.status,
|
|
215
|
-
responseTime: data?.responseTime,
|
|
216
|
-
};
|
|
217
|
-
}
|
|
218
|
-
// Test Api-Key header auth type (credentials injected at runtime)
|
|
219
|
-
async testApiKeyHeaderAuth(baseUrl) {
|
|
220
|
-
const result = await new HttpBubble({
|
|
221
|
-
url: `${baseUrl}/headers`,
|
|
222
|
-
method: 'GET',
|
|
223
|
-
authType: 'api-key-header',
|
|
224
|
-
// credentials will be injected at runtime by BubbleInjector
|
|
225
|
-
}).action();
|
|
226
|
-
const data = result.data;
|
|
227
|
-
const json = data?.json;
|
|
228
|
-
const headers = json?.headers;
|
|
229
|
-
const apiKeyHeader = headers?.['Api-Key'];
|
|
230
|
-
const hasApiKey = !!apiKeyHeader;
|
|
231
|
-
return {
|
|
232
|
-
operation: 'api_key_header_auth',
|
|
233
|
-
success: result.success && hasApiKey,
|
|
234
|
-
details: `Api-Key header present: ${hasApiKey}`,
|
|
235
|
-
status: data?.status,
|
|
236
|
-
responseTime: data?.responseTime,
|
|
237
|
-
};
|
|
238
|
-
}
|
|
239
|
-
// Test custom auth header (credentials injected at runtime)
|
|
240
|
-
async testCustomAuth(baseUrl) {
|
|
241
|
-
const result = await new HttpBubble({
|
|
242
|
-
url: `${baseUrl}/headers`,
|
|
243
|
-
method: 'GET',
|
|
244
|
-
authType: 'custom',
|
|
245
|
-
authHeader: 'X-Custom-Auth-Token',
|
|
246
|
-
// credentials will be injected at runtime by BubbleInjector
|
|
247
|
-
}).action();
|
|
248
|
-
const data = result.data;
|
|
249
|
-
const json = data?.json;
|
|
250
|
-
const headers = json?.headers;
|
|
251
|
-
const customHeader = headers?.['X-Custom-Auth-Token'];
|
|
252
|
-
const hasCustomAuth = !!customHeader;
|
|
253
|
-
return {
|
|
254
|
-
operation: 'custom_auth_header',
|
|
255
|
-
success: result.success && hasCustomAuth,
|
|
256
|
-
details: `Custom auth header present: ${hasCustomAuth}`,
|
|
257
|
-
status: data?.status,
|
|
258
|
-
responseTime: data?.responseTime,
|
|
259
|
-
};
|
|
260
|
-
}
|
|
261
|
-
// Test dynamic API key in headers (manual injection via headers parameter)
|
|
262
|
-
async testDynamicApiKeyInHeaders(baseUrl, authToken) {
|
|
263
|
-
const result = await new HttpBubble({
|
|
264
|
-
url: `${baseUrl}/headers`,
|
|
265
|
-
method: 'GET',
|
|
266
|
-
headers: {
|
|
267
|
-
Authorization: authToken,
|
|
268
|
-
'Content-Type': 'application/json',
|
|
269
|
-
Accept: 'application/json',
|
|
270
|
-
'x-ms-version': '2021-04-10',
|
|
271
|
-
},
|
|
272
|
-
}).action();
|
|
273
|
-
const data = result.data;
|
|
274
|
-
const json = data?.json;
|
|
275
|
-
const headers = json?.headers;
|
|
276
|
-
const authReceived = headers?.Authorization === authToken;
|
|
277
|
-
return {
|
|
278
|
-
operation: 'dynamic_api_key_headers',
|
|
279
|
-
success: result.success && authReceived,
|
|
280
|
-
details: `Dynamic auth header received: ${authReceived}`,
|
|
281
|
-
status: data?.status,
|
|
282
|
-
responseTime: data?.responseTime,
|
|
283
|
-
};
|
|
284
|
-
}
|
|
285
|
-
// Test HTTP error handling (404)
|
|
286
|
-
async testErrorHandling404(baseUrl) {
|
|
287
|
-
const result = await new HttpBubble({
|
|
288
|
-
url: `${baseUrl}/status/404`,
|
|
289
|
-
method: 'GET',
|
|
290
|
-
}).action();
|
|
291
|
-
const data = result.data;
|
|
292
|
-
return {
|
|
293
|
-
operation: 'error_handling_404',
|
|
294
|
-
success: !data?.success && data?.status === 404,
|
|
295
|
-
details: `404 handled correctly: ${data?.status === 404}`,
|
|
296
|
-
status: data?.status,
|
|
297
|
-
responseTime: data?.responseTime,
|
|
298
|
-
};
|
|
299
|
-
}
|
|
300
|
-
// Test HTTP error handling (500)
|
|
301
|
-
async testErrorHandling500(baseUrl) {
|
|
302
|
-
const result = await new HttpBubble({
|
|
303
|
-
url: `${baseUrl}/status/500`,
|
|
304
|
-
method: 'GET',
|
|
305
|
-
}).action();
|
|
306
|
-
const data = result.data;
|
|
307
|
-
return {
|
|
308
|
-
operation: 'error_handling_500',
|
|
309
|
-
success: !data?.success && data?.status === 500,
|
|
310
|
-
details: `500 handled correctly: ${data?.status === 500}`,
|
|
311
|
-
status: data?.status,
|
|
312
|
-
responseTime: data?.responseTime,
|
|
313
|
-
};
|
|
314
|
-
}
|
|
315
|
-
// Test response with different content types
|
|
316
|
-
async testHtmlResponse(baseUrl) {
|
|
317
|
-
const result = await new HttpBubble({
|
|
318
|
-
url: `${baseUrl}/html`,
|
|
319
|
-
method: 'GET',
|
|
320
|
-
}).action();
|
|
321
|
-
const data = result.data;
|
|
322
|
-
const isHtml = data?.body?.includes('<html>') || data?.body?.includes('<!DOCTYPE');
|
|
323
|
-
return {
|
|
324
|
-
operation: 'html_response',
|
|
325
|
-
success: result.success && isHtml,
|
|
326
|
-
details: `HTML response received: ${isHtml}`,
|
|
327
|
-
status: data?.status,
|
|
328
|
-
responseTime: data?.responseTime,
|
|
329
|
-
};
|
|
330
|
-
}
|
|
331
|
-
// Test timeout behavior
|
|
332
|
-
async testTimeout(baseUrl) {
|
|
333
|
-
const result = await new HttpBubble({
|
|
334
|
-
url: `${baseUrl}/delay/1`, // 1 second delay
|
|
335
|
-
method: 'GET',
|
|
336
|
-
timeout: 5000, // 5 second timeout (should succeed)
|
|
337
|
-
}).action();
|
|
338
|
-
const data = result.data;
|
|
339
|
-
return {
|
|
340
|
-
operation: 'timeout_handling',
|
|
341
|
-
success: result.success,
|
|
342
|
-
details: `Request with delay completed: ${result.success}`,
|
|
343
|
-
status: data?.status,
|
|
344
|
-
responseTime: data?.responseTime,
|
|
345
|
-
};
|
|
346
|
-
}
|
|
347
|
-
// Test redirect handling
|
|
348
|
-
async testRedirectFollow(baseUrl) {
|
|
349
|
-
const result = await new HttpBubble({
|
|
350
|
-
url: `${baseUrl}/redirect/2`, // 2 redirects
|
|
351
|
-
method: 'GET',
|
|
352
|
-
followRedirects: true,
|
|
353
|
-
}).action();
|
|
354
|
-
const data = result.data;
|
|
355
|
-
return {
|
|
356
|
-
operation: 'redirect_follow',
|
|
357
|
-
success: result.success && data?.status === 200,
|
|
358
|
-
details: `Redirects followed: ${result.success}`,
|
|
359
|
-
status: data?.status,
|
|
360
|
-
responseTime: data?.responseTime,
|
|
361
|
-
};
|
|
362
|
-
}
|
|
363
|
-
// Test redirect handling disabled
|
|
364
|
-
async testRedirectManual(baseUrl) {
|
|
365
|
-
const result = await new HttpBubble({
|
|
366
|
-
url: `${baseUrl}/redirect/1`,
|
|
367
|
-
method: 'GET',
|
|
368
|
-
followRedirects: false,
|
|
369
|
-
}).action();
|
|
370
|
-
const data = result.data;
|
|
371
|
-
const status = data?.status ?? 0;
|
|
372
|
-
// When followRedirects is false, we should get a 3xx status
|
|
373
|
-
const isRedirect = status >= 300 && status < 400;
|
|
374
|
-
return {
|
|
375
|
-
operation: 'redirect_manual',
|
|
376
|
-
success: isRedirect || status === 200, // Some implementations may still follow
|
|
377
|
-
details: `Manual redirect handling: status ${status}`,
|
|
378
|
-
status: data?.status,
|
|
379
|
-
responseTime: data?.responseTime,
|
|
380
|
-
};
|
|
381
|
-
}
|
|
382
|
-
async handle(payload) {
|
|
383
|
-
const baseUrl = payload.baseUrl || 'https://httpbin.org';
|
|
384
|
-
const results = [];
|
|
385
|
-
// Basic HTTP method tests
|
|
386
|
-
results.push(await this.testBasicGet(baseUrl));
|
|
387
|
-
results.push(await this.testGetWithParams(baseUrl));
|
|
388
|
-
results.push(await this.testPostJson(baseUrl));
|
|
389
|
-
results.push(await this.testPostString(baseUrl));
|
|
390
|
-
results.push(await this.testPut(baseUrl));
|
|
391
|
-
results.push(await this.testPatch(baseUrl));
|
|
392
|
-
results.push(await this.testDelete(baseUrl));
|
|
393
|
-
results.push(await this.testCustomHeaders(baseUrl));
|
|
394
|
-
// Auth type tests (credentials injected at runtime)
|
|
395
|
-
// Note: These tests will only pass when CUSTOM_AUTH_KEY credential is configured
|
|
396
|
-
results.push(await this.testBearerAuth(baseUrl));
|
|
397
|
-
results.push(await this.testBasicAuth(baseUrl));
|
|
398
|
-
results.push(await this.testApiKeyAuth(baseUrl));
|
|
399
|
-
results.push(await this.testApiKeyHeaderAuth(baseUrl));
|
|
400
|
-
results.push(await this.testCustomAuth(baseUrl));
|
|
401
|
-
// Dynamic API key in headers (manual approach)
|
|
402
|
-
results.push(await this.testDynamicApiKeyInHeaders(baseUrl, 'Bearer test-token-12345'));
|
|
403
|
-
// Error handling tests
|
|
404
|
-
results.push(await this.testErrorHandling404(baseUrl));
|
|
405
|
-
results.push(await this.testErrorHandling500(baseUrl));
|
|
406
|
-
// Response type tests
|
|
407
|
-
results.push(await this.testHtmlResponse(baseUrl));
|
|
408
|
-
// Timeout and redirect tests
|
|
409
|
-
results.push(await this.testTimeout(baseUrl));
|
|
410
|
-
results.push(await this.testRedirectFollow(baseUrl));
|
|
411
|
-
results.push(await this.testRedirectManual(baseUrl));
|
|
412
|
-
// Calculate summary
|
|
413
|
-
const passed = results.filter((r) => r.success).length;
|
|
414
|
-
const failed = results.filter((r) => !r.success).length;
|
|
415
|
-
return {
|
|
416
|
-
testResults: results,
|
|
417
|
-
summary: {
|
|
418
|
-
total: results.length,
|
|
419
|
-
passed,
|
|
420
|
-
failed,
|
|
421
|
-
},
|
|
422
|
-
};
|
|
423
|
-
}
|
|
424
|
-
}
|
|
425
|
-
//# sourceMappingURL=http.integration.flow.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"http.integration.flow.js","sourceRoot":"","sources":["../../../src/bubbles/service-bubble/http.integration.flow.ts"],"names":[],"mappings":"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"}
|
package/dist/bubbles/tool-bubble/amazon-shopping-tool/amazon-shopping-tool.integration.flow.d.ts
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import { BubbleFlow, type WebhookEvent } from '@bubblelab/bubble-core';
|
|
2
|
-
export interface Output {
|
|
3
|
-
testResults: {
|
|
4
|
-
operation: string;
|
|
5
|
-
success: boolean;
|
|
6
|
-
details?: string;
|
|
7
|
-
}[];
|
|
8
|
-
}
|
|
9
|
-
/**
|
|
10
|
-
* Payload for the Amazon Shopping Tool Integration Test workflow.
|
|
11
|
-
*/
|
|
12
|
-
export interface AmazonShoppingTestPayload extends WebhookEvent {
|
|
13
|
-
/**
|
|
14
|
-
* Search query to test with
|
|
15
|
-
* @canBeFile false
|
|
16
|
-
*/
|
|
17
|
-
searchQuery?: string;
|
|
18
|
-
/**
|
|
19
|
-
* ASIN to test product details with
|
|
20
|
-
* @canBeFile false
|
|
21
|
-
*/
|
|
22
|
-
testAsin?: string;
|
|
23
|
-
}
|
|
24
|
-
export declare class AmazonShoppingIntegrationTest extends BubbleFlow<'webhook/http'> {
|
|
25
|
-
private searchProducts;
|
|
26
|
-
private getProductDetails;
|
|
27
|
-
private getCartContents;
|
|
28
|
-
private addToCart;
|
|
29
|
-
handle(payload: AmazonShoppingTestPayload): Promise<Output>;
|
|
30
|
-
}
|
|
31
|
-
//# sourceMappingURL=amazon-shopping-tool.integration.flow.d.ts.map
|
package/dist/bubbles/tool-bubble/amazon-shopping-tool/amazon-shopping-tool.integration.flow.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"amazon-shopping-tool.integration.flow.d.ts","sourceRoot":"","sources":["../../../../src/bubbles/tool-bubble/amazon-shopping-tool/amazon-shopping-tool.integration.flow.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EAEV,KAAK,YAAY,EAClB,MAAM,wBAAwB,CAAC;AAEhC,MAAM,WAAW,MAAM;IACrB,WAAW,EAAE;QACX,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,OAAO,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,EAAE,CAAC;CACL;AAED;;GAEG;AACH,MAAM,WAAW,yBAA0B,SAAQ,YAAY;IAC7D;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,6BAA8B,SAAQ,UAAU,CAAC,cAAc,CAAC;YAE7D,cAAc;YAed,iBAAiB;YAcjB,eAAe;YAaf,SAAS;IAcjB,MAAM,CAAC,OAAO,EAAE,yBAAyB,GAAG,OAAO,CAAC,MAAM,CAAC;CA4DlE"}
|
package/dist/bubbles/tool-bubble/amazon-shopping-tool/amazon-shopping-tool.integration.flow.js
DELETED
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
import { BubbleFlow, AmazonShoppingTool, } from '@bubblelab/bubble-core';
|
|
2
|
-
export class AmazonShoppingIntegrationTest extends BubbleFlow {
|
|
3
|
-
// Searches for products on Amazon
|
|
4
|
-
async searchProducts(query, maxResults) {
|
|
5
|
-
const result = await new AmazonShoppingTool({
|
|
6
|
-
operation: 'search',
|
|
7
|
-
query: query,
|
|
8
|
-
max_results: maxResults,
|
|
9
|
-
}).action();
|
|
10
|
-
if (!result.success || result.data?.operation !== 'search') {
|
|
11
|
-
throw new Error(`Failed to search products: ${result.error}`);
|
|
12
|
-
}
|
|
13
|
-
return result.data;
|
|
14
|
-
}
|
|
15
|
-
// Gets detailed information about a product
|
|
16
|
-
async getProductDetails(productUrl) {
|
|
17
|
-
const result = await new AmazonShoppingTool({
|
|
18
|
-
operation: 'get_product',
|
|
19
|
-
product_url: productUrl,
|
|
20
|
-
}).action();
|
|
21
|
-
if (!result.success || result.data?.operation !== 'get_product') {
|
|
22
|
-
throw new Error(`Failed to get product details: ${result.error}`);
|
|
23
|
-
}
|
|
24
|
-
return result.data;
|
|
25
|
-
}
|
|
26
|
-
// Gets current cart contents
|
|
27
|
-
async getCartContents() {
|
|
28
|
-
const result = await new AmazonShoppingTool({
|
|
29
|
-
operation: 'get_cart',
|
|
30
|
-
}).action();
|
|
31
|
-
if (!result.success || result.data?.operation !== 'get_cart') {
|
|
32
|
-
throw new Error(`Failed to get cart: ${result.error}`);
|
|
33
|
-
}
|
|
34
|
-
return result.data;
|
|
35
|
-
}
|
|
36
|
-
// Adds a product to the cart (commented out by default to avoid modifying real cart)
|
|
37
|
-
async addToCart(productUrl, quantity) {
|
|
38
|
-
const result = await new AmazonShoppingTool({
|
|
39
|
-
operation: 'add_to_cart',
|
|
40
|
-
product_url: productUrl,
|
|
41
|
-
quantity: quantity,
|
|
42
|
-
}).action();
|
|
43
|
-
if (!result.success || result.data?.operation !== 'add_to_cart') {
|
|
44
|
-
throw new Error(`Failed to add to cart: ${result.error}`);
|
|
45
|
-
}
|
|
46
|
-
return result.data;
|
|
47
|
-
}
|
|
48
|
-
async handle(payload) {
|
|
49
|
-
const { searchQuery = 'wireless mouse', testAsin = 'B08N5WRWNW', } = payload;
|
|
50
|
-
const results = [];
|
|
51
|
-
// 1. Search for products
|
|
52
|
-
const searchData = await this.searchProducts(searchQuery, 5);
|
|
53
|
-
results.push({
|
|
54
|
-
operation: 'search',
|
|
55
|
-
success: true,
|
|
56
|
-
details: `Found ${searchData.results?.length || 0} products for "${searchQuery}"`,
|
|
57
|
-
});
|
|
58
|
-
// 2. Get product details for first result or test ASIN
|
|
59
|
-
const productUrl = searchData.results?.[0]?.url || testAsin;
|
|
60
|
-
const productData = await this.getProductDetails(productUrl);
|
|
61
|
-
results.push({
|
|
62
|
-
operation: 'get_product',
|
|
63
|
-
success: true,
|
|
64
|
-
details: `Product: ${productData.product?.title?.substring(0, 50) || 'Unknown'}... (${productData.product?.asin})`,
|
|
65
|
-
});
|
|
66
|
-
// 3. Get cart contents (read-only, safe to run)
|
|
67
|
-
const cartData = await this.getCartContents();
|
|
68
|
-
results.push({
|
|
69
|
-
operation: 'get_cart',
|
|
70
|
-
success: true,
|
|
71
|
-
details: `Cart has ${cartData.items?.length || 0} items, subtotal: ${cartData.subtotal || 'N/A'}`,
|
|
72
|
-
});
|
|
73
|
-
// 4. Add to cart (UNCOMMENT ONLY FOR FULL INTEGRATION TEST)
|
|
74
|
-
// WARNING: This will modify the actual Amazon cart!
|
|
75
|
-
/*
|
|
76
|
-
const addResult = await this.addToCart(productUrl, 1);
|
|
77
|
-
results.push({
|
|
78
|
-
operation: 'add_to_cart',
|
|
79
|
-
success: true,
|
|
80
|
-
details: `Added item, cart now has ${addResult.cart_count || 'unknown'} items`,
|
|
81
|
-
});
|
|
82
|
-
*/
|
|
83
|
-
// 5. Checkout (NEVER UNCOMMENT - will complete real purchase!)
|
|
84
|
-
// This is documented for completeness but should never be run in tests
|
|
85
|
-
/*
|
|
86
|
-
const checkoutResult = await new AmazonShoppingTool({
|
|
87
|
-
operation: 'checkout',
|
|
88
|
-
}).action();
|
|
89
|
-
results.push({
|
|
90
|
-
operation: 'checkout',
|
|
91
|
-
success: checkoutResult.data?.success || false,
|
|
92
|
-
details: `Order: ${checkoutResult.data?.order_number || 'N/A'}`,
|
|
93
|
-
});
|
|
94
|
-
*/
|
|
95
|
-
return {
|
|
96
|
-
testResults: results,
|
|
97
|
-
};
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
//# sourceMappingURL=amazon-shopping-tool.integration.flow.js.map
|
package/dist/bubbles/tool-bubble/amazon-shopping-tool/amazon-shopping-tool.integration.flow.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"amazon-shopping-tool.integration.flow.js","sourceRoot":"","sources":["../../../../src/bubbles/tool-bubble/amazon-shopping-tool/amazon-shopping-tool.integration.flow.ts"],"names":[],"mappings":"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"}
|