@ceki/n8n-nodes-ceki 0.1.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.
package/README.md ADDED
@@ -0,0 +1,119 @@
1
+ # n8n-nodes-ceki
2
+
3
+ **Rent real human browsers inside your n8n workflows.**
4
+
5
+ [Ceki](https://browser.ceki.me) lets AI agents and automations rent live, human-operated browsers by the minute — real fingerprints, real IPs, real humans solving captchas. This package brings Ceki into n8n as native nodes: drive a rented browser, scrape anti-bot pages, screenshot from any geo, and orchestrate Ceki's contract system where a workflow can hire agents and people.
6
+
7
+ - **Real human browsers** — not headless, not emulation. Actual Chrome sessions with genuine fingerprints that pass anti-bot checks.
8
+ - **Geo-targeting** — appear from RU, EE, US, or wherever a human host is online.
9
+ - **Captchas solved by humans** — `requestCaptcha` hands the challenge to a real person and resumes the flow once it's solved.
10
+ - **Pay-as-you-go** — from **$0.01/min**. Pay only for the minutes you use; close the session and billing stops.
11
+ - **Hire from a workflow** — the Ceki Contract node lets your automation create tasks, assign them to agents or humans, and escalate when it's stuck.
12
+
13
+ All of the logic lives in [`@ceki/sdk`](https://browser.ceki.me/docs) — these nodes are a thin, typed UI on top.
14
+
15
+ ## Install
16
+
17
+ **In self-hosted n8n:** Settings → Community Nodes → Install → `n8n-nodes-ceki`
18
+
19
+ **Manually:**
20
+ ```bash
21
+ npm install n8n-nodes-ceki
22
+ ```
23
+
24
+ ## Credential
25
+
26
+ Create it once: **Ceki API** → set `token` to your agent token (`ag_...`) from the [Ceki panel](https://browser.ceki.me). One credential powers every node.
27
+
28
+ ## Nodes
29
+
30
+ ### Browser Ceki — one node, many operations
31
+
32
+ Works like the Google Drive or S3 node: pick an **Operation** and the node shows the relevant fields. `Rent` and `Run Code` rent a browser themselves; every other operation takes a `session_id` and resumes the same session.
33
+
34
+ | Operation | What it does |
35
+ |---|---|
36
+ | **Rent** | Rent a browser (by Schedule ID, or search by geo/price). Outputs a `session_id`. The session stays in a 120s grace window so the next node can resume it. |
37
+ | **Navigate** | Open a URL. |
38
+ | **Click / Type / Scroll** | Interact with the page (coordinates / text / delta). |
39
+ | **Screenshot** | Capture the page → binary (PNG/base64, optional full-page). |
40
+ | **Snapshot** | Screenshot + the session's chat history. |
41
+ | **Wait** | Pause for a fixed duration (ms). |
42
+ | **Wait for Selector** | Wait until a CSS selector appears in the DOM (with timeout). |
43
+ | **Upload** | Upload a file (binary) into an `<input>` by selector. |
44
+ | **Close** | Close the session and stop billing. |
45
+ | **Run Code** | Rent → run arbitrary JS with a live `browser`/`client` in scope → close. Full power: `requestCaptcha`, `paste`, low-level browser commands. |
46
+
47
+ ### Recipes — one shot, minimal fields, single lifecycle
48
+
49
+ | Node | What it does |
50
+ |---|---|
51
+ | **Browser Ceki: Screenshot in Geo** | Rent in a geo → open URL → screenshot → release. |
52
+ | **Browser Ceki: Captcha-protected Scrape** | Rent → navigate → (optional) wait for selector → `requestCaptcha` (a human solves it) → screenshot + HTML → release. Ceki's signature use case: anti-bot sites open because the fingerprint is real. |
53
+
54
+ ### Ceki Contract — drive Ceki's contract system from n8n
55
+
56
+ A native node for Ceki tasks/events. It replaces HTTP Request templates with typed fields and is powered by `ContractClient` from `@ceki/sdk`. Uses the same `cekiApi` credential.
57
+
58
+ | Operation | What it does |
59
+ |---|---|
60
+ | **List My Contracts** | Contracts you're a party to. |
61
+ | **List Tasks in Contract** | Events in a contract (by `contract_id`). |
62
+ | **Get Task** | One event by `event_id`. |
63
+ | **My Assigned Events** | Tasks assigned to you. |
64
+ | **Create Task** | Create an event: label, description, status, executor (`agent:N` / `user:N`). |
65
+ | **Assign Executor** | Assign an executor to an event. |
66
+ | **Update Status** | Move an event through its status (100 Backlog · 200 Hand · 222 · 300 QA · 350 · 499 Reviewer). |
67
+ | **Comment** | Comment on an event. |
68
+ | **Progress Report** | Status correction + progress comment in one call (doesn't overwrite the spec). |
69
+ | **Call Human** | Escalate to a person: `input` / `review` / `stuck` + a message. Returns recipients, dispatch status, and a deep link. |
70
+ | **Poll Notifications** | Fetch pending notifications (returns `[]` on rate-limit). |
71
+
72
+ ## Session lifecycle
73
+
74
+ Each n8n node is stateless: it connects, performs its action, and disconnects. A rented browser survives a short grace window after disconnect, so consecutive nodes can share one session via `session_id`.
75
+
76
+ - **Operation chains** — `Rent` returns a `session_id` (disconnect without close → the session lives for 120s). The next node resumes that session, acts, and disconnects again. Ideal for quick multi-step flows.
77
+ - **Run Code / Recipes** — rent, act, and release inside a single call. One lifecycle, zero resume overhead.
78
+
79
+ ## Example flow
80
+
81
+ ```
82
+ [Browser Ceki: Rent] →session_id→ [Browser Ceki: Screenshot] →session_id→ [Browser Ceki: Close]
83
+
84
+ [Telegram: sendPhoto]
85
+ ```
86
+
87
+ ## Example workflows
88
+
89
+ Ready-made workflows you can import directly into n8n — no configuration needed for the "Hello World" template:
90
+
91
+ - **[Hello World: Screenshot via Ceki](https://raw.githubusercontent.com/Ceki-me/n8n-templates/main/templates/hello-world-screenshot.json)** — Manual trigger → rent a browser → navigate → screenshot → done. Import, attach your Ceki API credential, hit Execute. (5 min setup)
92
+ - **[Form → Create Task + Assign](https://raw.githubusercontent.com/Ceki-me/n8n-templates/main/templates/form-create-and-assign.json)** — Web form that creates a Ceki task and assigns an executor.
93
+ - **[Scheduled: Assign Backlog Task](https://raw.githubusercontent.com/Ceki-me/n8n-templates/main/templates/search-browser-assign.json)** — Hourly scheduler that finds a cheap browser, picks a backlog task, assigns an agent.
94
+ - **[Telegram Bot → Screenshot](https://raw.githubusercontent.com/Ceki-me/n8n-templates/main/templates/telegram-screenshot.json)** — Send a URL to a Telegram bot, get back a screenshot from a real human browser in a chosen geo.
95
+ - **[Publish to Platform](https://raw.githubusercontent.com/Ceki-me/n8n-templates/main/templates/publish-to-platform.json)** — Manual trigger → human-browser automation for vc.ru / Mataroa / HackerNoon posting.
96
+ - **[Create + Assign via Native Node](https://raw.githubusercontent.com/Ceki-me/n8n-templates/main/templates/create-and-assign-task-ceki-node.json)** — Use the Ceki Contract node instead of HTTP calls.
97
+
98
+ All templates, setup instructions, and API details: **[Ceki-me/n8n-templates](https://github.com/Ceki-me/n8n-templates)**.
99
+
100
+ ## Develop
101
+
102
+ ```bash
103
+ npm install
104
+ npm run build # tsc → dist/
105
+ npm run typecheck
106
+ ```
107
+
108
+ To use locally in n8n, link `dist/` via `N8N_CUSTOM_EXTENSIONS` or `NODE_PATH`.
109
+
110
+ ## Links
111
+
112
+ - [browser.ceki.me](https://browser.ceki.me) — rent a browser or become a host
113
+ - [Docs](https://browser.ceki.me/docs) — API key, SDK reference, recipes
114
+ - [`@ceki/sdk`](https://browser.ceki.me/docs) — the engine behind these nodes
115
+ - [MCP](https://browser.ceki.me/mcp) — drive Ceki from any MCP-compatible agent
116
+
117
+ ## License
118
+
119
+ MIT. Depends on [`@ceki/sdk`](https://browser.ceki.me/docs).
@@ -0,0 +1,11 @@
1
+ import type { ICredentialType, INodeProperties } from 'n8n-workflow';
2
+ /**
3
+ * Ceki agent token (ag_...). Authorizes every Ceki node.
4
+ * Get it from the Ceki panel → agent profile → API key.
5
+ */
6
+ export declare class CekiApi implements ICredentialType {
7
+ name: string;
8
+ displayName: string;
9
+ documentationUrl: string;
10
+ properties: INodeProperties[];
11
+ }
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CekiApi = void 0;
4
+ /**
5
+ * Ceki agent token (ag_...). Authorizes every Ceki node.
6
+ * Get it from the Ceki panel → agent profile → API key.
7
+ */
8
+ class CekiApi {
9
+ constructor() {
10
+ this.name = 'cekiApi';
11
+ this.displayName = 'Ceki API';
12
+ this.documentationUrl = 'https://browser.ceki.me/docs#api-key';
13
+ this.properties = [
14
+ {
15
+ displayName: 'API Key',
16
+ name: 'token',
17
+ type: 'string',
18
+ typeOptions: { password: true },
19
+ default: '',
20
+ description: 'Agent token (ag_...). [Get your API key →](https://browser.ceki.me/docs#api-key)',
21
+ required: true,
22
+ },
23
+ ];
24
+ }
25
+ }
26
+ exports.CekiApi = CekiApi;
27
+ //# sourceMappingURL=CekiApi.credentials.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CekiApi.credentials.js","sourceRoot":"","sources":["../../credentials/CekiApi.credentials.ts"],"names":[],"mappings":";;;AAEA;;;GAGG;AACH,MAAa,OAAO;IAApB;QACC,SAAI,GAAG,SAAS,CAAC;QACjB,gBAAW,GAAG,UAAU,CAAC;QACzB,qBAAgB,GAAG,sCAAsC,CAAC;QAC1D,eAAU,GAAsB;YAC/B;gBACC,WAAW,EAAE,SAAS;gBACtB,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAC/B,OAAO,EAAE,EAAE;gBACX,WAAW,EACV,kFAAkF;gBACnF,QAAQ,EAAE,IAAI;aACd;SACD,CAAC;IACH,CAAC;CAAA;AAhBD,0BAgBC"}
@@ -0,0 +1,9 @@
1
+ import type { IExecuteFunctions, INodeExecutionData, INodeType, INodeTypeDescription } from 'n8n-workflow';
2
+ /**
3
+ * Browser Ceki — one node, many operations.
4
+ * connect/rent/resume/close happen internally. session_id flows between calls of the node.
5
+ */
6
+ export declare class BrowserCeki implements INodeType {
7
+ description: INodeTypeDescription;
8
+ execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]>;
9
+ }
@@ -0,0 +1,383 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BrowserCeki = void 0;
4
+ const sdk_1 = require("@ceki/sdk");
5
+ const sleep = (ms) => new Promise((r) => setTimeout(r, ms));
6
+ const DEFAULT_CODE = `// A browser is already rented for you. connect/rent/close are handled by the node.
7
+ await browser.navigate('https://ifconfig.me');
8
+ const shot = await browser.screenshot();
9
+ return [{ json: { ok: true, size: shot.length } }];
10
+ `;
11
+ /**
12
+ * Browser Ceki — one node, many operations.
13
+ * connect/rent/resume/close happen internally. session_id flows between calls of the node.
14
+ */
15
+ class BrowserCeki {
16
+ constructor() {
17
+ this.description = {
18
+ displayName: 'Browser Ceki',
19
+ name: 'browserCeki',
20
+ icon: 'file:ceki.png',
21
+ group: ['transform'],
22
+ version: 1,
23
+ subtitle: '={{ "Ceki: " + $operation }}',
24
+ description: 'Rent a real human browser and control it: rent, navigate, click, type, screenshot, solve captchas, and more',
25
+ defaults: { name: 'Browser Ceki' },
26
+ inputs: ['main'],
27
+ outputs: ['main'],
28
+ credentials: [{ name: 'cekiApi', required: true }],
29
+ properties: [
30
+ {
31
+ displayName: 'Operation',
32
+ name: 'operation',
33
+ type: 'options',
34
+ default: 'rent',
35
+ options: [
36
+ { name: 'Rent', value: 'rent' },
37
+ { name: 'Navigate', value: 'navigate' },
38
+ { name: 'Click', value: 'click' },
39
+ { name: 'Type', value: 'type' },
40
+ { name: 'Scroll', value: 'scroll' },
41
+ { name: 'Screenshot', value: 'screenshot' },
42
+ { name: 'Snapshot', value: 'snapshot' },
43
+ { name: 'Wait', value: 'wait' },
44
+ { name: 'Wait for Selector', value: 'waitForSelector' },
45
+ { name: 'Upload', value: 'upload' },
46
+ { name: 'Close', value: 'close' },
47
+ { name: 'Run Code', value: 'code' },
48
+ ],
49
+ },
50
+ // === Rent / Code: rental parameters ===
51
+ {
52
+ displayName: 'Schedule ID',
53
+ name: 'scheduleId',
54
+ type: 'number',
55
+ default: 0,
56
+ description: '0 — search by the filters below',
57
+ displayOptions: { show: { operation: ['rent', 'code'] } },
58
+ },
59
+ {
60
+ displayName: 'Geo',
61
+ name: 'geo',
62
+ type: 'string',
63
+ default: '',
64
+ placeholder: 'RU, EE, US…',
65
+ displayOptions: { show: { operation: ['rent', 'code'] } },
66
+ },
67
+ {
68
+ displayName: 'Max $/min',
69
+ name: 'maxPrice',
70
+ type: 'number',
71
+ typeOptions: { numberPrecision: 4 },
72
+ default: 0.02,
73
+ displayOptions: { show: { operation: ['rent', 'code'] } },
74
+ },
75
+ {
76
+ displayName: 'Min rating',
77
+ name: 'minRating',
78
+ type: 'number',
79
+ default: 0,
80
+ displayOptions: { show: { operation: ['rent'] } },
81
+ },
82
+ {
83
+ displayName: 'Profile mode',
84
+ name: 'mode',
85
+ type: 'options',
86
+ default: 'main',
87
+ options: [
88
+ { name: 'main', value: 'main' },
89
+ { name: 'incognito', value: 'incognito' },
90
+ ],
91
+ displayOptions: { show: { operation: ['rent', 'code'] } },
92
+ },
93
+ // === Operations: session_id ===
94
+ {
95
+ displayName: 'Session ID',
96
+ name: 'sessionId',
97
+ type: 'string',
98
+ default: '={{ $json.session_id }}',
99
+ description: 'From the Rent operation',
100
+ required: true,
101
+ displayOptions: {
102
+ show: {
103
+ operation: ['navigate', 'click', 'type', 'scroll', 'screenshot', 'snapshot', 'wait', 'waitForSelector', 'upload', 'close'],
104
+ },
105
+ },
106
+ },
107
+ {
108
+ displayName: 'URL',
109
+ name: 'url',
110
+ type: 'string',
111
+ default: '',
112
+ required: true,
113
+ displayOptions: { show: { operation: ['navigate'] } },
114
+ },
115
+ {
116
+ displayName: 'X',
117
+ name: 'x',
118
+ type: 'number',
119
+ default: 0,
120
+ displayOptions: { show: { operation: ['click'] } },
121
+ },
122
+ {
123
+ displayName: 'Y',
124
+ name: 'y',
125
+ type: 'number',
126
+ default: 0,
127
+ displayOptions: { show: { operation: ['click'] } },
128
+ },
129
+ {
130
+ displayName: 'Text',
131
+ name: 'text',
132
+ type: 'string',
133
+ default: '',
134
+ displayOptions: { show: { operation: ['type'] } },
135
+ },
136
+ {
137
+ displayName: 'Delta Y',
138
+ name: 'deltaY',
139
+ type: 'number',
140
+ default: -300,
141
+ displayOptions: { show: { operation: ['scroll'] } },
142
+ },
143
+ {
144
+ displayName: 'Format',
145
+ name: 'format',
146
+ type: 'options',
147
+ default: 'png',
148
+ options: [
149
+ { name: 'PNG (binary)', value: 'png' },
150
+ { name: 'Base64', value: 'base64' },
151
+ ],
152
+ displayOptions: { show: { operation: ['screenshot'] } },
153
+ },
154
+ {
155
+ displayName: 'Full page',
156
+ name: 'fullPage',
157
+ type: 'boolean',
158
+ default: false,
159
+ displayOptions: { show: { operation: ['screenshot'] } },
160
+ },
161
+ {
162
+ displayName: 'Milliseconds',
163
+ name: 'ms',
164
+ type: 'number',
165
+ default: 1000,
166
+ typeOptions: { minValue: 0 },
167
+ description: 'Fixed delay on the active session',
168
+ displayOptions: { show: { operation: ['wait'] } },
169
+ },
170
+ {
171
+ displayName: 'CSS Selector',
172
+ name: 'waitSelector',
173
+ type: 'string',
174
+ default: '',
175
+ required: true,
176
+ placeholder: 'e.g. .results, #content, table tr',
177
+ displayOptions: { show: { operation: ['waitForSelector'] } },
178
+ },
179
+ {
180
+ displayName: 'Timeout (ms)',
181
+ name: 'waitTimeout',
182
+ type: 'number',
183
+ default: 30000,
184
+ description: 'Waits until the selector appears in the DOM',
185
+ displayOptions: { show: { operation: ['waitForSelector'] } },
186
+ },
187
+ {
188
+ displayName: 'CSS Selector',
189
+ name: 'selector',
190
+ type: 'string',
191
+ default: '',
192
+ required: true,
193
+ displayOptions: { show: { operation: ['upload'] } },
194
+ },
195
+ {
196
+ displayName: 'Binary Property',
197
+ name: 'binaryPropertyName',
198
+ type: 'string',
199
+ default: 'data',
200
+ displayOptions: { show: { operation: ['upload'] } },
201
+ },
202
+ {
203
+ displayName: 'JavaScript (a live browser is in scope)',
204
+ name: 'code',
205
+ type: 'string',
206
+ typeOptions: { editor: 'codeNodeEditor', rows: 12 },
207
+ default: DEFAULT_CODE,
208
+ displayOptions: { show: { operation: ['code'] } },
209
+ },
210
+ ],
211
+ };
212
+ }
213
+ async execute() {
214
+ const items = this.getInputData();
215
+ const out = [];
216
+ const creds = await this.getCredentials('cekiApi');
217
+ const token = creds.token;
218
+ const resolveSid = async (i, client) => {
219
+ const scheduleId = this.getNodeParameter('scheduleId', i);
220
+ if (scheduleId)
221
+ return scheduleId;
222
+ const geo = this.getNodeParameter('geo', i);
223
+ const maxPrice = this.getNodeParameter('maxPrice', i);
224
+ const list = await client.search({
225
+ geo: geo || undefined,
226
+ max_price_per_min: maxPrice,
227
+ });
228
+ if (!list.length)
229
+ throw new Error('No browsers found by filters');
230
+ return list[0].schedule_id;
231
+ };
232
+ for (let i = 0; i < items.length; i++) {
233
+ const op = this.getNodeParameter('operation', i);
234
+ const client = await (0, sdk_1.connect)(token);
235
+ let browser;
236
+ try {
237
+ if (op === 'rent') {
238
+ const sid = await resolveSid(i, client);
239
+ const mode = this.getNodeParameter('mode', i);
240
+ browser = await client.rent(sid, { mode });
241
+ out.push({
242
+ json: { session_id: browser.sessionId, schedule_id: sid, mode },
243
+ });
244
+ await client.disconnect(); // session stays in grace — the next node resumes it
245
+ continue;
246
+ }
247
+ if (op === 'code') {
248
+ const sid = await resolveSid(i, client);
249
+ const mode = this.getNodeParameter('mode', i);
250
+ browser = await client.rent(sid, { mode });
251
+ const code = this.getNodeParameter('code', i);
252
+ // eslint-disable-next-line no-new-func
253
+ const fn = new Function('browser', 'client', `return (async () => {\n${code}\n})();`);
254
+ const result = await fn(browser, client);
255
+ if (Array.isArray(result))
256
+ for (const r of result)
257
+ out.push(r);
258
+ else if (result)
259
+ out.push({ json: result });
260
+ else
261
+ out.push({ json: { done: true } });
262
+ await browser.close();
263
+ await client.close();
264
+ continue;
265
+ }
266
+ // remaining operations resume by sessionId
267
+ const sessionId = this.getNodeParameter('sessionId', i);
268
+ browser = await client.resume(sessionId);
269
+ const sid = browser.sessionId;
270
+ switch (op) {
271
+ case 'navigate': {
272
+ const url = this.getNodeParameter('url', i);
273
+ await browser.navigate(url);
274
+ out.push({ json: { session_id: sid, url } });
275
+ break;
276
+ }
277
+ case 'click': {
278
+ const x = this.getNodeParameter('x', i);
279
+ const y = this.getNodeParameter('y', i);
280
+ await browser.click(x, y);
281
+ out.push({ json: { session_id: sid, clicked: [x, y] } });
282
+ break;
283
+ }
284
+ case 'type': {
285
+ const text = this.getNodeParameter('text', i);
286
+ await browser.type(text);
287
+ out.push({ json: { session_id: sid, typed: text } });
288
+ break;
289
+ }
290
+ case 'scroll': {
291
+ const deltaY = this.getNodeParameter('deltaY', i);
292
+ await browser.scroll({ deltaY });
293
+ out.push({ json: { session_id: sid, scrolled: deltaY } });
294
+ break;
295
+ }
296
+ case 'screenshot': {
297
+ const format = this.getNodeParameter('format', i);
298
+ const fullPage = this.getNodeParameter('fullPage', i);
299
+ const shot = (await browser.screenshot({ format, fullPage }));
300
+ const data = format === 'base64' ? shot.data : shot.toString('base64');
301
+ const binary = await this.helpers.prepareBinaryData(Buffer.from(data, 'base64'), 'screenshot.png', 'image/png');
302
+ out.push({ json: { session_id: sid }, binary: { data: binary } });
303
+ break;
304
+ }
305
+ case 'snapshot': {
306
+ const snap = await browser.snapshot();
307
+ out.push({
308
+ json: { session_id: sid, ts: snap.ts, chat: snap.chat },
309
+ });
310
+ break;
311
+ }
312
+ case 'wait': {
313
+ const ms = this.getNodeParameter('ms', i);
314
+ await sleep(ms);
315
+ out.push({ json: { session_id: sid, waited: ms } });
316
+ break;
317
+ }
318
+ case 'waitForSelector': {
319
+ const selector = this.getNodeParameter('waitSelector', i);
320
+ const timeout = this.getNodeParameter('waitTimeout', i);
321
+ const expr = `!!document.querySelector(${JSON.stringify(selector)})`;
322
+ const deadline = Date.now() + timeout;
323
+ let ok = false;
324
+ let lastErr = null;
325
+ while (Date.now() < deadline) {
326
+ try {
327
+ const res = (await browser.send({
328
+ method: 'Runtime.evaluate',
329
+ params: { expression: expr, returnByValue: true },
330
+ }));
331
+ if (res?.result?.value === true) {
332
+ ok = true;
333
+ break;
334
+ }
335
+ }
336
+ catch (e) {
337
+ lastErr = e;
338
+ }
339
+ await sleep(500);
340
+ }
341
+ if (!ok) {
342
+ throw new Error(`waitForSelector("${selector}") timed out after ${timeout}ms${lastErr ? `: ${lastErr.message}` : ''}`);
343
+ }
344
+ out.push({ json: { session_id: sid, selector, found: true } });
345
+ break;
346
+ }
347
+ case 'upload': {
348
+ const selector = this.getNodeParameter('selector', i);
349
+ const bpn = this.getNodeParameter('binaryPropertyName', i);
350
+ const bin = items[i].binary?.[bpn];
351
+ if (!bin)
352
+ throw new Error(`Binary property "${bpn}" not found on input`);
353
+ const stream = await this.helpers.getBinaryStream(bin.id);
354
+ const chunks = [];
355
+ for await (const c of stream)
356
+ chunks.push(c);
357
+ const buf = Buffer.concat(chunks);
358
+ const res = await browser.upload(selector, buf);
359
+ out.push({ json: { session_id: sid, uploaded: res } });
360
+ break;
361
+ }
362
+ case 'close': {
363
+ await browser.close();
364
+ out.push({ json: { closed: true, session_id: sessionId } });
365
+ break;
366
+ }
367
+ }
368
+ if (op === 'close') {
369
+ await client.close();
370
+ }
371
+ else {
372
+ await client.disconnect(); // session stays alive for the next node
373
+ }
374
+ }
375
+ finally {
376
+ // trap
377
+ }
378
+ }
379
+ return [out];
380
+ }
381
+ }
382
+ exports.BrowserCeki = BrowserCeki;
383
+ //# sourceMappingURL=BrowserCeki.node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BrowserCeki.node.js","sourceRoot":"","sources":["../../../nodes/BrowserCeki/BrowserCeki.node.ts"],"names":[],"mappings":";;;AAMA,mCAAoC;AAEpC,MAAM,KAAK,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAEpE,MAAM,YAAY,GAAG;;;;CAIpB,CAAC;AAEF;;;GAGG;AACH,MAAa,WAAW;IAAxB;QACC,gBAAW,GAAyB;YACnC,WAAW,EAAE,cAAc;YAC3B,IAAI,EAAE,aAAa;YACnB,IAAI,EAAE,eAAe;YACrB,KAAK,EAAE,CAAC,WAAW,CAAC;YACpB,OAAO,EAAE,CAAC;YACV,QAAQ,EAAE,8BAA8B;YACxC,WAAW,EAAE,6GAA6G;YAC1H,QAAQ,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE;YAClC,MAAM,EAAE,CAAC,MAAM,CAAC;YAChB,OAAO,EAAE,CAAC,MAAM,CAAC;YACjB,WAAW,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;YAClD,UAAU,EAAE;gBACX;oBACC,WAAW,EAAE,WAAW;oBACxB,IAAI,EAAE,WAAW;oBACjB,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,MAAM;oBACf,OAAO,EAAE;wBACR,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;wBAC/B,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE;wBACvC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;wBACjC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;wBAC/B,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;wBACnC,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE;wBAC3C,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE;wBACvC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;wBAC/B,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE,iBAAiB,EAAE;wBACvD,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;wBACnC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;wBACjC,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE;qBACnC;iBACD;gBACD,yCAAyC;gBACzC;oBACC,WAAW,EAAE,aAAa;oBAC1B,IAAI,EAAE,YAAY;oBAClB,IAAI,EAAE,QAAQ;oBACd,OAAO,EAAE,CAAC;oBACV,WAAW,EAAE,iCAAiC;oBAC9C,cAAc,EAAE,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,EAAE;iBACzD;gBACD;oBACC,WAAW,EAAE,KAAK;oBAClB,IAAI,EAAE,KAAK;oBACX,IAAI,EAAE,QAAQ;oBACd,OAAO,EAAE,EAAE;oBACX,WAAW,EAAE,aAAa;oBAC1B,cAAc,EAAE,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,EAAE;iBACzD;gBACD;oBACC,WAAW,EAAE,WAAW;oBACxB,IAAI,EAAE,UAAU;oBAChB,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,EAAE,eAAe,EAAE,CAAC,EAAE;oBACnC,OAAO,EAAE,IAAI;oBACb,cAAc,EAAE,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,EAAE;iBACzD;gBACD;oBACC,WAAW,EAAE,YAAY;oBACzB,IAAI,EAAE,WAAW;oBACjB,IAAI,EAAE,QAAQ;oBACd,OAAO,EAAE,CAAC;oBACV,cAAc,EAAE,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE;iBACjD;gBACD;oBACC,WAAW,EAAE,cAAc;oBAC3B,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,MAAM;oBACf,OAAO,EAAE;wBACR,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;wBAC/B,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE;qBACzC;oBACD,cAAc,EAAE,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,EAAE;iBACzD;gBACD,iCAAiC;gBACjC;oBACC,WAAW,EAAE,YAAY;oBACzB,IAAI,EAAE,WAAW;oBACjB,IAAI,EAAE,QAAQ;oBACd,OAAO,EAAE,yBAAyB;oBAClC,WAAW,EAAE,yBAAyB;oBACtC,QAAQ,EAAE,IAAI;oBACd,cAAc,EAAE;wBACf,IAAI,EAAE;4BACL,SAAS,EAAE,CAAC,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,iBAAiB,EAAE,QAAQ,EAAE,OAAO,CAAC;yBAC1H;qBACD;iBACD;gBACD;oBACC,WAAW,EAAE,KAAK;oBAClB,IAAI,EAAE,KAAK;oBACX,IAAI,EAAE,QAAQ;oBACd,OAAO,EAAE,EAAE;oBACX,QAAQ,EAAE,IAAI;oBACd,cAAc,EAAE,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,CAAC,UAAU,CAAC,EAAE,EAAE;iBACrD;gBACD;oBACC,WAAW,EAAE,GAAG;oBAChB,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,QAAQ;oBACd,OAAO,EAAE,CAAC;oBACV,cAAc,EAAE,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE;iBAClD;gBACD;oBACC,WAAW,EAAE,GAAG;oBAChB,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,QAAQ;oBACd,OAAO,EAAE,CAAC;oBACV,cAAc,EAAE,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE;iBAClD;gBACD;oBACC,WAAW,EAAE,MAAM;oBACnB,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,QAAQ;oBACd,OAAO,EAAE,EAAE;oBACX,cAAc,EAAE,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE;iBACjD;gBACD;oBACC,WAAW,EAAE,SAAS;oBACtB,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,QAAQ;oBACd,OAAO,EAAE,CAAC,GAAG;oBACb,cAAc,EAAE,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE;iBACnD;gBACD;oBACC,WAAW,EAAE,QAAQ;oBACrB,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,KAAK;oBACd,OAAO,EAAE;wBACR,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,KAAK,EAAE;wBACtC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;qBACnC;oBACD,cAAc,EAAE,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,CAAC,YAAY,CAAC,EAAE,EAAE;iBACvD;gBACD;oBACC,WAAW,EAAE,WAAW;oBACxB,IAAI,EAAE,UAAU;oBAChB,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,KAAK;oBACd,cAAc,EAAE,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,CAAC,YAAY,CAAC,EAAE,EAAE;iBACvD;gBACD;oBACC,WAAW,EAAE,cAAc;oBAC3B,IAAI,EAAE,IAAI;oBACV,IAAI,EAAE,QAAQ;oBACd,OAAO,EAAE,IAAI;oBACb,WAAW,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE;oBAC5B,WAAW,EAAE,mCAAmC;oBAChD,cAAc,EAAE,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE;iBACjD;gBACD;oBACC,WAAW,EAAE,cAAc;oBAC3B,IAAI,EAAE,cAAc;oBACpB,IAAI,EAAE,QAAQ;oBACd,OAAO,EAAE,EAAE;oBACX,QAAQ,EAAE,IAAI;oBACd,WAAW,EAAE,mCAAmC;oBAChD,cAAc,EAAE,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,CAAC,iBAAiB,CAAC,EAAE,EAAE;iBAC5D;gBACD;oBACC,WAAW,EAAE,cAAc;oBAC3B,IAAI,EAAE,aAAa;oBACnB,IAAI,EAAE,QAAQ;oBACd,OAAO,EAAE,KAAK;oBACd,WAAW,EAAE,6CAA6C;oBAC1D,cAAc,EAAE,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,CAAC,iBAAiB,CAAC,EAAE,EAAE;iBAC5D;gBACD;oBACC,WAAW,EAAE,cAAc;oBAC3B,IAAI,EAAE,UAAU;oBAChB,IAAI,EAAE,QAAQ;oBACd,OAAO,EAAE,EAAE;oBACX,QAAQ,EAAE,IAAI;oBACd,cAAc,EAAE,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE;iBACnD;gBACD;oBACC,WAAW,EAAE,iBAAiB;oBAC9B,IAAI,EAAE,oBAAoB;oBAC1B,IAAI,EAAE,QAAQ;oBACd,OAAO,EAAE,MAAM;oBACf,cAAc,EAAE,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE;iBACnD;gBACD;oBACC,WAAW,EAAE,yCAAyC;oBACtD,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,IAAI,EAAE,EAAE,EAAE;oBACnD,OAAO,EAAE,YAAY;oBACrB,cAAc,EAAE,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE;iBACjD;aACD;SACD,CAAC;IA+KH,CAAC;IA7KA,KAAK,CAAC,OAAO;QACZ,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAClC,MAAM,GAAG,GAAyB,EAAE,CAAC;QACrC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QACnD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAe,CAAC;QAEpC,MAAM,UAAU,GAAG,KAAK,EAAE,CAAS,EAAE,MAAW,EAAE,EAAE;YACnD,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC,CAAW,CAAC;YACpE,IAAI,UAAU;gBAAE,OAAO,UAAU,CAAC;YAClC,MAAM,GAAG,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC,CAAW,CAAC;YACtD,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC,CAAW,CAAC;YAChE,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC;gBAChC,GAAG,EAAE,GAAG,IAAI,SAAS;gBACrB,iBAAiB,EAAE,QAAQ;aAC3B,CAAC,CAAC;YACH,IAAI,CAAC,IAAI,CAAC,MAAM;gBAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;YAClE,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;QAC5B,CAAC,CAAC;QAEF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,MAAM,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC,CAAW,CAAC;YAC3D,MAAM,MAAM,GAAG,MAAM,IAAA,aAAO,EAAC,KAAK,CAAC,CAAC;YACpC,IAAI,OAAY,CAAC;YACjB,IAAI,CAAC;gBACJ,IAAI,EAAE,KAAK,MAAM,EAAE,CAAC;oBACnB,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;oBACxC,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAyB,CAAC;oBACtE,OAAO,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;oBAC3C,GAAG,CAAC,IAAI,CAAC;wBACR,IAAI,EAAE,EAAE,UAAU,EAAE,OAAO,CAAC,SAAS,EAAE,WAAW,EAAE,GAAG,EAAE,IAAI,EAAE;qBAC/D,CAAC,CAAC;oBACH,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,oDAAoD;oBAC/E,SAAS;gBACV,CAAC;gBAED,IAAI,EAAE,KAAK,MAAM,EAAE,CAAC;oBACnB,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;oBACxC,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAyB,CAAC;oBACtE,OAAO,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;oBAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAW,CAAC;oBACxD,uCAAuC;oBACvC,MAAM,EAAE,GAAG,IAAI,QAAQ,CACtB,SAAS,EACT,QAAQ,EACR,0BAA0B,IAAI,SAAS,CACvC,CAAC;oBACF,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;oBACzC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;wBAAE,KAAK,MAAM,CAAC,IAAI,MAAM;4BAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;yBAC1D,IAAI,MAAM;wBAAE,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;;wBACvC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;oBACxC,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;oBACtB,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;oBACrB,SAAS;gBACV,CAAC;gBAED,2CAA2C;gBAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC,CAAW,CAAC;gBAClE,OAAO,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;gBACzC,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC;gBAE9B,QAAQ,EAAE,EAAE,CAAC;oBACZ,KAAK,UAAU,CAAC,CAAC,CAAC;wBACjB,MAAM,GAAG,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC,CAAW,CAAC;wBACtD,MAAM,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;wBAC5B,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;wBAC7C,MAAM;oBACP,CAAC;oBACD,KAAK,OAAO,CAAC,CAAC,CAAC;wBACd,MAAM,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAAC,CAAW,CAAC;wBAClD,MAAM,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAAC,CAAW,CAAC;wBAClD,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;wBAC1B,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;wBACzD,MAAM;oBACP,CAAC;oBACD,KAAK,MAAM,CAAC,CAAC,CAAC;wBACb,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAW,CAAC;wBACxD,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wBACzB,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;wBACrD,MAAM;oBACP,CAAC;oBACD,KAAK,QAAQ,CAAC,CAAC,CAAC;wBACf,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC,CAAW,CAAC;wBAC5D,MAAM,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;wBACjC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;wBAC1D,MAAM;oBACP,CAAC;oBACD,KAAK,YAAY,CAAC,CAAC,CAAC;wBACnB,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC,CAAqB,CAAC;wBACtE,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC,CAAY,CAAC;wBACjE,MAAM,IAAI,GAAG,CAAC,MAAM,OAAO,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAQ,CAAC;wBACrE,MAAM,IAAI,GAAG,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;wBACvE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAClD,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,EAC3B,gBAAgB,EAChB,WAAW,CACX,CAAC;wBACF,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;wBAClE,MAAM;oBACP,CAAC;oBACD,KAAK,UAAU,CAAC,CAAC,CAAC;wBACjB,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,QAAQ,EAAE,CAAC;wBACtC,GAAG,CAAC,IAAI,CAAC;4BACR,IAAI,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,EAAG,IAAY,CAAC,EAAE,EAAE,IAAI,EAAG,IAAY,CAAC,IAAI,EAAE;yBACzE,CAAC,CAAC;wBACH,MAAM;oBACP,CAAC;oBACD,KAAK,MAAM,CAAC,CAAC,CAAC;wBACb,MAAM,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC,CAAW,CAAC;wBACpD,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC;wBAChB,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;wBACpD,MAAM;oBACP,CAAC;oBACD,KAAK,iBAAiB,CAAC,CAAC,CAAC;wBACxB,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,cAAc,EAAE,CAAC,CAAW,CAAC;wBACpE,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,CAAC,CAAW,CAAC;wBAClE,MAAM,IAAI,GAAG,4BAA4B,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC;wBACrE,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC;wBACtC,IAAI,EAAE,GAAG,KAAK,CAAC;wBACf,IAAI,OAAO,GAAY,IAAI,CAAC;wBAC5B,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;4BAC9B,IAAI,CAAC;gCACJ,MAAM,GAAG,GAAG,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC;oCAC/B,MAAM,EAAE,kBAAkB;oCAC1B,MAAM,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE;iCACjD,CAAC,CAAQ,CAAC;gCACX,IAAI,GAAG,EAAE,MAAM,EAAE,KAAK,KAAK,IAAI,EAAE,CAAC;oCACjC,EAAE,GAAG,IAAI,CAAC;oCACV,MAAM;gCACP,CAAC;4BACF,CAAC;4BAAC,OAAO,CAAC,EAAE,CAAC;gCACZ,OAAO,GAAG,CAAC,CAAC;4BACb,CAAC;4BACD,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;wBAClB,CAAC;wBACD,IAAI,CAAC,EAAE,EAAE,CAAC;4BACT,MAAM,IAAI,KAAK,CACd,oBAAoB,QAAQ,sBAAsB,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,KAAM,OAAiB,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAChH,CAAC;wBACH,CAAC;wBACD,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;wBAC/D,MAAM;oBACP,CAAC;oBACD,KAAK,QAAQ,CAAC,CAAC,CAAC;wBACf,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC,CAAW,CAAC;wBAChE,MAAM,GAAG,GAAG,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,EAAE,CAAC,CAAW,CAAC;wBACrE,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC;wBACnC,IAAI,CAAC,GAAG;4BAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,GAAG,sBAAsB,CAAC,CAAC;wBACzE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC,EAAY,CAAC,CAAC;wBACpE,MAAM,MAAM,GAAa,EAAE,CAAC;wBAC5B,IAAI,KAAK,EAAE,MAAM,CAAC,IAAI,MAAM;4BAAE,MAAM,CAAC,IAAI,CAAC,CAAW,CAAC,CAAC;wBACvD,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;wBAClC,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;wBAChD,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;wBACvD,MAAM;oBACP,CAAC;oBACD,KAAK,OAAO,CAAC,CAAC,CAAC;wBACd,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;wBACtB,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;wBAC5D,MAAM;oBACP,CAAC;gBACF,CAAC;gBAED,IAAI,EAAE,KAAK,OAAO,EAAE,CAAC;oBACpB,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;gBACtB,CAAC;qBAAM,CAAC;oBACP,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,wCAAwC;gBACpE,CAAC;YACF,CAAC;oBAAS,CAAC;gBACV,OAAO;YACR,CAAC;QACF,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,CAAC;IACd,CAAC;CACD;AAlXD,kCAkXC"}
Binary file
@@ -0,0 +1,5 @@
1
+ import type { IExecuteFunctions, INodeExecutionData, INodeType, INodeTypeDescription } from 'n8n-workflow';
2
+ export declare class CekiContract implements INodeType {
3
+ description: INodeTypeDescription;
4
+ execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]>;
5
+ }