@s2-dev/streamstore 0.17.5 → 0.18.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 (160) hide show
  1. package/README.md +69 -1
  2. package/dist/cjs/accessTokens.d.ts +3 -2
  3. package/dist/cjs/accessTokens.d.ts.map +1 -1
  4. package/dist/cjs/accessTokens.js +22 -37
  5. package/dist/cjs/accessTokens.js.map +1 -1
  6. package/dist/cjs/basin.d.ts +4 -3
  7. package/dist/cjs/basin.d.ts.map +1 -1
  8. package/dist/cjs/basin.js +7 -5
  9. package/dist/cjs/basin.js.map +1 -1
  10. package/dist/cjs/basins.d.ts +10 -10
  11. package/dist/cjs/basins.d.ts.map +1 -1
  12. package/dist/cjs/basins.js +36 -64
  13. package/dist/cjs/basins.js.map +1 -1
  14. package/dist/cjs/batch-transform.d.ts +1 -1
  15. package/dist/cjs/batch-transform.d.ts.map +1 -1
  16. package/dist/cjs/batch-transform.js +36 -5
  17. package/dist/cjs/batch-transform.js.map +1 -1
  18. package/dist/cjs/common.d.ts +42 -0
  19. package/dist/cjs/common.d.ts.map +1 -1
  20. package/dist/cjs/error.d.ts +40 -2
  21. package/dist/cjs/error.d.ts.map +1 -1
  22. package/dist/cjs/error.js +268 -2
  23. package/dist/cjs/error.js.map +1 -1
  24. package/dist/cjs/generated/client/types.gen.d.ts +7 -0
  25. package/dist/cjs/generated/client/types.gen.d.ts.map +1 -1
  26. package/dist/cjs/generated/client/utils.gen.d.ts +1 -0
  27. package/dist/cjs/generated/client/utils.gen.d.ts.map +1 -1
  28. package/dist/cjs/generated/client/utils.gen.js.map +1 -1
  29. package/dist/cjs/generated/core/types.gen.d.ts +2 -0
  30. package/dist/cjs/generated/core/types.gen.d.ts.map +1 -1
  31. package/dist/cjs/index.d.ts +46 -3
  32. package/dist/cjs/index.d.ts.map +1 -1
  33. package/dist/cjs/index.js +28 -2
  34. package/dist/cjs/index.js.map +1 -1
  35. package/dist/cjs/lib/result.d.ts +57 -0
  36. package/dist/cjs/lib/result.d.ts.map +1 -0
  37. package/dist/cjs/lib/result.js +43 -0
  38. package/dist/cjs/lib/result.js.map +1 -0
  39. package/dist/cjs/lib/retry.d.ts +151 -0
  40. package/dist/cjs/lib/retry.d.ts.map +1 -0
  41. package/dist/cjs/lib/retry.js +839 -0
  42. package/dist/cjs/lib/retry.js.map +1 -0
  43. package/dist/cjs/lib/stream/factory.d.ts +0 -1
  44. package/dist/cjs/lib/stream/factory.d.ts.map +1 -1
  45. package/dist/cjs/lib/stream/factory.js +0 -1
  46. package/dist/cjs/lib/stream/factory.js.map +1 -1
  47. package/dist/cjs/lib/stream/transport/fetch/index.d.ts +24 -32
  48. package/dist/cjs/lib/stream/transport/fetch/index.d.ts.map +1 -1
  49. package/dist/cjs/lib/stream/transport/fetch/index.js +247 -187
  50. package/dist/cjs/lib/stream/transport/fetch/index.js.map +1 -1
  51. package/dist/cjs/lib/stream/transport/fetch/shared.d.ts +1 -2
  52. package/dist/cjs/lib/stream/transport/fetch/shared.d.ts.map +1 -1
  53. package/dist/cjs/lib/stream/transport/fetch/shared.js +49 -72
  54. package/dist/cjs/lib/stream/transport/fetch/shared.js.map +1 -1
  55. package/dist/cjs/lib/stream/transport/s2s/index.d.ts +0 -1
  56. package/dist/cjs/lib/stream/transport/s2s/index.d.ts.map +1 -1
  57. package/dist/cjs/lib/stream/transport/s2s/index.js +309 -352
  58. package/dist/cjs/lib/stream/transport/s2s/index.js.map +1 -1
  59. package/dist/cjs/lib/stream/types.d.ts +102 -8
  60. package/dist/cjs/lib/stream/types.d.ts.map +1 -1
  61. package/dist/cjs/metrics.d.ts +3 -2
  62. package/dist/cjs/metrics.d.ts.map +1 -1
  63. package/dist/cjs/metrics.js +24 -39
  64. package/dist/cjs/metrics.js.map +1 -1
  65. package/dist/cjs/s2.d.ts +1 -0
  66. package/dist/cjs/s2.d.ts.map +1 -1
  67. package/dist/cjs/s2.js +14 -3
  68. package/dist/cjs/s2.js.map +1 -1
  69. package/dist/cjs/stream.d.ts +5 -3
  70. package/dist/cjs/stream.d.ts.map +1 -1
  71. package/dist/cjs/stream.js +29 -18
  72. package/dist/cjs/stream.js.map +1 -1
  73. package/dist/cjs/streams.d.ts +10 -10
  74. package/dist/cjs/streams.d.ts.map +1 -1
  75. package/dist/cjs/streams.js +36 -64
  76. package/dist/cjs/streams.js.map +1 -1
  77. package/dist/cjs/utils.d.ts +3 -3
  78. package/dist/cjs/utils.d.ts.map +1 -1
  79. package/dist/cjs/utils.js +3 -3
  80. package/dist/cjs/utils.js.map +1 -1
  81. package/dist/esm/accessTokens.d.ts +3 -2
  82. package/dist/esm/accessTokens.d.ts.map +1 -1
  83. package/dist/esm/accessTokens.js +23 -38
  84. package/dist/esm/accessTokens.js.map +1 -1
  85. package/dist/esm/basin.d.ts +4 -3
  86. package/dist/esm/basin.d.ts.map +1 -1
  87. package/dist/esm/basin.js +7 -5
  88. package/dist/esm/basin.js.map +1 -1
  89. package/dist/esm/basins.d.ts +10 -10
  90. package/dist/esm/basins.d.ts.map +1 -1
  91. package/dist/esm/basins.js +37 -65
  92. package/dist/esm/basins.js.map +1 -1
  93. package/dist/esm/batch-transform.d.ts +1 -1
  94. package/dist/esm/batch-transform.d.ts.map +1 -1
  95. package/dist/esm/batch-transform.js +37 -6
  96. package/dist/esm/batch-transform.js.map +1 -1
  97. package/dist/esm/common.d.ts +42 -0
  98. package/dist/esm/common.d.ts.map +1 -1
  99. package/dist/esm/error.d.ts +40 -2
  100. package/dist/esm/error.d.ts.map +1 -1
  101. package/dist/esm/error.js +260 -2
  102. package/dist/esm/error.js.map +1 -1
  103. package/dist/esm/generated/client/types.gen.d.ts +7 -0
  104. package/dist/esm/generated/client/types.gen.d.ts.map +1 -1
  105. package/dist/esm/generated/client/utils.gen.d.ts +1 -0
  106. package/dist/esm/generated/client/utils.gen.d.ts.map +1 -1
  107. package/dist/esm/generated/client/utils.gen.js.map +1 -1
  108. package/dist/esm/generated/core/types.gen.d.ts +2 -0
  109. package/dist/esm/generated/core/types.gen.d.ts.map +1 -1
  110. package/dist/esm/index.d.ts +46 -3
  111. package/dist/esm/index.d.ts.map +1 -1
  112. package/dist/esm/index.js +23 -1
  113. package/dist/esm/index.js.map +1 -1
  114. package/dist/esm/lib/result.d.ts +57 -0
  115. package/dist/esm/lib/result.d.ts.map +1 -0
  116. package/dist/esm/lib/result.js +37 -0
  117. package/dist/esm/lib/result.js.map +1 -0
  118. package/dist/esm/lib/retry.d.ts +151 -0
  119. package/dist/esm/lib/retry.d.ts.map +1 -0
  120. package/dist/esm/lib/retry.js +830 -0
  121. package/dist/esm/lib/retry.js.map +1 -0
  122. package/dist/esm/lib/stream/factory.d.ts +0 -1
  123. package/dist/esm/lib/stream/factory.d.ts.map +1 -1
  124. package/dist/esm/lib/stream/factory.js +0 -1
  125. package/dist/esm/lib/stream/factory.js.map +1 -1
  126. package/dist/esm/lib/stream/transport/fetch/index.d.ts +24 -32
  127. package/dist/esm/lib/stream/transport/fetch/index.d.ts.map +1 -1
  128. package/dist/esm/lib/stream/transport/fetch/index.js +247 -187
  129. package/dist/esm/lib/stream/transport/fetch/index.js.map +1 -1
  130. package/dist/esm/lib/stream/transport/fetch/shared.d.ts +1 -2
  131. package/dist/esm/lib/stream/transport/fetch/shared.d.ts.map +1 -1
  132. package/dist/esm/lib/stream/transport/fetch/shared.js +51 -74
  133. package/dist/esm/lib/stream/transport/fetch/shared.js.map +1 -1
  134. package/dist/esm/lib/stream/transport/s2s/index.d.ts +0 -1
  135. package/dist/esm/lib/stream/transport/s2s/index.d.ts.map +1 -1
  136. package/dist/esm/lib/stream/transport/s2s/index.js +310 -353
  137. package/dist/esm/lib/stream/transport/s2s/index.js.map +1 -1
  138. package/dist/esm/lib/stream/types.d.ts +102 -8
  139. package/dist/esm/lib/stream/types.d.ts.map +1 -1
  140. package/dist/esm/metrics.d.ts +3 -2
  141. package/dist/esm/metrics.d.ts.map +1 -1
  142. package/dist/esm/metrics.js +25 -40
  143. package/dist/esm/metrics.js.map +1 -1
  144. package/dist/esm/s2.d.ts +1 -0
  145. package/dist/esm/s2.d.ts.map +1 -1
  146. package/dist/esm/s2.js +14 -3
  147. package/dist/esm/s2.js.map +1 -1
  148. package/dist/esm/stream.d.ts +5 -3
  149. package/dist/esm/stream.d.ts.map +1 -1
  150. package/dist/esm/stream.js +30 -19
  151. package/dist/esm/stream.js.map +1 -1
  152. package/dist/esm/streams.d.ts +10 -10
  153. package/dist/esm/streams.d.ts.map +1 -1
  154. package/dist/esm/streams.js +37 -65
  155. package/dist/esm/streams.js.map +1 -1
  156. package/dist/esm/utils.d.ts +3 -3
  157. package/dist/esm/utils.d.ts.map +1 -1
  158. package/dist/esm/utils.js +2 -2
  159. package/dist/esm/utils.js.map +1 -1
  160. package/package.json +4 -5
