@rivetkit/engine-api-full 2.0.4-rc.1

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 (256) hide show
  1. package/LICENSE +203 -0
  2. package/dist/browser/cjs/core.js +2338 -0
  3. package/dist/browser/cjs/index.js +4241 -0
  4. package/dist/browser/cjs/serialization.js +1953 -0
  5. package/dist/browser/esm/core.js +2312 -0
  6. package/dist/browser/esm/index.js +4215 -0
  7. package/dist/browser/esm/serialization.js +1926 -0
  8. package/dist/node/cjs/core.js +2353 -0
  9. package/dist/node/cjs/index.js +4254 -0
  10. package/dist/node/cjs/serialization.js +2016 -0
  11. package/dist/node/esm/core.js +2317 -0
  12. package/dist/node/esm/index.js +4220 -0
  13. package/dist/node/esm/serialization.js +1927 -0
  14. package/package.json +67 -0
  15. package/types/Client.d.ts +250 -0
  16. package/types/api/client/index.d.ts +1 -0
  17. package/types/api/client/requests/ActorsCreateRequest.d.ts +22 -0
  18. package/types/api/client/requests/ActorsDeleteRequest.d.ts +12 -0
  19. package/types/api/client/requests/ActorsGetOrCreateRequest.d.ts +23 -0
  20. package/types/api/client/requests/ActorsKvGetRequest.d.ts +12 -0
  21. package/types/api/client/requests/ActorsListNamesRequest.d.ts +14 -0
  22. package/types/api/client/requests/ActorsListRequest.d.ts +23 -0
  23. package/types/api/client/requests/RunnerConfigsDeleteRequest.d.ts +12 -0
  24. package/types/api/client/requests/RunnerConfigsListRequest.d.ts +21 -0
  25. package/types/api/client/requests/RunnerConfigsRefreshMetadataRequest.d.ts +17 -0
  26. package/types/api/client/requests/RunnerConfigsServerlessHealthCheckRequest.d.ts +15 -0
  27. package/types/api/client/requests/RunnerConfigsUpsertRequestBody.d.ts +17 -0
  28. package/types/api/client/requests/index.d.ts +11 -0
  29. package/types/api/index.d.ts +3 -0
  30. package/types/api/resources/datacenters/client/Client.d.ts +36 -0
  31. package/types/api/resources/datacenters/client/index.d.ts +1 -0
  32. package/types/api/resources/datacenters/index.d.ts +1 -0
  33. package/types/api/resources/health/client/Client.d.ts +36 -0
  34. package/types/api/resources/health/client/index.d.ts +1 -0
  35. package/types/api/resources/health/index.d.ts +1 -0
  36. package/types/api/resources/index.d.ts +7 -0
  37. package/types/api/resources/metadata/client/Client.d.ts +36 -0
  38. package/types/api/resources/metadata/client/index.d.ts +1 -0
  39. package/types/api/resources/metadata/index.d.ts +1 -0
  40. package/types/api/resources/namespaces/client/Client.d.ts +48 -0
  41. package/types/api/resources/namespaces/client/index.d.ts +1 -0
  42. package/types/api/resources/namespaces/client/requests/NamespacesCreateRequest.d.ts +14 -0
  43. package/types/api/resources/namespaces/client/requests/NamespacesListRequest.d.ts +18 -0
  44. package/types/api/resources/namespaces/client/requests/index.d.ts +2 -0
  45. package/types/api/resources/namespaces/index.d.ts +1 -0
  46. package/types/api/resources/runners/client/Client.d.ts +54 -0
  47. package/types/api/resources/runners/client/index.d.ts +1 -0
  48. package/types/api/resources/runners/client/requests/RunnersListNamesRequest.d.ts +14 -0
  49. package/types/api/resources/runners/client/requests/RunnersListRequest.d.ts +22 -0
  50. package/types/api/resources/runners/client/requests/index.d.ts +2 -0
  51. package/types/api/resources/runners/index.d.ts +1 -0
  52. package/types/api/types/Actor.d.ts +32 -0
  53. package/types/api/types/ActorName.d.ts +6 -0
  54. package/types/api/types/ActorsCreateResponse.d.ts +7 -0
  55. package/types/api/types/ActorsDeleteResponse.d.ts +4 -0
  56. package/types/api/types/ActorsGetOrCreateResponse.d.ts +8 -0
  57. package/types/api/types/ActorsKvGetResponse.d.ts +7 -0
  58. package/types/api/types/ActorsListNamesResponse.d.ts +8 -0
  59. package/types/api/types/ActorsListResponse.d.ts +8 -0
  60. package/types/api/types/CrashPolicy.d.ts +9 -0
  61. package/types/api/types/Datacenter.d.ts +8 -0
  62. package/types/api/types/DatacenterHealth.d.ts +12 -0
  63. package/types/api/types/DatacentersListResponse.d.ts +8 -0
  64. package/types/api/types/HealthFanoutResponse.d.ts +7 -0
  65. package/types/api/types/HealthResponse.d.ts +8 -0
  66. package/types/api/types/HealthStatus.d.ts +8 -0
  67. package/types/api/types/MetadataGetResponse.d.ts +13 -0
  68. package/types/api/types/Namespace.d.ts +10 -0
  69. package/types/api/types/NamespaceListResponse.d.ts +8 -0
  70. package/types/api/types/NamespacesCreateResponse.d.ts +7 -0
  71. package/types/api/types/Pagination.d.ts +6 -0
  72. package/types/api/types/RivetId.d.ts +4 -0
  73. package/types/api/types/Runner.d.ts +21 -0
  74. package/types/api/types/RunnerConfig.d.ts +10 -0
  75. package/types/api/types/RunnerConfigKind.d.ts +5 -0
  76. package/types/api/types/RunnerConfigKindNormal.d.ts +6 -0
  77. package/types/api/types/RunnerConfigKindServerless.d.ts +7 -0
  78. package/types/api/types/RunnerConfigKindServerlessServerless.d.ts +15 -0
  79. package/types/api/types/RunnerConfigResponse.d.ts +7 -0
  80. package/types/api/types/RunnerConfigServerless.d.ts +15 -0
  81. package/types/api/types/RunnerConfigVariant.d.ts +8 -0
  82. package/types/api/types/RunnerConfigsDeleteResponse.d.ts +4 -0
  83. package/types/api/types/RunnerConfigsListResponse.d.ts +8 -0
  84. package/types/api/types/RunnerConfigsListResponseRunnerConfigsValue.d.ts +7 -0
  85. package/types/api/types/RunnerConfigsRefreshMetadataRequestBody.d.ts +4 -0
  86. package/types/api/types/RunnerConfigsRefreshMetadataResponse.d.ts +4 -0
  87. package/types/api/types/RunnerConfigsServerlessHealthCheckResponse.d.ts +5 -0
  88. package/types/api/types/RunnerConfigsServerlessHealthCheckResponseFailure.d.ts +7 -0
  89. package/types/api/types/RunnerConfigsServerlessHealthCheckResponseFailureFailure.d.ts +7 -0
  90. package/types/api/types/RunnerConfigsServerlessHealthCheckResponseSuccess.d.ts +7 -0
  91. package/types/api/types/RunnerConfigsServerlessHealthCheckResponseSuccessSuccess.d.ts +6 -0
  92. package/types/api/types/RunnerConfigsServerlessMetadataError.d.ts +5 -0
  93. package/types/api/types/RunnerConfigsServerlessMetadataErrorInvalidRequest.d.ts +6 -0
  94. package/types/api/types/RunnerConfigsServerlessMetadataErrorInvalidResponseJson.d.ts +7 -0
  95. package/types/api/types/RunnerConfigsServerlessMetadataErrorInvalidResponseJsonInvalidResponseJson.d.ts +6 -0
  96. package/types/api/types/RunnerConfigsServerlessMetadataErrorInvalidResponseSchema.d.ts +7 -0
  97. package/types/api/types/RunnerConfigsServerlessMetadataErrorInvalidResponseSchemaInvalidResponseSchema.d.ts +7 -0
  98. package/types/api/types/RunnerConfigsServerlessMetadataErrorNonSuccessStatus.d.ts +7 -0
  99. package/types/api/types/RunnerConfigsServerlessMetadataErrorNonSuccessStatusNonSuccessStatus.d.ts +7 -0
  100. package/types/api/types/RunnerConfigsServerlessMetadataErrorRequestFailed.d.ts +6 -0
  101. package/types/api/types/RunnerConfigsServerlessMetadataErrorRequestTimedOut.d.ts +6 -0
  102. package/types/api/types/RunnerConfigsUpsertResponse.d.ts +6 -0
  103. package/types/api/types/RunnersListNamesResponse.d.ts +8 -0
  104. package/types/api/types/RunnersListResponse.d.ts +8 -0
  105. package/types/api/types/index.d.ts +53 -0
  106. package/types/core/auth/BasicAuth.d.ts +8 -0
  107. package/types/core/auth/BearerToken.d.ts +5 -0
  108. package/types/core/auth/index.d.ts +2 -0
  109. package/types/core/fetcher/APIResponse.d.ts +10 -0
  110. package/types/core/fetcher/Fetcher.d.ts +39 -0
  111. package/types/core/fetcher/Supplier.d.ts +4 -0
  112. package/types/core/fetcher/createRequestUrl.d.ts +1 -0
  113. package/types/core/fetcher/getFetchFn.d.ts +4 -0
  114. package/types/core/fetcher/getHeader.d.ts +1 -0
  115. package/types/core/fetcher/getRequestBody.d.ts +7 -0
  116. package/types/core/fetcher/getResponseBody.d.ts +1 -0
  117. package/types/core/fetcher/index.d.ts +5 -0
  118. package/types/core/fetcher/makeRequest.d.ts +1 -0
  119. package/types/core/fetcher/requestWithRetries.d.ts +1 -0
  120. package/types/core/fetcher/signals.d.ts +11 -0
  121. package/types/core/fetcher/stream-wrappers/Node18UniversalStreamWrapper.d.ts +30 -0
  122. package/types/core/fetcher/stream-wrappers/NodePre18StreamWrapper.d.ts +21 -0
  123. package/types/core/fetcher/stream-wrappers/UndiciStreamWrapper.d.ts +31 -0
  124. package/types/core/fetcher/stream-wrappers/chooseStreamWrapper.d.ts +18 -0
  125. package/types/core/index.d.ts +4 -0
  126. package/types/core/json.d.ts +15 -0
  127. package/types/core/runtime/index.d.ts +1 -0
  128. package/types/core/runtime/runtime.d.ts +9 -0
  129. package/types/core/schemas/Schema.d.ts +87 -0
  130. package/types/core/schemas/builders/bigint/bigint.d.ts +2 -0
  131. package/types/core/schemas/builders/bigint/index.d.ts +1 -0
  132. package/types/core/schemas/builders/date/date.d.ts +2 -0
  133. package/types/core/schemas/builders/date/index.d.ts +1 -0
  134. package/types/core/schemas/builders/enum/enum.d.ts +2 -0
  135. package/types/core/schemas/builders/enum/index.d.ts +1 -0
  136. package/types/core/schemas/builders/index.d.ts +14 -0
  137. package/types/core/schemas/builders/lazy/index.d.ts +3 -0
  138. package/types/core/schemas/builders/lazy/lazy.d.ts +5 -0
  139. package/types/core/schemas/builders/lazy/lazyObject.d.ts +3 -0
  140. package/types/core/schemas/builders/list/index.d.ts +1 -0
  141. package/types/core/schemas/builders/list/list.d.ts +2 -0
  142. package/types/core/schemas/builders/literals/booleanLiteral.d.ts +2 -0
  143. package/types/core/schemas/builders/literals/index.d.ts +2 -0
  144. package/types/core/schemas/builders/literals/stringLiteral.d.ts +2 -0
  145. package/types/core/schemas/builders/object/index.d.ts +6 -0
  146. package/types/core/schemas/builders/object/object.d.ts +3 -0
  147. package/types/core/schemas/builders/object/objectWithoutOptionalProperties.d.ts +6 -0
  148. package/types/core/schemas/builders/object/property.d.ts +8 -0
  149. package/types/core/schemas/builders/object/types.d.ts +31 -0
  150. package/types/core/schemas/builders/object-like/getObjectLikeUtils.d.ts +9 -0
  151. package/types/core/schemas/builders/object-like/index.d.ts +2 -0
  152. package/types/core/schemas/builders/object-like/types.d.ts +7 -0
  153. package/types/core/schemas/builders/primitives/any.d.ts +1 -0
  154. package/types/core/schemas/builders/primitives/boolean.d.ts +1 -0
  155. package/types/core/schemas/builders/primitives/index.d.ts +5 -0
  156. package/types/core/schemas/builders/primitives/number.d.ts +1 -0
  157. package/types/core/schemas/builders/primitives/string.d.ts +1 -0
  158. package/types/core/schemas/builders/primitives/unknown.d.ts +1 -0
  159. package/types/core/schemas/builders/record/index.d.ts +2 -0
  160. package/types/core/schemas/builders/record/record.d.ts +3 -0
  161. package/types/core/schemas/builders/record/types.d.ts +4 -0
  162. package/types/core/schemas/builders/schema-utils/JsonError.d.ts +5 -0
  163. package/types/core/schemas/builders/schema-utils/ParseError.d.ts +5 -0
  164. package/types/core/schemas/builders/schema-utils/getSchemaUtils.d.ts +21 -0
  165. package/types/core/schemas/builders/schema-utils/index.d.ts +4 -0
  166. package/types/core/schemas/builders/schema-utils/stringifyValidationErrors.d.ts +2 -0
  167. package/types/core/schemas/builders/set/index.d.ts +1 -0
  168. package/types/core/schemas/builders/set/set.d.ts +2 -0
  169. package/types/core/schemas/builders/undiscriminated-union/index.d.ts +2 -0
  170. package/types/core/schemas/builders/undiscriminated-union/types.d.ts +4 -0
  171. package/types/core/schemas/builders/undiscriminated-union/undiscriminatedUnion.d.ts +3 -0
  172. package/types/core/schemas/builders/union/discriminant.d.ts +5 -0
  173. package/types/core/schemas/builders/union/index.d.ts +4 -0
  174. package/types/core/schemas/builders/union/types.d.ts +13 -0
  175. package/types/core/schemas/builders/union/union.d.ts +4 -0
  176. package/types/core/schemas/index.d.ts +2 -0
  177. package/types/core/schemas/utils/MaybePromise.d.ts +1 -0
  178. package/types/core/schemas/utils/addQuestionMarksToNullableProperties.d.ts +7 -0
  179. package/types/core/schemas/utils/createIdentitySchemaCreator.d.ts +2 -0
  180. package/types/core/schemas/utils/entries.d.ts +1 -0
  181. package/types/core/schemas/utils/filterObject.d.ts +1 -0
  182. package/types/core/schemas/utils/getErrorMessageForIncorrectType.d.ts +1 -0
  183. package/types/core/schemas/utils/isPlainObject.d.ts +1 -0
  184. package/types/core/schemas/utils/keys.d.ts +1 -0
  185. package/types/core/schemas/utils/maybeSkipValidation.d.ts +2 -0
  186. package/types/core/schemas/utils/partition.d.ts +1 -0
  187. package/types/errors/RivetError.d.ts +12 -0
  188. package/types/errors/RivetTimeoutError.d.ts +6 -0
  189. package/types/errors/index.d.ts +2 -0
  190. package/types/index.d.ts +4 -0
  191. package/types/serialization/client/index.d.ts +1 -0
  192. package/types/serialization/client/requests/ActorsCreateRequest.d.ts +18 -0
  193. package/types/serialization/client/requests/ActorsGetOrCreateRequest.d.ts +18 -0
  194. package/types/serialization/client/requests/RunnerConfigsServerlessHealthCheckRequest.d.ts +13 -0
  195. package/types/serialization/client/requests/RunnerConfigsUpsertRequestBody.d.ts +13 -0
  196. package/types/serialization/client/requests/index.d.ts +4 -0
  197. package/types/serialization/index.d.ts +3 -0
  198. package/types/serialization/resources/index.d.ts +2 -0
  199. package/types/serialization/resources/namespaces/client/index.d.ts +1 -0
  200. package/types/serialization/resources/namespaces/client/requests/NamespacesCreateRequest.d.ts +13 -0
  201. package/types/serialization/resources/namespaces/client/requests/index.d.ts +1 -0
  202. package/types/serialization/resources/namespaces/index.d.ts +1 -0
  203. package/types/serialization/types/Actor.d.ts +28 -0
  204. package/types/serialization/types/ActorName.d.ts +12 -0
  205. package/types/serialization/types/ActorsCreateResponse.d.ts +13 -0
  206. package/types/serialization/types/ActorsDeleteResponse.d.ts +10 -0
  207. package/types/serialization/types/ActorsGetOrCreateResponse.d.ts +14 -0
  208. package/types/serialization/types/ActorsKvGetResponse.d.ts +13 -0
  209. package/types/serialization/types/ActorsListNamesResponse.d.ts +15 -0
  210. package/types/serialization/types/ActorsListResponse.d.ts +15 -0
  211. package/types/serialization/types/CrashPolicy.d.ts +10 -0
  212. package/types/serialization/types/Datacenter.d.ts +14 -0
  213. package/types/serialization/types/DatacenterHealth.d.ts +19 -0
  214. package/types/serialization/types/DatacentersListResponse.d.ts +15 -0
  215. package/types/serialization/types/HealthFanoutResponse.d.ts +13 -0
  216. package/types/serialization/types/HealthResponse.d.ts +14 -0
  217. package/types/serialization/types/HealthStatus.d.ts +10 -0
  218. package/types/serialization/types/MetadataGetResponse.d.ts +19 -0
  219. package/types/serialization/types/Namespace.d.ts +16 -0
  220. package/types/serialization/types/NamespaceListResponse.d.ts +15 -0
  221. package/types/serialization/types/NamespacesCreateResponse.d.ts +13 -0
  222. package/types/serialization/types/Pagination.d.ts +12 -0
  223. package/types/serialization/types/RivetId.d.ts +10 -0
  224. package/types/serialization/types/Runner.d.ts +27 -0
  225. package/types/serialization/types/RunnerConfig.d.ts +16 -0
  226. package/types/serialization/types/RunnerConfigKind.d.ts +12 -0
  227. package/types/serialization/types/RunnerConfigKindNormal.d.ts +12 -0
  228. package/types/serialization/types/RunnerConfigKindServerless.d.ts +13 -0
  229. package/types/serialization/types/RunnerConfigKindServerlessServerless.d.ts +19 -0
  230. package/types/serialization/types/RunnerConfigResponse.d.ts +13 -0
  231. package/types/serialization/types/RunnerConfigServerless.d.ts +19 -0
  232. package/types/serialization/types/RunnerConfigVariant.d.ts +10 -0
  233. package/types/serialization/types/RunnerConfigsDeleteResponse.d.ts +10 -0
  234. package/types/serialization/types/RunnerConfigsListResponse.d.ts +15 -0
  235. package/types/serialization/types/RunnerConfigsListResponseRunnerConfigsValue.d.ts +13 -0
  236. package/types/serialization/types/RunnerConfigsRefreshMetadataRequestBody.d.ts +10 -0
  237. package/types/serialization/types/RunnerConfigsRefreshMetadataResponse.d.ts +10 -0
  238. package/types/serialization/types/RunnerConfigsServerlessHealthCheckResponse.d.ts +12 -0
  239. package/types/serialization/types/RunnerConfigsServerlessHealthCheckResponseFailure.d.ts +13 -0
  240. package/types/serialization/types/RunnerConfigsServerlessHealthCheckResponseFailureFailure.d.ts +13 -0
  241. package/types/serialization/types/RunnerConfigsServerlessHealthCheckResponseSuccess.d.ts +13 -0
  242. package/types/serialization/types/RunnerConfigsServerlessHealthCheckResponseSuccessSuccess.d.ts +12 -0
  243. package/types/serialization/types/RunnerConfigsServerlessMetadataError.d.ts +16 -0
  244. package/types/serialization/types/RunnerConfigsServerlessMetadataErrorInvalidRequest.d.ts +12 -0
  245. package/types/serialization/types/RunnerConfigsServerlessMetadataErrorInvalidResponseJson.d.ts +13 -0
  246. package/types/serialization/types/RunnerConfigsServerlessMetadataErrorInvalidResponseJsonInvalidResponseJson.d.ts +12 -0
  247. package/types/serialization/types/RunnerConfigsServerlessMetadataErrorInvalidResponseSchema.d.ts +13 -0
  248. package/types/serialization/types/RunnerConfigsServerlessMetadataErrorInvalidResponseSchemaInvalidResponseSchema.d.ts +13 -0
  249. package/types/serialization/types/RunnerConfigsServerlessMetadataErrorNonSuccessStatus.d.ts +13 -0
  250. package/types/serialization/types/RunnerConfigsServerlessMetadataErrorNonSuccessStatusNonSuccessStatus.d.ts +13 -0
  251. package/types/serialization/types/RunnerConfigsServerlessMetadataErrorRequestFailed.d.ts +12 -0
  252. package/types/serialization/types/RunnerConfigsServerlessMetadataErrorRequestTimedOut.d.ts +12 -0
  253. package/types/serialization/types/RunnerConfigsUpsertResponse.d.ts +12 -0
  254. package/types/serialization/types/RunnersListNamesResponse.d.ts +14 -0
  255. package/types/serialization/types/RunnersListResponse.d.ts +15 -0
  256. package/types/serialization/types/index.d.ts +53 -0
