@albertomarturelo/sii-core 0.10.0 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (81) hide show
  1. package/CHANGELOG.md +77 -0
  2. package/dist/adapters/fake/index.d.ts +17 -3
  3. package/dist/adapters/fake/index.d.ts.map +1 -1
  4. package/dist/adapters/fake/index.js +36 -3
  5. package/dist/adapters/fake/index.js.map +1 -1
  6. package/dist/adapters/node/cookie-jar.d.ts +35 -0
  7. package/dist/adapters/node/cookie-jar.d.ts.map +1 -0
  8. package/dist/adapters/node/cookie-jar.js +211 -0
  9. package/dist/adapters/node/cookie-jar.js.map +1 -0
  10. package/dist/adapters/node/http.d.ts +12 -0
  11. package/dist/adapters/node/http.d.ts.map +1 -0
  12. package/dist/adapters/node/http.js +278 -0
  13. package/dist/adapters/node/http.js.map +1 -0
  14. package/dist/adapters/node/portal.d.ts.map +1 -1
  15. package/dist/adapters/node/portal.js +7 -4
  16. package/dist/adapters/node/portal.js.map +1 -1
  17. package/dist/adapters/node/response.d.ts +14 -0
  18. package/dist/adapters/node/response.d.ts.map +1 -1
  19. package/dist/adapters/node/response.js +34 -1
  20. package/dist/adapters/node/response.js.map +1 -1
  21. package/dist/auth/auth.d.ts +27 -1
  22. package/dist/auth/auth.d.ts.map +1 -1
  23. package/dist/auth/auth.js +145 -41
  24. package/dist/auth/auth.js.map +1 -1
  25. package/dist/auth/datos-cntr.d.ts +23 -0
  26. package/dist/auth/datos-cntr.d.ts.map +1 -0
  27. package/dist/auth/datos-cntr.js +81 -0
  28. package/dist/auth/datos-cntr.js.map +1 -0
  29. package/dist/auth/index.d.ts +1 -0
  30. package/dist/auth/index.d.ts.map +1 -1
  31. package/dist/auth/login-block.d.ts +23 -0
  32. package/dist/auth/login-block.d.ts.map +1 -0
  33. package/dist/auth/login-block.js +53 -0
  34. package/dist/auth/login-block.js.map +1 -0
  35. package/dist/auth/login-error.d.ts +20 -3
  36. package/dist/auth/login-error.d.ts.map +1 -1
  37. package/dist/auth/login-error.js +20 -5
  38. package/dist/auth/login-error.js.map +1 -1
  39. package/dist/auth/session.d.ts +13 -1
  40. package/dist/auth/session.d.ts.map +1 -1
  41. package/dist/auth/session.js +23 -2
  42. package/dist/auth/session.js.map +1 -1
  43. package/dist/cli.d.ts +2 -2
  44. package/dist/cli.d.ts.map +1 -1
  45. package/dist/cli.js +4 -1
  46. package/dist/cli.js.map +1 -1
  47. package/dist/config/config.d.ts +8 -0
  48. package/dist/config/config.d.ts.map +1 -1
  49. package/dist/config/config.js +8 -0
  50. package/dist/config/config.js.map +1 -1
  51. package/dist/errors/errors.d.ts +34 -2
  52. package/dist/errors/errors.d.ts.map +1 -1
  53. package/dist/errors/errors.js +30 -2
  54. package/dist/errors/errors.js.map +1 -1
  55. package/dist/errors/index.d.ts +1 -0
  56. package/dist/errors/index.d.ts.map +1 -1
  57. package/dist/errors/index.js +1 -0
  58. package/dist/errors/index.js.map +1 -1
  59. package/dist/errors/kind.d.ts +12 -0
  60. package/dist/errors/kind.d.ts.map +1 -0
  61. package/dist/errors/kind.js +40 -0
  62. package/dist/errors/kind.js.map +1 -0
  63. package/dist/index.d.ts +1 -1
  64. package/dist/index.d.ts.map +1 -1
  65. package/dist/index.js.map +1 -1
  66. package/dist/node.d.ts +7 -3
  67. package/dist/node.d.ts.map +1 -1
  68. package/dist/node.js +10 -4
  69. package/dist/node.js.map +1 -1
  70. package/dist/seams/index.d.ts +7 -0
  71. package/dist/seams/index.d.ts.map +1 -1
  72. package/dist/tasks/auth.d.ts +16 -2
  73. package/dist/tasks/auth.d.ts.map +1 -1
  74. package/dist/tasks/auth.js +12 -0
  75. package/dist/tasks/auth.js.map +1 -1
  76. package/dist/tasks/bte.d.ts.map +1 -1
  77. package/dist/tasks/bte.js +4 -2
  78. package/dist/tasks/bte.js.map +1 -1
  79. package/dist/tasks/dte.js +8 -8
  80. package/dist/tasks/dte.js.map +1 -1
  81. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -4,6 +4,83 @@ All notable changes to `@albertomarturelo/sii-core` are documented here. The for