@@ -1,9 +1,12 @@
1
- import { S2Error } from "./error.js";
1
+ import { withS2Data } from "./error.js";
2
2
  import { createBasin, deleteBasin, getBasinConfig, listBasins, reconfigureBasin, } from "./generated/index.js";
3
+ import { withRetries } from "./lib/retry.js";
3
4
  export class S2Basins {
4
5
  client;
5
- constructor(client) {
6
+ retryConfig;
7
+ constructor(client, retryConfig) {
6
8
  this.client = client;
9
+ this.retryConfig = retryConfig;
7
10
  }
8
11
  /**
9
12
  * List basins.
@@ -13,19 +16,13 @@ export class S2Basins {
13
16
  * @param args.limit Max results (up to 1000)
14
17
  */
15
18
  async list(args, options) {
16
- const response = await listBasins({
17
- client: this.client,
18
- query: args,
19
- ...options,
19
+ return await withRetries(this.retryConfig, async () => {
20
+ return await withS2Data(() => listBasins({
21
+ client: this.client,
22
+ query: args,
23
+ ...options,
24
+ }));
20
25
  });
21
- if (response.error) {
22
- throw new S2Error({
23
- message: response.error.message,
24
- code: response.error.code ?? undefined,
25
- status: response.response.status,
26
- });
27
- }
28
- return response.data;
29
26
  }
30
27
  /**
31
28
  * Create a basin.
@@ -35,19 +32,13 @@ export class S2Basins {
35
32
  * @param args.scope Basin scope
36
33
  */
37
34
  async create(args, options) {
38
- const response = await createBasin({
39
- client: this.client,
40
- body: args,
41
- ...options,
35
+ return await withRetries(this.retryConfig, async () => {
36
+ return await withS2Data(() => createBasin({
37
+ client: this.client,
38
+ body: args,
39
+ ...options,
40
+ }));
42
41
  });
43
- if (response.error) {
44
- throw new S2Error({
45
- message: response.error.message,
46
- code: response.error.code ?? undefined,
47
- status: response.response.status,
48
- });
49
- }
50
- return response.data;
51
42
  }
52
43
  /**
53
44
  * Get basin configuration.
@@ -55,19 +46,13 @@ export class S2Basins {
55
46
  * @param args.basin Basin name
56
47
  */
57
48
  async getConfig(args, options) {
58
- const response = await getBasinConfig({
59
- client: this.client,
60
- path: args,
61
- ...options,
49
+ return await withRetries(this.retryConfig, async () => {
50
+ return await withS2Data(() => getBasinConfig({
51
+ client: this.client,
52
+ path: args,
53
+ ...options,
54
+ }));
62
55
  });
63
- if (response.error) {
64
- throw new S2Error({
65
- message: response.error.message,
66
- code: response.error.code ?? undefined,
67
- status: response.response.status,
68
- });
69
- }
70
- return response.data;
71
56
  }
72
57
  /**
73
58
  * Delete a basin.
@@ -75,41 +60,28 @@ export class S2Basins {
75
60
  * @param args.basin Basin name
76
61
  */
77
62
  async delete(args, options) {
78
- const response = await deleteBasin({
79
- client: this.client,
80
- path: args,
81
- ...options,
63
+ await withRetries(this.retryConfig, async () => {
64
+ return await withS2Data(() => deleteBasin({
65
+ client: this.client,
66
+ path: args,
67
+ ...options,
68
+ }));
82
69
  });
83
- if (response.error) {
84
- throw new S2Error({
85
- message: response.error.message,
86
- code: response.error.code ?? undefined,
87
- status: response.response.status,
88
- });
89
- }
90
- return response.data;
91
70
  }
92
71
  /**
93
72
  * Reconfigure a basin.
94
73
  *
95
- * @param args.basin Basin name
96
- * @param args.body Configuration fields to change (e.g. default stream config)
74
+ * @param args Configuration for the basin to reconfigure (including basin name and fields to change)
97
75
  */
98
76
  async reconfigure(args, options) {
99
- const response = await reconfigureBasin({
100
- client: this.client,
101
- path: args,
102
- body: args,
103
- ...options,
77
+ return await withRetries(this.retryConfig, async () => {
78
+ return await withS2Data(() => reconfigureBasin({
79
+ client: this.client,
80
+ path: args,
81
+ body: args,
82
+ ...options,
83
+ }));
104
84
  });
105
- if (response.error) {
106
- throw new S2Error({
107
- message: response.error.message,
108
- code: response.error.code ?? undefined,
109
- status: response.response.status,
110
- });
111
- }
112
- return response.data;
113
85
  }
114
86
  }
115
87
  //# sourceMappingURL=basins.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"basins.js","sourceRoot":"","sources":["../../src/basins.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"basins.js","sourceRoot":"","sources":["../../src/basins.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,OAAO,EAIN,WAAW,EAEX,WAAW,EAEX,cAAc,EAGd,UAAU,EAGV,gBAAgB,GAChB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAS7C,MAAM,OAAO,QAAQ;IACH,MAAM,CAAS;IACf,WAAW,CAAc;IAE1C,YAAY,MAAc,EAAE,WAAwB;QACnD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IAChC,CAAC;IAED;;;;;;OAMG;IACI,KAAK,CAAC,IAAI,CAChB,IAAqB,EACrB,OAA0B;QAE1B,OAAO,MAAM,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,EAAE;YACrD,OAAO,MAAM,UAAU,CAAC,GAAG,EAAE,CAC5B,UAAU,CAAC;gBACV,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,KAAK,EAAE,IAAI;gBACX,GAAG,OAAO;aACV,CAAC,CACF,CAAC;QACH,CAAC,CAAC,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACI,KAAK,CAAC,MAAM,CAClB,IAAqB,EACrB,OAA0B;QAE1B,OAAO,MAAM,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,EAAE;YACrD,OAAO,MAAM,UAAU,CAAC,GAAG,EAAE,CAC5B,WAAW,CAAC;gBACX,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,IAAI,EAAE,IAAI;gBACV,GAAG,OAAO;aACV,CAAC,CACF,CAAC;QACH,CAAC,CAAC,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,SAAS,CACrB,IAAwB,EACxB,OAA0B;QAE1B,OAAO,MAAM,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,EAAE;YACrD,OAAO,MAAM,UAAU,CAAC,GAAG,EAAE,CAC5B,cAAc,CAAC;gBACd,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,IAAI,EAAE,IAAI;gBACV,GAAG,OAAO;aACV,CAAC,CACF,CAAC;QACH,CAAC,CAAC,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,MAAM,CAClB,IAAqB,EACrB,OAA0B;QAE1B,MAAM,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,EAAE;YAC9C,OAAO,MAAM,UAAU,CAAC,GAAG,EAAE,CAC5B,WAAW,CAAC;gBACX,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,IAAI,EAAE,IAAI;gBACV,GAAG,OAAO;aACV,CAAC,CACF,CAAC;QACH,CAAC,CAAC,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,WAAW,CACvB,IAA0B,EAC1B,OAA0B;QAE1B,OAAO,MAAM,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,EAAE;YACrD,OAAO,MAAM,UAAU,CAAC,GAAG,EAAE,CAC5B,gBAAgB,CAAC;gBAChB,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,IAAI,EAAE,IAAI;gBACV,IAAI,EAAE,IAAI;gBACV,GAAG,OAAO;aACV,CAAC,CACF,CAAC;QACH,CAAC,CAAC,CAAC;IACJ,CAAC;CACD"}
@@ -26,7 +26,7 @@ export type BatchOutput = {
26
26
  * @example
27
27
  * ```typescript
28
28
  * const batcher = new BatchTransform<"string">({
29
- * lingerDuration: 20,
29
+ * lingerDurationMillis: 20,
30
30
  * maxBatchRecords: 100,
31
31
  * maxBatchBytes: 256 * 1024,
32
32
  * match_seq_num: 0 // Optional: auto-increments per batch
@@ -1 +1 @@
1
- {"version":3,"file":"batch-transform.d.ts","sourceRoot":"","sources":["../../src/batch-transform.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAoB,MAAM,YAAY,CAAC;AAE5D,MAAM,WAAW,kBAAkB;IAClC,8EAA8E;IAC9E,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,sEAAsE;IACtE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,uEAAuE;IACvE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,wEAAwE;IACxE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iGAAiG;IACjG,aAAa,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,sEAAsE;AACtE,MAAM,MAAM,WAAW,GAAG;IACzB,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,cAAe,SAAQ,eAAe,CAAC,YAAY,EAAE,WAAW,CAAC;IAC7E,OAAO,CAAC,YAAY,CAAsB;IAC1C,OAAO,CAAC,gBAAgB,CAAa;IACrC,OAAO,CAAC,WAAW,CAA8C;IACjE,OAAO,CAAC,UAAU,CACZ;IACN,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;IACzC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAS;IACxC,OAAO,CAAC,kBAAkB,CAAC,CAAS;gBAExB,IAAI,CAAC,EAAE,kBAAkB;IA8BrC,OAAO,CAAC,YAAY;IA0CpB,OAAO,CAAC,KAAK;IAgCb,OAAO,CAAC,gBAAgB;IAWxB,OAAO,CAAC,iBAAiB;CAMzB"}
1
+ {"version":3,"file":"batch-transform.d.ts","sourceRoot":"","sources":["../../src/batch-transform.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAgB,MAAM,YAAY,CAAC;AAExD,MAAM,WAAW,kBAAkB;IAClC,8EAA8E;IAC9E,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,sEAAsE;IACtE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,uEAAuE;IACvE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,wEAAwE;IACxE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iGAAiG;IACjG,aAAa,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,sEAAsE;AACtE,MAAM,MAAM,WAAW,GAAG;IACzB,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,cAAe,SAAQ,eAAe,CAAC,YAAY,EAAE,WAAW,CAAC;IAC7E,OAAO,CAAC,YAAY,CAAsB;IAC1C,OAAO,CAAC,gBAAgB,CAAa;IACrC,OAAO,CAAC,WAAW,CAA8C;IACjE,OAAO,CAAC,UAAU,CACZ;IACN,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;IACzC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAS;IACxC,OAAO,CAAC,kBAAkB,CAAC,CAAS;gBAExB,IAAI,CAAC,EAAE,kBAAkB;IAyDrC,OAAO,CAAC,YAAY;IA4CpB,OAAO,CAAC,KAAK;IAgCb,OAAO,CAAC,gBAAgB;IAWxB,OAAO,CAAC,iBAAiB;CAMzB"}
@@ -1,5 +1,5 @@
1
1
  import { S2Error } from "./error.js";
2
- import { AppendRecord, meteredSizeBytes } from "./utils.js";
2
+ import { AppendRecord, meteredBytes } from "./utils.js";
3
3
  /**
4
4
  * A TransformStream that batches AppendRecords based on time, record count, and byte size.
5
5
  *
@@ -9,7 +9,7 @@ import { AppendRecord, meteredSizeBytes } from "./utils.js";
9
9
  * @example
10
10
  * ```typescript
11
11
  * const batcher = new BatchTransform<"string">({
12
- * lingerDuration: 20,
12
+ * lingerDurationMillis: 20,
13
13
  * maxBatchRecords: 100,
14
14
  * maxBatchBytes: 256 * 1024,
15
15
  * match_seq_num: 0 // Optional: auto-increments per batch
@@ -55,19 +55,50 @@ export class BatchTransform extends TransformStream {
55
55
  this.flush();
56
56
  },
57
57
  });
58
- // Cap at maximum allowed values
59
- this.maxBatchRecords = Math.min(args?.maxBatchRecords ?? 1000, 1000);
60
- this.maxBatchBytes = Math.min(args?.maxBatchBytes ?? 1024 * 1024, 1024 * 1024);
58
+ // Validate configuration
59
+ if (args?.maxBatchRecords !== undefined) {
60
+ if (args.maxBatchRecords < 1 || args.maxBatchRecords > 1000) {
61
+ throw new S2Error({
62
+ message: `maxBatchRecords must be between 1 and 1000 (inclusive); got ${args.maxBatchRecords}`,
63
+ status: 400,
64
+ origin: "sdk",
65
+ });
66
+ }
67
+ }
68
+ if (args?.maxBatchBytes !== undefined) {
69
+ const max = 1024 * 1024;
70
+ if (args.maxBatchBytes < 1 || args.maxBatchBytes > max) {
71
+ throw new S2Error({
72
+ message: `maxBatchBytes must be between 1 and ${max} (1 MiB) bytes (inclusive); got ${args.maxBatchBytes}`,
73
+ status: 400,
74
+ origin: "sdk",
75
+ });
76
+ }
77
+ }
78
+ if (args?.lingerDurationMillis !== undefined) {
79
+ if (args.lingerDurationMillis < 0) {
80
+ throw new S2Error({
81
+ message: `lingerDurationMillis must be >= 0; got ${args.lingerDurationMillis}`,
82
+ status: 400,
83
+ origin: "sdk",
84
+ });
85
+ }
86
+ }
87
+ // Apply defaults
88
+ this.maxBatchRecords = args?.maxBatchRecords ?? 1000;
89
+ this.maxBatchBytes = args?.maxBatchBytes ?? 1024 * 1024;
61
90
  this.lingerDuration = args?.lingerDurationMillis ?? 5;
62
91
  this.fencing_token = args?.fencing_token;
63
92
  this.next_match_seq_num = args?.match_seq_num;
64
93
  }
65
94
  handleRecord(record) {
66
- const recordSize = meteredSizeBytes(record);
95
+ const recordSize = meteredBytes(record);
67
96
  // Reject individual records that exceed the max batch size
68
97
  if (recordSize > this.maxBatchBytes) {
69
98
  throw new S2Error({
70
99
  message: `Record size ${recordSize} bytes exceeds maximum batch size of ${this.maxBatchBytes} bytes`,
100
+ status: 400,
101
+ origin: "sdk",
71
102
  });
72
103
  }
73
104
  // Start linger timer on first record added to an empty batch
@@ -1 +1 @@
1
- {"version":3,"file":"batch-transform.js","sourceRoot":"","sources":["../../src/batch-transform.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"batch-transform.js","sourceRoot":"","sources":["../../src/batch-transform.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,39 @@
1
+ /**
2
+ * Policy for retrying append operations.
3
+ *
4
+ * - `all`: Retry all append operations, including those that may have side effects
5
+ * - `noSideEffects`: Only retry append operations that are guaranteed to have no side effects
6
+ */
7
+ export type AppendRetryPolicy = "all" | "noSideEffects";
8
+ /**
9
+ * Retry configuration for handling transient failures.
10
+ */
11
+ export type RetryConfig = {
12
+ /**
13
+ * Total number of attempts, including the initial try.
14
+ * Must be >= 1. A value of 1 means no retries.
15
+ * @default 3
16
+ */
17
+ maxAttempts?: number;
18
+ /**
19
+ * Base delay in milliseconds between retry attempts.
20
+ * Fixed delay per attempt with jitter applied.
21
+ * @default 100
22
+ */
23
+ retryBackoffDurationMillis?: number;
24
+ /**
25
+ * Policy for retrying append operations.
26
+ * @default "noSideEffects"
27
+ */
28
+ appendRetryPolicy?: AppendRetryPolicy;
29
+ /**
30
+ * Maximum time in milliseconds to wait for an append ack before considering
31
+ * the attempt timed out and applying retry logic.
32
+ *
33
+ * Used by retrying append sessions. When unset, defaults to 5000ms.
34
+ */
35
+ requestTimeoutMillis?: number;
36
+ };
1
37
  /**
2
38
  * Configuration for constructing the top-level `S2` client.
3
39
  *
@@ -19,6 +55,12 @@ export type S2ClientOptions = {
19
55
  * Defaults to `https://{basin}.b.aws.s2.dev`.
20
56
  */
21
57
  makeBasinBaseUrl?: (basin: string) => string;
58
+ /**
59
+ * Retry configuration for handling transient failures.
60
+ * Applies to management operations (basins, streams, tokens) and stream operations (read, append).
61
+ * @default { maxAttempts: 3, retryBackoffDurationMillis: 100 }
62
+ */
63
+ retry?: RetryConfig;
22
64
  };
23
65
  /**
24
66
  * Per-request options that apply to all SDK operations.
@@ -1 +1 @@
1
- {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/common.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,MAAM,eAAe,GAAG;IAC7B;;;OAGG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;CAC7C,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC9B;;OAEG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;CACrB,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC,CAAA;CAAE,GACxD,CAAC,SAAS,SAAS,GAAG,KAAK,GAC1B,EAAE,GACF,CAAC,GACF,EAAE,CAAC,GACL,CAAC,CAAC,SAAS;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC,CAAA;CAAE,GAAG,CAAC,CAAC,SAAS,SAAS,GAAG,KAAK,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,GAC5E,CAAC,CAAC,SAAS;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC,CAAA;CAAE,GAAG,CAAC,CAAC,SAAS,SAAS,GAAG,KAAK,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC"}
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/common.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,MAAM,iBAAiB,GAAG,KAAK,GAAG,eAAe,CAAC;AAExD;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG;IACzB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;;OAIG;IACH,0BAA0B,CAAC,EAAE,MAAM,CAAC;IAEpC;;;OAGG;IACH,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IAEtC;;;;;OAKG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC9B,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,eAAe,GAAG;IAC7B;;;OAGG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAC7C;;;;OAIG;IACH,KAAK,CAAC,EAAE,WAAW,CAAC;CACpB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC9B;;OAEG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;CACrB,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC,CAAA;CAAE,GACxD,CAAC,SAAS,SAAS,GAAG,KAAK,GAC1B,EAAE,GACF,CAAC,GACF,EAAE,CAAC,GACL,CAAC,CAAC,SAAS;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC,CAAA;CAAE,GAAG,CAAC,CAAC,SAAS,SAAS,GAAG,KAAK,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,GAC5E,CAAC,CAAC,SAAS;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC,CAAA;CAAE,GAAG,CAAC,CAAC,SAAS,SAAS,GAAG,KAAK,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC"}
@@ -1,3 +1,18 @@
1
+ export declare function s2Error(error: any): S2Error;
2
+ export declare function withS2Error<T>(fn: () => Promise<T>): Promise<T>;
3
+ /**
4
+ * Execute a generated client call and return its `data` on success.
5
+ * Throws S2Error when the response contains `error`, or when the
6
+ * response has no `data` and is not a 204 No Content.
7
+ */
8
+ export declare function withS2Data<T>(fn: () => Promise<{
9
+ data?: T;
10
+ error?: unknown;
11
+ response?: {
12
+ status?: number;
13
+ statusText?: string;
14
+ };
15
+ } | T>): Promise<T>;
1
16
  /**
2
17
  * Rich error type used by the SDK to surface HTTP and protocol errors.
3
18
  *
@@ -7,13 +22,26 @@
7
22
  */
8
23
  export declare class S2Error extends Error {
9
24
  readonly code?: string;
10
- readonly status?: number;
11
- constructor({ message, code, status, }: {
25
+ /** HTTP status code. 0 for non-HTTP/internal errors. */
26
+ readonly status: number;
27
+ /** Optional structured error details for diagnostics. */
28
+ readonly data?: unknown;
29
+ /** Origin of the error: server (HTTP response) or sdk (local). */
30
+ readonly origin: "server" | "sdk";
31
+ constructor({ message, code, status, data, origin, }: {
12
32
  message: string;
13
33
  code?: string;
14
34
  status?: number;
35
+ data?: unknown;
36
+ origin?: "server" | "sdk";
15
37
  });
16
38
  }
39
+ /** Helper: construct a non-retryable invariant violation error (status 0). */
40
+ export declare function invariantViolation(message: string, details?: unknown): S2Error;
41
+ /** Helper: construct an internal SDK error (status 0, never retried). */
42
+ export declare function internalSdkError(message: string, details?: unknown): S2Error;
43
+ /** Helper: construct an aborted/cancelled error (499). */
44
+ export declare function abortedError(message?: string): S2Error;
17
45
  /**
18
46
  * Thrown when an append operation fails due to a sequence number mismatch.
19
47
  *
@@ -68,4 +96,14 @@ export declare class RangeNotSatisfiableError extends S2Error {
68
96
  status?: number;
69
97
  });
70
98
  }
99
+ /**
100
+ * Build a generic S2Error from HTTP status and optional payload.
101
+ * If the payload contains a structured { message, code }, those are preferred.
102
+ */
103
+ export declare function makeServerError(response: {
104
+ status?: number;
105
+ statusText?: string;
106
+ }, payload?: unknown): S2Error;
107
+ /** Map 412 Precondition Failed append errors to rich error types. */
108
+ export declare function makeAppendPreconditionError(status: number, json: any): S2Error;
71
109
  //# sourceMappingURL=error.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../../src/error.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,qBAAa,OAAQ,SAAQ,KAAK;IACjC,SAAgB,IAAI,CAAC,EAAE,MAAM,CAAC;IAC9B,SAAgB,MAAM,CAAC,EAAE,MAAM,CAAC;gBAEpB,EACX,OAAO,EACP,IAAI,EACJ,MAAM,GACN,EAAE;QACF,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,MAAM,CAAC,EAAE,MAAM,CAAC;KAChB;CAMD;AAED;;;;;;;;GAQG;AACH,qBAAa,mBAAoB,SAAQ,OAAO;IAC/C,wDAAwD;IACxD,SAAgB,cAAc,EAAE,MAAM,CAAC;gBAE3B,EACX,OAAO,EACP,IAAI,EACJ,MAAM,EACN,cAAc,GACd,EAAE;QACF,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,cAAc,EAAE,MAAM,CAAC;KACvB;CASD;AAED;;;;;;;;GAQG;AACH,qBAAa,yBAA0B,SAAQ,OAAO;IACrD,iDAAiD;IACjD,SAAgB,oBAAoB,EAAE,MAAM,CAAC;gBAEjC,EACX,OAAO,EACP,IAAI,EACJ,MAAM,EACN,oBAAoB,GACpB,EAAE;QACF,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,oBAAoB,EAAE,MAAM,CAAC;KAC7B;CASD;AAED;;;;;;;;GAQG;AACH,qBAAa,wBAAyB,SAAQ,OAAO;gBACxC,EACX,OAAkI,EAClI,IAAI,EACJ,MAAY,GACZ,GAAE;QACF,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,MAAM,CAAC,EAAE,MAAM,CAAC;KACX;CAQN"}
1
+ {"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../../src/error.ts"],"names":[],"mappings":"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"}