@codespar/sdk 0.11.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.
Files changed (73) hide show
  1. package/README.md +69 -0
  2. package/dist/__tests__/abort.test.d.ts +2 -0
  3. package/dist/__tests__/abort.test.d.ts.map +1 -0
  4. package/dist/__tests__/abort.test.js +70 -0
  5. package/dist/__tests__/abort.test.js.map +1 -0
  6. package/dist/__tests__/api-client.test.d.ts +7 -0
  7. package/dist/__tests__/api-client.test.d.ts.map +1 -0
  8. package/dist/__tests__/api-client.test.js +294 -0
  9. package/dist/__tests__/api-client.test.js.map +1 -0
  10. package/dist/__tests__/close-timeout.test.d.ts +2 -0
  11. package/dist/__tests__/close-timeout.test.d.ts.map +1 -0
  12. package/dist/__tests__/close-timeout.test.js +57 -0
  13. package/dist/__tests__/close-timeout.test.js.map +1 -0
  14. package/dist/__tests__/codespar.test.js +11 -0
  15. package/dist/__tests__/codespar.test.js.map +1 -1
  16. package/dist/__tests__/connections-timeout.test.d.ts +2 -0
  17. package/dist/__tests__/connections-timeout.test.d.ts.map +1 -0
  18. package/dist/__tests__/connections-timeout.test.js +58 -0
  19. package/dist/__tests__/connections-timeout.test.js.map +1 -0
  20. package/dist/__tests__/fetch-timeout.test.d.ts +2 -0
  21. package/dist/__tests__/fetch-timeout.test.d.ts.map +1 -0
  22. package/dist/__tests__/fetch-timeout.test.js +137 -0
  23. package/dist/__tests__/fetch-timeout.test.js.map +1 -0
  24. package/dist/__tests__/openapi-snapshot.test.d.ts +13 -0
  25. package/dist/__tests__/openapi-snapshot.test.d.ts.map +1 -0
  26. package/dist/__tests__/openapi-snapshot.test.js +79 -0
  27. package/dist/__tests__/openapi-snapshot.test.js.map +1 -0
  28. package/dist/__tests__/shop.test.js +1 -1
  29. package/dist/__tests__/shop.test.js.map +1 -1
  30. package/dist/__tests__/stream-timeout.test.d.ts +2 -0
  31. package/dist/__tests__/stream-timeout.test.d.ts.map +1 -0
  32. package/dist/__tests__/stream-timeout.test.js +335 -0
  33. package/dist/__tests__/stream-timeout.test.js.map +1 -0
  34. package/dist/api/client.d.ts +56 -0
  35. package/dist/api/client.d.ts.map +1 -0
  36. package/dist/api/client.js +221 -0
  37. package/dist/api/client.js.map +1 -0
  38. package/dist/api/types.d.ts +110 -0
  39. package/dist/api/types.d.ts.map +1 -0
  40. package/dist/api/types.js +10 -0
  41. package/dist/api/types.js.map +1 -0
  42. package/dist/errors.d.ts +5 -0
  43. package/dist/errors.d.ts.map +1 -1
  44. package/dist/errors.js +9 -0
  45. package/dist/errors.js.map +1 -1
  46. package/dist/generated/openapi.d.ts +22942 -0
  47. package/dist/generated/openapi.d.ts.map +1 -0
  48. package/dist/generated/openapi.js +2 -0
  49. package/dist/generated/openapi.js.map +1 -0
  50. package/dist/generated/operations.d.ts +1114 -0
  51. package/dist/generated/operations.d.ts.map +1 -0
  52. package/dist/generated/operations.js +231 -0
  53. package/dist/generated/operations.js.map +1 -0
  54. package/dist/index.d.ts +24 -4
  55. package/dist/index.d.ts.map +1 -1
  56. package/dist/index.js +32 -3
  57. package/dist/index.js.map +1 -1
  58. package/dist/internal/abort.d.ts +18 -0
  59. package/dist/internal/abort.d.ts.map +1 -0
  60. package/dist/internal/abort.js +42 -0
  61. package/dist/internal/abort.js.map +1 -0
  62. package/dist/internal/fetch.d.ts +23 -0
  63. package/dist/internal/fetch.d.ts.map +1 -0
  64. package/dist/internal/fetch.js +57 -0
  65. package/dist/internal/fetch.js.map +1 -0
  66. package/dist/session.d.ts +3 -2
  67. package/dist/session.d.ts.map +1 -1
  68. package/dist/session.js +339 -161
  69. package/dist/session.js.map +1 -1
  70. package/dist/types.d.ts +3 -0
  71. package/dist/types.d.ts.map +1 -1
  72. package/dist/types.js.map +1 -1
  73. package/package.json +7 -3
