n8n-nodes-alterlab 0.12.0 → 0.13.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 CHANGED
@@ -212,7 +212,36 @@ No subscriptions. No monthly minimums. Add balance and use it whenever you need
212
212
  | **OCR** | Extract text from images on the page |
213
213
  | **Proxy** | Route through residential proxies with country targeting |
214
214
  | **Cache** | Cache responses from 60 seconds to 24 hours |
215
- | **Cost Controls** | Set maximum spend per request, force specific tiers, prefer cost or speed |
215
+ | **Cost Controls** | Set maximum spend per request, force specific tiers, prefer cost or speed, and cap total escalation time (`time_budget`) |
216
+ | **Auto-Detect JavaScript** | `render_js=auto`: render only the pages that need a browser |
217
+ | **Block Images** | Skip image downloads during browser rendering to save proxy bandwidth |
218
+ | **Skip TLS Verification** | Default (verify, fall back on an invalid site certificate), skip, or always require |
219
+ | **Browser Actions** | Up to 20 click / fill / scroll / wait / evaluate / screenshot steps run after page load |
220
+ | **Sticky Session** | Reuse captured cookies (and best-effort exit IP) across separate scrapes |
221
+ | **Bring Your Own Proxy** | Route through your own proxy integration (`use_own_proxy`, `proxy_integration_id`) |
222
+ | **Force Refresh** | Bypass the cache for a single request |
223
+
224
+ ### Additional Options (Scrape)
225
+
226
+ Content type, custom headers, geo-targeting (`location.country` / `location.language`), wait-for selector, content filtering, scroll control, PDF format, OCR language, webhook URL, sync policy, async submit (returns the job ID without polling), and inline embeddings.
227
+
228
+ ### Resources and Operations
229
+
230
+ | Resource | Operations |
231
+ |---|---|
232
+ | **Scrape** | Scrape, Estimate Cost |
233
+ | **Crawl** | Start (polls to completion), Get Status, Cancel, Resume, Export (JSON / JSONL / CSV, one item per page), List |
234
+ | **Search** | Web search with engine (DuckDuckGo, Google, Bing), safe search, and optional result scraping |
235
+ | **Map** | Discover URLs via sitemap and link crawling |
236
+ | **Extract** | LLM / algorithmic extraction on content you already have |
237
+ | **Batch** | Submit (with BYOS session and cloud export), List history |
238
+ | **Session** | Create, List, Get, Update, Delete, Validate, Refresh |
239
+
240
+ Scrape output also includes `jobId`, `finalUrl`, `cachedAt` / `expiresAt` / `staleCache`, `raw`, `warning` fields, `actionResults`, `embeddings`, `metadata`, and BYOP / BYOS billing details when the API returns them.
241
+
242
+ ### Credential Test
243
+
244
+ The **Test** button calls `GET /api/v1/auth/identity`, which validates the API key without spending credits.
216
245
 
217
246
  ## Frequently Asked Questions
218
247
 
@@ -263,14 +292,12 @@ npm run lint
263
292
  This project uses GitHub Actions for automation:
264
293
 
265
294
  - **CI** — Runs on every push and PR to `main`. Builds and type-checks across Node.js 18, 20, and 22. Verifies all dist output files are present.
266
- - **Publish** — Automatically publishes to npm when a GitHub Release is created. Uses npm provenance for supply-chain security.
295
+ - **Publish** — Automatically publishes to npm when a GitHub Release is created, using npm trusted publishing (OIDC) with provenance for supply-chain security. No long-lived npm token is stored in the repository.
267
296
  - **Dependabot** — Automated weekly dependency updates for npm packages and GitHub Actions.
268
297
 
269
- ### Required GitHub Secrets
298
+ ### Publishing
270
299
 
