@weave-apps/sdk 0.1.18 → 0.1.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,433 +0,0 @@
1
- /**
2
- * Sidekick DOM API
3
- *
4
- * Client-side API for iframe apps to interact with the parent page DOM
5
- * through the secure DOM Bridge in the content script.
6
- */
7
- /**
8
- * Insert position for HTML insertion
9
- */
10
- export type InsertPosition = 'beforebegin' | 'afterbegin' | 'beforeend' | 'afterend';
11
- /**
12
- * Serialized element snapshot from parent page
13
- *
14
- * IMPORTANT: This interface must be kept in sync with:
15
- * /frontends/browser-extensions/chrome/src/content/modules/DOMBridge.types.ts
16
- *
17
- * We cannot import directly due to different build contexts (browser extension vs iframe bundle).
18
- * Any changes to ElementSnapshot in DOMBridge.types.ts MUST be reflected here.
19
- */
20
- export interface ElementSnapshot {
21
- tagName: string;
22
- id: string;
23
- className: string;
24
- textContent: string;
25
- outerHTML: string;
26
- attributes: Record<string, string>;
27
- value?: string;
28
- exists: boolean;
29
- }
30
- /**
31
- * Form field data
32
- */
33
- export interface FormFieldData {
34
- name: string;
35
- id: string;
36
- type: string;
37
- value: string | string[];
38
- label: string;
39
- placeholder: string;
40
- required: boolean;
41
- disabled: boolean;
42
- readonly: boolean;
43
- pattern: string;
44
- min: string;
45
- max: string;
46
- minLength: number;
47
- maxLength: number;
48
- checked?: boolean;
49
- options?: Array<{
50
- value: string;
51
- text: string;
52
- selected: boolean;
53
- }>;
54
- }
55
- /**
56
- * Complete form data
57
- */
58
- export interface FormData {
59
- formId: string;
60
- formName: string;
61
- formAction: string;
62
- formMethod: string;
63
- fields: FormFieldData[];
64
- }
65
- /**
66
- * Form click event callback
67
- */
68
- export type FormClickCallback = (data: {
69
- formData: FormData;
70
- clickedElement: {
71
- tagName: string;
72
- name: string;
73
- id: string;
74
- type: string;
75
- };
76
- }) => void;
77
- /**
78
- * Workflow saved event callback
79
- */
80
- export type WorkflowSavedCallback = (workflow: {
81
- name: string;
82
- startUrl: string;
83
- actions: any[];
84
- }) => void;
85
- /**
86
- * Trigger saved event callback
87
- */
88
- export type TriggerSavedCallback = (trigger: {
89
- name: string;
90
- url: string;
91
- events: any[];
92
- dataCapture: any;
93
- }) => void;
94
- /**
95
- * Element click event callback (for injected elements)
96
- */
97
- export type ElementClickCallback = (data: {
98
- elementId: string;
99
- event: {
100
- clientX: number;
101
- clientY: number;
102
- target: {
103
- tagName: string;
104
- id: string;
105
- className: string;
106
- };
107
- };
108
- }) => void;
109
- /**
110
- * Element selector click event callback (for element click listeners)
111
- */
112
- export type ElementSelectorClickCallback = (data: {
113
- element: ElementSnapshot;
114
- event: {
115
- clientX: number;
116
- clientY: number;
117
- timestamp: number;
118
- };
119
- }) => void;
120
- /**
121
- * Element change event callback (for element watchers)
122
- */
123
- export type ElementChangeCallback = (data: {
124
- changeType: 'attribute' | 'removed' | 'childList';
125
- element: ElementSnapshot;
126
- attributeName?: string;
127
- attributeValue?: string;
128
- }) => void;
129
- /**
130
- * Sidekick DOM API
131
- * Provides methods for iframe apps to interact with parent page DOM
132
- */
133
- export declare class SidekickDOMAPI {
134
- private pendingRequests;
135
- private messageListener;
136
- private requestCounter;
137
- private timeout;
138
- private formClickCallback;
139
- private workflowSavedCallback;
140
- private triggerSavedCallback;
141
- private elementClickCallbacks;
142
- private elementSelectorClickCallbacks;
143
- private elementChangeCallbacks;
144
- private elementIdCounter;
145
- private watcherIdCounter;
146
- constructor();
147
- /**
148
- * Initialize the API and start listening for responses
149
- */
150
- private initialize;
151
- /**
152
- * Cleanup
153
- */
154
- destroy(): void;
155
- /**
156
- * Handle response from content script
157
- */
158
- private handleResponse;
159
- /**
160
- * Send request to content script
161
- */
162
- private sendRequest;
163
- /**
164
- * Query a single element from parent page
165
- */
166
- query(selector: string): Promise<ElementSnapshot>;
167
- /**
168
- * Query all matching elements from parent page
169
- */
170
- queryAll(selector: string): Promise<ElementSnapshot[]>;
171
- /**
172
- * Get text content of an element
173
- */
174
- getText(selector: string): Promise<string>;
175
- /**
176
- * Get attribute value of an element
177
- */
178
- getAttribute(selector: string, attribute: string): Promise<string | null>;
179
- /**
180
- * Get value of an input element
181
- */
182
- getValue(selector: string): Promise<string>;
183
- /**
184
- * Check if element has a class
185
- */
186
- hasClass(selector: string, className: string): Promise<boolean>;
187
- /**
188
- * Get the current page URL
189
- * Returns the parent page URL (not the iframe URL)
190
- * @returns Promise with the current page URL
191
- */
192
- getPageUrl(): Promise<string>;
193
- /**
194
- * Set text content of an element
195
- */
196
- setText(selector: string, text: string): Promise<void>;
197
- /**
198
- * Set attribute value of an element
199
- */
200
- setAttribute(selector: string, attribute: string, value: string): Promise<void>;
201
- /**
202
- * Set value of an input element
203
- */
204
- setValue(selector: string, value: string): Promise<void>;
205
- /**
206
- * Add a class to an element
207
- */
208
- addClass(selector: string, className: string): Promise<void>;
209
- /**
210
- * Remove a class from an element
211
- */
212
- removeClass(selector: string, className: string): Promise<void>;
213
- /**
214
- * Toggle a class on an element
215
- */
216
- toggleClass(selector: string, className: string): Promise<boolean>;
217
- /**
218
- * Set a CSS style property on an element
219
- */
220
- setStyle(selector: string, property: string, value: string): Promise<void>;
221
- /**
222
- * Insert HTML relative to an element
223
- */
224
- insertHTML(selector: string, position: InsertPosition, html: string): Promise<void>;
225
- /**
226
- * Remove an element from the DOM
227
- */
228
- removeElement(selector: string): Promise<void>;
229
- /**
230
- * Click an element on the parent page
231
- *
232
- * @param selector - CSS selector for the element to click
233
- * @returns Promise that resolves when the click is complete
234
- *
235
- * @example
236
- * // Click a button
237
- * await sidekickDOM.clickElement('button#submit');
238
- *
239
- * // Click a link
240
- * await sidekickDOM.clickElement('a.nav-item[href="/dashboard"]');
241
- */
242
- clickElement(selector: string): Promise<void>;
243
- /**
244
- * Get form data from a form or an element inside a form
245
- * @param selector - CSS selector for the form or an element inside the form
246
- * @returns Promise with complete form data including all fields
247
- */
248
- getFormData(selector: string): Promise<FormData>;
249
- /**
250
- * Start listening for clicks on form elements
251
- * When a form element is clicked, the callback will be invoked with the form data
252
- * @param callback - Function to call when a form element is clicked
253
- */
254
- startFormClickListener(callback: FormClickCallback): Promise<void>;
255
- /**
256
- * Stop listening for clicks on form elements
257
- */
258
- stopFormClickListener(): Promise<void>;
259
- /**
260
- * Start listening for clicks on elements matching a CSS selector
261
- * When an element is clicked, the callback will be invoked with element data
262
- *
263
- * @param selector - CSS selector for elements to listen to (e.g., 'div.sortable-item[role="button"]')
264
- * @param callback - Function to call when a matching element is clicked
265
- * @param options - Optional configuration
266
- * @param options.listenerId - Unique ID for this listener (auto-generated if not provided)
267
- * @returns Promise<string> - The listener ID (for cleanup with stopElementClickListener)
268
- *
269
- * @example
270
- * // Listen to tab buttons
271
- * const listenerId = await sidekickDOM.startElementClickListener(
272
- * 'div.sortable-item[role="button"]',
273
- * (data) => {
274
- * console.log('Tab clicked:', data.element.textContent);
275
- * console.log('Element:', data.element);
276
- * }
277
- * );
278
- *
279
- * // Later, stop listening
280
- * await sidekickDOM.stopElementClickListener(listenerId);
281
- */
282
- startElementClickListener(selector: string, callback: ElementSelectorClickCallback, options?: {
283
- listenerId?: string;
284
- }): Promise<string>;
285
- /**
286
- * Stop listening for clicks on elements
287
- *
288
- * @param listenerId - The ID of the listener to stop (returned from startElementClickListener)
289
- *
290
- * @example
291
- * const listenerId = await sidekickDOM.startElementClickListener('button', callback);
292
- * // ... later ...
293
- * await sidekickDOM.stopElementClickListener(listenerId);
294
- */
295
- stopElementClickListener(listenerId: string): Promise<void>;
296
- /**
297
- * Set the value of a form field
298
- * Handles all input types (text, checkbox, radio, select, textarea, etc.)
299
- * Automatically triggers validation events
300
- *
301
- * @param selector - CSS selector for the form field
302
- * @param value - Value to set (string for text inputs, boolean for checkboxes, array for multi-selects)
303
- * @param scrollIntoView - Optional: if true, scrolls element to center of viewport before setting value (default: false)
304
- *
305
- * @example
306
- * // Text input
307
- * await sidekickDOM.setFormFieldValue('input[name="email"]', 'user@example.com');
308
- *
309
- * // Checkbox with scroll
310
- * await sidekickDOM.setFormFieldValue('input[name="terms"]', true, true);
311
- *
312
- * // Radio button (set to the value of the radio to select)
313
- * await sidekickDOM.setFormFieldValue('input[name="gender"][value="female"]', 'female');
314
- *
315
- * // Select
316
- * await sidekickDOM.setFormFieldValue('select[name="country"]', 'US');
317
- *
318
- * // Multi-select with scroll to make it visible
319
- * await sidekickDOM.setFormFieldValue('select[name="interests"]', ['sports', 'music'], true);
320
- */
321
- setFormFieldValue(selector: string, value: string | string[] | boolean, scrollIntoView?: boolean): Promise<void>;
322
- /**
323
- * Register a callback for when a workflow is saved
324
- * @param callback - Function to call when a workflow is saved from the content script
325
- */
326
- onWorkflowSaved(callback: WorkflowSavedCallback): void;
327
- /**
328
- * Remove the workflow saved callback
329
- */
330
- offWorkflowSaved(): void;
331
- /**
332
- * Register a callback for when a trigger is saved
333
- * @param callback - Function to call when a trigger is saved from the content script
334
- */
335
- onTriggerSaved(callback: TriggerSavedCallback): void;
336
- /**
337
- * Remove the trigger saved callback
338
- */
339
- offTriggerSaved(): void;
340
- /**
341
- * Inject an element onto the parent page with optional click event listener
342
- *
343
- * @param targetSelector - CSS selector for the element to inject relative to
344
- * @param position - Position relative to target ('beforebegin', 'afterbegin', 'beforeend', 'afterend')
345
- * @param html - HTML string to inject (will be sanitized)
346
- * @param options - Optional configuration
347
- * @param options.onClick - Callback function to invoke when element is clicked
348
- * @param options.elementId - Custom element ID (auto-generated if not provided)
349
- * @returns Promise with the element ID
350
- *
351
- * @example
352
- * // Inject a button with click handler
353
- * const elementId = await sidekickDOM.injectElement(
354
- * 'body',
355
- * 'beforeend',
356
- * '<button class="my-button">Click Me</button>',
357
- * {
358
- * onClick: (data) => {
359
- * console.log('Button clicked!', data);
360
- * }
361
- * }
362
- * );
363
- *
364
- * // Later, remove the element
365
- * await sidekickDOM.removeInjectedElement(elementId);
366
- */
367
- injectElement(targetSelector: string, position: InsertPosition, html: string, options?: {
368
- onClick?: ElementClickCallback;
369
- elementId?: string;
370
- }): Promise<string>;
371
- /**
372
- * Remove an injected element from the parent page
373
- *
374
- * @param elementId - ID of the element to remove (returned from injectElement)
375
- *
376
- * @example
377
- * await sidekickDOM.removeInjectedElement('sidekick-injected-1');
378
- */
379
- removeInjectedElement(elementId: string): Promise<void>;
380
- /**
381
- * Watch an element for changes (attributes, removal, children)
382
- *
383
- * Sets up MutationObservers to monitor:
384
- * - Attribute changes on the element
385
- * - Element removal from DOM
386
- * - Child node changes (optional)
387
- *
388
- * @param selector - CSS selector for the element to watch
389
- * @param callback - Function to call when element changes
390
- * @param options - Optional configuration
391
- * @param options.watchAttributes - Watch for attribute changes (default: true)
392
- * @param options.watchChildren - Watch for child node changes (default: false)
393
- * @param options.attributeFilter - Optional array of specific attributes to watch
394
- * @returns Promise with the watcher ID (use to stop watching)
395
- *
396
- * @example
397
- * // Watch for attribute changes
398
- * const watcherId = await sidekickDOM.watchElement(
399
- * '#my-element',
400
- * (data) => {
401
- * if (data.changeType === 'attribute') {
402
- * console.log(`Attribute ${data.attributeName} changed to: ${data.attributeValue}`);
403
- * } else if (data.changeType === 'removed') {
404
- * console.log('Element was removed from DOM');
405
- * }
406
- * },
407
- * {
408
- * watchAttributes: true,
409
- * attributeFilter: ['class', 'data-status'] // Only watch specific attributes
410
- * }
411
- * );
412
- *
413
- * // Later, stop watching
414
- * await sidekickDOM.unwatchElement(watcherId);
415
- */
416
- watchElement(selector: string, callback: ElementChangeCallback, options?: {
417
- watchAttributes?: boolean;
418
- watchChildren?: boolean;
419
- attributeFilter?: string[];
420
- }): Promise<string>;
421
- /**
422
- * Stop watching an element
423
- *
424
- * @param watcherId - ID of the watcher to stop (returned from watchElement)
425
- *
426
- * @example
427
- * await sidekickDOM.unwatchElement('sidekick-watcher-1');
428
- */
429
- unwatchElement(watcherId: string): Promise<void>;
430
- }
431
- declare const _default: SidekickDOMAPI;
432
- export default _default;
433
- //# sourceMappingURL=SidekickDOMAPI.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SidekickDOMAPI.d.ts","sourceRoot":"","sources":["../src/SidekickDOMAPI.ts"],"names":[],"mappings":"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"}