@@ -0,0 +1,57 @@
1
+ // LIMITATION: aborting/timing out only closes the client connection.
2
+ // It does NOT undo an upstream side effect the backend already
3
+ // dispatched (e.g. a Pix transfer / NF-e issuance). HTTP has no
4
+ // out-of-band cancel; the server only learns the socket closed. True
5
+ // cancellation of a side-effecting call needs a backend cancel
6
+ // endpoint or idempotency key. Tracked separately (not in R3).
7
+ import { mergeSignals, timeoutSignal } from "./abort.js";
8
+ import { TimeoutError } from "../errors.js";
9
+ /**
10
+ * Fail-fast validation for an effective per-call timeout (ms). Mirrors
11
+ * the Python client's normalize_timeout so both SDKs reject the same
12
+ * bad inputs (0, negative, NaN, Infinity, non-number) before a request
13
+ * starts, instead of producing an unpredictable timer.
14
+ */
15
+ export function validateTimeout(ms) {
16
+ if (typeof ms !== "number" ||
17
+ Number.isNaN(ms) ||
18
+ !Number.isFinite(ms) ||
19
+ ms <= 0) {
20
+ throw new Error(`timeout must be a positive, finite number of milliseconds, got ${String(ms)}`);
21
+ }
22
+ }
23
+ /**
24
+ * fetch() with a TOTAL timeout that covers body consumption too.
25
+ *
26
+ * The `consume` callback reads the body (`res.json()`/`res.text()`)
27
+ * while the timeout signal is still armed — a backend that returns
28
+ * headers and then stalls the body still hits the timeout instead of
29
+ * hanging forever. The timeout fires a TimeoutError; the caller's own
30
+ * signal aborting re-throws that signal's reason verbatim (a standard
31
+ * AbortError), so the two causes stay distinguishable.
32
+ */
33
+ export async function fetchWithTimeout(url, init, opts, consume) {
34
+ validateTimeout(opts.timeout);
35
+ const t = timeoutSignal(opts.timeout);
36
+ const merged = mergeSignals([t.signal, opts.signal]);
37
+ try {
38
+ const res = await fetch(url, { ...init, signal: merged.signal });
39
+ // Body read stays inside the timeout/abort budget.
40
+ return await consume(res);
41
+ }
42
+ catch (err) {
43
+ // Caller cancellation takes priority and propagates verbatim.
44
+ if (opts.signal?.aborted)
45
+ throw opts.signal.reason;
46
+ // Otherwise, if our timeout fired, surface a typed TimeoutError.
47
+ if (t.signal.aborted)
48
+ throw new TimeoutError(opts.timeout);
49
+ // Unrelated failure (network/DNS/etc.) — rethrow as-is.
50
+ throw err;
51
+ }
52
+ finally {
53
+ t.clear();
54
+ merged.cleanup();
55
+ }
56
+ }
57
+ //# sourceMappingURL=fetch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch.js","sourceRoot":"","sources":["../../src/internal/fetch.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,+DAA+D;AAC/D,gEAAgE;AAChE,qEAAqE;AACrE,+DAA+D;AAC/D,+DAA+D;AAE/D,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAI5C;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,EAAU;IACxC,IACE,OAAO,EAAE,KAAK,QAAQ;QACtB,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QAChB,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpB,EAAE,IAAI,CAAC,EACP,CAAC;QACD,MAAM,IAAI,KAAK,CACb,kEAAkE,MAAM,CAAC,EAAE,CAAC,EAAE,CAC/E,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,GAAW,EACX,IAAiC,EACjC,IAA+C,EAC/C,OAAsC;IAEtC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9B,MAAM,CAAC,GAAG,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACtC,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IACrD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QACjE,mDAAmD;QACnD,OAAO,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;IAC5B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,8DAA8D;QAC9D,IAAI,IAAI,CAAC,MAAM,EAAE,OAAO;YAAE,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;QACnD,iEAAiE;QACjE,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO;YAAE,MAAM,IAAI,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC3D,wDAAwD;QACxD,MAAM,GAAG,CAAC;IACZ,CAAC;YAAS,CAAC;QACT,CAAC,CAAC,KAAK,EAAE,CAAC;QACV,MAAM,CAAC,OAAO,EAAE,CAAC;IACnB,CAAC;AACH,CAAC"}
package/dist/session.d.ts CHANGED
@@ -1,13 +1,14 @@
1
1
  /**
2
2
  * Session implementation for the CodeSpar managed runtime.
3
3
  */
4
- import type { SessionConfig } from "./types.js";
4
+ import type { SessionConfig, CallOptions } from "./types.js";
5
5
  import type { Session } from "@codespar/types";
6
6
  interface SessionDeps {
7
7
  baseUrl: string;
8
8
  apiKey: string;
9
9
  projectId?: string;
10
+ timeout: number;
10
11
  }
11
- export declare function createSession(userId: string, config: SessionConfig, deps: SessionDeps): Promise<Session>;
12
+ export declare function createSession(userId: string, config: SessionConfig, deps: SessionDeps, createOpts?: CallOptions): Promise<Session>;
12
13
  export {};
13
14
  //# sourceMappingURL=session.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAQ,MAAM,YAAY,CAAC;AACtD,OAAO,KAAK,EACV,OAAO,EA4BR,MAAM,iBAAiB,CAAC;AAEzB,UAAU,WAAW;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAoCD,wBAAsB,aAAa,CACjC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,aAAa,EACrB,IAAI,EAAE,WAAW,GAChB,OAAO,CAAC,OAAO,CAAC,CAudlB"}
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAQ,WAAW,EAAE,MAAM,YAAY,CAAC;AAGnE,OAAO,KAAK,EACV,OAAO,EA4BR,MAAM,iBAAiB,CAAC;AAEzB,UAAU,WAAW;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;AA6CD,wBAAsB,aAAa,CACjC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,aAAa,EACrB,IAAI,EAAE,WAAW,EACjB,UAAU,CAAC,EAAE,WAAW,GACvB,OAAO,CAAC,OAAO,CAAC,CA6iBlB"}