@@ -0,0 +1,4215 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropNames = Object.getOwnPropertyNames;
3
+ var __esm = (fn, res) => function __init() {
4
+ return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
5
+ };
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+
11
+ // src/core/fetcher/stream-wrappers/Node18UniversalStreamWrapper.ts
12
+ var Node18UniversalStreamWrapper_exports = {};
13
+ __export(Node18UniversalStreamWrapper_exports, {
14
+ Node18UniversalStreamWrapper: () => Node18UniversalStreamWrapper
15
+ });
16
+ var Node18UniversalStreamWrapper;
17
+ var init_Node18UniversalStreamWrapper = __esm({
18
+ "src/core/fetcher/stream-wrappers/Node18UniversalStreamWrapper.ts"() {
19
+ "use strict";
20
+ Node18UniversalStreamWrapper = class _Node18UniversalStreamWrapper {
21
+ readableStream;
22
+ reader;
23
+ events;
24
+ paused;
25
+ resumeCallback;
26
+ encoding;
27
+ constructor(readableStream) {
28
+ this.readableStream = readableStream;
29
+ this.reader = this.readableStream.getReader();
30
+ this.events = {
31
+ data: [],
32
+ end: [],
33
+ error: [],
34
+ readable: [],
35
+ close: [],
36
+ pause: [],
37
+ resume: []
38
+ };
39
+ this.paused = false;
40
+ this.resumeCallback = null;
41
+ this.encoding = null;
42
+ }
43
+ on(event, callback) {
44
+ this.events[event]?.push(callback);
45
+ }
46
+ off(event, callback) {
47
+ this.events[event] = this.events[event]?.filter((cb) => cb !== callback);
48
+ }
49
+ pipe(dest) {
50
+ this.on("data", async (chunk) => {
51
+ if (dest instanceof _Node18UniversalStreamWrapper) {
52
+ dest._write(chunk);
53
+ } else if (dest instanceof WritableStream) {
54
+ const writer = dest.getWriter();
55
+ writer.write(chunk).then(() => writer.releaseLock());
56
+ } else {
57
+ dest.write(chunk);
58
+ }
59
+ });
60
+ this.on("end", async () => {
61
+ if (dest instanceof _Node18UniversalStreamWrapper) {
62
+ dest._end();
63
+ } else if (dest instanceof WritableStream) {
64
+ const writer = dest.getWriter();
65
+ writer.close();
66
+ } else {
67
+ dest.end();
68
+ }
69
+ });
70
+ this.on("error", async (error) => {
71
+ if (dest instanceof _Node18UniversalStreamWrapper) {
72
+ dest._error(error);
73
+ } else if (dest instanceof WritableStream) {
74
+ const writer = dest.getWriter();
75
+ writer.abort(error);
76
+ } else {
77
+ dest.destroy(error);
78
+ }
79
+ });
80
+ this._startReading();
81
+ return dest;
82
+ }
83
+ pipeTo(dest) {
84
+ return this.pipe(dest);
85
+ }
86
+ unpipe(dest) {
87
+ this.off("data", async (chunk) => {
88
+ if (dest instanceof _Node18UniversalStreamWrapper) {
89
+ dest._write(chunk);
90
+ } else if (dest instanceof WritableStream) {
91
+ const writer = dest.getWriter();
92
+ writer.write(chunk).then(() => writer.releaseLock());
93
+ } else {
94
+ dest.write(chunk);
95
+ }
96
+ });
97
+ this.off("end", async () => {
98
+ if (dest instanceof _Node18UniversalStreamWrapper) {
99
+ dest._end();
100
+ } else if (dest instanceof WritableStream) {
101
+ const writer = dest.getWriter();
102
+ writer.close();
103
+ } else {
104
+ dest.end();
105
+ }
106
+ });
107
+ this.off("error", async (error) => {
108
+ if (dest instanceof _Node18UniversalStreamWrapper) {
109
+ dest._error(error);
110
+ } else if (dest instanceof WritableStream) {
111
+ const writer = dest.getWriter();
112
+ writer.abort(error);
113
+ } else {
114
+ dest.destroy(error);
115
+ }
116
+ });
117
+ }
118
+ destroy(error) {
119
+ this.reader.cancel(error).then(() => {
120
+ this._emit("close");
121
+ }).catch((err) => {
122
+ this._emit("error", err);
123
+ });
124
+ }
125
+ pause() {
126
+ this.paused = true;
127
+ this._emit("pause");
128
+ }
129
+ resume() {
130
+ if (this.paused) {
131
+ this.paused = false;
132
+ this._emit("resume");
133
+ if (this.resumeCallback) {
134
+ this.resumeCallback();
135
+ this.resumeCallback = null;
136
+ }
137
+ }
138
+ }
139
+ get isPaused() {
140
+ return this.paused;
141
+ }
142
+ async read() {
143
+ if (this.paused) {
144
+ await new Promise((resolve) => {
145
+ this.resumeCallback = resolve;
146
+ });
147
+ }
148
+ const { done, value } = await this.reader.read();
149
+ if (done) {
150
+ return void 0;
151
+ }
152
+ return value;
153
+ }
154
+ setEncoding(encoding) {
155
+ this.encoding = encoding;
156
+ }
157
+ async text() {
158
+ const chunks = [];
159
+ while (true) {
160
+ const { done, value } = await this.reader.read();
161
+ if (done) {
162
+ break;
163
+ }
164
+ if (value) {
165
+ chunks.push(value);
166
+ }
167
+ }
168
+ const decoder = new TextDecoder(this.encoding || "utf-8");
169
+ return decoder.decode(await new Blob(chunks).arrayBuffer());
170
+ }
171
+ async json() {
172
+ const text = await this.text();
173
+ return JSON.parse(text);
174
+ }
175
+ _write(chunk) {
176
+ this._emit("data", chunk);
177
+ }
178
+ _end() {
179
+ this._emit("end");
180
+ }
181
+ _error(error) {
182
+ this._emit("error", error);
183
+ }
184
+ _emit(event, data) {
185
+ if (this.events[event]) {
186
+ for (const callback of this.events[event] || []) {
187
+ callback(data);
188
+ }
189
+ }
190
+ }
191
+ async _startReading() {
192
+ try {
193
+ this._emit("readable");
194
+ while (true) {
195
+ if (this.paused) {
196
+ await new Promise((resolve) => {
197
+ this.resumeCallback = resolve;
198
+ });
199
+ }
200
+ const { done, value } = await this.reader.read();
201
+ if (done) {
202
+ this._emit("end");
203
+ this._emit("close");
204
+ break;
205
+ }
206
+ if (value) {
207
+ this._emit("data", value);
208
+ }
209
+ }
210
+ } catch (error) {
211
+ this._emit("error", error);
212
+ }
213
+ }
214
+ [Symbol.asyncIterator]() {
215
+ return {
216
+ next: async () => {
217
+ if (this.paused) {
218
+ await new Promise((resolve) => {
219
+ this.resumeCallback = resolve;
220
+ });
221
+ }
222
+ const { done, value } = await this.reader.read();
223
+ if (done) {
224
+ return { done: true, value: void 0 };
225
+ }
226
+ return { done: false, value };
227
+ },
228
+ [Symbol.asyncIterator]() {
229
+ return this;
230
+ }
231
+ };
232
+ }
233
+ };
234
+ }
235
+ });
236
+
237
+ // src/core/fetcher/stream-wrappers/UndiciStreamWrapper.ts
238
+ var UndiciStreamWrapper_exports = {};
239
+ __export(UndiciStreamWrapper_exports, {
240
+ UndiciStreamWrapper: () => UndiciStreamWrapper
241
+ });
242
+ var UndiciStreamWrapper;
243
+ var init_UndiciStreamWrapper = __esm({
244
+ "src/core/fetcher/stream-wrappers/UndiciStreamWrapper.ts"() {
245
+ "use strict";
246
+ UndiciStreamWrapper = class _UndiciStreamWrapper {
247
+ readableStream;
248
+ reader;
249
+ events;
250
+ paused;
251
+ resumeCallback;
252
+ encoding;
253
+ constructor(readableStream) {
254
+ this.readableStream = readableStream;
255
+ this.reader = this.readableStream.getReader();
256
+ this.events = {
257
+ data: [],
258
+ end: [],
259
+ error: [],
260
+ readable: [],
261
+ close: [],
262
+ pause: [],
263
+ resume: []
264
+ };
265
+ this.paused = false;
266
+ this.resumeCallback = null;
267
+ this.encoding = null;
268
+ }
269
+ on(event, callback) {
270
+ this.events[event]?.push(callback);
271
+ }
272
+ off(event, callback) {
273
+ this.events[event] = this.events[event]?.filter((cb) => cb !== callback);
274
+ }
275
+ pipe(dest) {
276
+ this.on("data", (chunk) => {
277
+ if (dest instanceof _UndiciStreamWrapper) {
278
+ dest._write(chunk);
279
+ } else {
280
+ const writer = dest.getWriter();
281
+ writer.write(chunk).then(() => writer.releaseLock());
282
+ }
283
+ });
284
+ this.on("end", () => {
285
+ if (dest instanceof _UndiciStreamWrapper) {
286
+ dest._end();
287
+ } else {
288
+ const writer = dest.getWriter();
289
+ writer.close();
290
+ }
291
+ });
292
+ this.on("error", (error) => {
293
+ if (dest instanceof _UndiciStreamWrapper) {
294
+ dest._error(error);
295
+ } else {
296
+ const writer = dest.getWriter();
297
+ writer.abort(error);
298
+ }
299
+ });
300
+ this._startReading();
301
+ return dest;
302
+ }
303
+ pipeTo(dest) {
304
+ return this.pipe(dest);
305
+ }
306
+ unpipe(dest) {
307
+ this.off("data", (chunk) => {
308
+ if (dest instanceof _UndiciStreamWrapper) {
309
+ dest._write(chunk);
310
+ } else {
311
+ const writer = dest.getWriter();
312
+ writer.write(chunk).then(() => writer.releaseLock());
313
+ }
314
+ });
315
+ this.off("end", () => {
316
+ if (dest instanceof _UndiciStreamWrapper) {
317
+ dest._end();
318
+ } else {
319
+ const writer = dest.getWriter();
320
+ writer.close();
321
+ }
322
+ });
323
+ this.off("error", (error) => {
324
+ if (dest instanceof _UndiciStreamWrapper) {
325
+ dest._error(error);
326
+ } else {
327
+ const writer = dest.getWriter();
328
+ writer.abort(error);
329
+ }
330
+ });
331
+ }
332
+ destroy(error) {
333
+ this.reader.cancel(error).then(() => {
334
+ this._emit("close");
335
+ }).catch((err) => {
336
+ this._emit("error", err);
337
+ });
338
+ }
339
+ pause() {
340
+ this.paused = true;
341
+ this._emit("pause");
342
+ }
343
+ resume() {
344
+ if (this.paused) {
345
+ this.paused = false;
346
+ this._emit("resume");
347
+ if (this.resumeCallback) {
348
+ this.resumeCallback();
349
+ this.resumeCallback = null;
350
+ }
351
+ }
352
+ }
353
+ get isPaused() {
354
+ return this.paused;
355
+ }
356
+ async read() {
357
+ if (this.paused) {
358
+ await new Promise((resolve) => {
359
+ this.resumeCallback = resolve;
360
+ });
361
+ }
362
+ const { done, value } = await this.reader.read();
363
+ if (done) {
364
+ return void 0;
365
+ }
366
+ return value;
367
+ }
368
+ setEncoding(encoding) {
369
+ this.encoding = encoding;
370
+ }
371
+ async text() {
372
+ const chunks = [];
373
+ while (true) {
374
+ const { done, value } = await this.reader.read();
375
+ if (done) {
376
+ break;
377
+ }
378
+ if (value) {
379
+ chunks.push(value);
380
+ }
381
+ }
382
+ const decoder = new TextDecoder(this.encoding || "utf-8");
383
+ return decoder.decode(await new Blob(chunks).arrayBuffer());
384
+ }
385
+ async json() {
386
+ const text = await this.text();
387
+ return JSON.parse(text);
388
+ }
389
+ _write(chunk) {
390
+ this._emit("data", chunk);
391
+ }
392
+ _end() {
393
+ this._emit("end");
394
+ }
395
+ _error(error) {
396
+ this._emit("error", error);
397
+ }
398
+ _emit(event, data) {
399
+ if (this.events[event]) {
400
+ for (const callback of this.events[event] || []) {
401
+ callback(data);
402
+ }
403
+ }
404
+ }
405
+ async _startReading() {
406
+ try {
407
+ this._emit("readable");
408
+ while (true) {
409
+ if (this.paused) {
410
+ await new Promise((resolve) => {
411
+ this.resumeCallback = resolve;
412
+ });
413
+ }
414
+ const { done, value } = await this.reader.read();
415
+ if (done) {
416
+ this._emit("end");
417
+ this._emit("close");
418
+ break;
419
+ }
420
+ if (value) {
421
+ this._emit("data", value);
422
+ }
423
+ }
424
+ } catch (error) {
425
+ this._emit("error", error);
426
+ }
427
+ }
428
+ [Symbol.asyncIterator]() {
429
+ return {
430
+ next: async () => {
431
+ if (this.paused) {
432
+ await new Promise((resolve) => {
433
+ this.resumeCallback = resolve;
434
+ });
435
+ }
436
+ const { done, value } = await this.reader.read();
437
+ if (done) {
438
+ return { done: true, value: void 0 };
439
+ }
440
+ return { done: false, value };
441
+ },
442
+ [Symbol.asyncIterator]() {
443
+ return this;
444
+ }
445
+ };
446
+ }
447
+ };
448
+ }
449
+ });
450
+
451
+ // src/core/fetcher/stream-wrappers/NodePre18StreamWrapper.ts
452
+ var NodePre18StreamWrapper_exports = {};
453
+ __export(NodePre18StreamWrapper_exports, {
454
+ NodePre18StreamWrapper: () => NodePre18StreamWrapper
455
+ });
456
+ var NodePre18StreamWrapper;
457
+ var init_NodePre18StreamWrapper = __esm({
458
+ "src/core/fetcher/stream-wrappers/NodePre18StreamWrapper.ts"() {
459
+ "use strict";
460
+ NodePre18StreamWrapper = class {
461
+ readableStream;
462
+ encoding;
463
+ constructor(readableStream) {
464
+ this.readableStream = readableStream;
465
+ }
466
+ on(event, callback) {
467
+ this.readableStream.on(event, callback);
468
+ }
469
+ off(event, callback) {
470
+ this.readableStream.off(event, callback);
471
+ }
472
+ pipe(dest) {
473
+ this.readableStream.pipe(dest);
474
+ return dest;
475
+ }
476
+ pipeTo(dest) {
477
+ return this.pipe(dest);
478
+ }
479
+ unpipe(dest) {
480
+ if (dest) {
481
+ this.readableStream.unpipe(dest);
482
+ } else {
483
+ this.readableStream.unpipe();
484
+ }
485
+ }
486
+ destroy(error) {
487
+ this.readableStream.destroy(error);
488
+ }
489
+ pause() {
490
+ this.readableStream.pause();
491
+ }
492
+ resume() {
493
+ this.readableStream.resume();
494
+ }
495
+ get isPaused() {
496
+ return this.readableStream.isPaused();
497
+ }
498
+ async read() {
499
+ return new Promise((resolve, reject) => {
500
+ const chunk = this.readableStream.read();
501
+ if (chunk) {
502
+ resolve(chunk);
503
+ } else {
504
+ this.readableStream.once("readable", () => {
505
+ const chunk2 = this.readableStream.read();
506
+ resolve(chunk2);
507
+ });
508
+ this.readableStream.once("error", reject);
509
+ }
510
+ });
511
+ }
512
+ setEncoding(encoding) {
513
+ this.readableStream.setEncoding(encoding);
514
+ this.encoding = encoding;
515
+ }
516
+ async text() {
517
+ const chunks = [];
518
+ const encoder = new TextEncoder();
519
+ this.readableStream.setEncoding(this.encoding || "utf-8");
520
+ for await (const chunk of this.readableStream) {
521
+ chunks.push(encoder.encode(chunk));
522
+ }
523
+ const decoder = new TextDecoder(this.encoding || "utf-8");
524
+ return decoder.decode(Buffer.concat(chunks));
525
+ }
526
+ async json() {
527
+ const text = await this.text();
528
+ return JSON.parse(text);
529
+ }
530
+ [Symbol.asyncIterator]() {
531
+ const readableStream = this.readableStream;
532
+ const iterator = readableStream[Symbol.asyncIterator]();
533
+ return {
534
+ async next() {
535
+ const { value, done } = await iterator.next();
536
+ return { value, done };
537
+ },
538
+ [Symbol.asyncIterator]() {
539
+ return this;
540
+ }
541
+ };
542
+ }
543
+ };
544
+ }
545
+ });
546
+
547
+ // src/api/index.ts
548
+ var api_exports = {};
549
+ __export(api_exports, {
550
+ CrashPolicy: () => CrashPolicy,
551
+ HealthStatus: () => HealthStatus,
552
+ RunnerConfigVariant: () => RunnerConfigVariant,
553
+ datacenters: () => datacenters_exports,
554
+ health: () => health_exports,
555
+ metadata: () => metadata_exports,
556
+ namespaces: () => namespaces_exports,
557
+ runners: () => runners_exports
558
+ });
559
+
560
+ // src/api/types/CrashPolicy.ts
561
+ var CrashPolicy = {
562
+ Restart: "restart",
563
+ Sleep: "sleep",
564
+ Destroy: "destroy"
565
+ };
566
+
567
+ // src/api/types/HealthStatus.ts
568
+ var HealthStatus = {
569
+ Ok: "ok",
570
+ Error: "error"
571
+ };
572
+
573
+ // src/api/types/RunnerConfigVariant.ts
574
+ var RunnerConfigVariant = {
575
+ Serverless: "serverless",
576
+ Normal: "normal"
577
+ };
578
+
579
+ // src/api/resources/datacenters/index.ts
580
+ var datacenters_exports = {};
581
+
582
+ // src/api/resources/health/index.ts
583
+ var health_exports = {};
584
+
585
+ // src/api/resources/metadata/index.ts
586
+ var metadata_exports = {};
587
+
588
+ // src/api/resources/namespaces/index.ts
589
+ var namespaces_exports = {};
590
+
591
+ // src/api/resources/runners/index.ts
592
+ var runners_exports = {};
593
+
594
+ // src/core/json.ts
595
+ var toJson = (value, replacer, space) => {
596
+ return JSON.stringify(value, replacer, space);
597
+ };
598
+
599
+ // src/core/fetcher/createRequestUrl.ts
600
+ import qs from "qs";
601
+ function createRequestUrl(baseUrl, queryParameters) {
602
+ return Object.keys(queryParameters ?? {}).length > 0 ? `${baseUrl}?${qs.stringify(queryParameters, { arrayFormat: "repeat" })}` : baseUrl;
603
+ }
604
+
605
+ // src/core/runtime/runtime.ts
606
+ var RUNTIME = evaluateRuntime();
607
+ function evaluateRuntime() {
608
+ const isBrowser = typeof window !== "undefined" && typeof window.document !== "undefined";
609
+ if (isBrowser) {
610
+ return {
611
+ type: "browser",
612
+ version: window.navigator.userAgent
613
+ };
614
+ }
615
+ const isCloudflare = typeof globalThis !== "undefined" && globalThis?.navigator?.userAgent === "Cloudflare-Workers";
616
+ if (isCloudflare) {
617
+ return {
618
+ type: "workerd"
619
+ };
620
+ }
621
+ const isEdgeRuntime = typeof EdgeRuntime === "string";
622
+ if (isEdgeRuntime) {
623
+ return {
624
+ type: "edge-runtime"
625
+ };
626
+ }
627
+ const isWebWorker = typeof self === "object" && // @ts-ignore
628
+ typeof self?.importScripts === "function" && (self.constructor?.name === "DedicatedWorkerGlobalScope" || self.constructor?.name === "ServiceWorkerGlobalScope" || self.constructor?.name === "SharedWorkerGlobalScope");
629
+ if (isWebWorker) {
630
+ return {
631
+ type: "web-worker"
632
+ };
633
+ }
634
+ const isDeno = typeof Deno !== "undefined" && typeof Deno.version !== "undefined" && typeof Deno.version.deno !== "undefined";
635
+ if (isDeno) {
636
+ return {
637
+ type: "deno",
638
+ version: Deno.version.deno
639
+ };
640
+ }
641
+ const isBun = typeof Bun !== "undefined" && typeof Bun.version !== "undefined";
642
+ if (isBun) {
643
+ return {
644
+ type: "bun",
645
+ version: Bun.version
646
+ };
647
+ }
648
+ const isNode = typeof process !== "undefined" && "version" in process && !!process.version && "versions" in process && !!process.versions?.node;
649
+ if (isNode) {
650
+ return {
651
+ type: "node",
652
+ version: process.versions.node,
653
+ parsedVersion: Number(process.versions.node.split(".")[0])
654
+ };
655
+ }
656
+ const isReactNative = typeof navigator !== "undefined" && navigator?.product === "ReactNative";
657
+ if (isReactNative) {
658
+ return {
659
+ type: "react-native"
660
+ };
661
+ }
662
+ return {
663
+ type: "unknown"
664
+ };
665
+ }
666
+
667
+ // src/core/fetcher/getFetchFn.ts
668
+ async function getFetchFn() {
669
+ if (RUNTIME.type === "node" && RUNTIME.parsedVersion != null && RUNTIME.parsedVersion >= 18) {
670
+ return fetch;
671
+ }
672
+ if (RUNTIME.type === "node") {
673
+ return (await import("node-fetch")).default;
674
+ }
675
+ if (typeof fetch == "function") {
676
+ return fetch;
677
+ }
678
+ return (await import("node-fetch")).default;
679
+ }
680
+
681
+ // src/core/fetcher/getRequestBody.ts
682
+ async function getRequestBody({ body, type }) {
683
+ if (type.includes("json")) {
684
+ return toJson(body);
685
+ } else {
686
+ return body;
687
+ }
688
+ }
689
+
690
+ // src/core/fetcher/stream-wrappers/chooseStreamWrapper.ts
691
+ async function chooseStreamWrapper(responseBody) {
692
+ if (RUNTIME.type === "node" && RUNTIME.parsedVersion != null && RUNTIME.parsedVersion >= 18) {
693
+ return new (await Promise.resolve().then(() => (init_Node18UniversalStreamWrapper(), Node18UniversalStreamWrapper_exports))).Node18UniversalStreamWrapper(
694
+ responseBody
695
+ );
696
+ } else if (RUNTIME.type !== "node" && typeof fetch === "function") {
697
+ return new (await Promise.resolve().then(() => (init_UndiciStreamWrapper(), UndiciStreamWrapper_exports))).UndiciStreamWrapper(responseBody);
698
+ } else {
699
+ return new (await Promise.resolve().then(() => (init_NodePre18StreamWrapper(), NodePre18StreamWrapper_exports))).NodePre18StreamWrapper(responseBody);
700
+ }
701
+ }
702
+
703
+ // src/core/fetcher/getResponseBody.ts
704
+ async function getResponseBody(response, responseType) {
705
+ if (response.body != null && responseType === "blob") {
706
+ return await response.blob();
707
+ } else if (response.body != null && responseType === "arrayBuffer") {
708
+ return await response.arrayBuffer();
709
+ } else if (response.body != null && responseType === "sse") {
710
+ return response.body;
711
+ } else if (response.body != null && responseType === "streaming") {
712
+ return chooseStreamWrapper(response.body);
713
+ } else if (response.body != null && responseType === "text") {
714
+ return await response.text();
715
+ } else {
716
+ const text = await response.text();
717
+ if (text.length > 0) {
718
+ try {
719
+ let responseBody = JSON.parse(text);
720
+ return responseBody;
721
+ } catch (err) {
722
+ return {
723
+ ok: false,
724
+ error: {
725
+ reason: "non-json",
726
+ statusCode: response.status,
727
+ rawBody: text
728
+ }
729
+ };
730
+ }
731
+ } else {
732
+ return void 0;
733
+ }
734
+ }
735
+ }
736
+
737
+ // src/core/fetcher/signals.ts
738
+ var TIMEOUT = "timeout";
739
+ function getTimeoutSignal(timeoutMs) {
740
+ const controller = new AbortController();
741
+ const abortId = setTimeout(() => controller.abort(TIMEOUT), timeoutMs);
742
+ return { signal: controller.signal, abortId };
743
+ }
744
+ function anySignal(...args) {
745
+ const signals = args.length === 1 && Array.isArray(args[0]) ? args[0] : args;
746
+ const controller = new AbortController();
747
+ for (const signal of signals) {
748
+ if (signal.aborted) {
749
+ controller.abort(signal?.reason);
750
+ break;
751
+ }
752
+ signal.addEventListener("abort", () => controller.abort(signal?.reason), {
753
+ signal: controller.signal
754
+ });
755
+ }
756
+ return controller.signal;
757
+ }
758
+
759
+ // src/core/fetcher/makeRequest.ts
760
+ var makeRequest = async (fetchFn, url, method, headers, requestBody, timeoutMs, abortSignal, withCredentials, duplex) => {
761
+ const signals = [];
762
+ let timeoutAbortId = void 0;
763
+ if (timeoutMs != null) {
764
+ const { signal, abortId } = getTimeoutSignal(timeoutMs);
765
+ timeoutAbortId = abortId;
766
+ signals.push(signal);
767
+ }
768
+ if (abortSignal != null) {
769
+ signals.push(abortSignal);
770
+ }
771
+ let newSignals = anySignal(signals);
772
+ const response = await fetchFn(url, {
773
+ method,
774
+ headers,
775
+ body: requestBody,
776
+ signal: newSignals,
777
+ credentials: withCredentials ? "include" : void 0,
778
+ // @ts-ignore
779
+ duplex
780
+ });
781
+ if (timeoutAbortId != null) {
782
+ clearTimeout(timeoutAbortId);
783
+ }
784
+ return response;
785
+ };
786
+
787
+ // src/core/fetcher/requestWithRetries.ts
788
+ var INITIAL_RETRY_DELAY = 1e3;
789
+ var MAX_RETRY_DELAY = 6e4;
790
+ var DEFAULT_MAX_RETRIES = 2;
791
+ var JITTER_FACTOR = 0.2;
792
+ function addJitter(delay) {
793
+ const jitterMultiplier = 1 + (Math.random() * 2 - 1) * JITTER_FACTOR;
794
+ return delay * jitterMultiplier;
795
+ }
796
+ async function requestWithRetries(requestFn, maxRetries = DEFAULT_MAX_RETRIES) {
797
+ let response = await requestFn();
798
+ for (let i = 0; i < maxRetries; ++i) {
799
+ if ([408, 429].includes(response.status) || response.status >= 500) {
800
+ const baseDelay = Math.min(INITIAL_RETRY_DELAY * Math.pow(2, i), MAX_RETRY_DELAY);
801
+ const delayWithJitter = addJitter(baseDelay);
802
+ await new Promise((resolve) => setTimeout(resolve, delayWithJitter));
803
+ response = await requestFn();
804
+ } else {
805
+ break;
806
+ }
807
+ }
808
+ return response;
809
+ }
810
+
811
+ // src/core/fetcher/Fetcher.ts
812
+ async function fetcherImpl(args) {
813
+ const headers = {};
814
+ if (args.body !== void 0 && args.contentType != null) {
815
+ headers["Content-Type"] = args.contentType;
816
+ }
817
+ if (args.headers != null) {
818
+ for (const [key, value] of Object.entries(args.headers)) {
819
+ if (value != null) {
820
+ headers[key] = value;
821
+ }
822
+ }
823
+ }
824
+ const url = createRequestUrl(args.url, args.queryParameters);
825
+ const requestBody = await getRequestBody({
826
+ body: args.body,
827
+ type: args.requestType === "json" ? "json" : "other"
828
+ });
829
+ const fetchFn = await getFetchFn();
830
+ try {
831
+ const response = await requestWithRetries(
832
+ async () => makeRequest(
833
+ fetchFn,
834
+ url,
835
+ args.method,
836
+ headers,
837
+ requestBody,
838
+ args.timeoutMs,
839
+ args.abortSignal,
840
+ args.withCredentials,
841
+ args.duplex
842
+ ),
843
+ args.maxRetries
844
+ );
845
+ const responseBody = await getResponseBody(response, args.responseType);
846
+ if (response.status >= 200 && response.status < 400) {
847
+ return {
848
+ ok: true,
849
+ body: responseBody,
850
+ headers: response.headers
851
+ };
852
+ } else {
853
+ return {
854
+ ok: false,
855
+ error: {
856
+ reason: "status-code",
857
+ statusCode: response.status,
858
+ body: responseBody
859
+ }
860
+ };
861
+ }
862
+ } catch (error) {
863
+ if (args.abortSignal != null && args.abortSignal.aborted) {
864
+ return {
865
+ ok: false,
866
+ error: {
867
+ reason: "unknown",
868
+ errorMessage: "The user aborted a request"
869
+ }
870
+ };
871
+ } else if (error instanceof Error && error.name === "AbortError") {
872
+ return {
873
+ ok: false,
874
+ error: {
875
+ reason: "timeout"
876
+ }
877
+ };
878
+ } else if (error instanceof Error) {
879
+ return {
880
+ ok: false,
881
+ error: {
882
+ reason: "unknown",
883
+ errorMessage: error.message
884
+ }
885
+ };
886
+ }
887
+ return {
888
+ ok: false,
889
+ error: {
890
+ reason: "unknown",
891
+ errorMessage: toJson(error)
892
+ }
893
+ };
894
+ }
895
+ }
896
+ var fetcher = fetcherImpl;
897
+
898
+ // src/core/fetcher/Supplier.ts
899
+ var Supplier = {
900
+ get: async (supplier) => {
901
+ if (typeof supplier === "function") {
902
+ return supplier();
903
+ } else {
904
+ return supplier;
905
+ }
906
+ }
907
+ };
908
+
909
+ // src/core/auth/BasicAuth.ts
910
+ import { Base64 } from "js-base64";
911
+
912
+ // src/core/schemas/index.ts
913
+ var schemas_exports = {};
914
+ __export(schemas_exports, {
915
+ JsonError: () => JsonError,
916
+ ParseError: () => ParseError,
917
+ any: () => any,
918
+ bigint: () => bigint,
919
+ boolean: () => boolean,
920
+ booleanLiteral: () => booleanLiteral,
921
+ date: () => date,
922
+ discriminant: () => discriminant,
923
+ enum_: () => enum_,
924
+ getObjectLikeUtils: () => getObjectLikeUtils,
925
+ getObjectUtils: () => getObjectUtils,
926
+ getSchemaUtils: () => getSchemaUtils,
927
+ isProperty: () => isProperty,
928
+ lazy: () => lazy,
929
+ lazyObject: () => lazyObject,
930
+ list: () => list,
931
+ number: () => number,
932
+ object: () => object,
933
+ objectWithoutOptionalProperties: () => objectWithoutOptionalProperties,
934
+ optional: () => optional,
935
+ property: () => property,
936
+ record: () => record,
937
+ set: () => set,
938
+ string: () => string,
939
+ stringLiteral: () => stringLiteral,
940
+ transform: () => transform,
941
+ undiscriminatedUnion: () => undiscriminatedUnion,
942
+ union: () => union,
943
+ unknown: () => unknown,
944
+ withParsedProperties: () => withParsedProperties
945
+ });
946
+
947
+ // src/core/schemas/Schema.ts
948
+ var SchemaType = {
949
+ BIGINT: "bigint",
950
+ DATE: "date",
951
+ ENUM: "enum",
952
+ LIST: "list",
953
+ STRING_LITERAL: "stringLiteral",
954
+ BOOLEAN_LITERAL: "booleanLiteral",
955
+ OBJECT: "object",
956
+ ANY: "any",
957
+ BOOLEAN: "boolean",
958
+ NUMBER: "number",
959
+ STRING: "string",
960
+ UNKNOWN: "unknown",
961
+ RECORD: "record",
962
+ SET: "set",
963
+ UNION: "union",
964
+ UNDISCRIMINATED_UNION: "undiscriminatedUnion",
965
+ NULLABLE: "nullable",
966
+ OPTIONAL: "optional",
967
+ OPTIONAL_NULLABLE: "optionalNullable"
968
+ };
969
+
970
+ // src/core/schemas/utils/getErrorMessageForIncorrectType.ts
971
+ function getErrorMessageForIncorrectType(value, expectedType) {
972
+ return `Expected ${expectedType}. Received ${getTypeAsString(value)}.`;
973
+ }
974
+ function getTypeAsString(value) {
975
+ if (Array.isArray(value)) {
976
+ return "list";
977
+ }
978
+ if (value === null) {
979
+ return "null";
980
+ }
981
+ if (value instanceof BigInt) {
982
+ return "BigInt";
983
+ }
984
+ switch (typeof value) {
985
+ case "string":
986
+ return `"${value}"`;
987
+ case "bigint":
988
+ case "number":
989
+ case "boolean":
990
+ case "undefined":
991
+ return `${value}`;
992
+ }
993
+ return typeof value;
994
+ }
995
+
996
+ // src/core/schemas/utils/maybeSkipValidation.ts
997
+ function maybeSkipValidation(schema) {
998
+ return {
999
+ ...schema,
1000
+ json: transformAndMaybeSkipValidation(schema.json),
1001
+ parse: transformAndMaybeSkipValidation(schema.parse)
1002
+ };
1003
+ }
1004
+ function transformAndMaybeSkipValidation(transform2) {
1005
+ return (value, opts) => {
1006
+ const transformed = transform2(value, opts);
1007
+ const { skipValidation = false } = opts ?? {};
1008
+ if (!transformed.ok && skipValidation) {
1009
+ console.warn(
1010
+ [
1011
+ "Failed to validate.",
1012
+ ...transformed.errors.map(
1013
+ (error) => " - " + (error.path.length > 0 ? `${error.path.join(".")}: ${error.message}` : error.message)
1014
+ )
1015
+ ].join("\n")
1016
+ );
1017
+ return {
1018
+ ok: true,
1019
+ value
1020
+ };
1021
+ } else {
1022
+ return transformed;
1023
+ }
1024
+ };
1025
+ }
1026
+
1027
+ // src/core/schemas/builders/schema-utils/stringifyValidationErrors.ts
1028
+ function stringifyValidationError(error) {
1029
+ if (error.path.length === 0) {
1030
+ return error.message;
1031
+ }
1032
+ return `${error.path.join(" -> ")}: ${error.message}`;
1033
+ }
1034
+
1035
+ // src/core/schemas/builders/schema-utils/JsonError.ts
1036
+ var JsonError = class _JsonError extends Error {
1037
+ constructor(errors) {
1038
+ super(errors.map(stringifyValidationError).join("; "));
1039
+ this.errors = errors;
1040
+ Object.setPrototypeOf(this, _JsonError.prototype);
1041
+ }
1042
+ };
1043
+
1044
+ // src/core/schemas/builders/schema-utils/ParseError.ts
1045
+ var ParseError = class _ParseError extends Error {
1046
+ constructor(errors) {
1047
+ super(errors.map(stringifyValidationError).join("; "));
1048
+ this.errors = errors;
1049
+ Object.setPrototypeOf(this, _ParseError.prototype);
1050
+ }
1051
+ };
1052
+
1053
+ // src/core/schemas/builders/schema-utils/getSchemaUtils.ts
1054
+ function getSchemaUtils(schema) {
1055
+ return {
1056
+ nullable: () => nullable(schema),
1057
+ optional: () => optional(schema),
1058
+ optionalNullable: () => optionalNullable(schema),
1059
+ transform: (transformer) => transform(schema, transformer),
1060
+ parseOrThrow: (raw, opts) => {
1061
+ const parsed = schema.parse(raw, opts);
1062
+ if (parsed.ok) {
1063
+ return parsed.value;
1064
+ }
1065
+ throw new ParseError(parsed.errors);
1066
+ },
1067
+ jsonOrThrow: (parsed, opts) => {
1068
+ const raw = schema.json(parsed, opts);
1069
+ if (raw.ok) {
1070
+ return raw.value;
1071
+ }
1072
+ throw new JsonError(raw.errors);
1073
+ }
1074
+ };
1075
+ }
1076
+ function nullable(schema) {
1077
+ const baseSchema = {
1078
+ parse: (raw, opts) => {
1079
+ if (raw == null) {
1080
+ return {
1081
+ ok: true,
1082
+ value: null
1083
+ };
1084
+ }
1085
+ return schema.parse(raw, opts);
1086
+ },
1087
+ json: (parsed, opts) => {
1088
+ if (parsed == null) {
1089
+ return {
1090
+ ok: true,
1091
+ value: null
1092
+ };
1093
+ }
1094
+ return schema.json(parsed, opts);
1095
+ },
1096
+ getType: () => SchemaType.NULLABLE
1097
+ };
1098
+ return {
1099
+ ...baseSchema,
1100
+ ...getSchemaUtils(baseSchema)
1101
+ };
1102
+ }
1103
+ function optional(schema) {
1104
+ const baseSchema = {
1105
+ parse: (raw, opts) => {
1106
+ if (raw == null) {
1107
+ return {
1108
+ ok: true,
1109
+ value: void 0
1110
+ };
1111
+ }
1112
+ return schema.parse(raw, opts);
1113
+ },
1114
+ json: (parsed, opts) => {
1115
+ if (opts?.omitUndefined && parsed === void 0) {
1116
+ return {
1117
+ ok: true,
1118
+ value: void 0
1119
+ };
1120
+ }
1121
+ if (parsed == null) {
1122
+ return {
1123
+ ok: true,
1124
+ value: null
1125
+ };
1126
+ }
1127
+ return schema.json(parsed, opts);
1128
+ },
1129
+ getType: () => SchemaType.OPTIONAL
1130
+ };
1131
+ return {
1132
+ ...baseSchema,
1133
+ ...getSchemaUtils(baseSchema)
1134
+ };
1135
+ }
1136
+ function optionalNullable(schema) {
1137
+ const baseSchema = {
1138
+ parse: (raw, opts) => {
1139
+ if (raw === void 0) {
1140
+ return {
1141
+ ok: true,
1142
+ value: void 0
1143
+ };
1144
+ }
1145
+ if (raw === null) {
1146
+ return {
1147
+ ok: true,
1148
+ value: null
1149
+ };
1150
+ }
1151
+ return schema.parse(raw, opts);
1152
+ },
1153
+ json: (parsed, opts) => {
1154
+ if (parsed === void 0) {
1155
+ return {
1156
+ ok: true,
1157
+ value: void 0
1158
+ };
1159
+ }
1160
+ if (parsed === null) {
1161
+ return {
1162
+ ok: true,
1163
+ value: null
1164
+ };
1165
+ }
1166
+ return schema.json(parsed, opts);
1167
+ },
1168
+ getType: () => SchemaType.OPTIONAL_NULLABLE
1169
+ };
1170
+ return {
1171
+ ...baseSchema,
1172
+ ...getSchemaUtils(baseSchema)
1173
+ };
1174
+ }
1175
+ function transform(schema, transformer) {
1176
+ const baseSchema = {
1177
+ parse: (raw, opts) => {
1178
+ const parsed = schema.parse(raw, opts);
1179
+ if (!parsed.ok) {
1180
+ return parsed;
1181
+ }
1182
+ return {
1183
+ ok: true,
1184
+ value: transformer.transform(parsed.value)
1185
+ };
1186
+ },
1187
+ json: (transformed, opts) => {
1188
+ const parsed = transformer.untransform(transformed);
1189
+ return schema.json(parsed, opts);
1190
+ },
1191
+ getType: () => schema.getType()
1192
+ };
1193
+ return {
1194
+ ...baseSchema,
1195
+ ...getSchemaUtils(baseSchema)
1196
+ };
1197
+ }
1198
+
1199
+ // src/core/schemas/builders/bigint/bigint.ts
1200
+ function bigint() {
1201
+ const baseSchema = {
1202
+ parse: (raw, { breadcrumbsPrefix = [] } = {}) => {
1203
+ if (typeof raw === "bigint") {
1204
+ return {
1205
+ ok: true,
1206
+ value: raw
1207
+ };
1208
+ }
1209
+ if (typeof raw === "number") {
1210
+ return {
1211
+ ok: true,
1212
+ value: BigInt(raw)
1213
+ };
1214
+ }
1215
+ return {
1216
+ ok: false,
1217
+ errors: [
1218
+ {
1219
+ path: breadcrumbsPrefix,
1220
+ message: getErrorMessageForIncorrectType(raw, "bigint | number")
1221
+ }
1222
+ ]
1223
+ };
1224
+ },
1225
+ json: (bigint2, { breadcrumbsPrefix = [] } = {}) => {
1226
+ if (typeof bigint2 !== "bigint") {
1227
+ return {
1228
+ ok: false,
1229
+ errors: [
1230
+ {
1231
+ path: breadcrumbsPrefix,
1232
+ message: getErrorMessageForIncorrectType(bigint2, "bigint")
1233
+ }
1234
+ ]
1235
+ };
1236
+ }
1237
+ return {
1238
+ ok: true,
1239
+ value: bigint2
1240
+ };
1241
+ },
1242
+ getType: () => SchemaType.BIGINT
1243
+ };
1244
+ return {
1245
+ ...maybeSkipValidation(baseSchema),
1246
+ ...getSchemaUtils(baseSchema)
1247
+ };
1248
+ }
1249
+
1250
+ // src/core/schemas/builders/date/date.ts
1251
+ var ISO_8601_REGEX = /^([+-]?\d{4}(?!\d{2}\b))((-?)((0[1-9]|1[0-2])(\3([12]\d|0[1-9]|3[01]))?|W([0-4]\d|5[0-2])(-?[1-7])?|(00[1-9]|0[1-9]\d|[12]\d{2}|3([0-5]\d|6[1-6])))([T\s]((([01]\d|2[0-3])((:?)[0-5]\d)?|24:?00)([.,]\d+(?!:))?)?(\17[0-5]\d([.,]\d+)?)?([zZ]|([+-])([01]\d|2[0-3]):?([0-5]\d)?)?)?)?$/;
1252
+ function date() {
1253
+ const baseSchema = {
1254
+ parse: (raw, { breadcrumbsPrefix = [] } = {}) => {
1255
+ if (typeof raw !== "string") {
1256
+ return {
1257
+ ok: false,
1258
+ errors: [
1259
+ {
1260
+ path: breadcrumbsPrefix,
1261
+ message: getErrorMessageForIncorrectType(raw, "string")
1262
+ }
1263
+ ]
1264
+ };
1265
+ }
1266
+ if (!ISO_8601_REGEX.test(raw)) {
1267
+ return {
1268
+ ok: false,
1269
+ errors: [
1270
+ {
1271
+ path: breadcrumbsPrefix,
1272
+ message: getErrorMessageForIncorrectType(raw, "ISO 8601 date string")
1273
+ }
1274
+ ]
1275
+ };
1276
+ }
1277
+ return {
1278
+ ok: true,
1279
+ value: new Date(raw)
1280
+ };
1281
+ },
1282
+ json: (date2, { breadcrumbsPrefix = [] } = {}) => {
1283
+ if (date2 instanceof Date) {
1284
+ return {
1285
+ ok: true,
1286
+ value: date2.toISOString()
1287
+ };
1288
+ } else {
1289
+ return {
1290
+ ok: false,
1291
+ errors: [
1292
+ {
1293
+ path: breadcrumbsPrefix,
1294
+ message: getErrorMessageForIncorrectType(date2, "Date object")
1295
+ }
1296
+ ]
1297
+ };
1298
+ }
1299
+ },
1300
+ getType: () => SchemaType.DATE
1301
+ };
1302
+ return {
1303
+ ...maybeSkipValidation(baseSchema),
1304
+ ...getSchemaUtils(baseSchema)
1305
+ };
1306
+ }
1307
+
1308
+ // src/core/schemas/utils/createIdentitySchemaCreator.ts
1309
+ function createIdentitySchemaCreator(schemaType, validate) {
1310
+ return () => {
1311
+ const baseSchema = {
1312
+ parse: validate,
1313
+ json: validate,
1314
+ getType: () => schemaType
1315
+ };
1316
+ return {
1317
+ ...maybeSkipValidation(baseSchema),
1318
+ ...getSchemaUtils(baseSchema)
1319
+ };
1320
+ };
1321
+ }
1322
+
1323
+ // src/core/schemas/builders/enum/enum.ts
1324
+ function enum_(values) {
1325
+ const validValues = new Set(values);
1326
+ const schemaCreator = createIdentitySchemaCreator(
1327
+ SchemaType.ENUM,
1328
+ (value, { allowUnrecognizedEnumValues, breadcrumbsPrefix = [] } = {}) => {
1329
+ if (typeof value !== "string") {
1330
+ return {
1331
+ ok: false,
1332
+ errors: [
1333
+ {
1334
+ path: breadcrumbsPrefix,
1335
+ message: getErrorMessageForIncorrectType(value, "string")
1336
+ }
1337
+ ]
1338
+ };
1339
+ }
1340
+ if (!validValues.has(value) && !allowUnrecognizedEnumValues) {
1341
+ return {
1342
+ ok: false,
1343
+ errors: [
1344
+ {
1345
+ path: breadcrumbsPrefix,
1346
+ message: getErrorMessageForIncorrectType(value, "enum")
1347
+ }
1348
+ ]
1349
+ };
1350
+ }
1351
+ return {
1352
+ ok: true,
1353
+ value
1354
+ };
1355
+ }
1356
+ );
1357
+ return schemaCreator();
1358
+ }
1359
+
1360
+ // src/core/schemas/builders/lazy/lazy.ts
1361
+ function lazy(getter) {
1362
+ const baseSchema = constructLazyBaseSchema(getter);
1363
+ return {
1364
+ ...baseSchema,
1365
+ ...getSchemaUtils(baseSchema)
1366
+ };
1367
+ }
1368
+ function constructLazyBaseSchema(getter) {
1369
+ return {
1370
+ parse: (raw, opts) => getMemoizedSchema(getter).parse(raw, opts),
1371
+ json: (parsed, opts) => getMemoizedSchema(getter).json(parsed, opts),
1372
+ getType: () => getMemoizedSchema(getter).getType()
1373
+ };
1374
+ }
1375
+ function getMemoizedSchema(getter) {
1376
+ const castedGetter = getter;
1377
+ if (castedGetter.__zurg_memoized == null) {
1378
+ castedGetter.__zurg_memoized = getter();
1379
+ }
1380
+ return castedGetter.__zurg_memoized;
1381
+ }
1382
+
1383
+ // src/core/schemas/utils/entries.ts
1384
+ function entries(object2) {
1385
+ return Object.entries(object2);
1386
+ }
1387
+
1388
+ // src/core/schemas/utils/filterObject.ts
1389
+ function filterObject(obj, keysToInclude) {
1390
+ const keysToIncludeSet = new Set(keysToInclude);
1391
+ return Object.entries(obj).reduce(
1392
+ (acc, [key, value]) => {
1393
+ if (keysToIncludeSet.has(key)) {
1394
+ acc[key] = value;
1395
+ }
1396
+ return acc;
1397
+ },
1398
+ {}
1399
+ );
1400
+ }
1401
+
1402
+ // src/core/schemas/utils/isPlainObject.ts
1403
+ function isPlainObject(value) {
1404
+ if (typeof value !== "object" || value === null) {
1405
+ return false;
1406
+ }
1407
+ if (Object.getPrototypeOf(value) === null) {
1408
+ return true;
1409
+ }
1410
+ let proto = value;
1411
+ while (Object.getPrototypeOf(proto) !== null) {
1412
+ proto = Object.getPrototypeOf(proto);
1413
+ }
1414
+ return Object.getPrototypeOf(value) === proto;
1415
+ }
1416
+
1417
+ // src/core/schemas/utils/keys.ts
1418
+ function keys(object2) {
1419
+ return Object.keys(object2);
1420
+ }
1421
+
1422
+ // src/core/schemas/utils/partition.ts
1423
+ function partition(items, predicate) {
1424
+ const trueItems = [], falseItems = [];
1425
+ for (const item of items) {
1426
+ if (predicate(item)) {
1427
+ trueItems.push(item);
1428
+ } else {
1429
+ falseItems.push(item);
1430
+ }
1431
+ }
1432
+ return [trueItems, falseItems];
1433
+ }
1434
+
1435
+ // src/core/schemas/builders/object-like/getObjectLikeUtils.ts
1436
+ function getObjectLikeUtils(schema) {
1437
+ return {
1438
+ withParsedProperties: (properties) => withParsedProperties(schema, properties)
1439
+ };
1440
+ }
1441
+ function withParsedProperties(objectLike, properties) {
1442
+ const objectSchema = {
1443
+ parse: (raw, opts) => {
1444
+ const parsedObject = objectLike.parse(raw, opts);
1445
+ if (!parsedObject.ok) {
1446
+ return parsedObject;
1447
+ }
1448
+ const additionalProperties = Object.entries(properties).reduce(
1449
+ (processed, [key, value]) => {
1450
+ return {
1451
+ ...processed,
1452
+ [key]: typeof value === "function" ? value(parsedObject.value) : value
1453
+ };
1454
+ },
1455
+ {}
1456
+ );
1457
+ return {
1458
+ ok: true,
1459
+ value: {
1460
+ ...parsedObject.value,
1461
+ ...additionalProperties
1462
+ }
1463
+ };
1464
+ },
1465
+ json: (parsed, opts) => {
1466
+ if (!isPlainObject(parsed)) {
1467
+ return {
1468
+ ok: false,
1469
+ errors: [
1470
+ {
1471
+ path: opts?.breadcrumbsPrefix ?? [],
1472
+ message: getErrorMessageForIncorrectType(parsed, "object")
1473
+ }
1474
+ ]
1475
+ };
1476
+ }
1477
+ const addedPropertyKeys = new Set(Object.keys(properties));
1478
+ const parsedWithoutAddedProperties = filterObject(
1479
+ parsed,
1480
+ Object.keys(parsed).filter((key) => !addedPropertyKeys.has(key))
1481
+ );
1482
+ return objectLike.json(parsedWithoutAddedProperties, opts);
1483
+ },
1484
+ getType: () => objectLike.getType()
1485
+ };
1486
+ return {
1487
+ ...objectSchema,
1488
+ ...getSchemaUtils(objectSchema),
1489
+ ...getObjectLikeUtils(objectSchema)
1490
+ };
1491
+ }
1492
+
1493
+ // src/core/schemas/builders/object/property.ts
1494
+ function property(rawKey, valueSchema) {
1495
+ return {
1496
+ rawKey,
1497
+ valueSchema,
1498
+ isProperty: true
1499
+ };
1500
+ }
1501
+ function isProperty(maybeProperty) {
1502
+ return maybeProperty.isProperty;
1503
+ }
1504
+
1505
+ // src/core/schemas/builders/object/object.ts
1506
+ function object(schemas) {
1507
+ const baseSchema = {
1508
+ _getRawProperties: () => Object.entries(schemas).map(
1509
+ ([parsedKey, propertySchema]) => isProperty(propertySchema) ? propertySchema.rawKey : parsedKey
1510
+ ),
1511
+ _getParsedProperties: () => keys(schemas),
1512
+ parse: (raw, opts) => {
1513
+ const rawKeyToProperty = {};
1514
+ const requiredKeys = [];
1515
+ for (const [parsedKey, schemaOrObjectProperty] of entries(schemas)) {
1516
+ const rawKey = isProperty(schemaOrObjectProperty) ? schemaOrObjectProperty.rawKey : parsedKey;
1517
+ const valueSchema = isProperty(schemaOrObjectProperty) ? schemaOrObjectProperty.valueSchema : schemaOrObjectProperty;
1518
+ const property2 = {
1519
+ rawKey,
1520
+ parsedKey,
1521
+ valueSchema
1522
+ };
1523
+ rawKeyToProperty[rawKey] = property2;
1524
+ if (isSchemaRequired(valueSchema)) {
1525
+ requiredKeys.push(rawKey);
1526
+ }
1527
+ }
1528
+ return validateAndTransformObject({
1529
+ value: raw,
1530
+ requiredKeys,
1531
+ getProperty: (rawKey) => {
1532
+ const property2 = rawKeyToProperty[rawKey];
1533
+ if (property2 == null) {
1534
+ return void 0;
1535
+ }
1536
+ return {
1537
+ transformedKey: property2.parsedKey,
1538
+ transform: (propertyValue) => property2.valueSchema.parse(propertyValue, {
1539
+ ...opts,
1540
+ breadcrumbsPrefix: [...opts?.breadcrumbsPrefix ?? [], rawKey]
1541
+ })
1542
+ };
1543
+ },
1544
+ unrecognizedObjectKeys: opts?.unrecognizedObjectKeys,
1545
+ skipValidation: opts?.skipValidation,
1546
+ breadcrumbsPrefix: opts?.breadcrumbsPrefix,
1547
+ omitUndefined: opts?.omitUndefined
1548
+ });
1549
+ },
1550
+ json: (parsed, opts) => {
1551
+ const requiredKeys = [];
1552
+ for (const [parsedKey, schemaOrObjectProperty] of entries(schemas)) {
1553
+ const valueSchema = isProperty(schemaOrObjectProperty) ? schemaOrObjectProperty.valueSchema : schemaOrObjectProperty;
1554
+ if (isSchemaRequired(valueSchema)) {
1555
+ requiredKeys.push(parsedKey);
1556
+ }
1557
+ }
1558
+ return validateAndTransformObject({
1559
+ value: parsed,
1560
+ requiredKeys,
1561
+ getProperty: (parsedKey) => {
1562
+ const property2 = schemas[parsedKey];
1563
+ if (property2 == null) {
1564
+ return void 0;
1565
+ }
1566
+ if (isProperty(property2)) {
1567
+ return {
1568
+ transformedKey: property2.rawKey,
1569
+ transform: (propertyValue) => property2.valueSchema.json(propertyValue, {
1570
+ ...opts,
1571
+ breadcrumbsPrefix: [...opts?.breadcrumbsPrefix ?? [], parsedKey]
1572
+ })
1573
+ };
1574
+ } else {
1575
+ return {
1576
+ transformedKey: parsedKey,
1577
+ transform: (propertyValue) => property2.json(propertyValue, {
1578
+ ...opts,
1579
+ breadcrumbsPrefix: [...opts?.breadcrumbsPrefix ?? [], parsedKey]
1580
+ })
1581
+ };
1582
+ }
1583
+ },
1584
+ unrecognizedObjectKeys: opts?.unrecognizedObjectKeys,
1585
+ skipValidation: opts?.skipValidation,
1586
+ breadcrumbsPrefix: opts?.breadcrumbsPrefix,
1587
+ omitUndefined: opts?.omitUndefined
1588
+ });
1589
+ },
1590
+ getType: () => SchemaType.OBJECT
1591
+ };
1592
+ return {
1593
+ ...maybeSkipValidation(baseSchema),
1594
+ ...getSchemaUtils(baseSchema),
1595
+ ...getObjectLikeUtils(baseSchema),
1596
+ ...getObjectUtils(baseSchema)
1597
+ };
1598
+ }
1599
+ function validateAndTransformObject({
1600
+ value,
1601
+ requiredKeys,
1602
+ getProperty,
1603
+ unrecognizedObjectKeys = "fail",
1604
+ skipValidation = false,
1605
+ breadcrumbsPrefix = []
1606
+ }) {
1607
+ if (!isPlainObject(value)) {
1608
+ return {
1609
+ ok: false,
1610
+ errors: [
1611
+ {
1612
+ path: breadcrumbsPrefix,
1613
+ message: getErrorMessageForIncorrectType(value, "object")
1614
+ }
1615
+ ]
1616
+ };
1617
+ }
1618
+ const missingRequiredKeys = new Set(requiredKeys);
1619
+ const errors = [];
1620
+ const transformed = {};
1621
+ for (const [preTransformedKey, preTransformedItemValue] of Object.entries(value)) {
1622
+ const property2 = getProperty(preTransformedKey);
1623
+ if (property2 != null) {
1624
+ missingRequiredKeys.delete(preTransformedKey);
1625
+ const value2 = property2.transform(preTransformedItemValue);
1626
+ if (value2.ok) {
1627
+ transformed[property2.transformedKey] = value2.value;
1628
+ } else {
1629
+ transformed[preTransformedKey] = preTransformedItemValue;
1630
+ errors.push(...value2.errors);
1631
+ }
1632
+ } else {
1633
+ switch (unrecognizedObjectKeys) {
1634
+ case "fail":
1635
+ errors.push({
1636
+ path: [...breadcrumbsPrefix, preTransformedKey],
1637
+ message: `Unexpected key "${preTransformedKey}"`
1638
+ });
1639
+ break;
1640
+ case "strip":
1641
+ break;
1642
+ case "passthrough":
1643
+ transformed[preTransformedKey] = preTransformedItemValue;
1644
+ break;
1645
+ }
1646
+ }
1647
+ }
1648
+ errors.push(
1649
+ ...requiredKeys.filter((key) => missingRequiredKeys.has(key)).map((key) => ({
1650
+ path: breadcrumbsPrefix,
1651
+ message: `Missing required key "${key}"`
1652
+ }))
1653
+ );
1654
+ if (errors.length === 0 || skipValidation) {
1655
+ return {
1656
+ ok: true,
1657
+ value: transformed
1658
+ };
1659
+ } else {
1660
+ return {
1661
+ ok: false,
1662
+ errors
1663
+ };
1664
+ }
1665
+ }
1666
+ function getObjectUtils(schema) {
1667
+ return {
1668
+ extend: (extension) => {
1669
+ const baseSchema = {
1670
+ _getParsedProperties: () => [...schema._getParsedProperties(), ...extension._getParsedProperties()],
1671
+ _getRawProperties: () => [...schema._getRawProperties(), ...extension._getRawProperties()],
1672
+ parse: (raw, opts) => {
1673
+ return validateAndTransformExtendedObject({
1674
+ extensionKeys: extension._getRawProperties(),
1675
+ value: raw,
1676
+ transformBase: (rawBase) => schema.parse(rawBase, opts),
1677
+ transformExtension: (rawExtension) => extension.parse(rawExtension, opts)
1678
+ });
1679
+ },
1680
+ json: (parsed, opts) => {
1681
+ return validateAndTransformExtendedObject({
1682
+ extensionKeys: extension._getParsedProperties(),
1683
+ value: parsed,
1684
+ transformBase: (parsedBase) => schema.json(parsedBase, opts),
1685
+ transformExtension: (parsedExtension) => extension.json(parsedExtension, opts)
1686
+ });
1687
+ },
1688
+ getType: () => SchemaType.OBJECT
1689
+ };
1690
+ return {
1691
+ ...baseSchema,
1692
+ ...getSchemaUtils(baseSchema),
1693
+ ...getObjectLikeUtils(baseSchema),
1694
+ ...getObjectUtils(baseSchema)
1695
+ };
1696
+ },
1697
+ passthrough: () => {
1698
+ const baseSchema = {
1699
+ _getParsedProperties: () => schema._getParsedProperties(),
1700
+ _getRawProperties: () => schema._getRawProperties(),
1701
+ parse: (raw, opts) => {
1702
+ const transformed = schema.parse(raw, { ...opts, unrecognizedObjectKeys: "passthrough" });
1703
+ if (!transformed.ok) {
1704
+ return transformed;
1705
+ }
1706
+ return {
1707
+ ok: true,
1708
+ value: {
1709
+ ...raw,
1710
+ ...transformed.value
1711
+ }
1712
+ };
1713
+ },
1714
+ json: (parsed, opts) => {
1715
+ const transformed = schema.json(parsed, { ...opts, unrecognizedObjectKeys: "passthrough" });
1716
+ if (!transformed.ok) {
1717
+ return transformed;
1718
+ }
1719
+ return {
1720
+ ok: true,
1721
+ value: {
1722
+ ...parsed,
1723
+ ...transformed.value
1724
+ }
1725
+ };
1726
+ },
1727
+ getType: () => SchemaType.OBJECT
1728
+ };
1729
+ return {
1730
+ ...baseSchema,
1731
+ ...getSchemaUtils(baseSchema),
1732
+ ...getObjectLikeUtils(baseSchema),
1733
+ ...getObjectUtils(baseSchema)
1734
+ };
1735
+ }
1736
+ };
1737
+ }
1738
+ function validateAndTransformExtendedObject({
1739
+ extensionKeys,
1740
+ value,
1741
+ transformBase,
1742
+ transformExtension
1743
+ }) {
1744
+ const extensionPropertiesSet = new Set(extensionKeys);
1745
+ const [extensionProperties, baseProperties] = partition(
1746
+ keys(value),
1747
+ (key) => extensionPropertiesSet.has(key)
1748
+ );
1749
+ const transformedBase = transformBase(filterObject(value, baseProperties));
1750
+ const transformedExtension = transformExtension(filterObject(value, extensionProperties));
1751
+ if (transformedBase.ok && transformedExtension.ok) {
1752
+ return {
1753
+ ok: true,
1754
+ value: {
1755
+ ...transformedBase.value,
1756
+ ...transformedExtension.value
1757
+ }
1758
+ };
1759
+ } else {
1760
+ return {
1761
+ ok: false,
1762
+ errors: [
1763
+ ...transformedBase.ok ? [] : transformedBase.errors,
1764
+ ...transformedExtension.ok ? [] : transformedExtension.errors
1765
+ ]
1766
+ };
1767
+ }
1768
+ }
1769
+ function isSchemaRequired(schema) {
1770
+ return !isSchemaOptional(schema);
1771
+ }
1772
+ function isSchemaOptional(schema) {
1773
+ switch (schema.getType()) {
1774
+ case SchemaType.ANY:
1775
+ case SchemaType.UNKNOWN:
1776
+ case SchemaType.OPTIONAL:
1777
+ case SchemaType.OPTIONAL_NULLABLE:
1778
+ return true;
1779
+ default:
1780
+ return false;
1781
+ }
1782
+ }
1783
+
1784
+ // src/core/schemas/builders/object/objectWithoutOptionalProperties.ts
1785
+ function objectWithoutOptionalProperties(schemas) {
1786
+ return object(schemas);
1787
+ }
1788
+
1789
+ // src/core/schemas/builders/lazy/lazyObject.ts
1790
+ function lazyObject(getter) {
1791
+ const baseSchema = {
1792
+ ...constructLazyBaseSchema(getter),
1793
+ _getRawProperties: () => getMemoizedSchema(getter)._getRawProperties(),
1794
+ _getParsedProperties: () => getMemoizedSchema(getter)._getParsedProperties()
1795
+ };
1796
+ return {
1797
+ ...baseSchema,
1798
+ ...getSchemaUtils(baseSchema),
1799
+ ...getObjectLikeUtils(baseSchema),
1800
+ ...getObjectUtils(baseSchema)
1801
+ };
1802
+ }
1803
+
1804
+ // src/core/schemas/builders/list/list.ts
1805
+ function list(schema) {
1806
+ const baseSchema = {
1807
+ parse: (raw, opts) => validateAndTransformArray(
1808
+ raw,
1809
+ (item, index) => schema.parse(item, {
1810
+ ...opts,
1811
+ breadcrumbsPrefix: [...opts?.breadcrumbsPrefix ?? [], `[${index}]`]
1812
+ })
1813
+ ),
1814
+ json: (parsed, opts) => validateAndTransformArray(
1815
+ parsed,
1816
+ (item, index) => schema.json(item, {
1817
+ ...opts,
1818
+ breadcrumbsPrefix: [...opts?.breadcrumbsPrefix ?? [], `[${index}]`]
1819
+ })
1820
+ ),
1821
+ getType: () => SchemaType.LIST
1822
+ };
1823
+ return {
1824
+ ...maybeSkipValidation(baseSchema),
1825
+ ...getSchemaUtils(baseSchema)
1826
+ };
1827
+ }
1828
+ function validateAndTransformArray(value, transformItem) {
1829
+ if (!Array.isArray(value)) {
1830
+ return {
1831
+ ok: false,
1832
+ errors: [
1833
+ {
1834
+ message: getErrorMessageForIncorrectType(value, "list"),
1835
+ path: []
1836
+ }
1837
+ ]
1838
+ };
1839
+ }
1840
+ const maybeValidItems = value.map((item, index) => transformItem(item, index));
1841
+ return maybeValidItems.reduce(
1842
+ (acc, item) => {
1843
+ if (acc.ok && item.ok) {
1844
+ return {
1845
+ ok: true,
1846
+ value: [...acc.value, item.value]
1847
+ };
1848
+ }
1849
+ const errors = [];
1850
+ if (!acc.ok) {
1851
+ errors.push(...acc.errors);
1852
+ }
1853
+ if (!item.ok) {
1854
+ errors.push(...item.errors);
1855
+ }
1856
+ return {
1857
+ ok: false,
1858
+ errors
1859
+ };
1860
+ },
1861
+ { ok: true, value: [] }
1862
+ );
1863
+ }
1864
+
1865
+ // src/core/schemas/builders/literals/stringLiteral.ts
1866
+ function stringLiteral(literal) {
1867
+ const schemaCreator = createIdentitySchemaCreator(
1868
+ SchemaType.STRING_LITERAL,
1869
+ (value, { breadcrumbsPrefix = [] } = {}) => {
1870
+ if (value === literal) {
1871
+ return {
1872
+ ok: true,
1873
+ value: literal
1874
+ };
1875
+ } else {
1876
+ return {
1877
+ ok: false,
1878
+ errors: [
1879
+ {
1880
+ path: breadcrumbsPrefix,
1881
+ message: getErrorMessageForIncorrectType(value, `"${literal}"`)
1882
+ }
1883
+ ]
1884
+ };
1885
+ }
1886
+ }
1887
+ );
1888
+ return schemaCreator();
1889
+ }
1890
+
1891
+ // src/core/schemas/builders/literals/booleanLiteral.ts
1892
+ function booleanLiteral(literal) {
1893
+ const schemaCreator = createIdentitySchemaCreator(
1894
+ SchemaType.BOOLEAN_LITERAL,
1895
+ (value, { breadcrumbsPrefix = [] } = {}) => {
1896
+ if (value === literal) {
1897
+ return {
1898
+ ok: true,
1899
+ value: literal
1900
+ };
1901
+ } else {
1902
+ return {
1903
+ ok: false,
1904
+ errors: [
1905
+ {
1906
+ path: breadcrumbsPrefix,
1907
+ message: getErrorMessageForIncorrectType(value, `${literal.toString()}`)
1908
+ }
1909
+ ]
1910
+ };
1911
+ }
1912
+ }
1913
+ );
1914
+ return schemaCreator();
1915
+ }
1916
+
1917
+ // src/core/schemas/builders/primitives/any.ts
1918
+ var any = createIdentitySchemaCreator(SchemaType.ANY, (value) => ({ ok: true, value }));
1919
+
1920
+ // src/core/schemas/builders/primitives/boolean.ts
1921
+ var boolean = createIdentitySchemaCreator(
1922
+ SchemaType.BOOLEAN,
1923
+ (value, { breadcrumbsPrefix = [] } = {}) => {
1924
+ if (typeof value === "boolean") {
1925
+ return {
1926
+ ok: true,
1927
+ value
1928
+ };
1929
+ } else {
1930
+ return {
1931
+ ok: false,
1932
+ errors: [
1933
+ {
1934
+ path: breadcrumbsPrefix,
1935
+ message: getErrorMessageForIncorrectType(value, "boolean")
1936
+ }
1937
+ ]
1938
+ };
1939
+ }
1940
+ }
1941
+ );
1942
+
1943
+ // src/core/schemas/builders/primitives/number.ts
1944
+ var number = createIdentitySchemaCreator(
1945
+ SchemaType.NUMBER,
1946
+ (value, { breadcrumbsPrefix = [] } = {}) => {
1947
+ if (typeof value === "number") {
1948
+ return {
1949
+ ok: true,
1950
+ value
1951
+ };
1952
+ } else {
1953
+ return {
1954
+ ok: false,
1955
+ errors: [
1956
+ {
1957
+ path: breadcrumbsPrefix,
1958
+ message: getErrorMessageForIncorrectType(value, "number")
1959
+ }
1960
+ ]
1961
+ };
1962
+ }
1963
+ }
1964
+ );
1965
+
1966
+ // src/core/schemas/builders/primitives/string.ts
1967
+ var string = createIdentitySchemaCreator(
1968
+ SchemaType.STRING,
1969
+ (value, { breadcrumbsPrefix = [] } = {}) => {
1970
+ if (typeof value === "string") {
1971
+ return {
1972
+ ok: true,
1973
+ value
1974
+ };
1975
+ } else {
1976
+ return {
1977
+ ok: false,
1978
+ errors: [
1979
+ {
1980
+ path: breadcrumbsPrefix,
1981
+ message: getErrorMessageForIncorrectType(value, "string")
1982
+ }
1983
+ ]
1984
+ };
1985
+ }
1986
+ }
1987
+ );
1988
+
1989
+ // src/core/schemas/builders/primitives/unknown.ts
1990
+ var unknown = createIdentitySchemaCreator(SchemaType.UNKNOWN, (value) => ({ ok: true, value }));
1991
+
1992
+ // src/core/schemas/builders/record/record.ts
1993
+ function record(keySchema, valueSchema) {
1994
+ const baseSchema = {
1995
+ parse: (raw, opts) => {
1996
+ return validateAndTransformRecord({
1997
+ value: raw,
1998
+ isKeyNumeric: keySchema.getType() === SchemaType.NUMBER,
1999
+ transformKey: (key) => keySchema.parse(key, {
2000
+ ...opts,
2001
+ breadcrumbsPrefix: [...opts?.breadcrumbsPrefix ?? [], `${key} (key)`]
2002
+ }),
2003
+ transformValue: (value, key) => valueSchema.parse(value, {
2004
+ ...opts,
2005
+ breadcrumbsPrefix: [...opts?.breadcrumbsPrefix ?? [], `${key}`]
2006
+ }),
2007
+ breadcrumbsPrefix: opts?.breadcrumbsPrefix
2008
+ });
2009
+ },
2010
+ json: (parsed, opts) => {
2011
+ return validateAndTransformRecord({
2012
+ value: parsed,
2013
+ isKeyNumeric: keySchema.getType() === SchemaType.NUMBER,
2014
+ transformKey: (key) => keySchema.json(key, {
2015
+ ...opts,
2016
+ breadcrumbsPrefix: [...opts?.breadcrumbsPrefix ?? [], `${key} (key)`]
2017
+ }),
2018
+ transformValue: (value, key) => valueSchema.json(value, {
2019
+ ...opts,
2020
+ breadcrumbsPrefix: [...opts?.breadcrumbsPrefix ?? [], `${key}`]
2021
+ }),
2022
+ breadcrumbsPrefix: opts?.breadcrumbsPrefix
2023
+ });
2024
+ },
2025
+ getType: () => SchemaType.RECORD
2026
+ };
2027
+ return {
2028
+ ...maybeSkipValidation(baseSchema),
2029
+ ...getSchemaUtils(baseSchema)
2030
+ };
2031
+ }
2032
+ function validateAndTransformRecord({
2033
+ value,
2034
+ isKeyNumeric,
2035
+ transformKey,
2036
+ transformValue,
2037
+ breadcrumbsPrefix = []
2038
+ }) {
2039
+ if (!isPlainObject(value)) {
2040
+ return {
2041
+ ok: false,
2042
+ errors: [
2043
+ {
2044
+ path: breadcrumbsPrefix,
2045
+ message: getErrorMessageForIncorrectType(value, "object")
2046
+ }
2047
+ ]
2048
+ };
2049
+ }
2050
+ return entries(value).reduce(
2051
+ (accPromise, [stringKey, value2]) => {
2052
+ if (value2 === void 0) {
2053
+ return accPromise;
2054
+ }
2055
+ const acc = accPromise;
2056
+ let key = stringKey;
2057
+ if (isKeyNumeric) {
2058
+ const numberKey = stringKey.length > 0 ? Number(stringKey) : NaN;
2059
+ if (!isNaN(numberKey)) {
2060
+ key = numberKey;
2061
+ }
2062
+ }
2063
+ const transformedKey = transformKey(key);
2064
+ const transformedValue = transformValue(value2, key);
2065
+ if (acc.ok && transformedKey.ok && transformedValue.ok) {
2066
+ return {
2067
+ ok: true,
2068
+ value: {
2069
+ ...acc.value,
2070
+ [transformedKey.value]: transformedValue.value
2071
+ }
2072
+ };
2073
+ }
2074
+ const errors = [];
2075
+ if (!acc.ok) {
2076
+ errors.push(...acc.errors);
2077
+ }
2078
+ if (!transformedKey.ok) {
2079
+ errors.push(...transformedKey.errors);
2080
+ }
2081
+ if (!transformedValue.ok) {
2082
+ errors.push(...transformedValue.errors);
2083
+ }
2084
+ return {
2085
+ ok: false,
2086
+ errors
2087
+ };
2088
+ },
2089
+ { ok: true, value: {} }
2090
+ );
2091
+ }
2092
+
2093
+ // src/core/schemas/builders/set/set.ts
2094
+ function set(schema) {
2095
+ const listSchema = list(schema);
2096
+ const baseSchema = {
2097
+ parse: (raw, opts) => {
2098
+ const parsedList = listSchema.parse(raw, opts);
2099
+ if (parsedList.ok) {
2100
+ return {
2101
+ ok: true,
2102
+ value: new Set(parsedList.value)
2103
+ };
2104
+ } else {
2105
+ return parsedList;
2106
+ }
2107
+ },
2108
+ json: (parsed, opts) => {
2109
+ if (!(parsed instanceof Set)) {
2110
+ return {
2111
+ ok: false,
2112
+ errors: [
2113
+ {
2114
+ path: opts?.breadcrumbsPrefix ?? [],
2115
+ message: getErrorMessageForIncorrectType(parsed, "Set")
2116
+ }
2117
+ ]
2118
+ };
2119
+ }
2120
+ const jsonList = listSchema.json([...parsed], opts);
2121
+ return jsonList;
2122
+ },
2123
+ getType: () => SchemaType.SET
2124
+ };
2125
+ return {
2126
+ ...maybeSkipValidation(baseSchema),
2127
+ ...getSchemaUtils(baseSchema)
2128
+ };
2129
+ }
2130
+
2131
+ // src/core/schemas/builders/undiscriminated-union/undiscriminatedUnion.ts
2132
+ function undiscriminatedUnion(schemas) {
2133
+ const baseSchema = {
2134
+ parse: (raw, opts) => {
2135
+ return validateAndTransformUndiscriminatedUnion(
2136
+ (schema, opts2) => schema.parse(raw, opts2),
2137
+ schemas,
2138
+ opts
2139
+ );
2140
+ },
2141
+ json: (parsed, opts) => {
2142
+ return validateAndTransformUndiscriminatedUnion(
2143
+ (schema, opts2) => schema.json(parsed, opts2),
2144
+ schemas,
2145
+ opts
2146
+ );
2147
+ },
2148
+ getType: () => SchemaType.UNDISCRIMINATED_UNION
2149
+ };
2150
+ return {
2151
+ ...maybeSkipValidation(baseSchema),
2152
+ ...getSchemaUtils(baseSchema)
2153
+ };
2154
+ }
2155
+ function validateAndTransformUndiscriminatedUnion(transform2, schemas, opts) {
2156
+ const errors = [];
2157
+ for (const [index, schema] of schemas.entries()) {
2158
+ const transformed = transform2(schema, { ...opts, skipValidation: false });
2159
+ if (transformed.ok) {
2160
+ return transformed;
2161
+ } else {
2162
+ for (const error of transformed.errors) {
2163
+ errors.push({
2164
+ path: error.path,
2165
+ message: `[Variant ${index}] ${error.message}`
2166
+ });
2167
+ }
2168
+ }
2169
+ }
2170
+ return {
2171
+ ok: false,
2172
+ errors
2173
+ };
2174
+ }
2175
+
2176
+ // src/core/schemas/builders/union/discriminant.ts
2177
+ function discriminant(parsedDiscriminant, rawDiscriminant) {
2178
+ return {
2179
+ parsedDiscriminant,
2180
+ rawDiscriminant
2181
+ };
2182
+ }
2183
+
2184
+ // src/core/schemas/builders/union/union.ts
2185
+ function union(discriminant2, union2) {
2186
+ const rawDiscriminant = typeof discriminant2 === "string" ? discriminant2 : discriminant2.rawDiscriminant;
2187
+ const parsedDiscriminant = typeof discriminant2 === "string" ? discriminant2 : discriminant2.parsedDiscriminant;
2188
+ const discriminantValueSchema = enum_(keys(union2));
2189
+ const baseSchema = {
2190
+ parse: (raw, opts) => {
2191
+ return transformAndValidateUnion({
2192
+ value: raw,
2193
+ discriminant: rawDiscriminant,
2194
+ transformedDiscriminant: parsedDiscriminant,
2195
+ transformDiscriminantValue: (discriminantValue) => discriminantValueSchema.parse(discriminantValue, {
2196
+ allowUnrecognizedEnumValues: opts?.allowUnrecognizedUnionMembers,
2197
+ breadcrumbsPrefix: [...opts?.breadcrumbsPrefix ?? [], rawDiscriminant]
2198
+ }),
2199
+ getAdditionalPropertiesSchema: (discriminantValue) => union2[discriminantValue],
2200
+ allowUnrecognizedUnionMembers: opts?.allowUnrecognizedUnionMembers,
2201
+ transformAdditionalProperties: (additionalProperties, additionalPropertiesSchema) => additionalPropertiesSchema.parse(additionalProperties, opts),
2202
+ breadcrumbsPrefix: opts?.breadcrumbsPrefix
2203
+ });
2204
+ },
2205
+ json: (parsed, opts) => {
2206
+ return transformAndValidateUnion({
2207
+ value: parsed,
2208
+ discriminant: parsedDiscriminant,
2209
+ transformedDiscriminant: rawDiscriminant,
2210
+ transformDiscriminantValue: (discriminantValue) => discriminantValueSchema.json(discriminantValue, {
2211
+ allowUnrecognizedEnumValues: opts?.allowUnrecognizedUnionMembers,
2212
+ breadcrumbsPrefix: [...opts?.breadcrumbsPrefix ?? [], parsedDiscriminant]
2213
+ }),
2214
+ getAdditionalPropertiesSchema: (discriminantValue) => union2[discriminantValue],
2215
+ allowUnrecognizedUnionMembers: opts?.allowUnrecognizedUnionMembers,
2216
+ transformAdditionalProperties: (additionalProperties, additionalPropertiesSchema) => additionalPropertiesSchema.json(additionalProperties, opts),
2217
+ breadcrumbsPrefix: opts?.breadcrumbsPrefix
2218
+ });
2219
+ },
2220
+ getType: () => SchemaType.UNION
2221
+ };
2222
+ return {
2223
+ ...maybeSkipValidation(baseSchema),
2224
+ ...getSchemaUtils(baseSchema),
2225
+ ...getObjectLikeUtils(baseSchema)
2226
+ };
2227
+ }
2228
+ function transformAndValidateUnion({
2229
+ value,
2230
+ discriminant: discriminant2,
2231
+ transformedDiscriminant,
2232
+ transformDiscriminantValue,
2233
+ getAdditionalPropertiesSchema,
2234
+ allowUnrecognizedUnionMembers = false,
2235
+ transformAdditionalProperties,
2236
+ breadcrumbsPrefix = []
2237
+ }) {
2238
+ if (!isPlainObject(value)) {
2239
+ return {
2240
+ ok: false,
2241
+ errors: [
2242
+ {
2243
+ path: breadcrumbsPrefix,
2244
+ message: getErrorMessageForIncorrectType(value, "object")
2245
+ }
2246
+ ]
2247
+ };
2248
+ }
2249
+ const { [discriminant2]: discriminantValue, ...additionalProperties } = value;
2250
+ if (discriminantValue == null) {
2251
+ return {
2252
+ ok: false,
2253
+ errors: [
2254
+ {
2255
+ path: breadcrumbsPrefix,
2256
+ message: `Missing discriminant ("${discriminant2}")`
2257
+ }
2258
+ ]
2259
+ };
2260
+ }
2261
+ const transformedDiscriminantValue = transformDiscriminantValue(discriminantValue);
2262
+ if (!transformedDiscriminantValue.ok) {
2263
+ return {
2264
+ ok: false,
2265
+ errors: transformedDiscriminantValue.errors
2266
+ };
2267
+ }
2268
+ const additionalPropertiesSchema = getAdditionalPropertiesSchema(transformedDiscriminantValue.value);
2269
+ if (additionalPropertiesSchema == null) {
2270
+ if (allowUnrecognizedUnionMembers) {
2271
+ return {
2272
+ ok: true,
2273
+ value: {
2274
+ [transformedDiscriminant]: transformedDiscriminantValue.value,
2275
+ ...additionalProperties
2276
+ }
2277
+ };
2278
+ } else {
2279
+ return {
2280
+ ok: false,
2281
+ errors: [
2282
+ {
2283
+ path: [...breadcrumbsPrefix, discriminant2],
2284
+ message: "Unexpected discriminant value"
2285
+ }
2286
+ ]
2287
+ };
2288
+ }
2289
+ }
2290
+ const transformedAdditionalProperties = transformAdditionalProperties(
2291
+ additionalProperties,
2292
+ additionalPropertiesSchema
2293
+ );
2294
+ if (!transformedAdditionalProperties.ok) {
2295
+ return transformedAdditionalProperties;
2296
+ }
2297
+ return {
2298
+ ok: true,
2299
+ value: {
2300
+ [transformedDiscriminant]: discriminantValue,
2301
+ ...transformedAdditionalProperties.value
2302
+ }
2303
+ };
2304
+ }
2305
+
2306
+ // src/serialization/index.ts
2307
+ var serialization_exports = {};
2308
+ __export(serialization_exports, {
2309
+ Actor: () => Actor,
2310
+ ActorName: () => ActorName,
2311
+ ActorsCreateRequest: () => ActorsCreateRequest,
2312
+ ActorsCreateResponse: () => ActorsCreateResponse,
2313
+ ActorsDeleteResponse: () => ActorsDeleteResponse,
2314
+ ActorsGetOrCreateRequest: () => ActorsGetOrCreateRequest,
2315
+ ActorsGetOrCreateResponse: () => ActorsGetOrCreateResponse,
2316
+ ActorsKvGetResponse: () => ActorsKvGetResponse,
2317
+ ActorsListNamesResponse: () => ActorsListNamesResponse,
2318
+ ActorsListResponse: () => ActorsListResponse,
2319
+ CrashPolicy: () => CrashPolicy2,
2320
+ Datacenter: () => Datacenter,
2321
+ DatacenterHealth: () => DatacenterHealth,
2322
+ DatacentersListResponse: () => DatacentersListResponse,
2323
+ HealthFanoutResponse: () => HealthFanoutResponse,
2324
+ HealthResponse: () => HealthResponse,
2325
+ HealthStatus: () => HealthStatus2,
2326
+ MetadataGetResponse: () => MetadataGetResponse,
2327
+ Namespace: () => Namespace,
2328
+ NamespaceListResponse: () => NamespaceListResponse,
2329
+ NamespacesCreateRequest: () => NamespacesCreateRequest,
2330
+ NamespacesCreateResponse: () => NamespacesCreateResponse,
2331
+ Pagination: () => Pagination,
2332
+ RivetId: () => RivetId,
2333
+ Runner: () => Runner,
2334
+ RunnerConfig: () => RunnerConfig,
2335
+ RunnerConfigKind: () => RunnerConfigKind,
2336
+ RunnerConfigKindNormal: () => RunnerConfigKindNormal,
2337
+ RunnerConfigKindServerless: () => RunnerConfigKindServerless,
2338
+ RunnerConfigKindServerlessServerless: () => RunnerConfigKindServerlessServerless,
2339
+ RunnerConfigResponse: () => RunnerConfigResponse,
2340
+ RunnerConfigServerless: () => RunnerConfigServerless,
2341
+ RunnerConfigVariant: () => RunnerConfigVariant2,
2342
+ RunnerConfigsDeleteResponse: () => RunnerConfigsDeleteResponse,
2343
+ RunnerConfigsListResponse: () => RunnerConfigsListResponse,
2344
+ RunnerConfigsListResponseRunnerConfigsValue: () => RunnerConfigsListResponseRunnerConfigsValue,
2345
+ RunnerConfigsRefreshMetadataRequestBody: () => RunnerConfigsRefreshMetadataRequestBody,
2346
+ RunnerConfigsRefreshMetadataResponse: () => RunnerConfigsRefreshMetadataResponse,
2347
+ RunnerConfigsServerlessHealthCheckRequest: () => RunnerConfigsServerlessHealthCheckRequest,
2348
+ RunnerConfigsServerlessHealthCheckResponse: () => RunnerConfigsServerlessHealthCheckResponse,
2349
+ RunnerConfigsServerlessHealthCheckResponseFailure: () => RunnerConfigsServerlessHealthCheckResponseFailure,
2350
+ RunnerConfigsServerlessHealthCheckResponseFailureFailure: () => RunnerConfigsServerlessHealthCheckResponseFailureFailure,
2351
+ RunnerConfigsServerlessHealthCheckResponseSuccess: () => RunnerConfigsServerlessHealthCheckResponseSuccess,
2352
+ RunnerConfigsServerlessHealthCheckResponseSuccessSuccess: () => RunnerConfigsServerlessHealthCheckResponseSuccessSuccess,
2353
+ RunnerConfigsServerlessMetadataError: () => RunnerConfigsServerlessMetadataError,
2354
+ RunnerConfigsServerlessMetadataErrorInvalidRequest: () => RunnerConfigsServerlessMetadataErrorInvalidRequest,
2355
+ RunnerConfigsServerlessMetadataErrorInvalidResponseJson: () => RunnerConfigsServerlessMetadataErrorInvalidResponseJson,
2356
+ RunnerConfigsServerlessMetadataErrorInvalidResponseJsonInvalidResponseJson: () => RunnerConfigsServerlessMetadataErrorInvalidResponseJsonInvalidResponseJson,
2357
+ RunnerConfigsServerlessMetadataErrorInvalidResponseSchema: () => RunnerConfigsServerlessMetadataErrorInvalidResponseSchema,
2358
+ RunnerConfigsServerlessMetadataErrorInvalidResponseSchemaInvalidResponseSchema: () => RunnerConfigsServerlessMetadataErrorInvalidResponseSchemaInvalidResponseSchema,
2359
+ RunnerConfigsServerlessMetadataErrorNonSuccessStatus: () => RunnerConfigsServerlessMetadataErrorNonSuccessStatus,
2360
+ RunnerConfigsServerlessMetadataErrorNonSuccessStatusNonSuccessStatus: () => RunnerConfigsServerlessMetadataErrorNonSuccessStatusNonSuccessStatus,
2361
+ RunnerConfigsServerlessMetadataErrorRequestFailed: () => RunnerConfigsServerlessMetadataErrorRequestFailed,
2362
+ RunnerConfigsServerlessMetadataErrorRequestTimedOut: () => RunnerConfigsServerlessMetadataErrorRequestTimedOut,
2363
+ RunnerConfigsUpsertRequestBody: () => RunnerConfigsUpsertRequestBody,
2364
+ RunnerConfigsUpsertResponse: () => RunnerConfigsUpsertResponse,
2365
+ RunnersListNamesResponse: () => RunnersListNamesResponse,
2366
+ RunnersListResponse: () => RunnersListResponse,
2367
+ namespaces: () => namespaces_exports2
2368
+ });
2369
+
2370
+ // src/serialization/types/RivetId.ts
2371
+ var RivetId = schemas_exports.string();
2372
+
2373
+ // src/serialization/types/CrashPolicy.ts
2374
+ var CrashPolicy2 = schemas_exports.enum_(["restart", "sleep", "destroy"]);
2375
+
2376
+ // src/serialization/types/Actor.ts
2377
+ var Actor = schemas_exports.object({
2378
+ actorId: schemas_exports.property("actor_id", RivetId),
2379
+ connectableTs: schemas_exports.property("connectable_ts", schemas_exports.number().optional()),
2380
+ crashPolicy: schemas_exports.property("crash_policy", CrashPolicy2),
2381
+ createTs: schemas_exports.property("create_ts", schemas_exports.number()),
2382
+ datacenter: schemas_exports.string(),
2383
+ destroyTs: schemas_exports.property("destroy_ts", schemas_exports.number().optional()),
2384
+ error: schemas_exports.record(schemas_exports.string(), schemas_exports.unknown()).optional(),
2385
+ key: schemas_exports.string().optional(),
2386
+ name: schemas_exports.string(),
2387
+ namespaceId: schemas_exports.property("namespace_id", RivetId),
2388
+ pendingAllocationTs: schemas_exports.property("pending_allocation_ts", schemas_exports.number().optional()),
2389
+ rescheduleTs: schemas_exports.property("reschedule_ts", schemas_exports.number().optional()),
2390
+ runnerNameSelector: schemas_exports.property("runner_name_selector", schemas_exports.string()),
2391
+ sleepTs: schemas_exports.property("sleep_ts", schemas_exports.number().optional()),
2392
+ startTs: schemas_exports.property("start_ts", schemas_exports.number().optional())
2393
+ });
2394
+
2395
+ // src/serialization/types/ActorName.ts
2396
+ var ActorName = schemas_exports.object({
2397
+ metadata: schemas_exports.record(schemas_exports.string(), schemas_exports.unknown())
2398
+ });
2399
+
2400
+ // src/serialization/types/ActorsCreateResponse.ts
2401
+ var ActorsCreateResponse = schemas_exports.object({
2402
+ actor: Actor
2403
+ });
2404
+
2405
+ // src/serialization/types/ActorsDeleteResponse.ts
2406
+ var ActorsDeleteResponse = schemas_exports.record(schemas_exports.string(), schemas_exports.unknown());
2407
+
2408
+ // src/serialization/types/ActorsGetOrCreateResponse.ts
2409
+ var ActorsGetOrCreateResponse = schemas_exports.object({
2410
+ actor: Actor,
2411
+ created: schemas_exports.boolean()
2412
+ });
2413
+
2414
+ // src/serialization/types/ActorsKvGetResponse.ts
2415
+ var ActorsKvGetResponse = schemas_exports.object({
2416
+ updateTs: schemas_exports.property("update_ts", schemas_exports.number()),
2417
+ value: schemas_exports.string()
2418
+ });
2419
+
2420
+ // src/serialization/types/Pagination.ts
2421
+ var Pagination = schemas_exports.object({
2422
+ cursor: schemas_exports.string().optional()
2423
+ });
2424
+
2425
+ // src/serialization/types/ActorsListNamesResponse.ts
2426
+ var ActorsListNamesResponse = schemas_exports.object({
2427
+ names: schemas_exports.record(schemas_exports.string(), ActorName),
2428
+ pagination: Pagination
2429
+ });
2430
+
2431
+ // src/serialization/types/ActorsListResponse.ts
2432
+ var ActorsListResponse = schemas_exports.object({
2433
+ actors: schemas_exports.list(Actor),
2434
+ pagination: Pagination
2435
+ });
2436
+
2437
+ // src/serialization/types/Datacenter.ts
2438
+ var Datacenter = schemas_exports.object({
2439
+ label: schemas_exports.number(),
2440
+ name: schemas_exports.string(),
2441
+ url: schemas_exports.string()
2442
+ });
2443
+
2444
+ // src/serialization/types/HealthResponse.ts
2445
+ var HealthResponse = schemas_exports.object({
2446
+ runtime: schemas_exports.string(),
2447
+ status: schemas_exports.string(),
2448
+ version: schemas_exports.string()
2449
+ });
2450
+
2451
+ // src/serialization/types/HealthStatus.ts
2452
+ var HealthStatus2 = schemas_exports.enum_(["ok", "error"]);
2453
+
2454
+ // src/serialization/types/DatacenterHealth.ts
2455
+ var DatacenterHealth = schemas_exports.object({
2456
+ datacenterLabel: schemas_exports.property("datacenter_label", schemas_exports.number()),
2457
+ datacenterName: schemas_exports.property("datacenter_name", schemas_exports.string()),
2458
+ error: schemas_exports.string().optional(),
2459
+ response: HealthResponse.optional(),
2460
+ rttMs: schemas_exports.property("rtt_ms", schemas_exports.number().optional()),
2461
+ status: HealthStatus2
2462
+ });
2463
+
2464
+ // src/serialization/types/DatacentersListResponse.ts
2465
+ var DatacentersListResponse = schemas_exports.object({
2466
+ datacenters: schemas_exports.list(Datacenter),
2467
+ pagination: Pagination
2468
+ });
2469
+
2470
+ // src/serialization/types/HealthFanoutResponse.ts
2471
+ var HealthFanoutResponse = schemas_exports.object({
2472
+ datacenters: schemas_exports.list(DatacenterHealth)
2473
+ });
2474
+
2475
+ // src/serialization/types/MetadataGetResponse.ts
2476
+ var MetadataGetResponse = schemas_exports.object({
2477
+ buildTimestamp: schemas_exports.property("build_timestamp", schemas_exports.string()),
2478
+ cargoProfile: schemas_exports.property("cargo_profile", schemas_exports.string()),
2479
+ cargoTarget: schemas_exports.property("cargo_target", schemas_exports.string()),
2480
+ gitSha: schemas_exports.property("git_sha", schemas_exports.string()),
2481
+ runtime: schemas_exports.string(),
2482
+ rustcHost: schemas_exports.property("rustc_host", schemas_exports.string()),
2483
+ rustcVersion: schemas_exports.property("rustc_version", schemas_exports.string()),
2484
+ version: schemas_exports.string()
2485
+ });
2486
+
2487
+ // src/serialization/types/Namespace.ts
2488
+ var Namespace = schemas_exports.object({
2489
+ createTs: schemas_exports.property("create_ts", schemas_exports.number()),
2490
+ displayName: schemas_exports.property("display_name", schemas_exports.string()),
2491
+ name: schemas_exports.string(),
2492
+ namespaceId: schemas_exports.property("namespace_id", RivetId)
2493
+ });
2494
+
2495
+ // src/serialization/types/NamespaceListResponse.ts
2496
+ var NamespaceListResponse = schemas_exports.object({
2497
+ namespaces: schemas_exports.list(Namespace),
2498
+ pagination: Pagination
2499
+ });
2500
+
2501
+ // src/serialization/types/NamespacesCreateResponse.ts
2502
+ var NamespacesCreateResponse = schemas_exports.object({
2503
+ namespace: Namespace
2504
+ });
2505
+
2506
+ // src/serialization/types/Runner.ts
2507
+ var Runner = schemas_exports.object({
2508
+ createTs: schemas_exports.property("create_ts", schemas_exports.number()),
2509
+ datacenter: schemas_exports.string(),
2510
+ drainTs: schemas_exports.property("drain_ts", schemas_exports.number().optional()),
2511
+ key: schemas_exports.string(),
2512
+ lastConnectedTs: schemas_exports.property("last_connected_ts", schemas_exports.number().optional()),
2513
+ lastPingTs: schemas_exports.property("last_ping_ts", schemas_exports.number()),
2514
+ lastRtt: schemas_exports.property("last_rtt", schemas_exports.number()),
2515
+ metadata: schemas_exports.record(schemas_exports.string(), schemas_exports.unknown()).optional(),
2516
+ name: schemas_exports.string(),
2517
+ namespaceId: schemas_exports.property("namespace_id", RivetId),
2518
+ remainingSlots: schemas_exports.property("remaining_slots", schemas_exports.number()),
2519
+ runnerId: schemas_exports.property("runner_id", RivetId),
2520
+ stopTs: schemas_exports.property("stop_ts", schemas_exports.number().optional()),
2521
+ totalSlots: schemas_exports.property("total_slots", schemas_exports.number()),
2522
+ version: schemas_exports.number()
2523
+ });
2524
+
2525
+ // src/serialization/types/RunnerConfigServerless.ts
2526
+ var RunnerConfigServerless = schemas_exports.object({
2527
+ headers: schemas_exports.record(schemas_exports.string(), schemas_exports.string()).optional(),
2528
+ maxRunners: schemas_exports.property("max_runners", schemas_exports.number()),
2529
+ metadataPollInterval: schemas_exports.property("metadata_poll_interval", schemas_exports.number().optional()),
2530
+ minRunners: schemas_exports.property("min_runners", schemas_exports.number().optional()),
2531
+ requestLifespan: schemas_exports.property("request_lifespan", schemas_exports.number()),
2532
+ runnersMargin: schemas_exports.property("runners_margin", schemas_exports.number().optional()),
2533
+ slotsPerRunner: schemas_exports.property("slots_per_runner", schemas_exports.number()),
2534
+ url: schemas_exports.string()
2535
+ });
2536
+
2537
+ // src/serialization/types/RunnerConfig.ts
2538
+ var RunnerConfig = schemas_exports.object({
2539
+ normal: schemas_exports.record(schemas_exports.string(), schemas_exports.unknown()).optional(),
2540
+ serverless: RunnerConfigServerless.optional(),
2541
+ drainOnVersionUpgrade: schemas_exports.property(
2542
+ "drain_on_version_upgrade",
2543
+ schemas_exports.boolean().optional()
2544
+ ),
2545
+ metadata: schemas_exports.unknown().optional()
2546
+ });
2547
+
2548
+ // src/serialization/types/RunnerConfigKindNormal.ts
2549
+ var RunnerConfigKindNormal = schemas_exports.object({
2550
+ normal: schemas_exports.record(schemas_exports.string(), schemas_exports.unknown())
2551
+ });
2552
+
2553
+ // src/serialization/types/RunnerConfigKindServerlessServerless.ts
2554
+ var RunnerConfigKindServerlessServerless = schemas_exports.object({
2555
+ headers: schemas_exports.record(schemas_exports.string(), schemas_exports.string()).optional(),
2556
+ maxRunners: schemas_exports.property("max_runners", schemas_exports.number()),
2557
+ metadataPollInterval: schemas_exports.property("metadata_poll_interval", schemas_exports.number().optional()),
2558
+ minRunners: schemas_exports.property("min_runners", schemas_exports.number().optional()),
2559
+ requestLifespan: schemas_exports.property("request_lifespan", schemas_exports.number()),
2560
+ runnersMargin: schemas_exports.property("runners_margin", schemas_exports.number().optional()),
2561
+ slotsPerRunner: schemas_exports.property("slots_per_runner", schemas_exports.number()),
2562
+ url: schemas_exports.string()
2563
+ });
2564
+
2565
+ // src/serialization/types/RunnerConfigKindServerless.ts
2566
+ var RunnerConfigKindServerless = schemas_exports.object({
2567
+ serverless: RunnerConfigKindServerlessServerless
2568
+ });
2569
+
2570
+ // src/serialization/types/RunnerConfigKind.ts
2571
+ var RunnerConfigKind = schemas_exports.undiscriminatedUnion([RunnerConfigKindNormal, RunnerConfigKindServerless]);
2572
+
2573
+ // src/serialization/types/RunnerConfigResponse.ts
2574
+ var RunnerConfigResponse = schemas_exports.object({
2575
+ runnerPoolError: schemas_exports.property(
2576
+ "runner_pool_error",
2577
+ schemas_exports.record(schemas_exports.string(), schemas_exports.unknown()).optional()
2578
+ )
2579
+ }).extend(RunnerConfig);
2580
+
2581
+ // src/serialization/types/RunnerConfigVariant.ts
2582
+ var RunnerConfigVariant2 = schemas_exports.enum_(["serverless", "normal"]);
2583
+
2584
+ // src/serialization/types/RunnerConfigsDeleteResponse.ts
2585
+ var RunnerConfigsDeleteResponse = schemas_exports.record(schemas_exports.string(), schemas_exports.unknown());
2586
+
2587
+ // src/serialization/types/RunnerConfigsListResponseRunnerConfigsValue.ts
2588
+ var RunnerConfigsListResponseRunnerConfigsValue = schemas_exports.object({
2589
+ datacenters: schemas_exports.record(schemas_exports.string(), RunnerConfigResponse)
2590
+ });
2591
+
2592
+ // src/serialization/types/RunnerConfigsListResponse.ts
2593
+ var RunnerConfigsListResponse = schemas_exports.object({
2594
+ pagination: Pagination,
2595
+ runnerConfigs: schemas_exports.property(
2596
+ "runner_configs",
2597
+ schemas_exports.record(schemas_exports.string(), RunnerConfigsListResponseRunnerConfigsValue)
2598
+ )
2599
+ });
2600
+
2601
+ // src/serialization/types/RunnerConfigsRefreshMetadataRequestBody.ts
2602
+ var RunnerConfigsRefreshMetadataRequestBody = schemas_exports.record(schemas_exports.string(), schemas_exports.unknown());
2603
+
2604
+ // src/serialization/types/RunnerConfigsRefreshMetadataResponse.ts
2605
+ var RunnerConfigsRefreshMetadataResponse = schemas_exports.record(schemas_exports.string(), schemas_exports.unknown());
2606
+
2607
+ // src/serialization/types/RunnerConfigsServerlessHealthCheckResponseSuccessSuccess.ts
2608
+ var RunnerConfigsServerlessHealthCheckResponseSuccessSuccess = schemas_exports.object({
2609
+ version: schemas_exports.string()
2610
+ });
2611
+
2612
+ // src/serialization/types/RunnerConfigsServerlessHealthCheckResponseSuccess.ts
2613
+ var RunnerConfigsServerlessHealthCheckResponseSuccess = schemas_exports.object({
2614
+ success: RunnerConfigsServerlessHealthCheckResponseSuccessSuccess
2615
+ });
2616
+
2617
+ // src/serialization/types/RunnerConfigsServerlessMetadataErrorInvalidRequest.ts
2618
+ var RunnerConfigsServerlessMetadataErrorInvalidRequest = schemas_exports.object({
2619
+ invalidRequest: schemas_exports.property(
2620
+ "invalid_request",
2621
+ schemas_exports.record(schemas_exports.string(), schemas_exports.unknown())
2622
+ )
2623
+ });
2624
+
2625
+ // src/serialization/types/RunnerConfigsServerlessMetadataErrorRequestFailed.ts
2626
+ var RunnerConfigsServerlessMetadataErrorRequestFailed = schemas_exports.object({
2627
+ requestFailed: schemas_exports.property(
2628
+ "request_failed",
2629
+ schemas_exports.record(schemas_exports.string(), schemas_exports.unknown())
2630
+ )
2631
+ });
2632
+
2633
+ // src/serialization/types/RunnerConfigsServerlessMetadataErrorRequestTimedOut.ts
2634
+ var RunnerConfigsServerlessMetadataErrorRequestTimedOut = schemas_exports.object({
2635
+ requestTimedOut: schemas_exports.property(
2636
+ "request_timed_out",
2637
+ schemas_exports.record(schemas_exports.string(), schemas_exports.unknown())
2638
+ )
2639
+ });
2640
+
2641
+ // src/serialization/types/RunnerConfigsServerlessMetadataErrorNonSuccessStatusNonSuccessStatus.ts
2642
+ var RunnerConfigsServerlessMetadataErrorNonSuccessStatusNonSuccessStatus = schemas_exports.object({
2643
+ body: schemas_exports.string(),
2644
+ statusCode: schemas_exports.property("status_code", schemas_exports.number())
2645
+ });
2646
+
2647
+ // src/serialization/types/RunnerConfigsServerlessMetadataErrorNonSuccessStatus.ts
2648
+ var RunnerConfigsServerlessMetadataErrorNonSuccessStatus = schemas_exports.object({
2649
+ nonSuccessStatus: schemas_exports.property(
2650
+ "non_success_status",
2651
+ RunnerConfigsServerlessMetadataErrorNonSuccessStatusNonSuccessStatus
2652
+ )
2653
+ });
2654
+
2655
+ // src/serialization/types/RunnerConfigsServerlessMetadataErrorInvalidResponseJsonInvalidResponseJson.ts
2656
+ var RunnerConfigsServerlessMetadataErrorInvalidResponseJsonInvalidResponseJson = schemas_exports.object({
2657
+ body: schemas_exports.string()
2658
+ });
2659
+
2660
+ // src/serialization/types/RunnerConfigsServerlessMetadataErrorInvalidResponseJson.ts
2661
+ var RunnerConfigsServerlessMetadataErrorInvalidResponseJson = schemas_exports.object({
2662
+ invalidResponseJson: schemas_exports.property(
2663
+ "invalid_response_json",
2664
+ RunnerConfigsServerlessMetadataErrorInvalidResponseJsonInvalidResponseJson
2665
+ )
2666
+ });
2667
+
2668
+ // src/serialization/types/RunnerConfigsServerlessMetadataErrorInvalidResponseSchemaInvalidResponseSchema.ts
2669
+ var RunnerConfigsServerlessMetadataErrorInvalidResponseSchemaInvalidResponseSchema = schemas_exports.object({
2670
+ runtime: schemas_exports.string(),
2671
+ version: schemas_exports.string()
2672
+ });
2673
+
2674
+ // src/serialization/types/RunnerConfigsServerlessMetadataErrorInvalidResponseSchema.ts
2675
+ var RunnerConfigsServerlessMetadataErrorInvalidResponseSchema = schemas_exports.object({
2676
+ invalidResponseSchema: schemas_exports.property(
2677
+ "invalid_response_schema",
2678
+ RunnerConfigsServerlessMetadataErrorInvalidResponseSchemaInvalidResponseSchema
2679
+ )
2680
+ });
2681
+
2682
+ // src/serialization/types/RunnerConfigsServerlessMetadataError.ts
2683
+ var RunnerConfigsServerlessMetadataError = schemas_exports.undiscriminatedUnion([
2684
+ RunnerConfigsServerlessMetadataErrorInvalidRequest,
2685
+ RunnerConfigsServerlessMetadataErrorRequestFailed,
2686
+ RunnerConfigsServerlessMetadataErrorRequestTimedOut,
2687
+ RunnerConfigsServerlessMetadataErrorNonSuccessStatus,
2688
+ RunnerConfigsServerlessMetadataErrorInvalidResponseJson,
2689
+ RunnerConfigsServerlessMetadataErrorInvalidResponseSchema
2690
+ ]);
2691
+
2692
+ // src/serialization/types/RunnerConfigsServerlessHealthCheckResponseFailureFailure.ts
2693
+ var RunnerConfigsServerlessHealthCheckResponseFailureFailure = schemas_exports.object({
2694
+ error: RunnerConfigsServerlessMetadataError
2695
+ });
2696
+
2697
+ // src/serialization/types/RunnerConfigsServerlessHealthCheckResponseFailure.ts
2698
+ var RunnerConfigsServerlessHealthCheckResponseFailure = schemas_exports.object({
2699
+ failure: RunnerConfigsServerlessHealthCheckResponseFailureFailure
2700
+ });
2701
+
2702
+ // src/serialization/types/RunnerConfigsServerlessHealthCheckResponse.ts
2703
+ var RunnerConfigsServerlessHealthCheckResponse = schemas_exports.undiscriminatedUnion([
2704
+ RunnerConfigsServerlessHealthCheckResponseSuccess,
2705
+ RunnerConfigsServerlessHealthCheckResponseFailure
2706
+ ]);
2707
+
2708
+ // src/serialization/types/RunnerConfigsUpsertResponse.ts
2709
+ var RunnerConfigsUpsertResponse = schemas_exports.object({
2710
+ endpointConfigChanged: schemas_exports.property("endpoint_config_changed", schemas_exports.boolean())
2711
+ });
2712
+
2713
+ // src/serialization/types/RunnersListNamesResponse.ts
2714
+ var RunnersListNamesResponse = schemas_exports.object({
2715
+ names: schemas_exports.list(schemas_exports.string()),
2716
+ pagination: Pagination
2717
+ });
2718
+
2719
+ // src/serialization/types/RunnersListResponse.ts
2720
+ var RunnersListResponse = schemas_exports.object({
2721
+ pagination: Pagination,
2722
+ runners: schemas_exports.list(Runner)
2723
+ });
2724
+
2725
+ // src/serialization/client/requests/ActorsCreateRequest.ts
2726
+ var ActorsCreateRequest = schemas_exports.object({
2727
+ crashPolicy: schemas_exports.property("crash_policy", CrashPolicy2),
2728
+ datacenter: schemas_exports.string().optional(),
2729
+ input: schemas_exports.string().optional(),
2730
+ key: schemas_exports.string().optional(),
2731
+ name: schemas_exports.string(),
2732
+ runnerNameSelector: schemas_exports.property("runner_name_selector", schemas_exports.string())
2733
+ });
2734
+
2735
+ // src/serialization/client/requests/ActorsGetOrCreateRequest.ts
2736
+ var ActorsGetOrCreateRequest = schemas_exports.object({
2737
+ crashPolicy: schemas_exports.property("crash_policy", CrashPolicy2),
2738
+ datacenter: schemas_exports.string().optional(),
2739
+ input: schemas_exports.string().optional(),
2740
+ key: schemas_exports.string(),
2741
+ name: schemas_exports.string(),
2742
+ runnerNameSelector: schemas_exports.property("runner_name_selector", schemas_exports.string())
2743
+ });
2744
+
2745
+ // src/serialization/client/requests/RunnerConfigsServerlessHealthCheckRequest.ts
2746
+ var RunnerConfigsServerlessHealthCheckRequest = schemas_exports.object({
2747
+ headers: schemas_exports.record(schemas_exports.string(), schemas_exports.string()).optional(),
2748
+ url: schemas_exports.string()
2749
+ });
2750
+
2751
+ // src/serialization/client/requests/RunnerConfigsUpsertRequestBody.ts
2752
+ var RunnerConfigsUpsertRequestBody = schemas_exports.object({
2753
+ datacenters: schemas_exports.record(schemas_exports.string(), RunnerConfig)
2754
+ });
2755
+
2756
+ // src/serialization/resources/namespaces/index.ts
2757
+ var namespaces_exports2 = {};
2758
+ __export(namespaces_exports2, {
2759
+ NamespacesCreateRequest: () => NamespacesCreateRequest
2760
+ });
2761
+
2762
+ // src/serialization/resources/namespaces/client/requests/NamespacesCreateRequest.ts
2763
+ var NamespacesCreateRequest = schemas_exports.object({
2764
+ displayName: schemas_exports.property("display_name", schemas_exports.string()),
2765
+ name: schemas_exports.string()
2766
+ });
2767
+
2768
+ // src/Client.ts
2769
+ import urlJoin6 from "url-join";
2770
+
2771
+ // src/errors/RivetError.ts
2772
+ var RivetError = class _RivetError extends Error {
2773
+ statusCode;
2774
+ body;
2775
+ constructor({ message, statusCode, body }) {
2776
+ super(buildMessage({ message, statusCode, body }));
2777
+ Object.setPrototypeOf(this, _RivetError.prototype);
2778
+ if (statusCode != null) {
2779
+ this.statusCode = statusCode;
2780
+ }
2781
+ if (body !== void 0) {
2782
+ this.body = body;
2783
+ }
2784
+ }
2785
+ };
2786
+ function buildMessage({
2787
+ message,
2788
+ statusCode,
2789
+ body
2790
+ }) {
2791
+ let lines = [];
2792
+ if (message != null) {
2793
+ lines.push(message);
2794
+ }
2795
+ if (statusCode != null) {
2796
+ lines.push(`Status code: ${statusCode.toString()}`);
2797
+ }
2798
+ if (body != null) {
2799
+ lines.push(`Body: ${toJson(body, void 0, 2)}`);
2800
+ }
2801
+ return lines.join("\n");
2802
+ }
2803
+
2804
+ // src/errors/RivetTimeoutError.ts
2805
+ var RivetTimeoutError = class _RivetTimeoutError extends Error {
2806
+ constructor(message) {
2807
+ super(message);
2808
+ Object.setPrototypeOf(this, _RivetTimeoutError.prototype);
2809
+ }
2810
+ };
2811
+
2812
+ // src/api/resources/datacenters/client/Client.ts
2813
+ import urlJoin from "url-join";
2814
+ var Datacenters = class {
2815
+ constructor(_options) {
2816
+ this._options = _options;
2817
+ }
2818
+ /**
2819
+ * @param {Datacenters.RequestOptions} requestOptions - Request-specific configuration.
2820
+ *
2821
+ * @example
2822
+ * await client.datacenters.list()
2823
+ */
2824
+ async list(requestOptions) {
2825
+ const _response = await (this._options.fetcher ?? fetcher)({
2826
+ url: urlJoin(
2827
+ await Supplier.get(this._options.baseUrl) ?? await Supplier.get(this._options.environment),
2828
+ "datacenters"
2829
+ ),
2830
+ method: "GET",
2831
+ headers: {
2832
+ Authorization: await this._getAuthorizationHeader(),
2833
+ "X-Fern-Language": "JavaScript",
2834
+ "X-Fern-Runtime": RUNTIME.type,
2835
+ "X-Fern-Runtime-Version": RUNTIME.version,
2836
+ ...requestOptions?.headers
2837
+ },
2838
+ contentType: "application/json",
2839
+ requestType: "json",
2840
+ timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1e3 : 18e4,
2841
+ maxRetries: requestOptions?.maxRetries,
2842
+ abortSignal: requestOptions?.abortSignal
2843
+ });
2844
+ if (_response.ok) {
2845
+ return DatacentersListResponse.parseOrThrow(_response.body, {
2846
+ unrecognizedObjectKeys: "passthrough",
2847
+ allowUnrecognizedUnionMembers: true,
2848
+ allowUnrecognizedEnumValues: true,
2849
+ skipValidation: true,
2850
+ breadcrumbsPrefix: ["response"]
2851
+ });
2852
+ }
2853
+ if (_response.error.reason === "status-code") {
2854
+ throw new RivetError({
2855
+ statusCode: _response.error.statusCode,
2856
+ body: _response.error.body
2857
+ });
2858
+ }
2859
+ switch (_response.error.reason) {
2860
+ case "non-json":
2861
+ throw new RivetError({
2862
+ statusCode: _response.error.statusCode,
2863
+ body: _response.error.rawBody
2864
+ });
2865
+ case "timeout":
2866
+ throw new RivetTimeoutError("Timeout exceeded when calling GET /datacenters.");
2867
+ case "unknown":
2868
+ throw new RivetError({
2869
+ message: _response.error.errorMessage
2870
+ });
2871
+ }
2872
+ }
2873
+ async _getAuthorizationHeader() {
2874
+ return `Bearer ${await Supplier.get(this._options.token)}`;
2875
+ }
2876
+ };
2877
+
2878
+ // src/api/resources/health/client/Client.ts
2879
+ import urlJoin2 from "url-join";
2880
+ var Health = class {
2881
+ constructor(_options) {
2882
+ this._options = _options;
2883
+ }
2884
+ /**
2885
+ * @param {Health.RequestOptions} requestOptions - Request-specific configuration.
2886
+ *
2887
+ * @example
2888
+ * await client.health.fanout()
2889
+ */
2890
+ async fanout(requestOptions) {
2891
+ const _response = await (this._options.fetcher ?? fetcher)({
2892
+ url: urlJoin2(
2893
+ await Supplier.get(this._options.baseUrl) ?? await Supplier.get(this._options.environment),
2894
+ "health/fanout"
2895
+ ),
2896
+ method: "GET",
2897
+ headers: {
2898
+ Authorization: await this._getAuthorizationHeader(),
2899
+ "X-Fern-Language": "JavaScript",
2900
+ "X-Fern-Runtime": RUNTIME.type,
2901
+ "X-Fern-Runtime-Version": RUNTIME.version,
2902
+ ...requestOptions?.headers
2903
+ },
2904
+ contentType: "application/json",
2905
+ requestType: "json",
2906
+ timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1e3 : 18e4,
2907
+ maxRetries: requestOptions?.maxRetries,
2908
+ abortSignal: requestOptions?.abortSignal
2909
+ });
2910
+ if (_response.ok) {
2911
+ return HealthFanoutResponse.parseOrThrow(_response.body, {
2912
+ unrecognizedObjectKeys: "passthrough",
2913
+ allowUnrecognizedUnionMembers: true,
2914
+ allowUnrecognizedEnumValues: true,
2915
+ skipValidation: true,
2916
+ breadcrumbsPrefix: ["response"]
2917
+ });
2918
+ }
2919
+ if (_response.error.reason === "status-code") {
2920
+ throw new RivetError({
2921
+ statusCode: _response.error.statusCode,
2922
+ body: _response.error.body
2923
+ });
2924
+ }
2925
+ switch (_response.error.reason) {
2926
+ case "non-json":
2927
+ throw new RivetError({
2928
+ statusCode: _response.error.statusCode,
2929
+ body: _response.error.rawBody
2930
+ });
2931
+ case "timeout":
2932
+ throw new RivetTimeoutError("Timeout exceeded when calling GET /health/fanout.");
2933
+ case "unknown":
2934
+ throw new RivetError({
2935
+ message: _response.error.errorMessage
2936
+ });
2937
+ }
2938
+ }
2939
+ async _getAuthorizationHeader() {
2940
+ return `Bearer ${await Supplier.get(this._options.token)}`;
2941
+ }
2942
+ };
2943
+
2944
+ // src/api/resources/metadata/client/Client.ts
2945
+ import urlJoin3 from "url-join";
2946
+ var Metadata = class {
2947
+ constructor(_options) {
2948
+ this._options = _options;
2949
+ }
2950
+ /**
2951
+ * @param {Metadata.RequestOptions} requestOptions - Request-specific configuration.
2952
+ *
2953
+ * @example
2954
+ * await client.metadata.get()
2955
+ */
2956
+ async get(requestOptions) {
2957
+ const _response = await (this._options.fetcher ?? fetcher)({
2958
+ url: urlJoin3(
2959
+ await Supplier.get(this._options.baseUrl) ?? await Supplier.get(this._options.environment),
2960
+ "metadata"
2961
+ ),
2962
+ method: "GET",
2963
+ headers: {
2964
+ Authorization: await this._getAuthorizationHeader(),
2965
+ "X-Fern-Language": "JavaScript",
2966
+ "X-Fern-Runtime": RUNTIME.type,
2967
+ "X-Fern-Runtime-Version": RUNTIME.version,
2968
+ ...requestOptions?.headers
2969
+ },
2970
+ contentType: "application/json",
2971
+ requestType: "json",
2972
+ timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1e3 : 18e4,
2973
+ maxRetries: requestOptions?.maxRetries,
2974
+ abortSignal: requestOptions?.abortSignal
2975
+ });
2976
+ if (_response.ok) {
2977
+ return MetadataGetResponse.parseOrThrow(_response.body, {
2978
+ unrecognizedObjectKeys: "passthrough",
2979
+ allowUnrecognizedUnionMembers: true,
2980
+ allowUnrecognizedEnumValues: true,
2981
+ skipValidation: true,
2982
+ breadcrumbsPrefix: ["response"]
2983
+ });
2984
+ }
2985
+ if (_response.error.reason === "status-code") {
2986
+ throw new RivetError({
2987
+ statusCode: _response.error.statusCode,
2988
+ body: _response.error.body
2989
+ });
2990
+ }
2991
+ switch (_response.error.reason) {
2992
+ case "non-json":
2993
+ throw new RivetError({
2994
+ statusCode: _response.error.statusCode,
2995
+ body: _response.error.rawBody
2996
+ });
2997
+ case "timeout":
2998
+ throw new RivetTimeoutError("Timeout exceeded when calling GET /metadata.");
2999
+ case "unknown":
3000
+ throw new RivetError({
3001
+ message: _response.error.errorMessage
3002
+ });
3003
+ }
3004
+ }
3005
+ async _getAuthorizationHeader() {
3006
+ return `Bearer ${await Supplier.get(this._options.token)}`;
3007
+ }
3008
+ };
3009
+
3010
+ // src/api/resources/namespaces/client/Client.ts
3011
+ import urlJoin4 from "url-join";
3012
+ var Namespaces = class {
3013
+ constructor(_options) {
3014
+ this._options = _options;
3015
+ }
3016
+ /**
3017
+ * @param {Rivet.NamespacesListRequest} request
3018
+ * @param {Namespaces.RequestOptions} requestOptions - Request-specific configuration.
3019
+ *
3020
+ * @example
3021
+ * await client.namespaces.list()
3022
+ */
3023
+ async list(request = {}, requestOptions) {
3024
+ const { limit, cursor, name, namespaceIds, namespaceId } = request;
3025
+ const _queryParams = {};
3026
+ if (limit != null) {
3027
+ _queryParams["limit"] = limit.toString();
3028
+ }
3029
+ if (cursor != null) {
3030
+ _queryParams["cursor"] = cursor;
3031
+ }
3032
+ if (name != null) {
3033
+ _queryParams["name"] = name;
3034
+ }
3035
+ if (namespaceIds != null) {
3036
+ _queryParams["namespace_ids"] = namespaceIds;
3037
+ }
3038
+ if (namespaceId != null) {
3039
+ if (Array.isArray(namespaceId)) {
3040
+ _queryParams["namespace_id"] = namespaceId.map(
3041
+ (item) => RivetId.jsonOrThrow(item, { unrecognizedObjectKeys: "strip" })
3042
+ );
3043
+ } else {
3044
+ _queryParams["namespace_id"] = namespaceId;
3045
+ }
3046
+ }
3047
+ const _response = await (this._options.fetcher ?? fetcher)({
3048
+ url: urlJoin4(
3049
+ await Supplier.get(this._options.baseUrl) ?? await Supplier.get(this._options.environment),
3050
+ "namespaces"
3051
+ ),
3052
+ method: "GET",
3053
+ headers: {
3054
+ Authorization: await this._getAuthorizationHeader(),
3055
+ "X-Fern-Language": "JavaScript",
3056
+ "X-Fern-Runtime": RUNTIME.type,
3057
+ "X-Fern-Runtime-Version": RUNTIME.version,
3058
+ ...requestOptions?.headers
3059
+ },
3060
+ contentType: "application/json",
3061
+ queryParameters: _queryParams,
3062
+ requestType: "json",
3063
+ timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1e3 : 18e4,
3064
+ maxRetries: requestOptions?.maxRetries,
3065
+ abortSignal: requestOptions?.abortSignal
3066
+ });
3067
+ if (_response.ok) {
3068
+ return NamespaceListResponse.parseOrThrow(_response.body, {
3069
+ unrecognizedObjectKeys: "passthrough",
3070
+ allowUnrecognizedUnionMembers: true,
3071
+ allowUnrecognizedEnumValues: true,
3072
+ skipValidation: true,
3073
+ breadcrumbsPrefix: ["response"]
3074
+ });
3075
+ }
3076
+ if (_response.error.reason === "status-code") {
3077
+ throw new RivetError({
3078
+ statusCode: _response.error.statusCode,
3079
+ body: _response.error.body
3080
+ });
3081
+ }
3082
+ switch (_response.error.reason) {
3083
+ case "non-json":
3084
+ throw new RivetError({
3085
+ statusCode: _response.error.statusCode,
3086
+ body: _response.error.rawBody
3087
+ });
3088
+ case "timeout":
3089
+ throw new RivetTimeoutError("Timeout exceeded when calling GET /namespaces.");
3090
+ case "unknown":
3091
+ throw new RivetError({
3092
+ message: _response.error.errorMessage
3093
+ });
3094
+ }
3095
+ }
3096
+ /**
3097
+ * @param {Rivet.NamespacesCreateRequest} request
3098
+ * @param {Namespaces.RequestOptions} requestOptions - Request-specific configuration.
3099
+ *
3100
+ * @example
3101
+ * await client.namespaces.create({
3102
+ * displayName: "display_name",
3103
+ * name: "name"
3104
+ * })
3105
+ */
3106
+ async create(request, requestOptions) {
3107
+ const _response = await (this._options.fetcher ?? fetcher)({
3108
+ url: urlJoin4(
3109
+ await Supplier.get(this._options.baseUrl) ?? await Supplier.get(this._options.environment),
3110
+ "namespaces"
3111
+ ),
3112
+ method: "POST",
3113
+ headers: {
3114
+ Authorization: await this._getAuthorizationHeader(),
3115
+ "X-Fern-Language": "JavaScript",
3116
+ "X-Fern-Runtime": RUNTIME.type,
3117
+ "X-Fern-Runtime-Version": RUNTIME.version,
3118
+ ...requestOptions?.headers
3119
+ },
3120
+ contentType: "application/json",
3121
+ requestType: "json",
3122
+ body: NamespacesCreateRequest.jsonOrThrow(request, { unrecognizedObjectKeys: "strip" }),
3123
+ timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1e3 : 18e4,
3124
+ maxRetries: requestOptions?.maxRetries,
3125
+ abortSignal: requestOptions?.abortSignal
3126
+ });
3127
+ if (_response.ok) {
3128
+ return NamespacesCreateResponse.parseOrThrow(_response.body, {
3129
+ unrecognizedObjectKeys: "passthrough",
3130
+ allowUnrecognizedUnionMembers: true,
3131
+ allowUnrecognizedEnumValues: true,
3132
+ skipValidation: true,
3133
+ breadcrumbsPrefix: ["response"]
3134
+ });
3135
+ }
3136
+ if (_response.error.reason === "status-code") {
3137
+ throw new RivetError({
3138
+ statusCode: _response.error.statusCode,
3139
+ body: _response.error.body
3140
+ });
3141
+ }
3142
+ switch (_response.error.reason) {
3143
+ case "non-json":
3144
+ throw new RivetError({
3145
+ statusCode: _response.error.statusCode,
3146
+ body: _response.error.rawBody
3147
+ });
3148
+ case "timeout":
3149
+ throw new RivetTimeoutError("Timeout exceeded when calling POST /namespaces.");
3150
+ case "unknown":
3151
+ throw new RivetError({
3152
+ message: _response.error.errorMessage
3153
+ });
3154
+ }
3155
+ }
3156
+ async _getAuthorizationHeader() {
3157
+ return `Bearer ${await Supplier.get(this._options.token)}`;
3158
+ }
3159
+ };
3160
+
3161
+ // src/api/resources/runners/client/Client.ts
3162
+ import urlJoin5 from "url-join";
3163
+ var Runners = class {
3164
+ constructor(_options) {
3165
+ this._options = _options;
3166
+ }
3167
+ /**
3168
+ * @param {Rivet.RunnersListRequest} request
3169
+ * @param {Runners.RequestOptions} requestOptions - Request-specific configuration.
3170
+ *
3171
+ * @example
3172
+ * await client.runners.list({
3173
+ * namespace: "namespace"
3174
+ * })
3175
+ */
3176
+ async list(request, requestOptions) {
3177
+ const { namespace, name, runnerIds, runnerId, includeStopped, limit, cursor } = request;
3178
+ const _queryParams = {};
3179
+ _queryParams["namespace"] = namespace;
3180
+ if (name != null) {
3181
+ _queryParams["name"] = name;
3182
+ }
3183
+ if (runnerIds != null) {
3184
+ _queryParams["runner_ids"] = runnerIds;
3185
+ }
3186
+ if (runnerId != null) {
3187
+ if (Array.isArray(runnerId)) {
3188
+ _queryParams["runner_id"] = runnerId.map(
3189
+ (item) => RivetId.jsonOrThrow(item, { unrecognizedObjectKeys: "strip" })
3190
+ );
3191
+ } else {
3192
+ _queryParams["runner_id"] = runnerId;
3193
+ }
3194
+ }
3195
+ if (includeStopped != null) {
3196
+ _queryParams["include_stopped"] = includeStopped.toString();
3197
+ }
3198
+ if (limit != null) {
3199
+ _queryParams["limit"] = limit.toString();
3200
+ }
3201
+ if (cursor != null) {
3202
+ _queryParams["cursor"] = cursor;
3203
+ }
3204
+ const _response = await (this._options.fetcher ?? fetcher)({
3205
+ url: urlJoin5(
3206
+ await Supplier.get(this._options.baseUrl) ?? await Supplier.get(this._options.environment),
3207
+ "runners"
3208
+ ),
3209
+ method: "GET",
3210
+ headers: {
3211
+ Authorization: await this._getAuthorizationHeader(),
3212
+ "X-Fern-Language": "JavaScript",
3213
+ "X-Fern-Runtime": RUNTIME.type,
3214
+ "X-Fern-Runtime-Version": RUNTIME.version,
3215
+ ...requestOptions?.headers
3216
+ },
3217
+ contentType: "application/json",
3218
+ queryParameters: _queryParams,
3219
+ requestType: "json",
3220
+ timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1e3 : 18e4,
3221
+ maxRetries: requestOptions?.maxRetries,
3222
+ abortSignal: requestOptions?.abortSignal
3223
+ });
3224
+ if (_response.ok) {
3225
+ return RunnersListResponse.parseOrThrow(_response.body, {
3226
+ unrecognizedObjectKeys: "passthrough",
3227
+ allowUnrecognizedUnionMembers: true,
3228
+ allowUnrecognizedEnumValues: true,
3229
+ skipValidation: true,
3230
+ breadcrumbsPrefix: ["response"]
3231
+ });
3232
+ }
3233
+ if (_response.error.reason === "status-code") {
3234
+ throw new RivetError({
3235
+ statusCode: _response.error.statusCode,
3236
+ body: _response.error.body
3237
+ });
3238
+ }
3239
+ switch (_response.error.reason) {
3240
+ case "non-json":
3241
+ throw new RivetError({
3242
+ statusCode: _response.error.statusCode,
3243
+ body: _response.error.rawBody
3244
+ });
3245
+ case "timeout":
3246
+ throw new RivetTimeoutError("Timeout exceeded when calling GET /runners.");
3247
+ case "unknown":
3248
+ throw new RivetError({
3249
+ message: _response.error.errorMessage
3250
+ });
3251
+ }
3252
+ }
3253
+ /**
3254
+ * 2 round trips:
3255
+ *
3256
+ * - GET /runners/names (fanout)
3257
+ * - [api-peer] namespace::ops::resolve_for_name_global
3258
+ *
3259
+ * @param {Rivet.RunnersListNamesRequest} request
3260
+ * @param {Runners.RequestOptions} requestOptions - Request-specific configuration.
3261
+ *
3262
+ * @example
3263
+ * await client.runners.listNames({
3264
+ * namespace: "namespace"
3265
+ * })
3266
+ */
3267
+ async listNames(request, requestOptions) {
3268
+ const { namespace, limit, cursor } = request;
3269
+ const _queryParams = {};
3270
+ _queryParams["namespace"] = namespace;
3271
+ if (limit != null) {
3272
+ _queryParams["limit"] = limit.toString();
3273
+ }
3274
+ if (cursor != null) {
3275
+ _queryParams["cursor"] = cursor;
3276
+ }
3277
+ const _response = await (this._options.fetcher ?? fetcher)({
3278
+ url: urlJoin5(
3279
+ await Supplier.get(this._options.baseUrl) ?? await Supplier.get(this._options.environment),
3280
+ "runners/names"
3281
+ ),
3282
+ method: "GET",
3283
+ headers: {
3284
+ Authorization: await this._getAuthorizationHeader(),
3285
+ "X-Fern-Language": "JavaScript",
3286
+ "X-Fern-Runtime": RUNTIME.type,
3287
+ "X-Fern-Runtime-Version": RUNTIME.version,
3288
+ ...requestOptions?.headers
3289
+ },
3290
+ contentType: "application/json",
3291
+ queryParameters: _queryParams,
3292
+ requestType: "json",
3293
+ timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1e3 : 18e4,
3294
+ maxRetries: requestOptions?.maxRetries,
3295
+ abortSignal: requestOptions?.abortSignal
3296
+ });
3297
+ if (_response.ok) {
3298
+ return RunnersListNamesResponse.parseOrThrow(_response.body, {
3299
+ unrecognizedObjectKeys: "passthrough",
3300
+ allowUnrecognizedUnionMembers: true,
3301
+ allowUnrecognizedEnumValues: true,
3302
+ skipValidation: true,
3303
+ breadcrumbsPrefix: ["response"]
3304
+ });
3305
+ }
3306
+ if (_response.error.reason === "status-code") {
3307
+ throw new RivetError({
3308
+ statusCode: _response.error.statusCode,
3309
+ body: _response.error.body
3310
+ });
3311
+ }
3312
+ switch (_response.error.reason) {
3313
+ case "non-json":
3314
+ throw new RivetError({
3315
+ statusCode: _response.error.statusCode,
3316
+ body: _response.error.rawBody
3317
+ });
3318
+ case "timeout":
3319
+ throw new RivetTimeoutError("Timeout exceeded when calling GET /runners/names.");
3320
+ case "unknown":
3321
+ throw new RivetError({
3322
+ message: _response.error.errorMessage
3323
+ });
3324
+ }
3325
+ }
3326
+ async _getAuthorizationHeader() {
3327
+ return `Bearer ${await Supplier.get(this._options.token)}`;
3328
+ }
3329
+ };
3330
+
3331
+ // src/Client.ts
3332
+ var RivetClient = class {
3333
+ constructor(_options) {
3334
+ this._options = _options;
3335
+ }
3336
+ _datacenters;
3337
+ _health;
3338
+ _metadata;
3339
+ _namespaces;
3340
+ _runners;
3341
+ get datacenters() {
3342
+ return this._datacenters ??= new Datacenters(this._options);
3343
+ }
3344
+ get health() {
3345
+ return this._health ??= new Health(this._options);
3346
+ }
3347
+ get metadata() {
3348
+ return this._metadata ??= new Metadata(this._options);
3349
+ }
3350
+ get namespaces() {
3351
+ return this._namespaces ??= new Namespaces(this._options);
3352
+ }
3353
+ get runners() {
3354
+ return this._runners ??= new Runners(this._options);
3355
+ }
3356
+ /**
3357
+ * **If key is some & `include_destroyed` is false**
3358
+ *
3359
+ * 2 round trips:
3360
+ *
3361
+ * - namespace::ops::resolve_for_name_global
3362
+ * - GET /actors (multiple DCs based on actor IDs)
3363
+ *
3364
+ * This path is optimized because we can read the actor IDs fro the key directly from Epoxy with
3365
+ * stale consistency to determine which datacenter the actor lives in. Under most circumstances,
3366
+ * this means we don't need to fan out to all datacenters (like normal list does).
3367
+ *
3368
+ * The reason `include_destroyed` has to be false is Epoxy only stores currently active actors. If
3369
+ * `include_destroyed` is true, we show all previous iterations of actors with the same key.
3370
+ *
3371
+ * **Otherwise**
3372
+ *
3373
+ * 2 round trips:
3374
+ *
3375
+ * - namespace::ops::resolve_for_name_global
3376
+ * - GET /actors (fanout)
3377
+ *
3378
+ * ## Optimized Alternative Routes
3379
+ *
3380
+ * @param {Rivet.ActorsListRequest} request
3381
+ * @param {RivetClient.RequestOptions} requestOptions - Request-specific configuration.
3382
+ *
3383
+ * @example
3384
+ * await client.actorsList({
3385
+ * namespace: "namespace"
3386
+ * })
3387
+ */
3388
+ async actorsList(request, requestOptions) {
3389
+ const { namespace, name, key, actorIds, actorId, includeDestroyed, limit, cursor } = request;
3390
+ const _queryParams = {};
3391
+ _queryParams["namespace"] = namespace;
3392
+ if (name != null) {
3393
+ _queryParams["name"] = name;
3394
+ }
3395
+ if (key != null) {
3396
+ _queryParams["key"] = key;
3397
+ }
3398
+ if (actorIds != null) {
3399
+ _queryParams["actor_ids"] = actorIds;
3400
+ }
3401
+ if (actorId != null) {
3402
+ if (Array.isArray(actorId)) {
3403
+ _queryParams["actor_id"] = actorId.map(
3404
+ (item) => RivetId.jsonOrThrow(item, { unrecognizedObjectKeys: "strip" })
3405
+ );
3406
+ } else {
3407
+ _queryParams["actor_id"] = actorId;
3408
+ }
3409
+ }
3410
+ if (includeDestroyed != null) {
3411
+ _queryParams["include_destroyed"] = includeDestroyed.toString();
3412
+ }
3413
+ if (limit != null) {
3414
+ _queryParams["limit"] = limit.toString();
3415
+ }
3416
+ if (cursor != null) {
3417
+ _queryParams["cursor"] = cursor;
3418
+ }
3419
+ const _response = await (this._options.fetcher ?? fetcher)({
3420
+ url: urlJoin6(
3421
+ await Supplier.get(this._options.baseUrl) ?? await Supplier.get(this._options.environment),
3422
+ "actors"
3423
+ ),
3424
+ method: "GET",
3425
+ headers: {
3426
+ Authorization: await this._getAuthorizationHeader(),
3427
+ "X-Fern-Language": "JavaScript",
3428
+ "X-Fern-Runtime": RUNTIME.type,
3429
+ "X-Fern-Runtime-Version": RUNTIME.version,
3430
+ ...requestOptions?.headers
3431
+ },
3432
+ contentType: "application/json",
3433
+ queryParameters: _queryParams,
3434
+ requestType: "json",
3435
+ timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1e3 : 18e4,
3436
+ maxRetries: requestOptions?.maxRetries,
3437
+ abortSignal: requestOptions?.abortSignal
3438
+ });
3439
+ if (_response.ok) {
3440
+ return ActorsListResponse.parseOrThrow(_response.body, {
3441
+ unrecognizedObjectKeys: "passthrough",
3442
+ allowUnrecognizedUnionMembers: true,
3443
+ allowUnrecognizedEnumValues: true,
3444
+ skipValidation: true,
3445
+ breadcrumbsPrefix: ["response"]
3446
+ });
3447
+ }
3448
+ if (_response.error.reason === "status-code") {
3449
+ throw new RivetError({
3450
+ statusCode: _response.error.statusCode,
3451
+ body: _response.error.body
3452
+ });
3453
+ }
3454
+ switch (_response.error.reason) {
3455
+ case "non-json":
3456
+ throw new RivetError({
3457
+ statusCode: _response.error.statusCode,
3458
+ body: _response.error.rawBody
3459
+ });
3460
+ case "timeout":
3461
+ throw new RivetTimeoutError("Timeout exceeded when calling GET /actors.");
3462
+ case "unknown":
3463
+ throw new RivetError({
3464
+ message: _response.error.errorMessage
3465
+ });
3466
+ }
3467
+ }
3468
+ /**
3469
+ * **If actor is created in the current datacenter:**
3470
+ *
3471
+ * 2 round trips:
3472
+ *
3473
+ * - namespace::ops::resolve_for_name_global
3474
+ * - [pegboard::workflows::actor] Create actor workflow (includes Epoxy key allocation)
3475
+ *
3476
+ * **If actor is created in a different datacenter:**
3477
+ *
3478
+ * 3 round trips:
3479
+ *
3480
+ * - namespace::ops::resolve_for_name_global
3481
+ * - POST /actors to remote datacenter
3482
+ * - [pegboard::workflows::actor] Create actor workflow (includes Epoxy key allocation)
3483
+ *
3484
+ * actor::get will always be in the same datacenter.
3485
+ *
3486
+ * @param {Rivet.ActorsCreateRequest} request
3487
+ * @param {RivetClient.RequestOptions} requestOptions - Request-specific configuration.
3488
+ *
3489
+ * @example
3490
+ * await client.actorsCreate({
3491
+ * namespace: "namespace",
3492
+ * crashPolicy: "restart",
3493
+ * name: "name",
3494
+ * runnerNameSelector: "runner_name_selector"
3495
+ * })
3496
+ */
3497
+ async actorsCreate(request, requestOptions) {
3498
+ const { namespace, ..._body } = request;
3499
+ const _queryParams = {};
3500
+ _queryParams["namespace"] = namespace;
3501
+ const _response = await (this._options.fetcher ?? fetcher)({
3502
+ url: urlJoin6(
3503
+ await Supplier.get(this._options.baseUrl) ?? await Supplier.get(this._options.environment),
3504
+ "actors"
3505
+ ),
3506
+ method: "POST",
3507
+ headers: {
3508
+ Authorization: await this._getAuthorizationHeader(),
3509
+ "X-Fern-Language": "JavaScript",
3510
+ "X-Fern-Runtime": RUNTIME.type,
3511
+ "X-Fern-Runtime-Version": RUNTIME.version,
3512
+ ...requestOptions?.headers
3513
+ },
3514
+ contentType: "application/json",
3515
+ queryParameters: _queryParams,
3516
+ requestType: "json",
3517
+ body: ActorsCreateRequest.jsonOrThrow(_body, { unrecognizedObjectKeys: "strip" }),
3518
+ timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1e3 : 18e4,
3519
+ maxRetries: requestOptions?.maxRetries,
3520
+ abortSignal: requestOptions?.abortSignal
3521
+ });
3522
+ if (_response.ok) {
3523
+ return ActorsCreateResponse.parseOrThrow(_response.body, {
3524
+ unrecognizedObjectKeys: "passthrough",
3525
+ allowUnrecognizedUnionMembers: true,
3526
+ allowUnrecognizedEnumValues: true,
3527
+ skipValidation: true,
3528
+ breadcrumbsPrefix: ["response"]
3529
+ });
3530
+ }
3531
+ if (_response.error.reason === "status-code") {
3532
+ throw new RivetError({
3533
+ statusCode: _response.error.statusCode,
3534
+ body: _response.error.body
3535
+ });
3536
+ }
3537
+ switch (_response.error.reason) {
3538
+ case "non-json":
3539
+ throw new RivetError({
3540
+ statusCode: _response.error.statusCode,
3541
+ body: _response.error.rawBody
3542
+ });
3543
+ case "timeout":
3544
+ throw new RivetTimeoutError("Timeout exceeded when calling POST /actors.");
3545
+ case "unknown":
3546
+ throw new RivetError({
3547
+ message: _response.error.errorMessage
3548
+ });
3549
+ }
3550
+ }
3551
+ /**
3552
+ * **If actor exists**
3553
+ *
3554
+ * 2 round trips:
3555
+ *
3556
+ * - namespace::ops::resolve_for_name_global
3557
+ * - GET /actors/{}
3558
+ *
3559
+ * **If actor does not exist and is created in the current datacenter:**
3560
+ *
3561
+ * 2 round trips:
3562
+ *
3563
+ * - namespace::ops::resolve_for_name_global
3564
+ * - [pegboard::workflows::actor] Create actor workflow (includes Epoxy key allocation)
3565
+ *
3566
+ * **If actor does not exist and is created in a different datacenter:**
3567
+ *
3568
+ * 3 round trips:
3569
+ *
3570
+ * - namespace::ops::resolve_for_name_global
3571
+ * - POST /actors to remote datacenter
3572
+ * - [pegboard::workflows::actor] Create actor workflow (includes Epoxy key allocation)
3573
+ *
3574
+ * actor::get will always be in the same datacenter.
3575
+ *
3576
+ * ## Optimized Alternative Routes
3577
+ *
3578
+ * @param {Rivet.ActorsGetOrCreateRequest} request
3579
+ * @param {RivetClient.RequestOptions} requestOptions - Request-specific configuration.
3580
+ *
3581
+ * @example
3582
+ * await client.actorsGetOrCreate({
3583
+ * namespace: "namespace",
3584
+ * crashPolicy: "restart",
3585
+ * key: "key",
3586
+ * name: "name",
3587
+ * runnerNameSelector: "runner_name_selector"
3588
+ * })
3589
+ */
3590
+ async actorsGetOrCreate(request, requestOptions) {
3591
+ const { namespace, ..._body } = request;
3592
+ const _queryParams = {};
3593
+ _queryParams["namespace"] = namespace;
3594
+ const _response = await (this._options.fetcher ?? fetcher)({
3595
+ url: urlJoin6(
3596
+ await Supplier.get(this._options.baseUrl) ?? await Supplier.get(this._options.environment),
3597
+ "actors"
3598
+ ),
3599
+ method: "PUT",
3600
+ headers: {
3601
+ Authorization: await this._getAuthorizationHeader(),
3602
+ "X-Fern-Language": "JavaScript",
3603
+ "X-Fern-Runtime": RUNTIME.type,
3604
+ "X-Fern-Runtime-Version": RUNTIME.version,
3605
+ ...requestOptions?.headers
3606
+ },
3607
+ contentType: "application/json",
3608
+ queryParameters: _queryParams,
3609
+ requestType: "json",
3610
+ body: ActorsGetOrCreateRequest.jsonOrThrow(_body, { unrecognizedObjectKeys: "strip" }),
3611
+ timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1e3 : 18e4,
3612
+ maxRetries: requestOptions?.maxRetries,
3613
+ abortSignal: requestOptions?.abortSignal
3614
+ });
3615
+ if (_response.ok) {
3616
+ return ActorsGetOrCreateResponse.parseOrThrow(_response.body, {
3617
+ unrecognizedObjectKeys: "passthrough",
3618
+ allowUnrecognizedUnionMembers: true,
3619
+ allowUnrecognizedEnumValues: true,
3620
+ skipValidation: true,
3621
+ breadcrumbsPrefix: ["response"]
3622
+ });
3623
+ }
3624
+ if (_response.error.reason === "status-code") {
3625
+ throw new RivetError({
3626
+ statusCode: _response.error.statusCode,
3627
+ body: _response.error.body
3628
+ });
3629
+ }
3630
+ switch (_response.error.reason) {
3631
+ case "non-json":
3632
+ throw new RivetError({
3633
+ statusCode: _response.error.statusCode,
3634
+ body: _response.error.rawBody
3635
+ });
3636
+ case "timeout":
3637
+ throw new RivetTimeoutError("Timeout exceeded when calling PUT /actors.");
3638
+ case "unknown":
3639
+ throw new RivetError({
3640
+ message: _response.error.errorMessage
3641
+ });
3642
+ }
3643
+ }
3644
+ /**
3645
+ * 2 round trips:
3646
+ *
3647
+ * - GET /actors/names (fanout)
3648
+ * - [api-peer] namespace::ops::resolve_for_name_global
3649
+ *
3650
+ * @param {Rivet.ActorsListNamesRequest} request
3651
+ * @param {RivetClient.RequestOptions} requestOptions - Request-specific configuration.
3652
+ *
3653
+ * @example
3654
+ * await client.actorsListNames({
3655
+ * namespace: "namespace"
3656
+ * })
3657
+ */
3658
+ async actorsListNames(request, requestOptions) {
3659
+ const { namespace, limit, cursor } = request;
3660
+ const _queryParams = {};
3661
+ _queryParams["namespace"] = namespace;
3662
+ if (limit != null) {
3663
+ _queryParams["limit"] = limit.toString();
3664
+ }
3665
+ if (cursor != null) {
3666
+ _queryParams["cursor"] = cursor;
3667
+ }
3668
+ const _response = await (this._options.fetcher ?? fetcher)({
3669
+ url: urlJoin6(
3670
+ await Supplier.get(this._options.baseUrl) ?? await Supplier.get(this._options.environment),
3671
+ "actors/names"
3672
+ ),
3673
+ method: "GET",
3674
+ headers: {
3675
+ Authorization: await this._getAuthorizationHeader(),
3676
+ "X-Fern-Language": "JavaScript",
3677
+ "X-Fern-Runtime": RUNTIME.type,
3678
+ "X-Fern-Runtime-Version": RUNTIME.version,
3679
+ ...requestOptions?.headers
3680
+ },
3681
+ contentType: "application/json",
3682
+ queryParameters: _queryParams,
3683
+ requestType: "json",
3684
+ timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1e3 : 18e4,
3685
+ maxRetries: requestOptions?.maxRetries,
3686
+ abortSignal: requestOptions?.abortSignal
3687
+ });
3688
+ if (_response.ok) {
3689
+ return ActorsListNamesResponse.parseOrThrow(_response.body, {
3690
+ unrecognizedObjectKeys: "passthrough",
3691
+ allowUnrecognizedUnionMembers: true,
3692
+ allowUnrecognizedEnumValues: true,
3693
+ skipValidation: true,
3694
+ breadcrumbsPrefix: ["response"]
3695
+ });
3696
+ }
3697
+ if (_response.error.reason === "status-code") {
3698
+ throw new RivetError({
3699
+ statusCode: _response.error.statusCode,
3700
+ body: _response.error.body
3701
+ });
3702
+ }
3703
+ switch (_response.error.reason) {
3704
+ case "non-json":
3705
+ throw new RivetError({
3706
+ statusCode: _response.error.statusCode,
3707
+ body: _response.error.rawBody
3708
+ });
3709
+ case "timeout":
3710
+ throw new RivetTimeoutError("Timeout exceeded when calling GET /actors/names.");
3711
+ case "unknown":
3712
+ throw new RivetError({
3713
+ message: _response.error.errorMessage
3714
+ });
3715
+ }
3716
+ }
3717
+ /**
3718
+ * 2 round trip:
3719
+ *
3720
+ * - DELETE /actors/{}
3721
+ * - [api-peer] namespace::ops::resolve_for_name_global
3722
+ *
3723
+ * @param {Rivet.RivetId} actorId
3724
+ * @param {Rivet.ActorsDeleteRequest} request
3725
+ * @param {RivetClient.RequestOptions} requestOptions - Request-specific configuration.
3726
+ *
3727
+ * @example
3728
+ * await client.actorsDelete("actor_id", {
3729
+ * namespace: "namespace"
3730
+ * })
3731
+ */
3732
+ async actorsDelete(actorId, request, requestOptions) {
3733
+ const { namespace } = request;
3734
+ const _queryParams = {};
3735
+ _queryParams["namespace"] = namespace;
3736
+ const _response = await (this._options.fetcher ?? fetcher)({
3737
+ url: urlJoin6(
3738
+ await Supplier.get(this._options.baseUrl) ?? await Supplier.get(this._options.environment),
3739
+ `actors/${encodeURIComponent(RivetId.jsonOrThrow(actorId))}`
3740
+ ),
3741
+ method: "DELETE",
3742
+ headers: {
3743
+ Authorization: await this._getAuthorizationHeader(),
3744
+ "X-Fern-Language": "JavaScript",
3745
+ "X-Fern-Runtime": RUNTIME.type,
3746
+ "X-Fern-Runtime-Version": RUNTIME.version,
3747
+ ...requestOptions?.headers
3748
+ },
3749
+ contentType: "application/json",
3750
+ queryParameters: _queryParams,
3751
+ requestType: "json",
3752
+ timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1e3 : 18e4,
3753
+ maxRetries: requestOptions?.maxRetries,
3754
+ abortSignal: requestOptions?.abortSignal
3755
+ });
3756
+ if (_response.ok) {
3757
+ return ActorsDeleteResponse.parseOrThrow(_response.body, {
3758
+ unrecognizedObjectKeys: "passthrough",
3759
+ allowUnrecognizedUnionMembers: true,
3760
+ allowUnrecognizedEnumValues: true,
3761
+ skipValidation: true,
3762
+ breadcrumbsPrefix: ["response"]
3763
+ });
3764
+ }
3765
+ if (_response.error.reason === "status-code") {
3766
+ throw new RivetError({
3767
+ statusCode: _response.error.statusCode,
3768
+ body: _response.error.body
3769
+ });
3770
+ }
3771
+ switch (_response.error.reason) {
3772
+ case "non-json":
3773
+ throw new RivetError({
3774
+ statusCode: _response.error.statusCode,
3775
+ body: _response.error.rawBody
3776
+ });
3777
+ case "timeout":
3778
+ throw new RivetTimeoutError("Timeout exceeded when calling DELETE /actors/{actor_id}.");
3779
+ case "unknown":
3780
+ throw new RivetError({
3781
+ message: _response.error.errorMessage
3782
+ });
3783
+ }
3784
+ }
3785
+ /**
3786
+ * @param {Rivet.RivetId} actorId
3787
+ * @param {string} key
3788
+ * @param {Rivet.ActorsKvGetRequest} request
3789
+ * @param {RivetClient.RequestOptions} requestOptions - Request-specific configuration.
3790
+ *
3791
+ * @example
3792
+ * await client.actorsKvGet("actor_id", "key", {
3793
+ * namespace: "namespace"
3794
+ * })
3795
+ */
3796
+ async actorsKvGet(actorId, key, request, requestOptions) {
3797
+ const { namespace } = request;
3798
+ const _queryParams = {};
3799
+ _queryParams["namespace"] = namespace;
3800
+ const _response = await (this._options.fetcher ?? fetcher)({
3801
+ url: urlJoin6(
3802
+ await Supplier.get(this._options.baseUrl) ?? await Supplier.get(this._options.environment),
3803
+ `actors/${encodeURIComponent(RivetId.jsonOrThrow(actorId))}/kv/keys/${encodeURIComponent(key)}`
3804
+ ),
3805
+ method: "GET",
3806
+ headers: {
3807
+ Authorization: await this._getAuthorizationHeader(),
3808
+ "X-Fern-Language": "JavaScript",
3809
+ "X-Fern-Runtime": RUNTIME.type,
3810
+ "X-Fern-Runtime-Version": RUNTIME.version,
3811
+ ...requestOptions?.headers
3812
+ },
3813
+ contentType: "application/json",
3814
+ queryParameters: _queryParams,
3815
+ requestType: "json",
3816
+ timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1e3 : 18e4,
3817
+ maxRetries: requestOptions?.maxRetries,
3818
+ abortSignal: requestOptions?.abortSignal
3819
+ });
3820
+ if (_response.ok) {
3821
+ return ActorsKvGetResponse.parseOrThrow(_response.body, {
3822
+ unrecognizedObjectKeys: "passthrough",
3823
+ allowUnrecognizedUnionMembers: true,
3824
+ allowUnrecognizedEnumValues: true,
3825
+ skipValidation: true,
3826
+ breadcrumbsPrefix: ["response"]
3827
+ });
3828
+ }
3829
+ if (_response.error.reason === "status-code") {
3830
+ throw new RivetError({
3831
+ statusCode: _response.error.statusCode,
3832
+ body: _response.error.body
3833
+ });
3834
+ }
3835
+ switch (_response.error.reason) {
3836
+ case "non-json":
3837
+ throw new RivetError({
3838
+ statusCode: _response.error.statusCode,
3839
+ body: _response.error.rawBody
3840
+ });
3841
+ case "timeout":
3842
+ throw new RivetTimeoutError(
3843
+ "Timeout exceeded when calling GET /actors/{actor_id}/kv/keys/{key}."
3844
+ );
3845
+ case "unknown":
3846
+ throw new RivetError({
3847
+ message: _response.error.errorMessage
3848
+ });
3849
+ }
3850
+ }
3851
+ /**
3852
+ * @param {Rivet.RunnerConfigsListRequest} request
3853
+ * @param {RivetClient.RequestOptions} requestOptions - Request-specific configuration.
3854
+ *
3855
+ * @example
3856
+ * await client.runnerConfigsList({
3857
+ * namespace: "namespace"
3858
+ * })
3859
+ */
3860
+ async runnerConfigsList(request, requestOptions) {
3861
+ const { namespace, limit, cursor, variant, runnerNames, runnerName } = request;
3862
+ const _queryParams = {};
3863
+ _queryParams["namespace"] = namespace;
3864
+ if (limit != null) {
3865
+ _queryParams["limit"] = limit.toString();
3866
+ }
3867
+ if (cursor != null) {
3868
+ _queryParams["cursor"] = cursor;
3869
+ }
3870
+ if (variant != null) {
3871
+ _queryParams["variant"] = RunnerConfigVariant2.jsonOrThrow(variant, {
3872
+ unrecognizedObjectKeys: "strip"
3873
+ });
3874
+ }
3875
+ if (runnerNames != null) {
3876
+ _queryParams["runner_names"] = runnerNames;
3877
+ }
3878
+ if (runnerName != null) {
3879
+ if (Array.isArray(runnerName)) {
3880
+ _queryParams["runner_name"] = runnerName.map((item) => item);
3881
+ } else {
3882
+ _queryParams["runner_name"] = runnerName;
3883
+ }
3884
+ }
3885
+ const _response = await (this._options.fetcher ?? fetcher)({
3886
+ url: urlJoin6(
3887
+ await Supplier.get(this._options.baseUrl) ?? await Supplier.get(this._options.environment),
3888
+ "runner-configs"
3889
+ ),
3890
+ method: "GET",
3891
+ headers: {
3892
+ Authorization: await this._getAuthorizationHeader(),
3893
+ "X-Fern-Language": "JavaScript",
3894
+ "X-Fern-Runtime": RUNTIME.type,
3895
+ "X-Fern-Runtime-Version": RUNTIME.version,
3896
+ ...requestOptions?.headers
3897
+ },
3898
+ contentType: "application/json",
3899
+ queryParameters: _queryParams,
3900
+ requestType: "json",
3901
+ timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1e3 : 18e4,
3902
+ maxRetries: requestOptions?.maxRetries,
3903
+ abortSignal: requestOptions?.abortSignal
3904
+ });
3905
+ if (_response.ok) {
3906
+ return RunnerConfigsListResponse.parseOrThrow(_response.body, {
3907
+ unrecognizedObjectKeys: "passthrough",
3908
+ allowUnrecognizedUnionMembers: true,
3909
+ allowUnrecognizedEnumValues: true,
3910
+ skipValidation: true,
3911
+ breadcrumbsPrefix: ["response"]
3912
+ });
3913
+ }
3914
+ if (_response.error.reason === "status-code") {
3915
+ throw new RivetError({
3916
+ statusCode: _response.error.statusCode,
3917
+ body: _response.error.body
3918
+ });
3919
+ }
3920
+ switch (_response.error.reason) {
3921
+ case "non-json":
3922
+ throw new RivetError({
3923
+ statusCode: _response.error.statusCode,
3924
+ body: _response.error.rawBody
3925
+ });
3926
+ case "timeout":
3927
+ throw new RivetTimeoutError("Timeout exceeded when calling GET /runner-configs.");
3928
+ case "unknown":
3929
+ throw new RivetError({
3930
+ message: _response.error.errorMessage
3931
+ });
3932
+ }
3933
+ }
3934
+ /**
3935
+ * @param {Rivet.RunnerConfigsServerlessHealthCheckRequest} request
3936
+ * @param {RivetClient.RequestOptions} requestOptions - Request-specific configuration.
3937
+ *
3938
+ * @example
3939
+ * await client.runnerConfigsServerlessHealthCheck({
3940
+ * namespace: "namespace",
3941
+ * url: "url"
3942
+ * })
3943
+ */
3944
+ async runnerConfigsServerlessHealthCheck(request, requestOptions) {
3945
+ const { namespace, ..._body } = request;
3946
+ const _queryParams = {};
3947
+ _queryParams["namespace"] = namespace;
3948
+ const _response = await (this._options.fetcher ?? fetcher)({
3949
+ url: urlJoin6(
3950
+ await Supplier.get(this._options.baseUrl) ?? await Supplier.get(this._options.environment),
3951
+ "runner-configs/serverless-health-check"
3952
+ ),
3953
+ method: "POST",
3954
+ headers: {
3955
+ Authorization: await this._getAuthorizationHeader(),
3956
+ "X-Fern-Language": "JavaScript",
3957
+ "X-Fern-Runtime": RUNTIME.type,
3958
+ "X-Fern-Runtime-Version": RUNTIME.version,
3959
+ ...requestOptions?.headers
3960
+ },
3961
+ contentType: "application/json",
3962
+ queryParameters: _queryParams,
3963
+ requestType: "json",
3964
+ body: RunnerConfigsServerlessHealthCheckRequest.jsonOrThrow(_body, {
3965
+ unrecognizedObjectKeys: "strip"
3966
+ }),
3967
+ timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1e3 : 18e4,
3968
+ maxRetries: requestOptions?.maxRetries,
3969
+ abortSignal: requestOptions?.abortSignal
3970
+ });
3971
+ if (_response.ok) {
3972
+ return RunnerConfigsServerlessHealthCheckResponse.parseOrThrow(_response.body, {
3973
+ unrecognizedObjectKeys: "passthrough",
3974
+ allowUnrecognizedUnionMembers: true,
3975
+ allowUnrecognizedEnumValues: true,
3976
+ skipValidation: true,
3977
+ breadcrumbsPrefix: ["response"]
3978
+ });
3979
+ }
3980
+ if (_response.error.reason === "status-code") {
3981
+ throw new RivetError({
3982
+ statusCode: _response.error.statusCode,
3983
+ body: _response.error.body
3984
+ });
3985
+ }
3986
+ switch (_response.error.reason) {
3987
+ case "non-json":
3988
+ throw new RivetError({
3989
+ statusCode: _response.error.statusCode,
3990
+ body: _response.error.rawBody
3991
+ });
3992
+ case "timeout":
3993
+ throw new RivetTimeoutError(
3994
+ "Timeout exceeded when calling POST /runner-configs/serverless-health-check."
3995
+ );
3996
+ case "unknown":
3997
+ throw new RivetError({
3998
+ message: _response.error.errorMessage
3999
+ });
4000
+ }
4001
+ }
4002
+ /**
4003
+ * @param {string} runnerName
4004
+ * @param {Rivet.RunnerConfigsUpsertRequestBody} request
4005
+ * @param {RivetClient.RequestOptions} requestOptions - Request-specific configuration.
4006
+ *
4007
+ * @example
4008
+ * await client.runnerConfigsUpsert("runner_name", {
4009
+ * namespace: "namespace",
4010
+ * datacenters: {
4011
+ * "key": {}
4012
+ * }
4013
+ * })
4014
+ */
4015
+ async runnerConfigsUpsert(runnerName, request, requestOptions) {
4016
+ const { namespace, ..._body } = request;
4017
+ const _queryParams = {};
4018
+ _queryParams["namespace"] = namespace;
4019
+ const _response = await (this._options.fetcher ?? fetcher)({
4020
+ url: urlJoin6(
4021
+ await Supplier.get(this._options.baseUrl) ?? await Supplier.get(this._options.environment),
4022
+ `runner-configs/${encodeURIComponent(runnerName)}`
4023
+ ),
4024
+ method: "PUT",
4025
+ headers: {
4026
+ Authorization: await this._getAuthorizationHeader(),
4027
+ "X-Fern-Language": "JavaScript",
4028
+ "X-Fern-Runtime": RUNTIME.type,
4029
+ "X-Fern-Runtime-Version": RUNTIME.version,
4030
+ ...requestOptions?.headers
4031
+ },
4032
+ contentType: "application/json",
4033
+ queryParameters: _queryParams,
4034
+ requestType: "json",
4035
+ body: RunnerConfigsUpsertRequestBody.jsonOrThrow(_body, { unrecognizedObjectKeys: "strip" }),
4036
+ timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1e3 : 18e4,
4037
+ maxRetries: requestOptions?.maxRetries,
4038
+ abortSignal: requestOptions?.abortSignal
4039
+ });
4040
+ if (_response.ok) {
4041
+ return RunnerConfigsUpsertResponse.parseOrThrow(_response.body, {
4042
+ unrecognizedObjectKeys: "passthrough",
4043
+ allowUnrecognizedUnionMembers: true,
4044
+ allowUnrecognizedEnumValues: true,
4045
+ skipValidation: true,
4046
+ breadcrumbsPrefix: ["response"]
4047
+ });
4048
+ }
4049
+ if (_response.error.reason === "status-code") {
4050
+ throw new RivetError({
4051
+ statusCode: _response.error.statusCode,
4052
+ body: _response.error.body
4053
+ });
4054
+ }
4055
+ switch (_response.error.reason) {
4056
+ case "non-json":
4057
+ throw new RivetError({
4058
+ statusCode: _response.error.statusCode,
4059
+ body: _response.error.rawBody
4060
+ });
4061
+ case "timeout":
4062
+ throw new RivetTimeoutError("Timeout exceeded when calling PUT /runner-configs/{runner_name}.");
4063
+ case "unknown":
4064
+ throw new RivetError({
4065
+ message: _response.error.errorMessage
4066
+ });
4067
+ }
4068
+ }
4069
+ /**
4070
+ * @param {string} runnerName
4071
+ * @param {Rivet.RunnerConfigsDeleteRequest} request
4072
+ * @param {RivetClient.RequestOptions} requestOptions - Request-specific configuration.
4073
+ *
4074
+ * @example
4075
+ * await client.runnerConfigsDelete("runner_name", {
4076
+ * namespace: "namespace"
4077
+ * })
4078
+ */
4079
+ async runnerConfigsDelete(runnerName, request, requestOptions) {
4080
+ const { namespace } = request;
4081
+ const _queryParams = {};
4082
+ _queryParams["namespace"] = namespace;
4083
+ const _response = await (this._options.fetcher ?? fetcher)({
4084
+ url: urlJoin6(
4085
+ await Supplier.get(this._options.baseUrl) ?? await Supplier.get(this._options.environment),
4086
+ `runner-configs/${encodeURIComponent(runnerName)}`
4087
+ ),
4088
+ method: "DELETE",
4089
+ headers: {
4090
+ Authorization: await this._getAuthorizationHeader(),
4091
+ "X-Fern-Language": "JavaScript",
4092
+ "X-Fern-Runtime": RUNTIME.type,
4093
+ "X-Fern-Runtime-Version": RUNTIME.version,
4094
+ ...requestOptions?.headers
4095
+ },
4096
+ contentType: "application/json",
4097
+ queryParameters: _queryParams,
4098
+ requestType: "json",
4099
+ timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1e3 : 18e4,
4100
+ maxRetries: requestOptions?.maxRetries,
4101
+ abortSignal: requestOptions?.abortSignal
4102
+ });
4103
+ if (_response.ok) {
4104
+ return RunnerConfigsDeleteResponse.parseOrThrow(_response.body, {
4105
+ unrecognizedObjectKeys: "passthrough",
4106
+ allowUnrecognizedUnionMembers: true,
4107
+ allowUnrecognizedEnumValues: true,
4108
+ skipValidation: true,
4109
+ breadcrumbsPrefix: ["response"]
4110
+ });
4111
+ }
4112
+ if (_response.error.reason === "status-code") {
4113
+ throw new RivetError({
4114
+ statusCode: _response.error.statusCode,
4115
+ body: _response.error.body
4116
+ });
4117
+ }
4118
+ switch (_response.error.reason) {
4119
+ case "non-json":
4120
+ throw new RivetError({
4121
+ statusCode: _response.error.statusCode,
4122
+ body: _response.error.rawBody
4123
+ });
4124
+ case "timeout":
4125
+ throw new RivetTimeoutError(
4126
+ "Timeout exceeded when calling DELETE /runner-configs/{runner_name}."
4127
+ );
4128
+ case "unknown":
4129
+ throw new RivetError({
4130
+ message: _response.error.errorMessage
4131
+ });
4132
+ }
4133
+ }
4134
+ /**
4135
+ * @param {string} runnerName
4136
+ * @param {Rivet.RunnerConfigsRefreshMetadataRequest} request
4137
+ * @param {RivetClient.RequestOptions} requestOptions - Request-specific configuration.
4138
+ *
4139
+ * @example
4140
+ * await client.runnerConfigsRefreshMetadata("runner_name", {
4141
+ * namespace: "namespace",
4142
+ * body: {
4143
+ * "key": "value"
4144
+ * }
4145
+ * })
4146
+ */
4147
+ async runnerConfigsRefreshMetadata(runnerName, request, requestOptions) {
4148
+ const { namespace, body: _body } = request;
4149
+ const _queryParams = {};
4150
+ _queryParams["namespace"] = namespace;
4151
+ const _response = await (this._options.fetcher ?? fetcher)({
4152
+ url: urlJoin6(
4153
+ await Supplier.get(this._options.baseUrl) ?? await Supplier.get(this._options.environment),
4154
+ `runner-configs/${encodeURIComponent(runnerName)}/refresh-metadata`
4155
+ ),
4156
+ method: "POST",
4157
+ headers: {
4158
+ Authorization: await this._getAuthorizationHeader(),
4159
+ "X-Fern-Language": "JavaScript",
4160
+ "X-Fern-Runtime": RUNTIME.type,
4161
+ "X-Fern-Runtime-Version": RUNTIME.version,
4162
+ ...requestOptions?.headers
4163
+ },
4164
+ contentType: "application/json",
4165
+ queryParameters: _queryParams,
4166
+ requestType: "json",
4167
+ body: RunnerConfigsRefreshMetadataRequestBody.jsonOrThrow(_body, {
4168
+ unrecognizedObjectKeys: "strip"
4169
+ }),
4170
+ timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1e3 : 18e4,
4171
+ maxRetries: requestOptions?.maxRetries,
4172
+ abortSignal: requestOptions?.abortSignal
4173
+ });
4174
+ if (_response.ok) {
4175
+ return RunnerConfigsRefreshMetadataResponse.parseOrThrow(_response.body, {
4176
+ unrecognizedObjectKeys: "passthrough",
4177
+ allowUnrecognizedUnionMembers: true,
4178
+ allowUnrecognizedEnumValues: true,
4179
+ skipValidation: true,
4180
+ breadcrumbsPrefix: ["response"]
4181
+ });
4182
+ }
4183
+ if (_response.error.reason === "status-code") {
4184
+ throw new RivetError({
4185
+ statusCode: _response.error.statusCode,
4186
+ body: _response.error.body
4187
+ });
4188
+ }
4189
+ switch (_response.error.reason) {
4190
+ case "non-json":
4191
+ throw new RivetError({
4192
+ statusCode: _response.error.statusCode,
4193
+ body: _response.error.rawBody
4194
+ });
4195
+ case "timeout":
4196
+ throw new RivetTimeoutError(
4197
+ "Timeout exceeded when calling POST /runner-configs/{runner_name}/refresh-metadata."
4198
+ );
4199
+ case "unknown":
4200
+ throw new RivetError({
4201
+ message: _response.error.errorMessage
4202
+ });
4203
+ }
4204
+ }
4205
+ async _getAuthorizationHeader() {
4206
+ return `Bearer ${await Supplier.get(this._options.token)}`;
4207
+ }
4208
+ };
4209
+ export {
4210
+ api_exports as Rivet,
4211
+ RivetClient,
4212
+ RivetError,
4213
+ RivetTimeoutError,
4214
+ serialization_exports as serialization
4215
+ };