@rivetkit/engine-api-full 2.0.21

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