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