@zshannon/streamstore 0.22.3

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 (444) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +93 -0
  3. package/dist/cjs/accessTokens.d.ts +51 -0
  4. package/dist/cjs/accessTokens.d.ts.map +1 -0
  5. package/dist/cjs/accessTokens.js +127 -0
  6. package/dist/cjs/accessTokens.js.map +1 -0
  7. package/dist/cjs/auth/biscuit.d.ts +42 -0
  8. package/dist/cjs/auth/biscuit.d.ts.map +1 -0
  9. package/dist/cjs/auth/biscuit.js +72 -0
  10. package/dist/cjs/auth/biscuit.js.map +1 -0
  11. package/dist/cjs/auth/index.d.ts +5 -0
  12. package/dist/cjs/auth/index.d.ts.map +1 -0
  13. package/dist/cjs/auth/index.js +14 -0
  14. package/dist/cjs/auth/index.js.map +1 -0
  15. package/dist/cjs/auth/pki-auth.d.ts +60 -0
  16. package/dist/cjs/auth/pki-auth.d.ts.map +1 -0
  17. package/dist/cjs/auth/pki-auth.js +102 -0
  18. package/dist/cjs/auth/pki-auth.js.map +1 -0
  19. package/dist/cjs/auth/sign.d.ts +39 -0
  20. package/dist/cjs/auth/sign.d.ts.map +1 -0
  21. package/dist/cjs/auth/sign.js +128 -0
  22. package/dist/cjs/auth/sign.js.map +1 -0
  23. package/dist/cjs/auth/signing-key.d.ts +42 -0
  24. package/dist/cjs/auth/signing-key.d.ts.map +1 -0
  25. package/dist/cjs/auth/signing-key.js +66 -0
  26. package/dist/cjs/auth/signing-key.js.map +1 -0
  27. package/dist/cjs/basin.d.ts +33 -0
  28. package/dist/cjs/basin.d.ts.map +1 -0
  29. package/dist/cjs/basin.js +54 -0
  30. package/dist/cjs/basin.js.map +1 -0
  31. package/dist/cjs/basins.d.ts +62 -0
  32. package/dist/cjs/basins.d.ts.map +1 -0
  33. package/dist/cjs/basins.js +201 -0
  34. package/dist/cjs/basins.js.map +1 -0
  35. package/dist/cjs/batch-transform.d.ts +60 -0
  36. package/dist/cjs/batch-transform.d.ts.map +1 -0
  37. package/dist/cjs/batch-transform.js +171 -0
  38. package/dist/cjs/batch-transform.js.map +1 -0
  39. package/dist/cjs/common.d.ts +156 -0
  40. package/dist/cjs/common.d.ts.map +1 -0
  41. package/dist/cjs/common.js +54 -0
  42. package/dist/cjs/common.js.map +1 -0
  43. package/dist/cjs/endpoints.d.ts +63 -0
  44. package/dist/cjs/endpoints.d.ts.map +1 -0
  45. package/dist/cjs/endpoints.js +120 -0
  46. package/dist/cjs/endpoints.js.map +1 -0
  47. package/dist/cjs/error.d.ts +119 -0
  48. package/dist/cjs/error.d.ts.map +1 -0
  49. package/dist/cjs/error.js +373 -0
  50. package/dist/cjs/error.js.map +1 -0
  51. package/dist/cjs/generated/client/client.gen.d.ts +3 -0
  52. package/dist/cjs/generated/client/client.gen.d.ts.map +1 -0
  53. package/dist/cjs/generated/client/client.gen.js +209 -0
  54. package/dist/cjs/generated/client/client.gen.js.map +1 -0
  55. package/dist/cjs/generated/client/index.d.ts +9 -0
  56. package/dist/cjs/generated/client/index.d.ts.map +1 -0
  57. package/dist/cjs/generated/client/index.js +18 -0
  58. package/dist/cjs/generated/client/index.js.map +1 -0
  59. package/dist/cjs/generated/client/types.gen.d.ts +125 -0
  60. package/dist/cjs/generated/client/types.gen.d.ts.map +1 -0
  61. package/dist/cjs/generated/client/types.gen.js +4 -0
  62. package/dist/cjs/generated/client/types.gen.js.map +1 -0
  63. package/dist/cjs/generated/client/utils.gen.d.ts +34 -0
  64. package/dist/cjs/generated/client/utils.gen.d.ts.map +1 -0
  65. package/dist/cjs/generated/client/utils.gen.js +243 -0
  66. package/dist/cjs/generated/client/utils.gen.js.map +1 -0
  67. package/dist/cjs/generated/client.gen.d.ts +13 -0
  68. package/dist/cjs/generated/client.gen.d.ts.map +1 -0
  69. package/dist/cjs/generated/client.gen.js +9 -0
  70. package/dist/cjs/generated/client.gen.js.map +1 -0
  71. package/dist/cjs/generated/core/auth.gen.d.ts +19 -0
  72. package/dist/cjs/generated/core/auth.gen.d.ts.map +1 -0
  73. package/dist/cjs/generated/core/auth.gen.js +19 -0
  74. package/dist/cjs/generated/core/auth.gen.js.map +1 -0
  75. package/dist/cjs/generated/core/bodySerializer.gen.d.ts +26 -0
  76. package/dist/cjs/generated/core/bodySerializer.gen.d.ts.map +1 -0
  77. package/dist/cjs/generated/core/bodySerializer.gen.js +61 -0
  78. package/dist/cjs/generated/core/bodySerializer.gen.js.map +1 -0
  79. package/dist/cjs/generated/core/params.gen.d.ts +44 -0
  80. package/dist/cjs/generated/core/params.gen.d.ts.map +1 -0
  81. package/dist/cjs/generated/core/params.gen.js +105 -0
  82. package/dist/cjs/generated/core/params.gen.js.map +1 -0
  83. package/dist/cjs/generated/core/pathSerializer.gen.d.ts +34 -0
  84. package/dist/cjs/generated/core/pathSerializer.gen.d.ts.map +1 -0
  85. package/dist/cjs/generated/core/pathSerializer.gen.js +124 -0
  86. package/dist/cjs/generated/core/pathSerializer.gen.js.map +1 -0
  87. package/dist/cjs/generated/core/queryKeySerializer.gen.d.ts +19 -0
  88. package/dist/cjs/generated/core/queryKeySerializer.gen.d.ts.map +1 -0
  89. package/dist/cjs/generated/core/queryKeySerializer.gen.js +106 -0
  90. package/dist/cjs/generated/core/queryKeySerializer.gen.js.map +1 -0
  91. package/dist/cjs/generated/core/serverSentEvents.gen.d.ts +72 -0
  92. package/dist/cjs/generated/core/serverSentEvents.gen.d.ts.map +1 -0
  93. package/dist/cjs/generated/core/serverSentEvents.gen.js +140 -0
  94. package/dist/cjs/generated/core/serverSentEvents.gen.js.map +1 -0
  95. package/dist/cjs/generated/core/types.gen.d.ts +79 -0
  96. package/dist/cjs/generated/core/types.gen.d.ts.map +1 -0
  97. package/dist/cjs/generated/core/types.gen.js +4 -0
  98. package/dist/cjs/generated/core/types.gen.js.map +1 -0
  99. package/dist/cjs/generated/core/utils.gen.d.ts +20 -0
  100. package/dist/cjs/generated/core/utils.gen.d.ts.map +1 -0
  101. package/dist/cjs/generated/core/utils.gen.js +94 -0
  102. package/dist/cjs/generated/core/utils.gen.js.map +1 -0
  103. package/dist/cjs/generated/index.d.ts +3 -0
  104. package/dist/cjs/generated/index.d.ts.map +1 -0
  105. package/dist/cjs/generated/index.js +19 -0
  106. package/dist/cjs/generated/index.js.map +1 -0
  107. package/dist/cjs/generated/proto/s2.d.ts +250 -0
  108. package/dist/cjs/generated/proto/s2.d.ts.map +1 -0
  109. package/dist/cjs/generated/proto/s2.js +426 -0
  110. package/dist/cjs/generated/proto/s2.js.map +1 -0
  111. package/dist/cjs/generated/sdk.gen.d.ts +100 -0
  112. package/dist/cjs/generated/sdk.gen.d.ts.map +1 -0
  113. package/dist/cjs/generated/sdk.gen.js +374 -0
  114. package/dist/cjs/generated/sdk.gen.js.map +1 -0
  115. package/dist/cjs/generated/types.gen.d.ts +1064 -0
  116. package/dist/cjs/generated/types.gen.d.ts.map +1 -0
  117. package/dist/cjs/generated/types.gen.js +4 -0
  118. package/dist/cjs/generated/types.gen.js.map +1 -0
  119. package/dist/cjs/index.d.ts +42 -0
  120. package/dist/cjs/index.d.ts.map +1 -0
  121. package/dist/cjs/index.js +81 -0
  122. package/dist/cjs/index.js.map +1 -0
  123. package/dist/cjs/internal/case-transform.d.ts +59 -0
  124. package/dist/cjs/internal/case-transform.d.ts.map +1 -0
  125. package/dist/cjs/internal/case-transform.js +80 -0
  126. package/dist/cjs/internal/case-transform.js.map +1 -0
  127. package/dist/cjs/internal/mappers.d.ts +51 -0
  128. package/dist/cjs/internal/mappers.d.ts.map +1 -0
  129. package/dist/cjs/internal/mappers.js +225 -0
  130. package/dist/cjs/internal/mappers.js.map +1 -0
  131. package/dist/cjs/internal/sdk-types.d.ts +127 -0
  132. package/dist/cjs/internal/sdk-types.d.ts.map +1 -0
  133. package/dist/cjs/internal/sdk-types.js +9 -0
  134. package/dist/cjs/internal/sdk-types.js.map +1 -0
  135. package/dist/cjs/lib/base64.d.ts +12 -0
  136. package/dist/cjs/lib/base64.d.ts.map +1 -0
  137. package/dist/cjs/lib/base64.js +172 -0
  138. package/dist/cjs/lib/base64.js.map +1 -0
  139. package/dist/cjs/lib/event-stream.d.ts +26 -0
  140. package/dist/cjs/lib/event-stream.d.ts.map +1 -0
  141. package/dist/cjs/lib/event-stream.js +154 -0
  142. package/dist/cjs/lib/event-stream.js.map +1 -0
  143. package/dist/cjs/lib/paginate.d.ts +61 -0
  144. package/dist/cjs/lib/paginate.d.ts.map +1 -0
  145. package/dist/cjs/lib/paginate.js +51 -0
  146. package/dist/cjs/lib/paginate.js.map +1 -0
  147. package/dist/cjs/lib/redacted.d.ts +17 -0
  148. package/dist/cjs/lib/redacted.d.ts.map +1 -0
  149. package/dist/cjs/lib/redacted.js +34 -0
  150. package/dist/cjs/lib/redacted.js.map +1 -0
  151. package/dist/cjs/lib/result.d.ts +57 -0
  152. package/dist/cjs/lib/result.d.ts.map +1 -0
  153. package/dist/cjs/lib/result.js +43 -0
  154. package/dist/cjs/lib/result.js.map +1 -0
  155. package/dist/cjs/lib/retry.d.ts +167 -0
  156. package/dist/cjs/lib/retry.d.ts.map +1 -0
  157. package/dist/cjs/lib/retry.js +1011 -0
  158. package/dist/cjs/lib/retry.js.map +1 -0
  159. package/dist/cjs/lib/stream/factory.d.ts +14 -0
  160. package/dist/cjs/lib/stream/factory.d.ts.map +1 -0
  161. package/dist/cjs/lib/stream/factory.js +35 -0
  162. package/dist/cjs/lib/stream/factory.js.map +1 -0
  163. package/dist/cjs/lib/stream/runtime.d.ts +27 -0
  164. package/dist/cjs/lib/stream/runtime.d.ts.map +1 -0
  165. package/dist/cjs/lib/stream/runtime.js +70 -0
  166. package/dist/cjs/lib/stream/runtime.js.map +1 -0
  167. package/dist/cjs/lib/stream/transport/fetch/index.d.ts +64 -0
  168. package/dist/cjs/lib/stream/transport/fetch/index.d.ts.map +1 -0
  169. package/dist/cjs/lib/stream/transport/fetch/index.js +462 -0
  170. package/dist/cjs/lib/stream/transport/fetch/index.js.map +1 -0
  171. package/dist/cjs/lib/stream/transport/fetch/shared.d.ts +11 -0
  172. package/dist/cjs/lib/stream/transport/fetch/shared.d.ts.map +1 -0
  173. package/dist/cjs/lib/stream/transport/fetch/shared.js +118 -0
  174. package/dist/cjs/lib/stream/transport/fetch/shared.js.map +1 -0
  175. package/dist/cjs/lib/stream/transport/proto.d.ts +9 -0
  176. package/dist/cjs/lib/stream/transport/proto.d.ts.map +1 -0
  177. package/dist/cjs/lib/stream/transport/proto.js +118 -0
  178. package/dist/cjs/lib/stream/transport/proto.js.map +1 -0
  179. package/dist/cjs/lib/stream/transport/s2s/framing.d.ts +47 -0
  180. package/dist/cjs/lib/stream/transport/s2s/framing.d.ts.map +1 -0
  181. package/dist/cjs/lib/stream/transport/s2s/framing.js +123 -0
  182. package/dist/cjs/lib/stream/transport/s2s/framing.js.map +1 -0
  183. package/dist/cjs/lib/stream/transport/s2s/index.d.ts +24 -0
  184. package/dist/cjs/lib/stream/transport/s2s/index.d.ts.map +1 -0
  185. package/dist/cjs/lib/stream/transport/s2s/index.js +823 -0
  186. package/dist/cjs/lib/stream/transport/s2s/index.js.map +1 -0
  187. package/dist/cjs/lib/stream/types.d.ts +199 -0
  188. package/dist/cjs/lib/stream/types.d.ts.map +1 -0
  189. package/dist/cjs/lib/stream/types.js +21 -0
  190. package/dist/cjs/lib/stream/types.js.map +1 -0
  191. package/dist/cjs/metrics.d.ts +46 -0
  192. package/dist/cjs/metrics.d.ts.map +1 -0
  193. package/dist/cjs/metrics.js +127 -0
  194. package/dist/cjs/metrics.js.map +1 -0
  195. package/dist/cjs/package.json +3 -0
  196. package/dist/cjs/producer.d.ts +82 -0
  197. package/dist/cjs/producer.d.ts.map +1 -0
  198. package/dist/cjs/producer.js +305 -0
  199. package/dist/cjs/producer.js.map +1 -0
  200. package/dist/cjs/s2.d.ts +41 -0
  201. package/dist/cjs/s2.d.ts.map +1 -0
  202. package/dist/cjs/s2.js +119 -0
  203. package/dist/cjs/s2.js.map +1 -0
  204. package/dist/cjs/stream.d.ts +78 -0
  205. package/dist/cjs/stream.d.ts.map +1 -0
  206. package/dist/cjs/stream.js +176 -0
  207. package/dist/cjs/stream.js.map +1 -0
  208. package/dist/cjs/streams.d.ts +61 -0
  209. package/dist/cjs/streams.d.ts.map +1 -0
  210. package/dist/cjs/streams.js +201 -0
  211. package/dist/cjs/streams.js.map +1 -0
  212. package/dist/cjs/types.d.ts +633 -0
  213. package/dist/cjs/types.d.ts.map +1 -0
  214. package/dist/cjs/types.js +129 -0
  215. package/dist/cjs/types.js.map +1 -0
  216. package/dist/cjs/utils.d.ts +25 -0
  217. package/dist/cjs/utils.d.ts.map +1 -0
  218. package/dist/cjs/utils.js +108 -0
  219. package/dist/cjs/utils.js.map +1 -0
  220. package/dist/cjs/version.d.ts +8 -0
  221. package/dist/cjs/version.d.ts.map +1 -0
  222. package/dist/cjs/version.js +11 -0
  223. package/dist/cjs/version.js.map +1 -0
  224. package/dist/esm/accessTokens.d.ts +51 -0
  225. package/dist/esm/accessTokens.d.ts.map +1 -0
  226. package/dist/esm/accessTokens.js +123 -0
  227. package/dist/esm/accessTokens.js.map +1 -0
  228. package/dist/esm/auth/biscuit.d.ts +42 -0
  229. package/dist/esm/auth/biscuit.d.ts.map +1 -0
  230. package/dist/esm/auth/biscuit.js +68 -0
  231. package/dist/esm/auth/biscuit.js.map +1 -0
  232. package/dist/esm/auth/index.d.ts +5 -0
  233. package/dist/esm/auth/index.d.ts.map +1 -0
  234. package/dist/esm/auth/index.js +5 -0
  235. package/dist/esm/auth/index.js.map +1 -0
  236. package/dist/esm/auth/pki-auth.d.ts +60 -0
  237. package/dist/esm/auth/pki-auth.d.ts.map +1 -0
  238. package/dist/esm/auth/pki-auth.js +99 -0
  239. package/dist/esm/auth/pki-auth.js.map +1 -0
  240. package/dist/esm/auth/sign.d.ts +39 -0
  241. package/dist/esm/auth/sign.d.ts.map +1 -0
  242. package/dist/esm/auth/sign.js +125 -0
  243. package/dist/esm/auth/sign.js.map +1 -0
  244. package/dist/esm/auth/signing-key.d.ts +42 -0
  245. package/dist/esm/auth/signing-key.d.ts.map +1 -0
  246. package/dist/esm/auth/signing-key.js +62 -0
  247. package/dist/esm/auth/signing-key.js.map +1 -0
  248. package/dist/esm/basin.d.ts +33 -0
  249. package/dist/esm/basin.d.ts.map +1 -0
  250. package/dist/esm/basin.js +50 -0
  251. package/dist/esm/basin.js.map +1 -0
  252. package/dist/esm/basins.d.ts +62 -0
  253. package/dist/esm/basins.d.ts.map +1 -0
  254. package/dist/esm/basins.js +197 -0
  255. package/dist/esm/basins.js.map +1 -0
  256. package/dist/esm/batch-transform.d.ts +60 -0
  257. package/dist/esm/batch-transform.d.ts.map +1 -0
  258. package/dist/esm/batch-transform.js +167 -0
  259. package/dist/esm/batch-transform.js.map +1 -0
  260. package/dist/esm/common.d.ts +156 -0
  261. package/dist/esm/common.d.ts.map +1 -0
  262. package/dist/esm/common.js +49 -0
  263. package/dist/esm/common.js.map +1 -0
  264. package/dist/esm/endpoints.d.ts +63 -0
  265. package/dist/esm/endpoints.d.ts.map +1 -0
  266. package/dist/esm/endpoints.js +115 -0
  267. package/dist/esm/endpoints.js.map +1 -0
  268. package/dist/esm/error.d.ts +119 -0
  269. package/dist/esm/error.d.ts.map +1 -0
  270. package/dist/esm/error.js +358 -0
  271. package/dist/esm/error.js.map +1 -0
  272. package/dist/esm/generated/client/client.gen.d.ts +3 -0
  273. package/dist/esm/generated/client/client.gen.d.ts.map +1 -0
  274. package/dist/esm/generated/client/client.gen.js +205 -0
  275. package/dist/esm/generated/client/client.gen.js.map +1 -0
  276. package/dist/esm/generated/client/index.d.ts +9 -0
  277. package/dist/esm/generated/client/index.d.ts.map +1 -0
  278. package/dist/esm/generated/client/index.js +7 -0
  279. package/dist/esm/generated/client/index.js.map +1 -0
  280. package/dist/esm/generated/client/types.gen.d.ts +125 -0
  281. package/dist/esm/generated/client/types.gen.d.ts.map +1 -0
  282. package/dist/esm/generated/client/types.gen.js +3 -0
  283. package/dist/esm/generated/client/types.gen.js.map +1 -0
  284. package/dist/esm/generated/client/utils.gen.d.ts +34 -0
  285. package/dist/esm/generated/client/utils.gen.d.ts.map +1 -0
  286. package/dist/esm/generated/client/utils.gen.js +232 -0
  287. package/dist/esm/generated/client/utils.gen.js.map +1 -0
  288. package/dist/esm/generated/client.gen.d.ts +13 -0
  289. package/dist/esm/generated/client.gen.d.ts.map +1 -0
  290. package/dist/esm/generated/client.gen.js +6 -0
  291. package/dist/esm/generated/client.gen.js.map +1 -0
  292. package/dist/esm/generated/core/auth.gen.d.ts +19 -0
  293. package/dist/esm/generated/core/auth.gen.d.ts.map +1 -0
  294. package/dist/esm/generated/core/auth.gen.js +15 -0
  295. package/dist/esm/generated/core/auth.gen.js.map +1 -0
  296. package/dist/esm/generated/core/bodySerializer.gen.d.ts +26 -0
  297. package/dist/esm/generated/core/bodySerializer.gen.d.ts.map +1 -0
  298. package/dist/esm/generated/core/bodySerializer.gen.js +58 -0
  299. package/dist/esm/generated/core/bodySerializer.gen.js.map +1 -0
  300. package/dist/esm/generated/core/params.gen.d.ts +44 -0
  301. package/dist/esm/generated/core/params.gen.d.ts.map +1 -0
  302. package/dist/esm/generated/core/params.gen.js +101 -0
  303. package/dist/esm/generated/core/params.gen.js.map +1 -0
  304. package/dist/esm/generated/core/pathSerializer.gen.d.ts +34 -0
  305. package/dist/esm/generated/core/pathSerializer.gen.d.ts.map +1 -0
  306. package/dist/esm/generated/core/pathSerializer.gen.js +115 -0
  307. package/dist/esm/generated/core/pathSerializer.gen.js.map +1 -0
  308. package/dist/esm/generated/core/queryKeySerializer.gen.d.ts +19 -0
  309. package/dist/esm/generated/core/queryKeySerializer.gen.d.ts.map +1 -0
  310. package/dist/esm/generated/core/queryKeySerializer.gen.js +100 -0
  311. package/dist/esm/generated/core/queryKeySerializer.gen.js.map +1 -0
  312. package/dist/esm/generated/core/serverSentEvents.gen.d.ts +72 -0
  313. package/dist/esm/generated/core/serverSentEvents.gen.d.ts.map +1 -0
  314. package/dist/esm/generated/core/serverSentEvents.gen.js +136 -0
  315. package/dist/esm/generated/core/serverSentEvents.gen.js.map +1 -0
  316. package/dist/esm/generated/core/types.gen.d.ts +79 -0
  317. package/dist/esm/generated/core/types.gen.d.ts.map +1 -0
  318. package/dist/esm/generated/core/types.gen.js +3 -0
  319. package/dist/esm/generated/core/types.gen.js.map +1 -0
  320. package/dist/esm/generated/core/utils.gen.d.ts +20 -0
  321. package/dist/esm/generated/core/utils.gen.d.ts.map +1 -0
  322. package/dist/esm/generated/core/utils.gen.js +88 -0
  323. package/dist/esm/generated/core/utils.gen.js.map +1 -0
  324. package/dist/esm/generated/index.d.ts +3 -0
  325. package/dist/esm/generated/index.d.ts.map +1 -0
  326. package/dist/esm/generated/index.js +3 -0
  327. package/dist/esm/generated/index.js.map +1 -0
  328. package/dist/esm/generated/proto/s2.d.ts +250 -0
  329. package/dist/esm/generated/proto/s2.d.ts.map +1 -0
  330. package/dist/esm/generated/proto/s2.js +423 -0
  331. package/dist/esm/generated/proto/s2.js.map +1 -0
  332. package/dist/esm/generated/sdk.gen.d.ts +100 -0
  333. package/dist/esm/generated/sdk.gen.d.ts.map +1 -0
  334. package/dist/esm/generated/sdk.gen.js +350 -0
  335. package/dist/esm/generated/sdk.gen.js.map +1 -0
  336. package/dist/esm/generated/types.gen.d.ts +1064 -0
  337. package/dist/esm/generated/types.gen.d.ts.map +1 -0
  338. package/dist/esm/generated/types.gen.js +3 -0
  339. package/dist/esm/generated/types.gen.js.map +1 -0
  340. package/dist/esm/index.d.ts +42 -0
  341. package/dist/esm/index.d.ts.map +1 -0
  342. package/dist/esm/index.js +47 -0
  343. package/dist/esm/index.js.map +1 -0
  344. package/dist/esm/internal/case-transform.d.ts +59 -0
  345. package/dist/esm/internal/case-transform.d.ts.map +1 -0
  346. package/dist/esm/internal/case-transform.js +76 -0
  347. package/dist/esm/internal/case-transform.js.map +1 -0
  348. package/dist/esm/internal/mappers.d.ts +51 -0
  349. package/dist/esm/internal/mappers.d.ts.map +1 -0
  350. package/dist/esm/internal/mappers.js +218 -0
  351. package/dist/esm/internal/mappers.js.map +1 -0
  352. package/dist/esm/internal/sdk-types.d.ts +127 -0
  353. package/dist/esm/internal/sdk-types.d.ts.map +1 -0
  354. package/dist/esm/internal/sdk-types.js +8 -0
  355. package/dist/esm/internal/sdk-types.js.map +1 -0
  356. package/dist/esm/lib/base64.d.ts +12 -0
  357. package/dist/esm/lib/base64.d.ts.map +1 -0
  358. package/dist/esm/lib/base64.js +165 -0
  359. package/dist/esm/lib/base64.js.map +1 -0
  360. package/dist/esm/lib/event-stream.d.ts +26 -0
  361. package/dist/esm/lib/event-stream.d.ts.map +1 -0
  362. package/dist/esm/lib/event-stream.js +150 -0
  363. package/dist/esm/lib/event-stream.js.map +1 -0
  364. package/dist/esm/lib/paginate.d.ts +61 -0
  365. package/dist/esm/lib/paginate.d.ts.map +1 -0
  366. package/dist/esm/lib/paginate.js +48 -0
  367. package/dist/esm/lib/paginate.js.map +1 -0
  368. package/dist/esm/lib/redacted.d.ts +17 -0
  369. package/dist/esm/lib/redacted.d.ts.map +1 -0
  370. package/dist/esm/lib/redacted.js +28 -0
  371. package/dist/esm/lib/redacted.js.map +1 -0
  372. package/dist/esm/lib/result.d.ts +57 -0
  373. package/dist/esm/lib/result.d.ts.map +1 -0
  374. package/dist/esm/lib/result.js +37 -0
  375. package/dist/esm/lib/result.js.map +1 -0
  376. package/dist/esm/lib/retry.d.ts +167 -0
  377. package/dist/esm/lib/retry.d.ts.map +1 -0
  378. package/dist/esm/lib/retry.js +1003 -0
  379. package/dist/esm/lib/retry.js.map +1 -0
  380. package/dist/esm/lib/stream/factory.d.ts +14 -0
  381. package/dist/esm/lib/stream/factory.d.ts.map +1 -0
  382. package/dist/esm/lib/stream/factory.js +32 -0
  383. package/dist/esm/lib/stream/factory.js.map +1 -0
  384. package/dist/esm/lib/stream/runtime.d.ts +27 -0
  385. package/dist/esm/lib/stream/runtime.d.ts.map +1 -0
  386. package/dist/esm/lib/stream/runtime.js +71 -0
  387. package/dist/esm/lib/stream/runtime.js.map +1 -0
  388. package/dist/esm/lib/stream/transport/fetch/index.d.ts +64 -0
  389. package/dist/esm/lib/stream/transport/fetch/index.d.ts.map +1 -0
  390. package/dist/esm/lib/stream/transport/fetch/index.js +456 -0
  391. package/dist/esm/lib/stream/transport/fetch/index.js.map +1 -0
  392. package/dist/esm/lib/stream/transport/fetch/shared.d.ts +11 -0
  393. package/dist/esm/lib/stream/transport/fetch/shared.d.ts.map +1 -0
  394. package/dist/esm/lib/stream/transport/fetch/shared.js +114 -0
  395. package/dist/esm/lib/stream/transport/fetch/shared.js.map +1 -0
  396. package/dist/esm/lib/stream/transport/proto.d.ts +9 -0
  397. package/dist/esm/lib/stream/transport/proto.d.ts.map +1 -0
  398. package/dist/esm/lib/stream/transport/proto.js +110 -0
  399. package/dist/esm/lib/stream/transport/proto.js.map +1 -0
  400. package/dist/esm/lib/stream/transport/s2s/framing.d.ts +47 -0
  401. package/dist/esm/lib/stream/transport/s2s/framing.d.ts.map +1 -0
  402. package/dist/esm/lib/stream/transport/s2s/framing.js +118 -0
  403. package/dist/esm/lib/stream/transport/s2s/framing.js.map +1 -0
  404. package/dist/esm/lib/stream/transport/s2s/index.d.ts +24 -0
  405. package/dist/esm/lib/stream/transport/s2s/index.d.ts.map +1 -0
  406. package/dist/esm/lib/stream/transport/s2s/index.js +819 -0
  407. package/dist/esm/lib/stream/transport/s2s/index.js.map +1 -0
  408. package/dist/esm/lib/stream/types.d.ts +199 -0
  409. package/dist/esm/lib/stream/types.d.ts.map +1 -0
  410. package/dist/esm/lib/stream/types.js +18 -0
  411. package/dist/esm/lib/stream/types.js.map +1 -0
  412. package/dist/esm/metrics.d.ts +46 -0
  413. package/dist/esm/metrics.d.ts.map +1 -0
  414. package/dist/esm/metrics.js +122 -0
  415. package/dist/esm/metrics.js.map +1 -0
  416. package/dist/esm/producer.d.ts +82 -0
  417. package/dist/esm/producer.d.ts.map +1 -0
  418. package/dist/esm/producer.js +300 -0
  419. package/dist/esm/producer.js.map +1 -0
  420. package/dist/esm/s2.d.ts +41 -0
  421. package/dist/esm/s2.d.ts.map +1 -0
  422. package/dist/esm/s2.js +115 -0
  423. package/dist/esm/s2.js.map +1 -0
  424. package/dist/esm/stream.d.ts +78 -0
  425. package/dist/esm/stream.d.ts.map +1 -0
  426. package/dist/esm/stream.js +172 -0
  427. package/dist/esm/stream.js.map +1 -0
  428. package/dist/esm/streams.d.ts +61 -0
  429. package/dist/esm/streams.d.ts.map +1 -0
  430. package/dist/esm/streams.js +197 -0
  431. package/dist/esm/streams.js.map +1 -0
  432. package/dist/esm/types.d.ts +633 -0
  433. package/dist/esm/types.d.ts.map +1 -0
  434. package/dist/esm/types.js +126 -0
  435. package/dist/esm/types.js.map +1 -0
  436. package/dist/esm/utils.d.ts +25 -0
  437. package/dist/esm/utils.d.ts.map +1 -0
  438. package/dist/esm/utils.js +103 -0
  439. package/dist/esm/utils.js.map +1 -0
  440. package/dist/esm/version.d.ts +8 -0
  441. package/dist/esm/version.d.ts.map +1 -0
  442. package/dist/esm/version.js +8 -0
  443. package/dist/esm/version.js.map +1 -0
  444. package/package.json +47 -0