271
- | Secret | Description | Where to Get It |
272
- |---|---|---|
273
- | `NPM_TOKEN` | npm automation token for publishing | [npmjs.com → Access Tokens → Generate](https://www.npmjs.com/settings/~/tokens) — use "Automation" type |
300
+ Publishing uses [npm trusted publishing](https://docs.npmjs.com/trusted-publishers) (OIDC). The workflow requests `id-token: write` and runs `npm publish --provenance`; no `NPM_TOKEN` secret is required. The trusted publisher for this package must stay configured on npmjs.com.
274
301
 
275
302
  ## Support
276
303
 
@@ -1 +1 @@
1
- {"version":3,"file":"AlterLabApi.credentials.d.ts","sourceRoot":"","sources":["../../credentials/AlterLabApi.credentials.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,sBAAsB,EACtB,eAAe,EACf,eAAe,EAChB,MAAM,cAAc,CAAC;AAEtB,qBAAa,WAAY,YAAW,eAAe;IACjD,IAAI,SAAiB;IACrB,WAAW,SAAkB;IAC7B,gBAAgB,SACmF;IAEnG,UAAU,EAAE,eAAe,EAAE,CAmB3B;IAEF,YAAY,EAAE,oBAAoB,CAOhC;IAEF,IAAI,EAAE,sBAAsB,CAM1B;CACH"}
1
+ {"version":3,"file":"AlterLabApi.credentials.d.ts","sourceRoot":"","sources":["../../credentials/AlterLabApi.credentials.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,sBAAsB,EACtB,eAAe,EACf,eAAe,EAChB,MAAM,cAAc,CAAC;AAEtB,qBAAa,WAAY,YAAW,eAAe;IACjD,IAAI,SAAiB;IACrB,WAAW,SAAkB;IAC7B,gBAAgB,SACmF;IAEnG,UAAU,EAAE,eAAe,EAAE,CAmB3B;IAEF,YAAY,EAAE,oBAAoB,CAOhC;IAEF,IAAI,EAAE,sBAAsB,CAa1B;CACH"}
@@ -34,8 +34,13 @@ class AlterLabApi {
34
34
  };
35
35
  this.test = {
36
36
  request: {
37
- baseURL: "={{$credentials.baseUrl}}",
38
- url: "/api/v1/usage",
37
+ // Keep exactly one trailing slash so n8n resolves the relative URL as a
38
+ // path reference instead of replacing a self-hosted path prefix.
39
+ baseURL: "={{($credentials.baseUrl || 'https://api.alterlab.io').replace(/\\/+$/, '') + '/'}}",
40
+ // GET /api/v1/auth/identity verifies the X-API-Key without spending
41
+ // credits or touching usage/rate-limit state. (/api/v1/usage is
42
+ // JWT-only and always 401s for API keys — #326.)
43
+ url: "={{($credentials.baseUrl || 'https://api.alterlab.io').replace(/\\/+$/, '').endsWith('/api/v1') ? 'auth/identity' : 'api/v1/auth/identity'}}",
39
44
  method: "GET",
40
45
  },
41
46
  };
@@ -1 +1 @@
1
- {"version":3,"file":"AlterLabApi.credentials.js","sourceRoot":"","sources":["../../credentials/AlterLabApi.credentials.ts"],"names":[],"mappings":";;;AAOA,MAAa,WAAW;IAAxB;QACE,SAAI,GAAG,aAAa,CAAC;QACrB,gBAAW,GAAG,cAAc,CAAC;QAC7B,qBAAgB,GACd,gGAAgG,CAAC;QAEnG,eAAU,GAAsB;YAC9B;gBACE,WAAW,EAAE,SAAS;gBACtB,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAC/B,OAAO,EAAE,EAAE;gBACX,QAAQ,EAAE,IAAI;gBACd,WAAW,EACT,uYAAuY;aAC1Y;YACD;gBACE,WAAW,EAAE,UAAU;gBACvB,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,yBAAyB;gBAClC,WAAW,EACT,+DAA+D;aAClE;SACF,CAAC;QAEF,iBAAY,GAAyB;YACnC,IAAI,EAAE,SAAS;YACf,UAAU,EAAE;gBACV,OAAO,EAAE;oBACP,WAAW,EAAE,0BAA0B;iBACxC;aACF;SACF,CAAC;QAEF,SAAI,GAA2B;YAC7B,OAAO,EAAE;gBACP,OAAO,EAAE,2BAA2B;gBACpC,GAAG,EAAE,eAAe;gBACpB,MAAM,EAAE,KAAK;aACd;SACF,CAAC;IACJ,CAAC;CAAA;AA3CD,kCA2CC"}
1
+ {"version":3,"file":"AlterLabApi.credentials.js","sourceRoot":"","sources":["../../credentials/AlterLabApi.credentials.ts"],"names":[],"mappings":";;;AAOA,MAAa,WAAW;IAAxB;QACE,SAAI,GAAG,aAAa,CAAC;QACrB,gBAAW,GAAG,cAAc,CAAC;QAC7B,qBAAgB,GACd,gGAAgG,CAAC;QAEnG,eAAU,GAAsB;YAC9B;gBACE,WAAW,EAAE,SAAS;gBACtB,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAC/B,OAAO,EAAE,EAAE;gBACX,QAAQ,EAAE,IAAI;gBACd,WAAW,EACT,uYAAuY;aAC1Y;YACD;gBACE,WAAW,EAAE,UAAU;gBACvB,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,yBAAyB;gBAClC,WAAW,EACT,+DAA+D;aAClE;SACF,CAAC;QAEF,iBAAY,GAAyB;YACnC,IAAI,EAAE,SAAS;YACf,UAAU,EAAE;gBACV,OAAO,EAAE;oBACP,WAAW,EAAE,0BAA0B;iBACxC;aACF;SACF,CAAC;QAEF,SAAI,GAA2B;YAC7B,OAAO,EAAE;gBACP,wEAAwE;gBACxE,iEAAiE;gBACjE,OAAO,EACL,qFAAqF;gBACvF,oEAAoE;gBACpE,gEAAgE;gBAChE,iDAAiD;gBACjD,GAAG,EACD,8IAA8I;gBAChJ,MAAM,EAAE,KAAK;aACd;SACF,CAAC;IACJ,CAAC;CAAA;AAlDD,kCAkDC"}
@@ -60,7 +60,7 @@ class AlterLabOAuth2Api {
60
60
  this.test = {
61
61
  request: {
62
62
  baseURL: "https://api.alterlab.io",
63
- url: "/api/v1/usage",
63
+ url: "/api/v1/auth/identity",
64
64
  method: "GET",
65
65
  },
66
66
  };
@@ -1 +1 @@
1
- {"version":3,"file":"AlterLabOAuth2Api.credentials.js","sourceRoot":"","sources":["../../credentials/AlterLabOAuth2Api.credentials.ts"],"names":[],"mappings":";;;AAMA,MAAa,iBAAiB;IAA9B;QACE,SAAI,GAAG,mBAAmB,CAAC;QAC3B,gBAAW,GAAG,qBAAqB,CAAC;QACpC,qBAAgB,GACd,gGAAgG,CAAC;QAEnG,YAAO,GAAG,CAAC,WAAW,CAAC,CAAC;QAExB,eAAU,GAAsB;YAC9B;gBACE,WAAW,EAAE,YAAY;gBACzB,IAAI,EAAE,WAAW;gBACjB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,mBAAmB;aAC7B;YACD;gBACE,WAAW,EAAE,mBAAmB;gBAChC,IAAI,EAAE,kBAAkB;gBACxB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,yCAAyC;aACnD;YACD;gBACE,WAAW,EAAE,kBAAkB;gBAC/B,IAAI,EAAE,gBAAgB;gBACtB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,4CAA4C;aACtD;YACD;gBACE,WAAW,EAAE,WAAW;gBACxB,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,oBAAoB;aAC9B;YACD;gBACE,WAAW,EAAE,eAAe;gBAC5B,IAAI,EAAE,cAAc;gBACpB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,sCAAsC;aAChD;YACD;gBACE,WAAW,EAAE,OAAO;gBACpB,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,QAAQ;aAClB;YACD;gBACE,WAAW,EAAE,2BAA2B;gBACxC,IAAI,EAAE,qBAAqB;gBAC3B,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,EAAE;aACZ;YACD;gBACE,WAAW,EAAE,gBAAgB;gBAC7B,IAAI,EAAE,gBAAgB;gBACtB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,MAAM;aAChB;SACF,CAAC;QAEF,SAAI,GAA2B;YAC7B,OAAO,EAAE;gBACP,OAAO,EAAE,yBAAyB;gBAClC,GAAG,EAAE,eAAe;gBACpB,MAAM,EAAE,KAAK;aACd;SACF,CAAC;IACJ,CAAC;CAAA;AAlED,8CAkEC"}
1
+ {"version":3,"file":"AlterLabOAuth2Api.credentials.js","sourceRoot":"","sources":["../../credentials/AlterLabOAuth2Api.credentials.ts"],"names":[],"mappings":";;;AAMA,MAAa,iBAAiB;IAA9B;QACE,SAAI,GAAG,mBAAmB,CAAC;QAC3B,gBAAW,GAAG,qBAAqB,CAAC;QACpC,qBAAgB,GACd,gGAAgG,CAAC;QAEnG,YAAO,GAAG,CAAC,WAAW,CAAC,CAAC;QAExB,eAAU,GAAsB;YAC9B;gBACE,WAAW,EAAE,YAAY;gBACzB,IAAI,EAAE,WAAW;gBACjB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,mBAAmB;aAC7B;YACD;gBACE,WAAW,EAAE,mBAAmB;gBAChC,IAAI,EAAE,kBAAkB;gBACxB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,yCAAyC;aACnD;YACD;gBACE,WAAW,EAAE,kBAAkB;gBAC/B,IAAI,EAAE,gBAAgB;gBACtB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,4CAA4C;aACtD;YACD;gBACE,WAAW,EAAE,WAAW;gBACxB,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,oBAAoB;aAC9B;YACD;gBACE,WAAW,EAAE,eAAe;gBAC5B,IAAI,EAAE,cAAc;gBACpB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,sCAAsC;aAChD;YACD;gBACE,WAAW,EAAE,OAAO;gBACpB,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,QAAQ;aAClB;YACD;gBACE,WAAW,EAAE,2BAA2B;gBACxC,IAAI,EAAE,qBAAqB;gBAC3B,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,EAAE;aACZ;YACD;gBACE,WAAW,EAAE,gBAAgB;gBAC7B,IAAI,EAAE,gBAAgB;gBACtB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,MAAM;aAChB;SACF,CAAC;QAEF,SAAI,GAA2B;YAC7B,OAAO,EAAE;gBACP,OAAO,EAAE,yBAAyB;gBAClC,GAAG,EAAE,uBAAuB;gBAC5B,MAAM,EAAE,KAAK;aACd;SACF,CAAC;IACJ,CAAC;CAAA;AAlED,8CAkEC"}
@@ -1 +1 @@
1
- {"version":3,"file":"AlterLab.node.d.ts","sourceRoot":"","sources":["../../../nodes/AlterLab/AlterLab.node.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,iBAAiB,EACjB,kBAAkB,EAClB,SAAS,EACT,oBAAoB,EAErB,MAAM,cAAc,CAAC;AAKtB,qBAAa,QAAS,YAAW,SAAS;IACxC,WAAW,EAAE,oBAAoB,CAksD/B;IAEI,OAAO,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;CAw9CxE"}
1
+ {"version":3,"file":"AlterLab.node.d.ts","sourceRoot":"","sources":["../../../nodes/AlterLab/AlterLab.node.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,iBAAiB,EAEjB,kBAAkB,EAClB,SAAS,EACT,oBAAoB,EAErB,MAAM,cAAc,CAAC;AAkCtB,qBAAa,QAAS,YAAW,SAAS;IACxC,WAAW,EAAE,oBAAoB,CA+hF/B;IAEI,OAAO,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;CAgqDxE"}