4
4
  loosely based on [Keep a Changelog](https://keepachangelog.com/); the package is
5
5
  pre-1.0, so MINOR bumps may carry breaking changes (pin or use `~` downstream).
6
6
 
7
+ ## 0.12.0 — 2026-10-18
8
+
9
+ ### Added
10
+
11
+ - **`classifyError(error)` (ADR-012 amendment, #134)** returns an `ErrorInfo`:
12
+ `{ type: ErrorKind, reason?, codigo? }`. The `type` is a stable kind name, never a class name:
13
+ `login_rejected`, `login_blocked`, `login_queued`, `login_failed`, `not_authenticated`,
14
+ `session_expired`, `www2_session_required`, `rate_limited`, `validation`,
15
+ `credential_not_found`, `browser_required`, `unexpected_response`, `sii_error`,
16
+ `unexpected`. `reason` / `codigo` ride on every `login_*` kind and no other.
17
+ `login_rejected` uses the latch's own rule, so it always means "the latch is now set". Both
18
+ surfaces build their error output from it, and a library consumer can branch on the same
19
+ kinds.
20
+
21
+ ### Fixed
22
+
23
+ - **A dead session read as live over the HTTP driver (#139).** Mi SII answers a dead jar with
24
+ `200` and a page whose only content is a JavaScript `location.replace()` to the login, so the
25
+ URL check never saw `LOGIN_HOST`. Every credential login's probe answered
26
+ `already_authenticated` without minting, and an unattended caller could never recover.
27
+ - `fetchWithJar` now recognises that page (`loginStubTarget`: a small 2xx HTML page holding
28
+ nothing but one navigation, to `LOGIN_HOST`) and reports the login URL as the landing, so
29
+ every primitive raises `SessionExpiredError`.
30
+ - The login probe needs positive proof: a session is live only when Mi SII serves the
31
+ principal's `DatosCntrNow`.
32
+
33
+ ### Changed
34
+
35
+ - **`whoami` and `statusRefresh` raise different errors.**
36
+ - A login landing raises `SessionExpiredError`, a subclass of `NotAuthenticatedError` (it was
37
+ the parent class).
38
+ - A Mi SII page without `DatosCntrNow` and without a bounce raises `UnexpectedResponseError`.
39
+ It was `LoginFailedError`, which wrongly read as a failed login. `LoginFailedError` stays on
40
+ the login path.
41
+ - A consumer that caught `LoginFailedError` around `whoami` / `statusRefresh` must now catch
42
+ the new class.
43
+
44
+ ## 0.11.0 — 2026-10-18
45
+
46
+ ### Added
47
+
48
+ - **`HttpPortalDriver` (ADR-027, #131)** — every `PortalSession` primitive over Node `fetch`
49
+ and an in-house cookie jar, which (de)serialises to Playwright's `storageState` shape, so a
50
+ session minted by either engine restores in the other. The login is the hand-built
51
+ five-field POST that SII's page computes; success is decided by the session cookies plus the
52
+ body's navigation off the login host, because SII answers `200` on both success and
53
+ rejection. Queue-it's waiting room raises `LoginQueuedError` (never retried).
54
+ - **`Runtime.browser`** — the optional, lazy Playwright engine, used only by the tasks that
55
+ run SII's own page JS (BTE `list`, the MIPYME/DTE tasks). `createNodeRuntime` wires it; a
56
+ hand-built `Runtime` without it makes those tasks raise `BrowserRequiredError`, which names
57
+ the install. Internally, the Mi SII identity is now parsed from the page's inline JSON literal
58
+ (zod-validated) instead of `session.evaluate`, so it works on either engine.
59
+ - **Typed login failures (#129).** `LoginFailedError` carries `reason: 'wrong-clave' |
60
+ 'unknown'` and `codigo` (SII's message code). Only the observed wrong-Clave code classifies
61
+ as `wrong-clave`; anything else is `unknown`, the safe direction.
62
+ - **Non-interactive login (ADR-028, #133).** `suppliedClaveLogin(runtime, {rut, clave,
63
+ source: 'env' | 'stdin'})` and `unblockLogin(runtime, {rut?})`, both exported only from the
64
+ CLI-only `@albertomarturelo/sii-core/cli` subpath (a test asserts the main barrel lacks them).
65
+ - **The rejection latch** (`auth/login-block.ts`, `~/.sii/login-blocked.json`, one `{rut, at,
66
+ codigo}` entry per RUT, no secret). Any SII error page with a código trips it, from any Clave
67
+ source; Queue-it, timeouts and network errors never do. While set, env/stdin/keyring logins
68
+ for that RUT raise `LoginBlockedError` (a `LoginFailedError`) without contacting SII. A fresh
69
+ console or browser login for that RUT clears it, as does `unblockLogin`.
70
+ - **`AuthStatusLocal.loginBlocked`** — the latch, reported by `authStatus`, so a caller checks
71
+ it before deciding to log in.
72
+ - **`source` on every `auth_login` audit receipt** (`env | stdin | keyring | console |
73
+ browser`), never the value; a latch refusal is `result: 'blocked'`.
74
+
75
+ ### Changed
76
+
77
+ - **`createNodeRuntime().portal` defaults to `HttpPortalDriver`**; Playwright moved to
78
+ `Runtime.browser`. A consumer that injects its own `portal` and expected it to run page JS
79
+ must now also supply `browser`.
80
+ - **Every credential login is RUT-aware.** A live session for a different RUT raises
81
+ `ValidationError` instead of answering `already_authenticated` as the wrong account.
82
+ - `AuthLoginResult.reason` gains `env_login` and `stdin_login`.
83
+
7
84
  ## 0.10.0 — 2026-09-12
8
85
 
9
86
  ### Added
@@ -1,4 +1,5 @@
1
- import type { AuditEntry, AuditSink, BinaryRequest, BinaryResponse, Clock, CredentialLoginOptions, FormRequest, InteractiveLoginOptions, JsonRequest, FileSink, KeyValueStore, PortalDriver, PortalSession, PublicRequest, PublicResponse, SecretStore, TextRequest } from '../../seams/index.js';
1
+ import type { AccountType } from '../../identity/index.js';
2
+ import type { AuditEntry, AuditSink, BinaryRequest, BinaryResponse, Clock, CredentialLoginOptions, FormRequest, InteractiveLoginOptions, JsonRequest, FileSink, KeyValueStore, PortalDriver, PortalSession, PublicRequest, PublicResponse, Runtime, SecretStore, TextRequest } from '../../seams/index.js';
2
3
  export declare class FixedClock implements Clock {
3
4
  private current;
4
5
  /** Each `sleep(ms)` is recorded (not awaited) so a test can assert pacing without
@@ -24,14 +25,20 @@ export interface FakeSessionScript {
24
25
  landingUrl?: string;
25
26
  /** Result for `evaluate(expression)`. */
26
27
  evaluate?: (expression: string) => unknown;
28
+ /** The Mi SII identity snapshot (`DatosCntrNow`). Since ADR-027 the auth flows read identity
29
+ * from the Mi SII HTML (not `evaluate`), so the fake synthesises that HTML for a
30
+ * `requestText(HOSTS.miSii)` from this — falling back to `evaluate` so pre-ADR-027 fixtures
31
+ * (`evaluate: datos`) keep working untouched. */
32
+ datos?: () => unknown;
27
33
  /** Result for `requestJson(url, options)` — the SDI facade JSON envelope. */
28
34
  requestJson?: (url: string, options?: JsonRequest) => unknown;
29
35
  /** Result for `requestForm(url, options)` — an authenticated form-POST (BHE emit,
30
36
  * ADR-017). Return the decoded body string (status 200) or a full PublicResponse. */
31
37
  requestForm?: (url: string, options?: FormRequest) => PublicResponse | string;
32
38
  /** Result for `requestText(url, options)` — an authenticated raw-body request (GWT-RPC
33
- * reads, ADR-020). Return the decoded body string (status 200) or a full PublicResponse. */
34
- requestText?: (url: string, options?: TextRequest) => PublicResponse | string;
39
+ * reads, ADR-020). Return the decoded body string (status 200) or a full PublicResponse;
40
+ * `undefined` defers to the fake's default (incl. the Mi SII identity synthesis, ADR-027). */
41
+ requestText?: (url: string, options?: TextRequest) => PublicResponse | string | undefined;
35
42
  /** Result for `requestBinary(url, options)` — an authenticated download (F29 PDFs,
36
43
  * ADR-022). Return the raw bytes (content-type defaults to `application/pdf`) or a
37
44
  * full BinaryResponse to script an error page / odd content-type. */
@@ -123,6 +130,13 @@ export declare class InMemoryFileSink implements FileSink {
123
130
  readonly files: Map<string, Uint8Array<ArrayBufferLike>>;
124
131
  write(dir: string, name: string, bytes: Uint8Array): Promise<string>;
125
132
  }
133
+ /** Seed an authenticated cookies-only session + operate state directly into a runtime's store
134
+ * — so a surface test that just needs "logged in as self" doesn't drive the login command
135
+ * (which, since ADR-027, prompts for a Clave on the CLI). Synthetic RUT, no SII touched. */
136
+ export declare function seedSession(runtime: Runtime, opts?: {
137
+ rut?: string;
138
+ accountType?: AccountType;
139
+ }): Promise<void>;
126
140
  /** In-memory SecretStore: the keyring stand-in, so a test never reads the real one
127
141
  * (ADR-003 / ADR-025). `entries` is keyed by account exactly as the keyring's username. */
128
142
  export declare class InMemorySecretStore implements SecretStore {
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/adapters/fake/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/adapters/fake/index.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,7 @@
1
+ // In-memory fakes for tests — never touch the real SII / fs / clock.
2
+ import { HOSTS } from '../../config/index.js';
3
+ import { writeSession } from '../../auth/session.js';
4
+ import { initOperateState } from '../../identity/index.js';
1
5
  export class FixedClock {
2
6
  current;
3
7
  /** Each `sleep(ms)` is recorded (not awaited) so a test can assert pacing without
@@ -72,9 +76,21 @@ export class FakePortalSession {
72
76
  async requestText(url, options) {
73
77
  this.lastTextRequest = options ? { url, options } : { url };
74
78
  const r = this.script.requestText?.(url, options);
75
- if (r === undefined)
76
- return { status: 200, body: '' };
77
- return typeof r === 'string' ? { status: 200, body: r } : r;
79
+ if (r !== undefined)
80
+ return typeof r === 'string' ? { status: 200, body: r } : r;
81
+ // Synthesise the Mi SII identity HTML (ADR-027): the auth flows now read `DatosCntrNow`
82
+ // from the landing's HTML, so a login/whoami/status fixture that set `datos` (or the older
83
+ // `evaluate: datos`) still serves identity without being rewritten.
84
+ if (url === HOSTS.miSii) {
85
+ // Pass a DatosCntrNow-flavoured expression so a fixture that branches its `evaluate` on the
86
+ // expression (the pre-ADR-027 `evaluate: (e) => e.includes('DatosCntrNow') ? … : …` style)
87
+ // returns the identity branch, not a map/else branch.
88
+ const d = this.script.datos?.() ?? this.script.evaluate?.('DatosCntrNow');
89
+ if (d !== undefined && d !== null) {
90
+ return { status: 200, body: `<script>var DatosCntrNow = ${JSON.stringify(d)};</script>` };
91
+ }
92
+ }
93
+ return { status: 200, body: '' };
78
94
  }
79
95
  /** The last requestBinary call — lets a test assert the download URL sent to SII. */
80
96
  lastBinaryRequest = null;
@@ -158,6 +174,23 @@ export class InMemoryFileSink {
158
174
  return path;
159
175
  }
160
176
  }
177
+ /** Seed an authenticated cookies-only session + operate state directly into a runtime's store
178
+ * — so a surface test that just needs "logged in as self" doesn't drive the login command
179
+ * (which, since ADR-027, prompts for a Clave on the CLI). Synthetic RUT, no SII touched. */
180
+ export async function seedSession(runtime, opts = {}) {
181
+ const rut = opts.rut ?? '11111111-1';
182
+ const accountType = opts.accountType ?? 'persona';
183
+ await writeSession(runtime.store, {
184
+ rut,
185
+ cookies: { cookies: [] },
186
+ savedAt: runtime.clock.now().toISOString(),
187
+ });
188
+ await initOperateState(runtime.store, {
189
+ selfRut: rut,
190
+ accountType,
191
+ operable: [{ rut, razonSocial: rut, isSelf: true }],
192
+ });
193
+ }
161
194
  /** In-memory SecretStore: the keyring stand-in, so a test never reads the real one
162
195
  * (ADR-003 / ADR-025). `entries` is keyed by account exactly as the keyring's username. */
163
196
  export class InMemorySecretStore {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/adapters/fake/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/adapters/fake/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ /** One cookie in Playwright's `storageState().cookies` shape — the persisted contract. */
2
+ export interface SerializedCookie {
3
+ name: string;
4
+ value: string;
5
+ domain: string;
6
+ path: string;
7
+ /** Epoch SECONDS; `-1` for a session cookie (Playwright's convention). */
8
+ expires: number;
9
+ httpOnly: boolean;
10
+ secure: boolean;
11
+ sameSite: 'Strict' | 'Lax' | 'None';
12
+ }
13
+ export declare class CookieJar {
14
+ private readonly cookies;
15
+ /** Apply the `Set-Cookie` header lines from a response received for `requestUrl`.
16
+ * `setCookieLines` is what `Headers.getSetCookie()` returns (one unfolded line each). */
17
+ applySetCookies(requestUrl: string, setCookieLines: readonly string[]): void;
18
+ private applyOne;
19
+ /** The `Cookie` request header value for `requestUrl` (matching cookies joined by `; `),
20
+ * or `null` when none match. Expired cookies are skipped (and evicted). */
21
+ header(requestUrl: string): string | null;
22
+ /** Value of a single cookie visible to `requestUrl` (e.g. the SPA `TOKEN`), or null. */
23
+ value(requestUrl: string, name: string): string | null;
24
+ /** The cookies-only storage state to persist (Playwright's shape, ADR-006/ADR-027). A
25
+ * non-host-only cookie is exported with a leading-dot `domain` — Playwright's convention
26
+ * for a shared cookie — so BOTH engines read the host-only/shared split back correctly. */
27
+ toStorageState(): {
28
+ cookies: SerializedCookie[];
29
+ };
30
+ /** Build a jar from a persisted storage state (either engine's). A leading-dot `domain`
31
+ * means a shared (non-host-only) cookie, a bare host means host-only — Playwright's
32
+ * convention. Tolerant of a missing `cookies` array (a garbage jar restores empty). */
33
+ static fromStorageState(state: unknown): CookieJar;
34
+ }
35
+ //# sourceMappingURL=cookie-jar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cookie-jar.d.ts","sourceRoot":"","sources":["../../../src/adapters/node/cookie-jar.ts"],"names":[],"mappings":"AAWA,0FAA0F;AAC1F,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,0EAA0E;IAC1E,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC;CACrC;AAUD,qBAAa,SAAS;IAEpB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAgC;IAExD;8FAC0F;IAC1F,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,cAAc,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI;IAK5E,OAAO,CAAC,QAAQ;IAgFhB;gFAC4E;IAC5E,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAmBzC,wFAAwF;IACxF,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAYtD;;gGAE4F;IAC5F,cAAc,IAAI;QAAE,OAAO,EAAE,gBAAgB,EAAE,CAAA;KAAE;IAQjD;;4FAEwF;IACxF,MAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,SAAS;CAuBnD"}
@@ -0,0 +1,211 @@
1
+ // In-house cookie jar for the HTTP PortalDriver (ADR-027). SII's session rides entirely
2
+ // on cookies (observed 2026-10-17: a plain `fetch` login sets TOKEN / CSESSIONID /
3
+ // NETSCAPE_LIVEWIRE.* via Set-Cookie and NOTHING is set by page JS), so a small, correct
4
+ // jar replaces Playwright's context for every non-JS surface.
5
+ //
6
+ // No third-party cookie library (ADR-004 posture + a narrow, observed need): the jar
7
+ // models only what SII uses — Set-Cookie with Domain / Path / Max-Age / Expires / Secure /
8
+ // HttpOnly on one registrable domain (.sii.cl and its sub-hosts). It (de)serialises to the
9
+ // SAME shape Playwright's `storageState().cookies` uses, so a jar minted over HTTP restores
10
+ // into the browser engine and vice-versa — the session file is engine-agnostic (ADR-027).
11
+ const SESSION_EXPIRY = -1;
12
+ export class CookieJar {
13
+ // Keyed by name|domain|path (RFC 6265 cookie identity) so a re-Set overwrites in place.
14
+ cookies = new Map();
15
+ /** Apply the `Set-Cookie` header lines from a response received for `requestUrl`.
16
+ * `setCookieLines` is what `Headers.getSetCookie()` returns (one unfolded line each). */
17
+ applySetCookies(requestUrl, setCookieLines) {
18
+ const reqUrl = new URL(requestUrl);
19
+ for (const line of setCookieLines)
20
+ this.applyOne(reqUrl, line);
21
+ }
22
+ applyOne(reqUrl, line) {
23
+ const [pair, ...attrParts] = line.split(';');
24
+ if (pair === undefined)
25
+ return;
26
+ const eq = pair.indexOf('=');
27
+ if (eq < 1)
28
+ return; // no name — ignore
29
+ const name = pair.slice(0, eq).trim();
30
+ const value = pair.slice(eq + 1).trim();
31
+ let domain = reqUrl.hostname.toLowerCase();
32
+ let hostOnly = true;
33
+ // Default path is the request path's directory (RFC 6265 §5.1.4, simplified).
34
+ let path = defaultPath(reqUrl.pathname);
35
+ let expires = SESSION_EXPIRY;
36
+ let secure = false;
37
+ let httpOnly = false;
38
+ let sameSite = 'Lax';
39
+ let maxAgeDelete = false;
40
+ for (const attr of attrParts) {
41
+ const ieq = attr.indexOf('=');
42
+ const key = (ieq < 0 ? attr : attr.slice(0, ieq)).trim().toLowerCase();
43
+ const val = ieq < 0 ? '' : attr.slice(ieq + 1).trim();
44
+ switch (key) {
45
+ case 'domain':
46
+ if (val) {
47
+ domain = val.replace(/^\./, '').toLowerCase();
48
+ hostOnly = false;
49
+ }
50
+ break;
51
+ case 'path':
52
+ if (val.startsWith('/'))
53
+ path = val;
54
+ break;
55
+ case 'secure':
56
+ secure = true;
57
+ break;
58
+ case 'httponly':
59
+ httpOnly = true;
60
+ break;
61
+ case 'samesite':
62
+ sameSite = normalizeSameSite(val);
63
+ break;
64
+ case 'max-age': {
65
+ const secs = Number(val);
66
+ if (Number.isFinite(secs)) {
67
+ if (secs <= 0)
68
+ maxAgeDelete = true;
69
+ else
70
+ expires = Math.floor(Date.now() / 1000) + secs;
71
+ }
72
+ break;
73
+ }
74
+ case 'expires': {
75
+ const ms = Date.parse(val);
76
+ if (!Number.isNaN(ms)) {
77
+ if (ms <= Date.now())
78
+ maxAgeDelete = true;
79
+ else
80
+ expires = Math.floor(ms / 1000);
81
+ }
82
+ break;
83
+ }
84
+ }
85
+ }
86
+ const id = `${name}|${domain}|${path}`;
87
+ // An empty value or a past Max-Age/Expires is a deletion (SII clears the classic jar
88
+ // this way on logout / on the OAuth page). Drop the matching cookie.
89
+ if (value === '' || maxAgeDelete) {
90
+ this.cookies.delete(id);
91
+ return;
92
+ }
93
+ this.cookies.set(id, {
94
+ name,
95
+ value,
96
+ domain,
97
+ path,
98
+ expires,
99
+ httpOnly,
100
+ secure,
101
+ sameSite,
102
+ hostOnly,
103
+ });
104
+ }
105
+ /** The `Cookie` request header value for `requestUrl` (matching cookies joined by `; `),
106
+ * or `null` when none match. Expired cookies are skipped (and evicted). */
107
+ header(requestUrl) {
108
+ const url = new URL(requestUrl);
109
+ const host = url.hostname.toLowerCase();
110
+ const isHttps = url.protocol === 'https:';
111
+ const nowSecs = Math.floor(Date.now() / 1000);
112
+ const parts = [];
113
+ for (const [id, c] of this.cookies) {
114
+ if (c.expires !== SESSION_EXPIRY && c.expires <= nowSecs) {
115
+ this.cookies.delete(id);
116
+ continue;
117
+ }
118
+ if (c.secure && !isHttps)
119
+ continue;
120
+ if (!domainMatch(host, c.domain, c.hostOnly))
121
+ continue;
122
+ if (!pathMatch(url.pathname, c.path))
123
+ continue;
124
+ parts.push(`${c.name}=${c.value}`);
125
+ }
126
+ return parts.length ? parts.join('; ') : null;
127
+ }
128
+ /** Value of a single cookie visible to `requestUrl` (e.g. the SPA `TOKEN`), or null. */
129
+ value(requestUrl, name) {
130
+ const url = new URL(requestUrl);
131
+ const host = url.hostname.toLowerCase();
132
+ for (const c of this.cookies.values()) {
133
+ if (c.name !== name)
134
+ continue;
135
+ if (!domainMatch(host, c.domain, c.hostOnly))
136
+ continue;
137
+ if (!pathMatch(url.pathname, c.path))
138
+ continue;
139
+ return c.value;
140
+ }
141
+ return null;
142
+ }
143
+ /** The cookies-only storage state to persist (Playwright's shape, ADR-006/ADR-027). A
144
+ * non-host-only cookie is exported with a leading-dot `domain` — Playwright's convention
145
+ * for a shared cookie — so BOTH engines read the host-only/shared split back correctly. */
146
+ toStorageState() {
147
+ const cookies = [...this.cookies.values()].map(({ hostOnly, ...c }) => ({
148
+ ...c,
149
+ domain: hostOnly ? c.domain : `.${c.domain}`,
150
+ }));
151
+ return { cookies };
152
+ }
153
+ /** Build a jar from a persisted storage state (either engine's). A leading-dot `domain`
154
+ * means a shared (non-host-only) cookie, a bare host means host-only — Playwright's
155
+ * convention. Tolerant of a missing `cookies` array (a garbage jar restores empty). */
156
+ static fromStorageState(state) {
157
+ const jar = new CookieJar();
158
+ const raw = state?.cookies;
159
+ if (!Array.isArray(raw))
160
+ return jar;
161
+ for (const c of raw) {
162
+ if (typeof c?.name !== 'string' || typeof c.domain !== 'string')
163
+ continue;
164
+ const hostOnly = !c.domain.startsWith('.');
165
+ const domain = c.domain.replace(/^\./, '').toLowerCase();
166
+ const path = c.path ?? '/';
167
+ jar.cookies.set(`${c.name}|${domain}|${path}`, {
168
+ name: c.name,
169
+ value: c.value ?? '',
170
+ domain,
171
+ path,
172
+ expires: typeof c.expires === 'number' ? c.expires : SESSION_EXPIRY,
173
+ httpOnly: c.httpOnly ?? false,
174
+ secure: c.secure ?? false,
175
+ sameSite: normalizeSameSite(c.sameSite ?? 'Lax'),
176
+ hostOnly,
177
+ });
178
+ }
179
+ return jar;
180
+ }
181
+ }
182
+ function defaultPath(pathname) {
183
+ if (!pathname.startsWith('/'))
184
+ return '/';
185
+ const lastSlash = pathname.lastIndexOf('/');
186
+ return lastSlash <= 0 ? '/' : pathname.slice(0, lastSlash);
187
+ }
188
+ function domainMatch(host, cookieDomain, hostOnly) {
189
+ if (host === cookieDomain)
190
+ return true;
191
+ if (hostOnly)
192
+ return false;
193
+ return host.endsWith(`.${cookieDomain}`);
194
+ }
195
+ function pathMatch(requestPath, cookiePath) {
196
+ if (requestPath === cookiePath)
197
+ return true;
198
+ if (requestPath.startsWith(cookiePath)) {
199
+ return cookiePath.endsWith('/') || requestPath[cookiePath.length] === '/';
200
+ }
201
+ return false;
202
+ }
203
+ function normalizeSameSite(val) {
204
+ const v = val.toLowerCase();
205
+ if (v === 'strict')
206
+ return 'Strict';
207
+ if (v === 'none')
208
+ return 'None';
209
+ return 'Lax';
210
+ }
211
+ //# sourceMappingURL=cookie-jar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cookie-jar.js","sourceRoot":"","sources":["../../../src/adapters/node/cookie-jar.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { CredentialLoginOptions, InteractiveLoginOptions, PortalDriver, PortalSession, PublicRequest, PublicResponse } from '../../seams/index.js';
2
+ /** The `fetch` implementation, injectable so tests drive a fake without a network (ADR-003). */
3
+ export type FetchLike = typeof globalThis.fetch;
4
+ export declare class HttpPortalDriver implements PortalDriver {
5
+ private readonly fetchImpl;
6
+ constructor(fetchImpl?: FetchLike);
7
+ interactiveLogin(_options: InteractiveLoginOptions): Promise<PortalSession>;
8
+ credentialLogin(options: CredentialLoginOptions): Promise<PortalSession>;
9
+ restore(storageState: unknown): Promise<PortalSession>;
10
+ requestPublic(url: string, options?: PublicRequest): Promise<PublicResponse>;
11
+ }
12
+ //# sourceMappingURL=http.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../../src/adapters/node/http.ts"],"names":[],"mappings":"AA2BA,OAAO,KAAK,EAGV,sBAAsB,EAEtB,uBAAuB,EAEvB,YAAY,EACZ,aAAa,EACb,aAAa,EACb,cAAc,EAEf,MAAM,sBAAsB,CAAC;AAE9B,gGAAgG;AAChG,MAAM,MAAM,SAAS,GAAG,OAAO,UAAU,CAAC,KAAK,CAAC;AA0MhD,qBAAa,gBAAiB,YAAW,YAAY;IACvC,OAAO,CAAC,QAAQ,CAAC,SAAS;gBAAT,SAAS,GAAE,SAA4B;IAEpE,gBAAgB,CAAC,QAAQ,EAAE,uBAAuB,GAAG,OAAO,CAAC,aAAa,CAAC;IAKrE,eAAe,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,aAAa,CAAC;IAgD9E,OAAO,CAAC,YAAY,EAAE,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC;IAMhD,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,cAAc,CAAC;CAuBvF"}