@@ -0,0 +1,129 @@
1
+ "use strict";
2
+ /**
3
+ * S2 SDK Types
4
+ *
5
+ * All public SDK types are defined here. Types use camelCase field names
6
+ * for idiomatic JavaScript/TypeScript usage.
7
+ *
8
+ * Generated types (snake_case, matching API wire format) are available
9
+ * from "./generated/types.gen.js" as the `API` namespace.
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.AppendInput = exports.MAX_APPEND_BYTES = exports.MAX_APPEND_RECORDS = exports.AppendRecord = void 0;
13
+ const error_js_1 = require("./error.js");
14
+ const utils_js_1 = require("./utils.js");
15
+ const textEncoder = new TextEncoder();
16
+ /**
17
+ * Factory functions for creating AppendRecord instances.
18
+ */
19
+ var AppendRecord;
20
+ (function (AppendRecord) {
21
+ /**
22
+ * Create a string-format append record with pre-calculated metered size.
23
+ */
24
+ function string(params) {
25
+ // Create record with placeholder, then calculate actual size
26
+ const record = {
27
+ body: params.body,
28
+ headers: params.headers,
29
+ timestamp: params.timestamp,
30
+ meteredBytes: 0,
31
+ };
32
+ // Safe to cast: we're setting a readonly property during construction
33
+ record.meteredBytes =
34
+ (0, utils_js_1.meteredBytes)(record);
35
+ return record;
36
+ }
37
+ AppendRecord.string = string;
38
+ /**
39
+ * Create a bytes-format append record with pre-calculated metered size.
40
+ */
41
+ function bytes(params) {
42
+ // Create record with placeholder, then calculate actual size
43
+ const record = {
44
+ body: params.body,
45
+ headers: params.headers,
46
+ timestamp: params.timestamp,
47
+ meteredBytes: 0,
48
+ };
49
+ // Safe to cast: we're setting a readonly property during construction
50
+ record.meteredBytes =
51
+ (0, utils_js_1.meteredBytes)(record);
52
+ return record;
53
+ }
54
+ AppendRecord.bytes = bytes;
55
+ /**
56
+ * Create a fence command record.
57
+ */
58
+ function fence(fencingToken, timestamp) {
59
+ return string({
60
+ body: fencingToken,
61
+ headers: [["", "fence"]],
62
+ timestamp,
63
+ });
64
+ }
65
+ AppendRecord.fence = fence;
66
+ /**
67
+ * Create a trim command record.
68
+ */
69
+ function trim(seqNum, timestamp) {
70
+ const buffer = new Uint8Array(8);
71
+ const view = new DataView(buffer.buffer);
72
+ view.setBigUint64(0, BigInt(seqNum), false);
73
+ return bytes({
74
+ body: buffer,
75
+ headers: [[textEncoder.encode(""), textEncoder.encode("trim")]],
76
+ timestamp,
77
+ });
78
+ }
79
+ AppendRecord.trim = trim;
80
+ })(AppendRecord || (exports.AppendRecord = AppendRecord = {}));
81
+ // =============================================================================
82
+ // Append Input
83
+ // =============================================================================
84
+ /** Maximum number of records in a single append batch. */
85
+ exports.MAX_APPEND_RECORDS = 1000;
86
+ /** Maximum total metered bytes for records in a single append batch (1 MiB). */
87
+ exports.MAX_APPEND_BYTES = 1024 * 1024;
88
+ /**
89
+ * Factory functions for creating AppendInput instances.
90
+ */
91
+ var AppendInput;
92
+ (function (AppendInput) {
93
+ /**
94
+ * Create an AppendInput with validation.
95
+ *
96
+ * @throws {S2Error} If validation fails (empty, too many records, or too large)
97
+ */
98
+ function create(records, options) {
99
+ if (records.length === 0) {
100
+ throw new error_js_1.S2Error({
101
+ message: "AppendInput must contain at least one record",
102
+ origin: "sdk",
103
+ });
104
+ }
105
+ if (records.length > exports.MAX_APPEND_RECORDS) {
106
+ throw new error_js_1.S2Error({
107
+ message: `AppendInput cannot contain more than ${exports.MAX_APPEND_RECORDS} records (got ${records.length})`,
108
+ origin: "sdk",
109
+ });
110
+ }
111
+ const totalBytes = records.reduce((sum, r) => sum + r.meteredBytes, 0);
112
+ if (totalBytes > exports.MAX_APPEND_BYTES) {
113
+ throw new error_js_1.S2Error({
114
+ message: `AppendInput exceeds maximum of ${exports.MAX_APPEND_BYTES} bytes (got ${totalBytes} bytes)`,
115
+ origin: "sdk",
116
+ });
117
+ }
118
+ return {
119
+ records,
120
+ matchSeqNum: options?.matchSeqNum === undefined
121
+ ? undefined
122
+ : Math.floor(options.matchSeqNum),
123
+ fencingToken: options?.fencingToken,
124
+ meteredBytes: totalBytes,
125
+ };
126
+ }
127
+ AppendInput.create = create;
128
+ })(AppendInput || (exports.AppendInput = AppendInput = {}));
129
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import type { AppendRecord, ReadRecord } from "./lib/stream/types.js";
2
+ /**
3
+ * Calculate the UTF-8 byte length of a string.
4
+ * Handles all Unicode characters including surrogate pairs correctly.
5
+ *
6
+ * @param str The string to measure
7
+ * @returns The byte length when encoded as UTF-8
8
+ */
9
+ export declare function utf8ByteLength(str: string): number;
10
+ /**
11
+ * Calculate the metered size in bytes of a record (append or read).
12
+ * This includes the body and headers, but not metadata like timestamp.
13
+ *
14
+ * This function calculates how many bytes the record will occupy
15
+ * after being received and deserialized as raw bytes on the S2 side.
16
+ * For strings, it calculates UTF-8 byte length. For Uint8Array, it uses
17
+ * the array length directly (same value as would be used when encoding
18
+ * to base64 for transmission).
19
+ *
20
+ * @param record The record to measure
21
+ * @returns The size in bytes
22
+ */
23
+ export declare function meteredBytes<Format extends "string" | "bytes">(record: AppendRecord | ReadRecord<Format>): number;
24
+ export declare function computeAppendRecordFormat(record: AppendRecord): "string" | "bytes";
25
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEtE;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAiClD;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAAC,MAAM,SAAS,QAAQ,GAAG,OAAO,EAC7D,MAAM,EAAE,YAAY,GAAG,UAAU,CAAC,MAAM,CAAC,GACvC,MAAM,CAgCR;AAED,wBAAgB,yBAAyB,CACxC,MAAM,EAAE,YAAY,GAClB,QAAQ,GAAG,OAAO,CAiBpB"}
@@ -0,0 +1,108 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.utf8ByteLength = utf8ByteLength;
4
+ exports.meteredBytes = meteredBytes;
5
+ exports.computeAppendRecordFormat = computeAppendRecordFormat;
6
+ /**
7
+ * Calculate the UTF-8 byte length of a string.
8
+ * Handles all Unicode characters including surrogate pairs correctly.
9
+ *
10
+ * @param str The string to measure
11
+ * @returns The byte length when encoded as UTF-8
12
+ */
13
+ function utf8ByteLength(str) {
14
+ let bytes = 0;
15
+ for (let i = 0; i < str.length; i++) {
16
+ const code = str.charCodeAt(i);
17
+ if (code <= 0x7f) {
18
+ bytes += 1;
19
+ }
20
+ else if (code <= 0x7ff) {
21
+ bytes += 2;
22
+ }
23
+ else if (code >= 0xd800 && code <= 0xdbff) {
24
+ // high surrogate
25
+ if (i + 1 < str.length) {
26
+ const next = str.charCodeAt(i + 1);
27
+ if (next >= 0xdc00 && next <= 0xdfff) {
28
+ // valid surrogate pair → 4 bytes in UTF-8
29
+ bytes += 4;
30
+ i++; // skip low surrogate
31
+ }
32
+ else {
33
+ // unpaired high surrogate → treat as 3 bytes (replacement-style)
34
+ bytes += 3;
35
+ }
36
+ }
37
+ else {
38
+ // unpaired high surrogate at end of string
39
+ bytes += 3;
40
+ }
41
+ }
42
+ else if (code >= 0xdc00 && code <= 0xdfff) {
43
+ // lone low surrogate — treat as 3 bytes
44
+ bytes += 3;
45
+ }
46
+ else {
47
+ bytes += 3;
48
+ }
49
+ }
50
+ return bytes;
51
+ }
52
+ /**
53
+ * Calculate the metered size in bytes of a record (append or read).
54
+ * This includes the body and headers, but not metadata like timestamp.
55
+ *
56
+ * This function calculates how many bytes the record will occupy
57
+ * after being received and deserialized as raw bytes on the S2 side.
58
+ * For strings, it calculates UTF-8 byte length. For Uint8Array, it uses
59
+ * the array length directly (same value as would be used when encoding
60
+ * to base64 for transmission).
61
+ *
62
+ * @param record The record to measure
63
+ * @returns The size in bytes
64
+ */
65
+ function meteredBytes(record) {
66
+ // Calculate header size based on actual data types
67
+ let numHeaders = 0;
68
+ let headersSize = 0;
69
+ if (record.headers) {
70
+ if (Array.isArray(record.headers)) {
71
+ numHeaders = record.headers.length;
72
+ headersSize = record.headers.reduce((sum, [k, v]) => {
73
+ // Infer format from key type: string = UTF-8 bytes, Uint8Array = byte length
74
+ const keySize = typeof k === "string" ? utf8ByteLength(k) : k.length;
75
+ const valueSize = typeof v === "string" ? utf8ByteLength(v) : v.length;
76
+ return sum + keySize + valueSize;
77
+ }, 0);
78
+ }
79
+ else {
80
+ // Record<string, string> format (only for string format)
81
+ const entries = Object.entries(record.headers);
82
+ numHeaders = entries.length;
83
+ headersSize = entries.reduce((sum, [k, v]) => {
84
+ return sum + utf8ByteLength(k) + utf8ByteLength(v);
85
+ }, 0);
86
+ }
87
+ }
88
+ // Calculate body size based on actual data type
89
+ const bodySize = record.body
90
+ ? typeof record.body === "string"
91
+ ? utf8ByteLength(record.body)
92
+ : record.body.length
93
+ : 0;
94
+ return 8 + 2 * numHeaders + headersSize + bodySize;
95
+ }
96
+ function computeAppendRecordFormat(record) {
97
+ let result = "string";
98
+ if (record.body && typeof record.body !== "string") {
99
+ result = "bytes";
100
+ }
101
+ if (record.headers &&
102
+ Array.isArray(record.headers) &&
103
+ record.headers.some(([k, v]) => typeof k !== "string" || typeof v !== "string")) {
104
+ result = "bytes";
105
+ }
106
+ return result;
107
+ }
108
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Library version.
3
+ *
4
+ * This file is auto-generated from package.json by scripts/generate-version.ts.
5
+ * Do not edit manually.
6
+ */
7
+ export declare const VERSION = "0.22.2";
8
+ //# sourceMappingURL=version.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,eAAO,MAAM,OAAO,WAAW,CAAC"}
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.VERSION = void 0;
4
+ /**
5
+ * Library version.
6
+ *
7
+ * This file is auto-generated from package.json by scripts/generate-version.ts.
8
+ * Do not edit manually.
9
+ */
10
+ exports.VERSION = "0.22.2";
11
+ //# sourceMappingURL=version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";;;AAAA;;;;;GAKG;AACU,QAAA,OAAO,GAAG,QAAQ,CAAC"}
@@ -0,0 +1,51 @@
1
+ import type { RetryConfig, S2RequestOptions } from "./common.js";
2
+ import type { Client } from "./generated/client/types.gen.js";
3
+ import type * as Types from "./types.js";
4
+ /**
5
+ * Account-scoped helper for listing, issuing, and revoking access tokens.
6
+ *
7
+ * Acquire via {@link S2.accessTokens}. Use {@link S2AccessTokens.listAll} for async iteration.
8
+ */
9
+ export declare class S2AccessTokens {
10
+ readonly client: Client;
11
+ private readonly retryConfig?;
12
+ constructor(client: Client, retryConfig?: RetryConfig);
13
+ /**
14
+ * List access tokens.
15
+ *
16
+ * @param args.prefix Filter to IDs beginning with this prefix
17
+ * @param args.startAfter Filter to IDs lexicographically after this value
18
+ * @param args.limit Max results (up to 1000)
19
+ */
20
+ list(args?: Types.ListAccessTokensInput, options?: S2RequestOptions): Promise<Types.ListAccessTokensResponse>;
21
+ /**
22
+ * List all access tokens with automatic pagination.
23
+ * Returns a lazy async iterable that fetches pages as needed.
24
+ *
25
+ * @param args - Optional filtering options: `prefix` to filter by ID prefix, `limit` for max results per page
26
+ *
27
+ * @example
28
+ * ```ts
29
+ * for await (const token of s2.accessTokens.listAll({ prefix: "service-" })) {
30
+ * console.log(token.id);
31
+ * }
32
+ * ```
33
+ */
34
+ listAll(args?: Types.ListAllAccessTokensInput, options?: S2RequestOptions): AsyncIterable<Types.AccessTokenInfo>;
35
+ /**
36
+ * Issue a new access token.
37
+ *
38
+ * @param args.id Unique token ID (1-96 bytes)
39
+ * @param args.scope Token scope (operations and resource sets)
40
+ * @param args.autoPrefixStreams Namespace stream names by configured prefix scope
41
+ * @param args.expiresAt Expiration time (Date or RFC 3339 string); defaults to requestor's token expiry
42
+ */
43
+ issue(args: Types.IssueAccessTokenInput, options?: S2RequestOptions): Promise<Types.IssueAccessTokenResponse>;
44
+ /**
45
+ * Revoke an access token by ID.
46
+ *
47
+ * @param args.id Token ID to revoke
48
+ */
49
+ revoke(args: Types.RevokeAccessTokenInput, options?: S2RequestOptions): Promise<void>;
50
+ }
51
+ //# sourceMappingURL=accessTokens.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accessTokens.d.ts","sourceRoot":"","sources":["../../src/accessTokens.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEjE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iCAAiC,CAAC;AAS9D,OAAO,KAAK,KAAK,KAAK,MAAM,YAAY,CAAC;AA4BzC;;;;GAIG;AACH,qBAAa,cAAc;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAc;gBAE/B,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,WAAW;IAKrD;;;;;;OAMG;IACU,IAAI,CAChB,IAAI,CAAC,EAAE,KAAK,CAAC,qBAAqB,EAClC,OAAO,CAAC,EAAE,gBAAgB,GACxB,OAAO,CAAC,KAAK,CAAC,wBAAwB,CAAC;IAiB1C;;;;;;;;;;;;OAYG;IACI,OAAO,CACb,IAAI,CAAC,EAAE,KAAK,CAAC,wBAAwB,EACrC,OAAO,CAAC,EAAE,gBAAgB,GACxB,aAAa,CAAC,KAAK,CAAC,eAAe,CAAC;IAYvC;;;;;;;OAOG;IACU,KAAK,CACjB,IAAI,EAAE,KAAK,CAAC,qBAAqB,EACjC,OAAO,CAAC,EAAE,gBAAgB,GACxB,OAAO,CAAC,KAAK,CAAC,wBAAwB,CAAC;IAkB1C;;;;OAIG;IACU,MAAM,CAClB,IAAI,EAAE,KAAK,CAAC,sBAAsB,EAClC,OAAO,CAAC,EAAE,gBAAgB,GACxB,OAAO,CAAC,IAAI,CAAC;CAWhB"}
@@ -0,0 +1,123 @@
1
+ import { withS2Data } from "./error.js";
2
+ import { issueAccessToken, listAccessTokens, revokeAccessToken, } from "./generated/index.js";
3
+ import { toCamelCase, toSnakeCase } from "./internal/case-transform.js";
4
+ import { paginate } from "./lib/paginate.js";
5
+ import { withRetries } from "./lib/retry.js";
6
+ /** Convert expiresAt input (Date, milliseconds, or string) to RFC 3339 string for API. */
7
+ function toISOString(value) {
8
+ if (value === null)
9
+ return null;
10
+ if (value === undefined)
11
+ return undefined;
12
+ if (value instanceof Date)
13
+ return value.toISOString();
14
+ if (typeof value === "number")
15
+ return new Date(value).toISOString();
16
+ return value;
17
+ }
18
+ /** Convert expiresAt from API (ISO string) to Date. */
19
+ function toDate(value) {
20
+ if (value === null)
21
+ return null;
22
+ if (value === undefined)
23
+ return undefined;
24
+ return new Date(value);
25
+ }
26
+ /** Transform AccessTokenInfo response: convert expiresAt to Date. */
27
+ function transformTokenInfo(token) {
28
+ return {
29
+ ...token,
30
+ expiresAt: toDate(token.expiresAt),
31
+ };
32
+ }
33
+ /**
34
+ * Account-scoped helper for listing, issuing, and revoking access tokens.
35
+ *
36
+ * Acquire via {@link S2.accessTokens}. Use {@link S2AccessTokens.listAll} for async iteration.
37
+ */
38
+ export class S2AccessTokens {
39
+ client;
40
+ retryConfig;
41
+ constructor(client, retryConfig) {
42
+ this.client = client;
43
+ this.retryConfig = retryConfig;
44
+ }
45
+ /**
46
+ * List access tokens.
47
+ *
48
+ * @param args.prefix Filter to IDs beginning with this prefix
49
+ * @param args.startAfter Filter to IDs lexicographically after this value
50
+ * @param args.limit Max results (up to 1000)
51
+ */
52
+ async list(args, options) {
53
+ const response = await withRetries(this.retryConfig, async () => {
54
+ return await withS2Data(() => listAccessTokens({
55
+ client: this.client,
56
+ query: toSnakeCase(args),
57
+ ...options,
58
+ }));
59
+ });
60
+ const camelCased = toCamelCase(response);
61
+ return {
62
+ ...camelCased,
63
+ accessTokens: camelCased.accessTokens.map(transformTokenInfo),
64
+ };
65
+ }
66
+ /**
67
+ * List all access tokens with automatic pagination.
68
+ * Returns a lazy async iterable that fetches pages as needed.
69
+ *
70
+ * @param args - Optional filtering options: `prefix` to filter by ID prefix, `limit` for max results per page
71
+ *
72
+ * @example
73
+ * ```ts
74
+ * for await (const token of s2.accessTokens.listAll({ prefix: "service-" })) {
75
+ * console.log(token.id);
76
+ * }
77
+ * ```
78
+ */
79
+ listAll(args, options) {
80
+ return paginate((a) => this.list(a, options).then((r) => ({
81
+ items: r.accessTokens,
82
+ hasMore: r.hasMore,
83
+ })), args ?? {}, (token) => token.id);
84
+ }
85
+ /**
86
+ * Issue a new access token.
87
+ *
88
+ * @param args.id Unique token ID (1-96 bytes)
89
+ * @param args.scope Token scope (operations and resource sets)
90
+ * @param args.autoPrefixStreams Namespace stream names by configured prefix scope
91
+ * @param args.expiresAt Expiration time (Date or RFC 3339 string); defaults to requestor's token expiry
92
+ */
93
+ async issue(args, options) {
94
+ // Convert Date to ISO string for API
95
+ const apiArgs = {
96
+ ...args,
97
+ expiresAt: toISOString(args.expiresAt),
98
+ };
99
+ const response = await withRetries(this.retryConfig, async () => {
100
+ return await withS2Data(() => issueAccessToken({
101
+ client: this.client,
102
+ body: toSnakeCase(apiArgs),
103
+ ...options,
104
+ }));
105
+ });
106
+ return toCamelCase(response);
107
+ }
108
+ /**
109
+ * Revoke an access token by ID.
110
+ *
111
+ * @param args.id Token ID to revoke
112
+ */
113
+ async revoke(args, options) {
114
+ await withRetries(this.retryConfig, async () => {
115
+ return await withS2Data(() => revokeAccessToken({
116
+ client: this.client,
117
+ path: args,
118
+ ...options,
119
+ }));
120
+ });
121
+ }
122
+ }
123
+ //# sourceMappingURL=accessTokens.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accessTokens.js","sourceRoot":"","sources":["../../src/accessTokens.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ export type BiscuitTokenOptions = {
2
+ /** P256 private key as base58-encoded 32 bytes */
3
+ privateKey: string;
4
+ /** Public key to bind the token to (base58). If not provided, derives from privateKey. */
5
+ publicKey?: string;
6
+ /** Token expiry in seconds from now (default: 3600 = 1 hour) */
7
+ expiresIn?: number;
8
+ /** Operation groups to grant (default: all read+write) */
9
+ opGroups?: Array<{
10
+ level: string;
11
+ access: string;
12
+ }>;
13
+ /** Basin scope (default: prefix "" = all basins) */
14
+ basinScope?: {
15
+ type: "prefix" | "exact" | "none";
16
+ value: string;
17
+ };
18
+ /** Stream scope (default: prefix "" = all streams) */
19
+ streamScope?: {
20
+ type: "prefix" | "exact" | "none";
21
+ value: string;
22
+ };
23
+ /** Access token scope (default: prefix "" = all tokens) */
24
+ accessTokenScope?: {
25
+ type: "prefix" | "exact" | "none";
26
+ value: string;
27
+ };
28
+ };
29
+ /**
30
+ * Creates an admin Biscuit token from a root private key.
31
+ * This enables bootstrap mode where the admin can operate without a pre-existing token.
32
+ *
33
+ * @returns Base64-encoded Biscuit token
34
+ */
35
+ export declare function createBiscuitToken(options: BiscuitTokenOptions): Promise<string>;
36
+ /**
37
+ * Derives the public key from a private key.
38
+ * @param privateKey Base58-encoded P256 private key (32 bytes)
39
+ * @returns Base58-encoded compressed public key (33 bytes)
40
+ */
41
+ export declare function derivePublicKey(privateKey: string): string;
42
+ //# sourceMappingURL=biscuit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"biscuit.d.ts","sourceRoot":"","sources":["../../../src/auth/biscuit.ts"],"names":[],"mappings":"AAkBA,MAAM,MAAM,mBAAmB,GAAG;IACjC,kDAAkD;IAClD,UAAU,EAAE,MAAM,CAAC;IACnB,0FAA0F;IAC1F,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gEAAgE;IAChE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACpD,oDAAoD;IACpD,UAAU,CAAC,EAAE;QAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAClE,sDAAsD;IACtD,WAAW,CAAC,EAAE;QAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IACnE,2DAA2D;IAC3D,gBAAgB,CAAC,EAAE;QAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CACxE,CAAC;AAEF;;;;;GAKG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC,CAyDtF;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAE1D"}
@@ -0,0 +1,68 @@
1
+ import { base64 } from "@scure/base";
2
+ import { SigningKey } from "./signing-key.js";
3
+ // Dynamic import for biscuit-wasm to handle WASM initialization
4
+ let biscuitModule = null;
5
+ let initPromise = null;
6
+ async function getBiscuit() {
7
+ if (!biscuitModule) {
8
+ biscuitModule = await import("@biscuit-auth/biscuit-wasm");
9
+ if (!initPromise) {
10
+ initPromise = Promise.resolve(biscuitModule.init());
11
+ }
12
+ await initPromise;
13
+ }
14
+ return biscuitModule;
15
+ }
16
+ /**
17
+ * Creates an admin Biscuit token from a root private key.
18
+ * This enables bootstrap mode where the admin can operate without a pre-existing token.
19
+ *
20
+ * @returns Base64-encoded Biscuit token
21
+ */
22
+ export async function createBiscuitToken(options) {
23
+ const { privateKey, publicKey: providedPublicKey, expiresIn = 3600, opGroups = [
24
+ { level: "account", access: "read" },
25
+ { level: "account", access: "write" },
26
+ { level: "basin", access: "read" },
27
+ { level: "basin", access: "write" },
28
+ { level: "stream", access: "read" },
29
+ { level: "stream", access: "write" },
30
+ ], basinScope = { type: "prefix", value: "" }, streamScope = { type: "prefix", value: "" }, accessTokenScope = { type: "prefix", value: "" }, } = options;
31
+ const biscuit = await getBiscuit();
32
+ // Use SigningKey for validation and key derivation
33
+ const signingKey = SigningKey.fromBase58(privateKey);
34
+ const privateKeyBytes = signingKey.getPrivateKeyBytes();
35
+ const publicKeyBase58 = providedPublicKey ?? signingKey.publicKeyBase58();
36
+ // Create Biscuit private key (P256 = secp256r1)
37
+ const biscuitPrivateKey = biscuit.PrivateKey.fromBytes(privateKeyBytes, biscuit.SignatureAlgorithm.Secp256r1);
38
+ // Build the token
39
+ const expiresTs = Math.floor(Date.now() / 1000) + expiresIn;
40
+ const builder = biscuit.biscuit `
41
+ public_key(${publicKeyBase58});
42
+ expires(${expiresTs});
43
+ `;
44
+ builder.merge(biscuit.block `
45
+ check if time($t), $t < ${expiresTs};
46
+ `);
47
+ for (const { level, access } of opGroups) {
48
+ builder.merge(biscuit.block `
49
+ op_group(${level}, ${access});
50
+ `);
51
+ }
52
+ builder.merge(biscuit.block `
53
+ basin_scope(${basinScope.type}, ${basinScope.value});
54
+ stream_scope(${streamScope.type}, ${streamScope.value});
55
+ access_token_scope(${accessTokenScope.type}, ${accessTokenScope.value});
56
+ `);
57
+ const token = builder.build(biscuitPrivateKey);
58
+ return base64.encode(token.toBytes());
59
+ }
60
+ /**
61
+ * Derives the public key from a private key.
62
+ * @param privateKey Base58-encoded P256 private key (32 bytes)
63
+ * @returns Base58-encoded compressed public key (33 bytes)
64
+ */
65
+ export function derivePublicKey(privateKey) {
66
+ return SigningKey.fromBase58(privateKey).publicKeyBase58();
67
+ }
68
+ //# sourceMappingURL=biscuit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"biscuit.js","sourceRoot":"","sources":["../../../src/auth/biscuit.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export { createBiscuitToken, derivePublicKey, type BiscuitTokenOptions } from "./biscuit.js";
2
+ export { signRequest, signHeaders, type SignRequestOptions, type SignHeadersOptions } from "./sign.js";
3
+ export { createPkiAuth, type PkiAuthConfig, type PkiAuthContext } from "./pki-auth.js";
4
+ export { SigningKey } from "./signing-key.js";
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/auth/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,KAAK,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAC7F,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,KAAK,kBAAkB,EAAE,KAAK,kBAAkB,EAAE,MAAM,WAAW,CAAC;AACvG,OAAO,EAAE,aAAa,EAAE,KAAK,aAAa,EAAE,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AACvF,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,5 @@
1
+ export { createBiscuitToken, derivePublicKey } from "./biscuit.js";
2
+ export { signRequest, signHeaders } from "./sign.js";
3
+ export { createPkiAuth } from "./pki-auth.js";
4
+ export { SigningKey } from "./signing-key.js";
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/auth/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAA4B,MAAM,cAAc,CAAC;AAC7F,OAAO,EAAE,WAAW,EAAE,WAAW,EAAoD,MAAM,WAAW,CAAC;AACvG,OAAO,EAAE,aAAa,EAA2C,MAAM,eAAe,CAAC;AACvF,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC"}