@distilled.cloud/stackit 1.0.0-rc.15 → 1.0.0-rc.17

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 (346) hide show
  1. package/lib/.lazy.json +1 -0
  2. package/lib/_bundle/lazy.js +4 -0
  3. package/lib/_bundle/sdk.js +2 -0
  4. package/lib/_bundle/sdk.js.map +1 -0
  5. package/lib/credentials.d.ts +2 -2
  6. package/lib/credentials.d.ts.map +1 -1
  7. package/lib/credentials.js +1 -49
  8. package/lib/errors.d.ts +13 -13
  9. package/lib/errors.d.ts.map +1 -1
  10. package/lib/errors.js +1 -26
  11. package/lib/index.d.ts +2 -2
  12. package/lib/index.js +1 -24
  13. package/lib/index.lazy.js +7 -0
  14. package/lib/pagination.d.ts +1 -1
  15. package/lib/pagination.js +1 -45
  16. package/lib/protocol.d.ts +3 -3
  17. package/lib/protocol.d.ts.map +1 -1
  18. package/lib/protocol.js +1 -147
  19. package/lib/retry.d.ts +1 -1
  20. package/lib/retry.d.ts.map +1 -1
  21. package/lib/retry.js +1 -31
  22. package/lib/services/alb.d.ts +10 -87
  23. package/lib/services/alb.d.ts.map +1 -1
  24. package/lib/services/alb.js +28 -512
  25. package/lib/services/alb.js.map +1 -1
  26. package/lib/services/alb_waf.d.ts +9 -82
  27. package/lib/services/alb_waf.d.ts.map +1 -1
  28. package/lib/services/alb_waf.js +33 -520
  29. package/lib/services/alb_waf.js.map +1 -1
  30. package/lib/services/authorization.d.ts +5 -47
  31. package/lib/services/authorization.d.ts.map +1 -1
  32. package/lib/services/authorization.js +1 -322
  33. package/lib/services/authorization.js.map +1 -1
  34. package/lib/services/automation.d.ts +7 -47
  35. package/lib/services/automation.d.ts.map +1 -1
  36. package/lib/services/automation.js +1 -362
  37. package/lib/services/automation.js.map +1 -1
  38. package/lib/services/cdn.d.ts +8 -220
  39. package/lib/services/cdn.d.ts.map +1 -1
  40. package/lib/services/cdn.js +31 -905
  41. package/lib/services/cdn.js.map +1 -1
  42. package/lib/services/certificates.d.ts +8 -27
  43. package/lib/services/certificates.d.ts.map +1 -1
  44. package/lib/services/certificates.js +1 -178
  45. package/lib/services/certificates.js.map +1 -1
  46. package/lib/services/cost.d.ts +10 -37
  47. package/lib/services/cost.d.ts.map +1 -1
  48. package/lib/services/cost.js +1 -176
  49. package/lib/services/cost.js.map +1 -1
  50. package/lib/services/dns.d.ts +9 -104
  51. package/lib/services/dns.d.ts.map +1 -1
  52. package/lib/services/dns.js +40 -725
  53. package/lib/services/dns.js.map +1 -1
  54. package/lib/services/dremio.d.ts +8 -50
  55. package/lib/services/dremio.d.ts.map +1 -1
  56. package/lib/services/dremio.js +1 -316
  57. package/lib/services/dremio.js.map +1 -1
  58. package/lib/services/edge.d.ts +7 -40
  59. package/lib/services/edge.d.ts.map +1 -1
  60. package/lib/services/edge.js +1 -356
  61. package/lib/services/edge.js.map +1 -1
  62. package/lib/services/functions.d.ts +1 -48
  63. package/lib/services/functions.d.ts.map +1 -1
  64. package/lib/services/functions.js +1 -398
  65. package/lib/services/functions.js.map +1 -1
  66. package/lib/services/git.d.ts +8 -61
  67. package/lib/services/git.d.ts.map +1 -1
  68. package/lib/services/git.js +35 -519
  69. package/lib/services/git.js.map +1 -1
  70. package/lib/services/iaas.d.ts +9 -337
  71. package/lib/services/iaas.d.ts.map +1 -1
  72. package/lib/services/iaas.js +181 -3542
  73. package/lib/services/iaas.js.map +1 -1
  74. package/lib/services/index.js +0 -2
  75. package/lib/services/intake.d.ts +8 -75
  76. package/lib/services/intake.d.ts.map +1 -1
  77. package/lib/services/intake.js +29 -474
  78. package/lib/services/intake.js.map +1 -1
  79. package/lib/services/kms.d.ts +9 -92
  80. package/lib/services/kms.d.ts.map +1 -1
  81. package/lib/services/kms.js +41 -662
  82. package/lib/services/kms.js.map +1 -1
  83. package/lib/services/lb_ip_lists.d.ts +9 -25
  84. package/lib/services/lb_ip_lists.d.ts.map +1 -1
  85. package/lib/services/lb_ip_lists.js +1 -153
  86. package/lib/services/lb_ip_lists.js.map +1 -1
  87. package/lib/services/load_balancer.d.ts +10 -81
  88. package/lib/services/load_balancer.d.ts.map +1 -1
  89. package/lib/services/load_balancer.js +29 -496
  90. package/lib/services/load_balancer.js.map +1 -1
  91. package/lib/services/logme.d.ts +8 -69
  92. package/lib/services/logme.d.ts.map +1 -1
  93. package/lib/services/logme.js +33 -573
  94. package/lib/services/logme.js.map +1 -1
  95. package/lib/services/logs.d.ts +8 -64
  96. package/lib/services/logs.d.ts.map +1 -1
  97. package/lib/services/logs.js +34 -474
  98. package/lib/services/logs.js.map +1 -1
  99. package/lib/services/mariadb.d.ts +8 -65
  100. package/lib/services/mariadb.d.ts.map +1 -1
  101. package/lib/services/mariadb.js +34 -550
  102. package/lib/services/mariadb.js.map +1 -1
  103. package/lib/services/model_experiments.d.ts +9 -48
  104. package/lib/services/model_experiments.d.ts.map +1 -1
  105. package/lib/services/model_experiments.js +1 -335
  106. package/lib/services/model_experiments.js.map +1 -1
  107. package/lib/services/model_serving.d.ts +7 -47
  108. package/lib/services/model_serving.d.ts.map +1 -1
  109. package/lib/services/model_serving.js +1 -286
  110. package/lib/services/model_serving.js.map +1 -1
  111. package/lib/services/mongodb_flex.d.ts +8 -137
  112. package/lib/services/mongodb_flex.d.ts.map +1 -1
  113. package/lib/services/mongodb_flex.js +42 -802
  114. package/lib/services/mongodb_flex.js.map +1 -1
  115. package/lib/services/object_storage.d.ts +12 -59
  116. package/lib/services/object_storage.d.ts.map +1 -1
  117. package/lib/services/object_storage.js +38 -539
  118. package/lib/services/object_storage.js.map +1 -1
  119. package/lib/services/observability.d.ts +8 -407
  120. package/lib/services/observability.d.ts.map +1 -1
  121. package/lib/services/observability.js +159 -3157
  122. package/lib/services/observability.js.map +1 -1
  123. package/lib/services/opensearch.d.ts +8 -71
  124. package/lib/services/opensearch.d.ts.map +1 -1
  125. package/lib/services/opensearch.js +34 -562
  126. package/lib/services/opensearch.js.map +1 -1
  127. package/lib/services/pim.d.ts +12 -108
  128. package/lib/services/pim.d.ts.map +1 -1
  129. package/lib/services/pim.js +31 -735
  130. package/lib/services/pim.js.map +1 -1
  131. package/lib/services/postgres_flex.d.ts +14 -136
  132. package/lib/services/postgres_flex.d.ts.map +1 -1
  133. package/lib/services/postgres_flex.js +47 -852
  134. package/lib/services/postgres_flex.js.map +1 -1
  135. package/lib/services/pubsub.d.ts +11 -73
  136. package/lib/services/pubsub.d.ts.map +1 -1
  137. package/lib/services/pubsub.js +37 -518
  138. package/lib/services/pubsub.js.map +1 -1
  139. package/lib/services/rabbitmq.d.ts +8 -76
  140. package/lib/services/rabbitmq.d.ts.map +1 -1
  141. package/lib/services/rabbitmq.js +35 -573
  142. package/lib/services/rabbitmq.js.map +1 -1
  143. package/lib/services/registry.d.ts +10 -28
  144. package/lib/services/registry.d.ts.map +1 -1
  145. package/lib/services/registry.js +1 -197
  146. package/lib/services/registry.js.map +1 -1
  147. package/lib/services/resource_manager.d.ts +9 -61
  148. package/lib/services/resource_manager.d.ts.map +1 -1
  149. package/lib/services/resource_manager.js +36 -472
  150. package/lib/services/resource_manager.js.map +1 -1
  151. package/lib/services/run_command.d.ts +5 -28
  152. package/lib/services/run_command.d.ts.map +1 -1
  153. package/lib/services/run_command.js +1 -184
  154. package/lib/services/run_command.js.map +1 -1
  155. package/lib/services/sca.d.ts +8 -79
  156. package/lib/services/sca.d.ts.map +1 -1
  157. package/lib/services/sca.js +25 -444
  158. package/lib/services/sca.js.map +1 -1
  159. package/lib/services/scf.d.ts +8 -64
  160. package/lib/services/scf.d.ts.map +1 -1
  161. package/lib/services/scf.js +40 -669
  162. package/lib/services/scf.js.map +1 -1
  163. package/lib/services/secrets_manager.d.ts +8 -61
  164. package/lib/services/secrets_manager.d.ts.map +1 -1
  165. package/lib/services/secrets_manager.js +42 -612
  166. package/lib/services/secrets_manager.js.map +1 -1
  167. package/lib/services/server_backup.d.ts +7 -50
  168. package/lib/services/server_backup.d.ts.map +1 -1
  169. package/lib/services/server_backup.js +29 -453
  170. package/lib/services/server_backup.js.map +1 -1
  171. package/lib/services/server_update.d.ts +7 -35
  172. package/lib/services/server_update.d.ts.map +1 -1
  173. package/lib/services/server_update.js +1 -351
  174. package/lib/services/server_update.js.map +1 -1
  175. package/lib/services/service_account.d.ts +10 -68
  176. package/lib/services/service_account.d.ts.map +1 -1
  177. package/lib/services/service_account.js +30 -505
  178. package/lib/services/service_account.js.map +1 -1
  179. package/lib/services/service_enablement.d.ts +7 -29
  180. package/lib/services/service_enablement.d.ts.map +1 -1
  181. package/lib/services/service_enablement.js +1 -156
  182. package/lib/services/service_enablement.js.map +1 -1
  183. package/lib/services/sfs.d.ts +4 -96
  184. package/lib/services/sfs.d.ts.map +1 -1
  185. package/lib/services/sfs.js +46 -789
  186. package/lib/services/sfs.js.map +1 -1
  187. package/lib/services/ske.d.ts +9 -108
  188. package/lib/services/ske.d.ts.map +1 -1
  189. package/lib/services/ske.js +26 -557
  190. package/lib/services/ske.js.map +1 -1
  191. package/lib/services/sqlserverflex.d.ts +11 -152
  192. package/lib/services/sqlserverflex.d.ts.map +1 -1
  193. package/lib/services/sqlserverflex.js +46 -935
  194. package/lib/services/sqlserverflex.js.map +1 -1
  195. package/lib/services/stackit_marketplace.d.ts +9 -38
  196. package/lib/services/stackit_marketplace.d.ts.map +1 -1
  197. package/lib/services/stackit_marketplace.js +26 -378
  198. package/lib/services/stackit_marketplace.js.map +1 -1
  199. package/lib/services/telemetry_link.d.ts +8 -61
  200. package/lib/services/telemetry_link.d.ts.map +1 -1
  201. package/lib/services/telemetry_link.js +34 -531
  202. package/lib/services/telemetry_link.js.map +1 -1
  203. package/lib/services/telemetry_router.d.ts +8 -72
  204. package/lib/services/telemetry_router.d.ts.map +1 -1
  205. package/lib/services/telemetry_router.js +29 -483
  206. package/lib/services/telemetry_router.js.map +1 -1
  207. package/lib/services/ufw.d.ts +7 -42
  208. package/lib/services/ufw.d.ts.map +1 -1
  209. package/lib/services/ufw.js +1 -278
  210. package/lib/services/ufw.js.map +1 -1
  211. package/lib/services/valkey.d.ts +8 -68
  212. package/lib/services/valkey.d.ts.map +1 -1
  213. package/lib/services/valkey.js +34 -566
  214. package/lib/services/valkey.js.map +1 -1
  215. package/lib/services/vpn.d.ts +21 -186
  216. package/lib/services/vpn.d.ts.map +1 -1
  217. package/lib/services/vpn.js +43 -930
  218. package/lib/services/vpn.js.map +1 -1
  219. package/lib/services/workflows.d.ts +15 -84
  220. package/lib/services/workflows.d.ts.map +1 -1
  221. package/lib/services/workflows.js +27 -507
  222. package/lib/services/workflows.js.map +1 -1
  223. package/lib/services.lazy/alb.js +4 -0
  224. package/lib/services.lazy/alb_waf.js +4 -0
  225. package/lib/services.lazy/authorization.js +1 -0
  226. package/lib/services.lazy/automation.js +1 -0
  227. package/lib/services.lazy/cdn.js +4 -0
  228. package/lib/services.lazy/certificates.js +1 -0
  229. package/lib/services.lazy/cost.js +1 -0
  230. package/lib/services.lazy/dns.js +4 -0
  231. package/lib/services.lazy/dremio.js +1 -0
  232. package/lib/services.lazy/edge.js +1 -0
  233. package/lib/services.lazy/functions.js +1 -0
  234. package/lib/services.lazy/git.js +4 -0
  235. package/lib/services.lazy/iaas.js +4 -0
  236. package/lib/services.lazy/index.js +3 -0
  237. package/lib/services.lazy/intake.js +4 -0
  238. package/lib/services.lazy/kms.js +4 -0
  239. package/lib/services.lazy/lb_ip_lists.js +1 -0
  240. package/lib/services.lazy/load_balancer.js +4 -0
  241. package/lib/services.lazy/logme.js +4 -0
  242. package/lib/services.lazy/logs.js +4 -0
  243. package/lib/services.lazy/mariadb.js +4 -0
  244. package/lib/services.lazy/model_experiments.js +1 -0
  245. package/lib/services.lazy/model_serving.js +1 -0
  246. package/lib/services.lazy/mongodb_flex.js +4 -0
  247. package/lib/services.lazy/object_storage.js +4 -0
  248. package/lib/services.lazy/observability.js +4 -0
  249. package/lib/services.lazy/opensearch.js +4 -0
  250. package/lib/services.lazy/pim.js +4 -0
  251. package/lib/services.lazy/postgres_flex.js +4 -0
  252. package/lib/services.lazy/pubsub.js +4 -0
  253. package/lib/services.lazy/rabbitmq.js +4 -0
  254. package/lib/services.lazy/registry.js +1 -0
  255. package/lib/services.lazy/resource_manager.js +4 -0
  256. package/lib/services.lazy/run_command.js +1 -0
  257. package/lib/services.lazy/sca.js +4 -0
  258. package/lib/services.lazy/scf.js +4 -0
  259. package/lib/services.lazy/secrets_manager.js +4 -0
  260. package/lib/services.lazy/server_backup.js +4 -0
  261. package/lib/services.lazy/server_update.js +1 -0
  262. package/lib/services.lazy/service_account.js +4 -0
  263. package/lib/services.lazy/service_enablement.js +1 -0
  264. package/lib/services.lazy/sfs.js +4 -0
  265. package/lib/services.lazy/ske.js +4 -0
  266. package/lib/services.lazy/sqlserverflex.js +4 -0
  267. package/lib/services.lazy/stackit_marketplace.js +4 -0
  268. package/lib/services.lazy/telemetry_link.js +4 -0
  269. package/lib/services.lazy/telemetry_router.js +4 -0
  270. package/lib/services.lazy/ufw.js +1 -0
  271. package/lib/services.lazy/valkey.js +4 -0
  272. package/lib/services.lazy/vpn.js +4 -0
  273. package/lib/services.lazy/workflows.js +4 -0
  274. package/lib/traits.d.ts +1 -1
  275. package/lib/traits.js +1 -15
  276. package/package.json +9 -7
  277. package/src/credentials.ts +21 -18
  278. package/src/errors.ts +10 -14
  279. package/src/index.ts +2 -2
  280. package/src/pagination.ts +2 -2
  281. package/src/protocol.ts +12 -9
  282. package/src/retry.ts +6 -4
  283. package/src/services/alb.ts +599 -655
  284. package/src/services/alb_waf.ts +597 -637
  285. package/src/services/authorization.ts +400 -383
  286. package/src/services/automation.ts +422 -405
  287. package/src/services/cdn.ts +817 -1375
  288. package/src/services/certificates.ts +209 -190
  289. package/src/services/cost.ts +100 -207
  290. package/src/services/dns.ts +793 -833
  291. package/src/services/dremio.ts +356 -349
  292. package/src/services/edge.ts +406 -366
  293. package/src/services/functions.ts +465 -463
  294. package/src/services/git.ts +602 -547
  295. package/src/services/iaas.ts +3931 -3821
  296. package/src/services/intake.ts +521 -549
  297. package/src/services/kms.ts +715 -692
  298. package/src/services/lb_ip_lists.ts +173 -152
  299. package/src/services/load_balancer.ts +576 -619
  300. package/src/services/logme.ts +696 -641
  301. package/src/services/logs.ts +510 -493
  302. package/src/services/mariadb.ts +671 -604
  303. package/src/services/model_experiments.ts +343 -356
  304. package/src/services/model_serving.ts +337 -328
  305. package/src/services/mongodb_flex.ts +955 -1007
  306. package/src/services/object_storage.ts +614 -557
  307. package/src/services/observability.ts +3469 -3866
  308. package/src/services/opensearch.ts +679 -628
  309. package/src/services/pim.ts +672 -909
  310. package/src/services/postgres_flex.ts +966 -986
  311. package/src/services/pubsub.ts +524 -546
  312. package/src/services/rabbitmq.ts +693 -654
  313. package/src/services/registry.ts +227 -194
  314. package/src/services/resource_manager.ts +520 -517
  315. package/src/services/run_command.ts +219 -211
  316. package/src/services/sca.ts +543 -570
  317. package/src/services/scf.ts +790 -716
  318. package/src/services/secrets_manager.ts +707 -622
  319. package/src/services/server_backup.ts +490 -475
  320. package/src/services/server_update.ts +353 -356
  321. package/src/services/service_account.ts +515 -553
  322. package/src/services/service_enablement.ts +162 -166
  323. package/src/services/sfs.ts +879 -958
  324. package/src/services/ske.ts +694 -769
  325. package/src/services/sqlserverflex.ts +1042 -1117
  326. package/src/services/stackit_marketplace.ts +377 -372
  327. package/src/services/telemetry_link.ts +530 -531
  328. package/src/services/telemetry_router.ts +509 -534
  329. package/src/services/ufw.ts +305 -307
  330. package/src/services/valkey.ts +684 -629
  331. package/src/services/vpn.ts +935 -1195
  332. package/src/services/workflows.ts +426 -586
  333. package/src/traits.ts +1 -1
  334. package/lib/credentials.js.map +0 -1
  335. package/lib/errors.js.map +0 -1
  336. package/lib/pagination.js.map +0 -1
  337. package/lib/protocol.js.map +0 -1
  338. package/lib/protocol.test.d.ts +0 -2
  339. package/lib/protocol.test.d.ts.map +0 -1
  340. package/lib/protocol.test.js +0 -181
  341. package/lib/protocol.test.js.map +0 -1
  342. package/lib/retry.js.map +0 -1
  343. package/lib/services/index.js.map +0 -1
  344. package/lib/traits.js.map +0 -1
  345. package/src/protocol.test.ts +0 -304
  346. /package/lib/{index.js.map → index.lazy.js.map} +0 -0
package/lib/.lazy.json ADDED
@@ -0,0 +1 @@
1
+ {"serviceDirs":["services"],"twins":["index.js"]}
@@ -0,0 +1,4 @@
1
+ import*as $0 from"./sdk.js";
2
+ import{api$lazyService as L}from"@distilled.cloud/core/_bundle/base";
3
+ const u=import.meta.url,N=[$0];
4
+ export const $L=(s,k,a,l,x)=>L(u,s,k,a===void 0?void 0:x?N.concat(x):N,a,l);
@@ -0,0 +1,2 @@
1
+ import{api$D as e,api$Protocol as t,api$call as n,api$error as r,api$named as i,api$newError as a,api$op as o,api$opPaginated as s,category$withAuthError as c,category$withBadRequestError as l,category$withConflictError as ee,category$withParseError as u,category$withServerError as te,config$String as d,config$all as ne,config$option as re,config$withDefault as ie,pagination$getPath as f,response_validation$validateResponse as ae,retry$capped as oe,retry$jittered as p,retry$makeDefault as m,retry$throttlingFactory as h,retry$throttlingOptions as se,retry$transientFactory as g,retry$transientOptions as ce,trait$Body as le,trait$FormDataFile as ue,trait$Header as de,trait$HttpBody as _,trait$KeyDictionary as v,trait$Label as y,trait$Query as b,trait$ResponseCode as x,trait$UnionCases as S,trait$applyErrorMatchers as C,trait$bodySymbol as w,trait$errorMatchersSymbol as T,trait$formDataFileSymbol as E,trait$getErrorMatchers as D,trait$headerSymbol as O,trait$httpBodySymbol as k,trait$httpSymbol as A,trait$keyDictionarySymbol as j,trait$labelSymbol as M,trait$makeAnnotation as N,trait$querySymbol as P,trait$responseCodeSymbol as F,trait$unionCasesSymbol as I}from"@distilled.cloud/core/_bundle/base";import{debug$debugHttp as L,errors$API_ERRORS as R,errors$BadGateway as z,errors$BadRequest as B,errors$ConfigError as V,errors$Conflict as H,errors$DEFAULT_ERRORS as fe,errors$Forbidden as pe,errors$GatewayTimeout as me,errors$HTTP_STATUS_MAP as U,errors$InternalServerError as W,errors$Locked as he,errors$NotFound as ge,errors$ServiceUnavailable as _e,errors$TooManyRequests as ve,errors$Unauthorized as G,errors$UnprocessableEntity as ye,protocol_http$buildRequest as be,protocol_http$getAnn as xe,protocol_http$mapKeys as Se,protocol_http$matchTypedError as Ce,protocol_rest$RawResponse as we,protocol_rest$RawResponseRoot as Te,protocol_rest$SensitiveValue as Ee,protocol_rest$rawResponseRootSymbol as De,protocol_rest$rawResponseSymbol as Oe,protocol_rest$sensitiveValueSymbol as ke,protocol_rest$unwrapRedactedDeep as Ae,protocol_rest$wrapSensitive as je,retry_after$parseRetryAfterForStatus as K,schema_lite$Array as Me,schema_lite$Boolean as Ne,schema_lite$NullOr as Pe,schema_lite$Number as Fe,schema_lite$Record as Ie,schema_lite$String as Le,schema_lite$Struct as Re,schema_lite$TaggedError as ze,schema_lite$Unknown as Be,schema_lite$at as Ve,schema_lite$optional as He,schema_lite$suspend as Ue}from"@distilled.cloud/core/_bundle/rest";import*as q from"effect/Context";import*as J from"effect/Effect";import*as Y from"effect/Layer";import*as X from"effect/Redacted";import*as Z from"@distilled.cloud/core/schema-lite-typed";import*as Q from"effect/Stream";const $=`eu01`;var Credentials=class extends (/*@__PURE__*/ q.Service()(`StackitCredentials`)){};const We=/*@__PURE__*/ ne({token:/*@__PURE__*/ d(`STACKIT_SERVICE_ACCOUNT_TOKEN`),region:/*@__PURE__*/ d(`STACKIT_REGION`).pipe(/*@__PURE__*/ ie($)),apiBaseUrl:/*@__PURE__*/ d(`STACKIT_API_BASE_URL`).pipe(re)});const Ge=/*@__PURE__*/ Y.succeed(Credentials,/*@__PURE__*/ We.pipe(/*@__PURE__*/ J.mapError(()=>new V({message:`STACKIT_SERVICE_ACCOUNT_TOKEN environment variable is required`})),/*@__PURE__*/ J.map(({token:e,region:t,apiBaseUrl:n})=>({token:X.make(e),region:t,apiBaseUrl:n._tag===`Some`?n.value:void 0})),J.orDie));const credentials=e=>Y.succeed(Credentials,J.succeed({token:e.token,region:e.region??`eu01`,apiBaseUrl:e.apiBaseUrl}));var UnknownStackitError=class extends (/*@__PURE__*/ Z.TaggedError()(`UnknownStackitError`,{code:/*@__PURE__*/ Z.optional(Z.String),message:/*@__PURE__*/ Z.optional(Z.String),body:Z.Unknown}).pipe(te)){};var StackitParseError=class extends (/*@__PURE__*/ Z.TaggedError()(`StackitParseError`,{body:Z.Unknown,cause:Z.Unknown}).pipe(u)){};const applyRegion=(e,t)=>{if(e.includes(`{region}`)){if(t===`global`)return e.replaceAll(`{region}`,``);const n=e.includes(`{region}stackit`)&&!t.endsWith(`.`)?`${t}.`:t;return e.replaceAll(`{region}`,n)}if(t===`global`)return e;return e.replace(/^(https:\/\/[a-z0-9-]+)\.api\.stackit\.cloud(?=[:/?]|$)/i,`$1.api.${t}.stackit.cloud`)};const errorEnvelope=e=>{if(e===null||typeof e!==`object`)return void 0;const t=e;const n=typeof t.message===`string`?t.message:void 0;const r=typeof t.error===`string`?t.error:typeof t.code===`string`||typeof t.code===`number`?t.code:void 0;if(n===void 0&&r===void 0)return void 0;return{code:r,message:n}};const fail=e=>J.fail(e);const baseUrlFor=(e,t)=>{if(e.apiBaseUrl!==void 0&&e.apiBaseUrl!==``)return e.apiBaseUrl;const n=xe(t,A)?.baseUrl;if(typeof n!==`string`||n===``)throw new Error(`STACKIT operation is missing T.Http({ baseUrl }) \u2014 regenerate from convert`);return applyRegion(n,e.region)};const Ke=/*@__PURE__*/ Y.succeed(t,/*@__PURE__*/ t.of({encode:({input:e,inputAst:t})=>J.gen(function*(){const n=yield*yield*Credentials;return be({input:Ae(e),inputAst:t,baseUrl:baseUrlFor(n,t),headers:{Authorization:`Bearer ${X.value(n.token)}`}})}),decode:({response:e,outputAst:t,errors:n})=>J.gen(function*(){const r=(yield*e.text.pipe(J.orDie))??``;if(L())console.error(`[distilled] <- ${e.status} ${r.slice(0,400)}`);let i;let a=false;if(r.trim().length>0)try{i=JSON.parse(r)}catch{a=true}const o=e.status;const s=e.headers;if(o>=400){const e=(a?void 0:errorEnvelope(i))??{};const t=e.message??(a&&r.trim()?r.trim():`HTTP ${o}`);const c=Ce(n,o,[{code:typeof e.code===`number`?e.code:void 0,message:t}],{body:a?r:i,headers:s});if(c!==void 0)return yield*fail(c);const l=U[o];if(l)return yield*fail(new l({message:t,retryAfter:K(o,s)}));if(o>=500)return yield*fail(new W({message:t,retryAfter:K(o,s)}));return yield*fail(new UnknownStackitError({code:typeof e.code===`string`?e.code:e.code!==void 0?String(e.code):void 0,message:t,body:a?r:i}))}const c=yield*ae(t,Se(t,a?r:i??{},`decode`),e=>new StackitParseError({body:a?r:i,cause:e})).pipe(J.catch(fail));return je(t,c)})}));var Retry=class extends (/*@__PURE__*/ q.Service()(`StackitRetry`)){};const policy=e=>J.provide(Y.succeed(Retry,e));const qe=/*@__PURE__*/ J.provide(/*@__PURE__*/ Y.succeed(Retry,{while:()=>false}));const Je=/*@__PURE__*/ policy(h);const Ye=/*@__PURE__*/ policy(g);const Http=e=>N(A,e);const paginateByTotalPages=(e,t,n)=>{const r=n.inputToken;const i=n.outputToken;const a=n.items;if(!r||!i)return Q.die(/* @__PURE__ */ new Error(`Total-pages pagination requires inputToken and outputToken (totalPages)`));const o=typeof t[r]===`number`?t[r]:1;return Q.unfold({page:o,done:false},n=>J.gen(function*(){if(n.done)return void 0;const o=yield*e({...t,[r]:n.page});const s=f(o,i);const c=a?f(o,a):void 0;const l=typeof s!==`number`||n.page>=s||c!==void 0&&c.length===0;return[o,{page:n.page+1,done:l}]}))};export{ee as S,a as _,Ie as a,c as b,ze as c,Credentials as credentials$Credentials,Ge as credentials$CredentialsFromEnv,$ as credentials$DEFAULT_REGION,credentials as credentials$credentials,He as d,R as errors$API_ERRORS,z as errors$BadGateway,B as errors$BadRequest,V as errors$ConfigError,H as errors$Conflict,fe as errors$DEFAULT_ERRORS,pe as errors$Forbidden,me as errors$GatewayTimeout,U as errors$HTTP_STATUS_MAP,W as errors$InternalServerError,he as errors$Locked,ge as errors$NotFound,_e as errors$ServiceUnavailable,StackitParseError as errors$StackitParseError,ve as errors$TooManyRequests,G as errors$Unauthorized,UnknownStackitError as errors$UnknownStackitError,ye as errors$UnprocessableEntity,Ue as f,i as g,r as h,Fe as i,Be as l,n as m,Ne as n,Le as o,e as p,paginateByTotalPages as pagination$paginateByTotalPages,Ke as protocol$StackitProtocol,applyRegion as protocol$applyRegion,Pe as r,Retry as retry$Retry,oe as retry$capped,p as retry$jittered,m as retry$makeDefault,qe as retry$none,policy as retry$policy,Je as retry$throttling,h as retry$throttlingFactory,se as retry$throttlingOptions,Ye as retry$transient,g as retry$transientFactory,ce as retry$transientOptions,Re as s,Me as t,le as traits$Body,ue as traits$FormDataFile,de as traits$Header,Http as traits$Http,_ as traits$HttpBody,v as traits$KeyDictionary,y as traits$Label,b as traits$Query,we as traits$RawResponse,Te as traits$RawResponseRoot,x as traits$ResponseCode,Ee as traits$SensitiveValue,S as traits$UnionCases,C as traits$applyErrorMatchers,w as traits$bodySymbol,T as traits$errorMatchersSymbol,E as traits$formDataFileSymbol,D as traits$getErrorMatchers,O as traits$headerSymbol,k as traits$httpBodySymbol,A as traits$httpSymbol,j as traits$keyDictionarySymbol,M as traits$labelSymbol,N as traits$makeAnnotation,P as traits$querySymbol,De as traits$rawResponseRootSymbol,Oe as traits$rawResponseSymbol,F as traits$responseCodeSymbol,ke as traits$sensitiveValueSymbol,I as traits$unionCasesSymbol,Ve as u,o as v,l as x,s as y};
2
+ //# sourceMappingURL=sdk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sdk.js","names":["EffectConfig.option","Category.withServerError","Category.withParseError","API.Protocol","D","Protocol","call","error","named","newError","op","opPaginated","withAuthError","withBadRequestError","withConflictError","withParseError","withServerError","String$2","all$1","option","withDefault","getPath","validateResponse","capped","jittered","makeDefault","throttlingFactory","throttlingOptions","transientFactory","transientOptions","Body","FormDataFile","Header","HttpBody","KeyDictionary","Label","Query","ResponseCode","UnionCases","applyErrorMatchers","bodySymbol","errorMatchersSymbol","formDataFileSymbol","getErrorMatchers","headerSymbol","httpBodySymbol","httpSymbol","keyDictionarySymbol","labelSymbol","makeAnnotation","querySymbol","responseCodeSymbol","unionCasesSymbol","debugHttp","API_ERRORS","BadGateway","BadRequest","ConfigError","Conflict","DEFAULT_ERRORS","Forbidden","GatewayTimeout","HTTP_STATUS_MAP","InternalServerError","Locked","NotFound","ServiceUnavailable","TooManyRequests","Unauthorized","UnprocessableEntity","buildRequest","getAnn","mapKeys","matchTypedError","RawResponse","RawResponseRoot","SensitiveValue","rawResponseRootSymbol","rawResponseSymbol","sensitiveValueSymbol","unwrapRedactedDeep","wrapSensitive","parseRetryAfterForStatus","Array","Boolean","NullOr","Number","Record","String$1","Struct","TaggedError","Unknown","at","optional","suspend","Context","Effect","Layer","Redacted","Schema","Stream","DEFAULT_REGION","envConfig","CredentialsFromEnv","token","apiBaseUrl","config","specUrl","region","value","body","b","message","code","creds","inputAst","StackitProtocol","input","errorClasses","text","response","json","nonJson","status","headers","env","typed","StatusErrorClass","mapped","outputAst","optionsOrFactory","none","throttling","transient","trait","inputToken","pagination","totalPagesPath","itemsPath","startPage","state","operation","totalPages","items","exhausted"],"sources":["../../src/credentials.ts","../../src/errors.ts","../../src/protocol.ts","../../src/retry.ts","../../src/traits.ts","../../src/pagination.ts"],"mappings":"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"}
@@ -7,7 +7,7 @@ export declare const DEFAULT_REGION = "eu01";
7
7
  export interface Config {
8
8
  readonly token: Redacted.Redacted<string>;
9
9
  /**
10
- * Region inserted into product hosts (`eu01` →
10
+ * Region inserted into product hosts (`eu01` ->
11
11
  * `https://iaas.api.eu01.stackit.cloud`). `"global"` leaves the spec URL
12
12
  * unchanged.
13
13
  */
@@ -16,7 +16,7 @@ export interface Config {
16
16
  readonly apiBaseUrl?: string;
17
17
  }
18
18
  declare const Credentials_base: Context.ServiceClass<Credentials, "StackitCredentials", Effect.Effect<Config, never, never>>;
19
- export declare class Credentials extends Credentials_base {
19
+ export declare class Credentials extends /*@__PURE__*/ Credentials_base {
20
20
  }
21
21
  export declare const CredentialsFromEnv: Layer.Layer<Credentials, never, never>;
22
22
  /** Convenience layer from a redacted token + optional region / base URL. */
@@ -1 +1 @@
1
- {"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../src/credentials.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAC;AAE5C,8DAA8D;AAC9D,eAAO,MAAM,cAAc,SAAS,CAAC;AAErC,MAAM,WAAW,MAAM;IACrB,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC1C;;;;OAIG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,sEAAsE;IACtE,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;;AAED,qBAAa,WAAY,SAAQ,gBAEhC;CAAG;AAUJ,eAAO,MAAM,kBAAkB,wCAgB9B,CAAC;AAEF,4EAA4E;AAC5E,eAAO,MAAM,WAAW,WAAY;IAClC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC1C,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B,KAAG,KAAK,CAAC,KAAK,CAAC,WAAW,CAQxB,CAAC"}
1
+ {"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../src/credentials.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAC;AAE5C,8DAA8D;AAC9D,eAAO,MAAM,cAAc,SAAS,CAAC;AAErC,MAAM,WAAW,MAAM;IACrB,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC1C;;;;OAIG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,sEAAsE;IACtE,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;;AAED,qBAAa,WACX,SAAQ,aAAa,CAAC,gBAErB;CAAG;AAYN,eAAO,MAAM,kBAAkB,wCAgB9B,CAAC;AAEF,4EAA4E;AAC5E,eAAO,MAAM,WAAW,WAAY;IAClC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC1C,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B,KAAG,KAAK,CAAC,KAAK,CAAC,WAAW,CAQxB,CAAC"}
@@ -1,49 +1 @@
1
- import { ConfigError } from "@distilled.cloud/core/errors";
2
- /**
3
- * STACKIT credentials — hand-written.
4
- *
5
- * The `Credentials` service resolves `{ token, region }` per request; the
6
- * protocol layer formats the `Authorization: Bearer <token>` header from it
7
- * and rewrites each operation's spec `servers` URL for the region. The token
8
- * is a STACKIT service-account access token — the same value the official
9
- * Go SDK, CLI and Terraform provider read from
10
- * `STACKIT_SERVICE_ACCOUNT_TOKEN`. Key-file exchange
11
- * (`STACKIT_SERVICE_ACCOUNT_KEY_PATH`) is not modelled: mint the token
12
- * outside the SDK.
13
- *
14
- * Each STACKIT product has its own host (`iaas.api.eu01.stackit.cloud`,
15
- * `ske.api.eu01.stackit.cloud`, …). The per-operation host is baked into
16
- * the generated `T.Http` trait from the OpenAPI `servers` entry; `region`
17
- * (default `eu01`) is substituted at request time. An explicit `apiBaseUrl`
18
- * overrides that host for every call — a proxy, not a per-product map.
19
- */
20
- import * as EffectConfig from "effect/Config";
21
- import * as Context from "effect/Context";
22
- import * as Effect from "effect/Effect";
23
- import * as Layer from "effect/Layer";
24
- import * as Redacted from "effect/Redacted";
25
- /** STACKIT's primary public region (Schwarz IT / Germany). */
26
- export const DEFAULT_REGION = "eu01";
27
- export class Credentials extends Context.Service()("StackitCredentials") {
28
- }
29
- const envConfig = EffectConfig.all({
30
- // `STACKIT_SERVICE_ACCOUNT_TOKEN` / `STACKIT_REGION` are what the
31
- // official Go SDK, CLI and Terraform provider read.
32
- token: EffectConfig.String("STACKIT_SERVICE_ACCOUNT_TOKEN"),
33
- region: EffectConfig.String("STACKIT_REGION").pipe(EffectConfig.withDefault(DEFAULT_REGION)),
34
- apiBaseUrl: EffectConfig.String("STACKIT_API_BASE_URL").pipe(EffectConfig.option),
35
- });
36
- export const CredentialsFromEnv = Layer.succeed(Credentials, envConfig.pipe(Effect.mapError(() => new ConfigError({
37
- message: "STACKIT_SERVICE_ACCOUNT_TOKEN environment variable is required",
38
- })), Effect.map(({ token, region, apiBaseUrl }) => ({
39
- token: Redacted.make(token),
40
- region,
41
- apiBaseUrl: apiBaseUrl._tag === "Some" ? apiBaseUrl.value : undefined,
42
- })), Effect.orDie));
43
- /** Convenience layer from a redacted token + optional region / base URL. */
44
- export const credentials = (config) => Layer.succeed(Credentials, Effect.succeed({
45
- token: config.token,
46
- region: config.region ?? DEFAULT_REGION,
47
- apiBaseUrl: config.apiBaseUrl,
48
- }));
49
- //# sourceMappingURL=credentials.js.map
1
+ export { credentials$Credentials as Credentials, credentials$CredentialsFromEnv as CredentialsFromEnv, credentials$DEFAULT_REGION as DEFAULT_REGION, credentials$credentials as credentials } from "./_bundle/sdk.js";
package/lib/errors.d.ts CHANGED
@@ -9,28 +9,28 @@
9
9
  */
10
10
  export { BadGateway, BadRequest, Conflict, ConfigError, Forbidden, GatewayTimeout, InternalServerError, Locked, NotFound, ServiceUnavailable, TooManyRequests, Unauthorized, UnprocessableEntity, HTTP_STATUS_MAP, DEFAULT_ERRORS, API_ERRORS, } from "@distilled.cloud/core/errors";
11
11
  export type { DefaultErrors } from "@distilled.cloud/core/errors";
12
- import * as Schema from "effect/Schema";
13
- declare const UnknownStackitError_base: Schema.Class<UnknownStackitError, Schema.TaggedStruct<"UnknownStackitError", {
14
- readonly code: Schema.optional<Schema.String>;
15
- readonly message: Schema.optional<Schema.String>;
16
- readonly body: Schema.Unknown;
17
- }>, import("effect/Cause").YieldableError> & (new (...args: any[]) => {
12
+ import * as Schema from "@distilled.cloud/core/schema-lite-typed";
13
+ declare const UnknownStackitError_base: Schema.TaggedErrorClass<"UnknownStackitError", {
14
+ readonly code: import("effect/Schema").optional<import("effect/Schema").String>;
15
+ readonly message: import("effect/Schema").optional<import("effect/Schema").String>;
16
+ readonly body: import("effect/Schema").Unknown;
17
+ }> & (new (...args: any[]) => {
18
18
  "@distilled.cloud/error/categories": {
19
19
  ServerError: true;
20
20
  };
21
21
  });
22
- /** Unknown STACKIT error — returned when nothing else matches the failure. */
23
- export declare class UnknownStackitError extends UnknownStackitError_base {
22
+ /** Unknown STACKIT error -- returned when nothing else matches the failure. */
23
+ export declare class UnknownStackitError extends /*@__PURE__*/ UnknownStackitError_base {
24
24
  }
25
- declare const StackitParseError_base: Schema.Class<StackitParseError, Schema.TaggedStruct<"StackitParseError", {
26
- readonly body: Schema.Unknown;
27
- readonly cause: Schema.Unknown;
28
- }>, import("effect/Cause").YieldableError> & (new (...args: any[]) => {
25
+ declare const StackitParseError_base: Schema.TaggedErrorClass<"StackitParseError", {
26
+ readonly body: import("effect/Schema").Unknown;
27
+ readonly cause: import("effect/Schema").Unknown;
28
+ }> & (new (...args: any[]) => {
29
29
  "@distilled.cloud/error/categories": {
30
30
  ParseError: true;
31
31
  };
32
32
  });
33
33
  /** Schema parse error wrapper. */
34
- export declare class StackitParseError extends StackitParseError_base {
34
+ export declare class StackitParseError extends /*@__PURE__*/ StackitParseError_base {
35
35
  }
36
36
  //# sourceMappingURL=errors.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EACL,UAAU,EACV,UAAU,EACV,QAAQ,EACR,WAAW,EACX,SAAS,EACT,cAAc,EACd,mBAAmB,EACnB,MAAM,EACN,QAAQ,EACR,kBAAkB,EAClB,eAAe,EACf,YAAY,EACZ,mBAAmB,EACnB,eAAe,EACf,cAAc,EACd,UAAU,GACX,MAAM,8BAA8B,CAAC;AACtC,YAAY,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAGlE,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;;;;;;;;;;AAExC,8EAA8E;AAC9E,qBAAa,mBAAoB,SAAQ,wBAOT;CAAG;;;;;;;;;AAEnC,kCAAkC;AAClC,qBAAa,iBAAkB,SAAQ,sBAMR;CAAG"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EACL,UAAU,EACV,UAAU,EACV,QAAQ,EACR,WAAW,EACX,SAAS,EACT,cAAc,EACd,mBAAmB,EACnB,MAAM,EACN,QAAQ,EACR,kBAAkB,EAClB,eAAe,EACf,YAAY,EACZ,mBAAmB,EACnB,eAAe,EACf,cAAc,EACd,UAAU,GACX,MAAM,8BAA8B,CAAC;AACtC,YAAY,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAGlE,OAAO,KAAK,MAAM,MAAM,yCAAyC,CAAC;;;;;;;;;;AAElE,+EAA+E;AAC/E,qBAAa,mBACX,SAAQ,aAAa,CAAC,wBAIW;CAAG;;;;;;;;;AAEtC,kCAAkC;AAClC,qBAAa,iBACX,SAAQ,aAAa,CAAC,sBAGU;CAAG"}
package/lib/errors.js CHANGED
@@ -1,26 +1 @@
1
- /**
2
- * STACKIT-specific error types.
3
- *
4
- * Re-exports the common HTTP errors from core and adds the unknown-error
5
- * and parse-error wrappers. STACKIT failures carry `{ message, error? }`
6
- * (the `ErrorMessage` schema in most of the product specs); the protocol
7
- * reads `message` for the human half and `error` as the machine-readable
8
- * code on {@link UnknownStackitError}.
9
- */
10
- export { BadGateway, BadRequest, Conflict, ConfigError, Forbidden, GatewayTimeout, InternalServerError, Locked, NotFound, ServiceUnavailable, TooManyRequests, Unauthorized, UnprocessableEntity, HTTP_STATUS_MAP, DEFAULT_ERRORS, API_ERRORS, } from "@distilled.cloud/core/errors";
11
- import * as Category from "@distilled.cloud/core/category";
12
- import * as Schema from "effect/Schema";
13
- /** Unknown STACKIT error — returned when nothing else matches the failure. */
14
- export class UnknownStackitError extends Schema.TaggedError()("UnknownStackitError", {
15
- code: Schema.optional(Schema.String),
16
- message: Schema.optional(Schema.String),
17
- body: Schema.Unknown,
18
- }).pipe(Category.withServerError) {
19
- }
20
- /** Schema parse error wrapper. */
21
- export class StackitParseError extends Schema.TaggedError()("StackitParseError", {
22
- body: Schema.Unknown,
23
- cause: Schema.Unknown,
24
- }).pipe(Category.withParseError) {
25
- }
26
- //# sourceMappingURL=errors.js.map
1
+ export { errors$API_ERRORS as API_ERRORS, errors$BadGateway as BadGateway, errors$BadRequest as BadRequest, errors$ConfigError as ConfigError, errors$Conflict as Conflict, errors$DEFAULT_ERRORS as DEFAULT_ERRORS, errors$Forbidden as Forbidden, errors$GatewayTimeout as GatewayTimeout, errors$HTTP_STATUS_MAP as HTTP_STATUS_MAP, errors$InternalServerError as InternalServerError, errors$Locked as Locked, errors$NotFound as NotFound, errors$ServiceUnavailable as ServiceUnavailable, errors$StackitParseError as StackitParseError, errors$TooManyRequests as TooManyRequests, errors$Unauthorized as Unauthorized, errors$UnknownStackitError as UnknownStackitError, errors$UnprocessableEntity as UnprocessableEntity } from "./_bundle/sdk.js";
package/lib/index.d.ts CHANGED
@@ -1,12 +1,12 @@
1
1
  /**
2
- * @distilled.cloud/stackit — STACKIT Cloud API SDK for Effect.
2
+ * @distilled.cloud/stackit -- STACKIT Cloud API SDK for Effect.
3
3
  *
4
4
  * `./services` is generated by `scripts/generate.ts` from the Smithy models
5
5
  * in `.generated-specs` (written by `scripts/convert.ts` from the OpenAPI
6
6
  * documents mirrored at `specs/spec-mirror-stackit/specs/`). Everything else
7
7
  * in this folder is hand-written.
8
8
  *
9
- * One module per STACKIT product (IaaS, SKE, DNS, Postgres Flex, …), using
9
+ * One module per STACKIT product (IaaS, SKE, DNS, Postgres Flex, ...), using
10
10
  * that product's latest published OpenAPI version. Auth is a service-account
11
11
  * bearer token (`STACKIT_SERVICE_ACCOUNT_TOKEN`); each product's host is
12
12
  * rewritten for `STACKIT_REGION` (default `eu01`).
package/lib/index.js CHANGED
@@ -1,30 +1,7 @@
1
- /**
2
- * @distilled.cloud/stackit — STACKIT Cloud API SDK for Effect.
3
- *
4
- * `./services` is generated by `scripts/generate.ts` from the Smithy models
5
- * in `.generated-specs` (written by `scripts/convert.ts` from the OpenAPI
6
- * documents mirrored at `specs/spec-mirror-stackit/specs/`). Everything else
7
- * in this folder is hand-written.
8
- *
9
- * One module per STACKIT product (IaaS, SKE, DNS, Postgres Flex, …), using
10
- * that product's latest published OpenAPI version. Auth is a service-account
11
- * bearer token (`STACKIT_SERVICE_ACCOUNT_TOKEN`); each product's host is
12
- * rewritten for `STACKIT_REGION` (default `eu01`).
13
- *
14
- * @example
15
- * ```ts
16
- * import * as Stackit from "@distilled.cloud/stackit";
17
- *
18
- * const { zones } = yield* Stackit.dns.listZones({
19
- * projectId: "...",
20
- * });
21
- * ```
22
- */
23
1
  export * from "./credentials.js";
24
2
  export * from "./errors.js";
25
3
  export * as T from "./traits.js";
26
- export { StackitProtocol, applyRegion, } from "./protocol.js";
4
+ export { StackitProtocol, applyRegion } from "./protocol.js";
27
5
  export { paginateByTotalPages } from "./pagination.js";
28
6
  export * as Retry from "./retry.js";
29
7
  export * from "./services/index.js";
30
- //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ export * from "./credentials.js";
2
+ export * from "./errors.js";
3
+ export * as T from "./traits.js";
4
+ export { StackitProtocol, applyRegion } from "./protocol.js";
5
+ export { paginateByTotalPages } from "./pagination.js";
6
+ export * as Retry from "./retry.js";
7
+ export * from "./services.lazy/index.js";
@@ -2,7 +2,7 @@ import { type PaginationStrategy } from "@distilled.cloud/core/pagination";
2
2
  export type { PaginatedTrait, PaginationStrategy } from "@distilled.cloud/core/pagination";
3
3
  /**
4
4
  * Stream of pages using STACKIT's `page` / `totalPages` envelope: request
5
- * `page`, `page+1`, … while `page < totalPages` and the collection is
5
+ * `page`, `page+1`, ... while `page < totalPages` and the collection is
6
6
  * non-empty.
7
7
  */
8
8
  export declare const paginateByTotalPages: PaginationStrategy;
package/lib/pagination.js CHANGED
@@ -1,45 +1 @@
1
- import { getPath } from "@distilled.cloud/core/pagination";
2
- /**
3
- * STACKIT pagination — hand-written.
4
- *
5
- * Several STACKIT list operations page by NUMBER: `?page=N&pageSize=M` in,
6
- * and a response carrying the collection beside `totalPages` (DNS zones /
7
- * record sets, and the same envelope on other products). Core's
8
- * `paginatePageNumber` treats `outputToken` as the NEXT page number, so
9
- * pointing it at `totalPages` would jump to the last page; this strategy
10
- * advances by one until `page >= totalPages`.
11
- */
12
- import * as Effect from "effect/Effect";
13
- import * as Stream from "effect/Stream";
14
- /**
15
- * Stream of pages using STACKIT's `page` / `totalPages` envelope: request
16
- * `page`, `page+1`, … while `page < totalPages` and the collection is
17
- * non-empty.
18
- */
19
- export const paginateByTotalPages = (operation, input, pagination) => {
20
- const inputToken = pagination.inputToken;
21
- const totalPagesPath = pagination.outputToken;
22
- const itemsPath = pagination.items;
23
- if (!inputToken || !totalPagesPath) {
24
- return Stream.die(new Error("Total-pages pagination requires inputToken and outputToken (totalPages)"));
25
- }
26
- const startPage = typeof input[inputToken] === "number" ? input[inputToken] : 1;
27
- return Stream.unfold({ page: startPage, done: false }, (state) => Effect.gen(function* () {
28
- if (state.done)
29
- return undefined;
30
- const requestPayload = {
31
- ...input,
32
- [inputToken]: state.page,
33
- };
34
- const response = yield* operation(requestPayload);
35
- const totalPages = getPath(response, totalPagesPath);
36
- const items = itemsPath
37
- ? getPath(response, itemsPath)
38
- : undefined;
39
- const exhausted = typeof totalPages !== "number" ||
40
- state.page >= totalPages ||
41
- (items !== undefined && items.length === 0);
42
- return [response, { page: state.page + 1, done: exhausted }];
43
- }));
44
- };
45
- //# sourceMappingURL=pagination.js.map
1
+ export { pagination$paginateByTotalPages as paginateByTotalPages } from "./_bundle/sdk.js";
package/lib/protocol.d.ts CHANGED
@@ -18,13 +18,13 @@ export type StackitOpContext = Credentials | HttpClient.HttpClient;
18
18
  /**
19
19
  * Rewrite a spec `servers` URL for the configured region.
20
20
  *
21
- * • `{region}` still in the template (IaaS v1:
21
+ * * `{region}` still in the template (IaaS v1:
22
22
  * `https://iaas.api.{region}stackit.cloud`, default `eu01.`) is
23
23
  * substituted. A glued `{region}stackit` means the spec's default
24
24
  * includes the trailing dot.
25
- * • `https://<svc>.api.stackit.cloud` becomes
25
+ * * `https://<svc>.api.stackit.cloud` becomes
26
26
  * `https://<svc>.api.<region>.stackit.cloud`.
27
- * • `region === "global"` leaves the URL alone (after dropping any
27
+ * * `region === "global"` leaves the URL alone (after dropping any
28
28
  * leftover `{region}`).
29
29
  */
30
30
  export declare const applyRegion: (specUrl: string, region: string) => string;
@@ -1 +1 @@
1
- {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,2BAA2B,CAAC;AACjD,OAAO,EAGL,KAAK,WAAW,EACjB,MAAM,8BAA8B,CAAC;AA8BtC,OAAO,KAAK,KAAK,UAAU,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,KAAK,eAAe,MAAM,6BAA6B,CAAC;AAGpE,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAGtC,OAAO,EAAE,WAAW,EAAe,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGjD;;;;;GAKG;AACH,MAAM,MAAM,cAAc,GACtB,aAAa,GACb,mBAAmB,GACnB,iBAAiB,GACjB,WAAW,GACX,eAAe,CAAC,eAAe,CAAC;AAEpC,0EAA0E;AAC1E,MAAM,MAAM,gBAAgB,GAAG,WAAW,GAAG,UAAU,CAAC,UAAU,CAAC;AAEnE;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,WAAW,YAAa,MAAM,UAAU,MAAM,KAAG,MAY7D,CAAC;AA8BF,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CA2GrD,CAAC"}
1
+ {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,2BAA2B,CAAC;AAEjD,OAAO,EAGL,KAAK,WAAW,EACjB,MAAM,8BAA8B,CAAC;AA8BtC,OAAO,KAAK,KAAK,UAAU,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,KAAK,eAAe,MAAM,6BAA6B,CAAC;AAGpE,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAGtC,OAAO,EAAE,WAAW,EAAe,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGjD;;;;;GAKG;AACH,MAAM,MAAM,cAAc,GACtB,aAAa,GACb,mBAAmB,GACnB,iBAAiB,GACjB,WAAW,GACX,eAAe,CAAC,eAAe,CAAC;AAEpC,0EAA0E;AAC1E,MAAM,MAAM,gBAAgB,GAAG,WAAW,GAAG,UAAU,CAAC,UAAU,CAAC;AAEnE;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,WAAW,YAAa,MAAM,UAAU,MAAM,KAAG,MAY7D,CAAC;AAgCF,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CA2GrD,CAAC"}
package/lib/protocol.js CHANGED
@@ -1,147 +1 @@
1
- import * as API from "@distilled.cloud/core/api";
2
- import { HTTP_STATUS_MAP, InternalServerError, } from "@distilled.cloud/core/errors";
3
- import { buildRequest, getAnn, mapKeys, matchTypedError, } from "@distilled.cloud/core/protocol-http";
4
- import { unwrapRedactedDeep, wrapSensitive, } from "@distilled.cloud/core/protocol-rest";
5
- import { validateResponse } from "@distilled.cloud/core/response-validation";
6
- import { parseRetryAfterForStatus } from "@distilled.cloud/core/retry-after";
7
- import { httpSymbol } from "@distilled.cloud/core/trait";
8
- /**
9
- * StackitProtocol — the shared bearer-REST protocol instantiated for STACKIT.
10
- *
11
- * STACKIT speaks plain JSON with no success envelope. FAILURES are
12
- * `{ "message": "...", "error": "..." }` (the `ErrorMessage` schema most
13
- * product specs share). Each product has its own host, baked into the
14
- * generated operation's `T.Http({ baseUrl })` from the OpenAPI `servers`
15
- * entry; this protocol reads that URL and rewrites it for the configured
16
- * region (`eu01` by default).
17
- *
18
- * Auth is `Authorization: Bearer <token>`. The API version is a PATH
19
- * segment (`/v1`, `/v2`, …), so the generated operations carry versioned
20
- * routes against a version-less host.
21
- */
22
- import * as Effect from "effect/Effect";
23
- import * as Layer from "effect/Layer";
24
- import * as Redacted from "effect/Redacted";
25
- import { Credentials } from "./credentials.js";
26
- import { StackitParseError, UnknownStackitError } from "./errors.js";
27
- /**
28
- * Rewrite a spec `servers` URL for the configured region.
29
- *
30
- * • `{region}` still in the template (IaaS v1:
31
- * `https://iaas.api.{region}stackit.cloud`, default `eu01.`) is
32
- * substituted. A glued `{region}stackit` means the spec's default
33
- * includes the trailing dot.
34
- * • `https://<svc>.api.stackit.cloud` becomes
35
- * `https://<svc>.api.<region>.stackit.cloud`.
36
- * • `region === "global"` leaves the URL alone (after dropping any
37
- * leftover `{region}`).
38
- */
39
- export const applyRegion = (specUrl, region) => {
40
- if (specUrl.includes("{region}")) {
41
- if (region === "global")
42
- return specUrl.replaceAll("{region}", "");
43
- const glued = specUrl.includes("{region}stackit");
44
- const value = glued && !region.endsWith(".") ? `${region}.` : region;
45
- return specUrl.replaceAll("{region}", value);
46
- }
47
- if (region === "global")
48
- return specUrl;
49
- return specUrl.replace(/^(https:\/\/[a-z0-9-]+)\.api\.stackit\.cloud(?=[:/?]|$)/i, `$1.api.${region}.stackit.cloud`);
50
- };
51
- const errorEnvelope = (body) => {
52
- if (body === null || typeof body !== "object")
53
- return undefined;
54
- const b = body;
55
- const message = typeof b.message === "string" ? b.message : undefined;
56
- const code = typeof b.error === "string"
57
- ? b.error
58
- : typeof b.code === "string" || typeof b.code === "number"
59
- ? b.code
60
- : undefined;
61
- if (message === undefined && code === undefined)
62
- return undefined;
63
- return { code, message };
64
- };
65
- const fail = (e) => Effect.fail(e);
66
- const baseUrlFor = (creds, inputAst) => {
67
- if (creds.apiBaseUrl !== undefined && creds.apiBaseUrl !== "") {
68
- return creds.apiBaseUrl;
69
- }
70
- const http = getAnn(inputAst, httpSymbol);
71
- const specUrl = http?.baseUrl;
72
- if (typeof specUrl !== "string" || specUrl === "") {
73
- throw new Error("STACKIT operation is missing T.Http({ baseUrl }) — regenerate from convert");
74
- }
75
- return applyRegion(specUrl, creds.region);
76
- };
77
- export const StackitProtocol = Layer.succeed(API.Protocol, API.Protocol.of({
78
- encode: ({ input, inputAst }) => Effect.gen(function* () {
79
- const resolve = yield* Credentials;
80
- const creds = yield* resolve;
81
- return buildRequest({
82
- input: unwrapRedactedDeep(input),
83
- inputAst,
84
- baseUrl: baseUrlFor(creds, inputAst),
85
- headers: {
86
- Authorization: `Bearer ${Redacted.value(creds.token)}`,
87
- },
88
- });
89
- }),
90
- decode: ({ response, outputAst, errors: errorClasses, }) => Effect.gen(function* () {
91
- const text = (yield* response.text.pipe(Effect.orDie)) ?? "";
92
- if (process.env.DISTILLED_DEBUG_HTTP) {
93
- console.error(`[distilled] <- ${response.status} ${text.slice(0, 400)}`);
94
- }
95
- let json;
96
- let nonJson = false;
97
- if (text.trim().length > 0) {
98
- try {
99
- json = JSON.parse(text);
100
- }
101
- catch {
102
- nonJson = true;
103
- }
104
- }
105
- const status = response.status;
106
- const headers = response.headers;
107
- if (status >= 400) {
108
- const env = (nonJson ? undefined : errorEnvelope(json)) ?? {};
109
- const message = env.message ?? (nonJson && text.trim() ? text.trim() : `HTTP ${status}`);
110
- const typed = matchTypedError(errorClasses, status, [
111
- {
112
- code: typeof env.code === "number" ? env.code : undefined,
113
- message,
114
- },
115
- ], { body: nonJson ? text : json, headers });
116
- if (typed !== undefined)
117
- return yield* fail(typed);
118
- const StatusErrorClass = HTTP_STATUS_MAP[status];
119
- if (StatusErrorClass) {
120
- return yield* fail(new StatusErrorClass({
121
- message,
122
- retryAfter: parseRetryAfterForStatus(status, headers),
123
- }));
124
- }
125
- if (status >= 500) {
126
- return yield* fail(new InternalServerError({
127
- message,
128
- retryAfter: parseRetryAfterForStatus(status, headers),
129
- }));
130
- }
131
- return yield* fail(new UnknownStackitError({
132
- code: typeof env.code === "string"
133
- ? env.code
134
- : env.code !== undefined
135
- ? String(env.code)
136
- : undefined,
137
- message,
138
- body: nonJson ? text : json,
139
- }));
140
- }
141
- // Strict mode checks the mapped body against the output schema.
142
- const body = nonJson ? text : (json ?? {});
143
- const mapped = yield* validateResponse(outputAst, mapKeys(outputAst, body, "decode"), (cause) => new StackitParseError({ body: nonJson ? text : json, cause })).pipe(Effect.catch(fail));
144
- return wrapSensitive(outputAst, mapped);
145
- }),
146
- }));
147
- //# sourceMappingURL=protocol.js.map
1
+ export { protocol$StackitProtocol as StackitProtocol, protocol$applyRegion as applyRegion } from "./_bundle/sdk.js";
package/lib/retry.d.ts CHANGED
@@ -18,7 +18,7 @@ import * as Effect from "effect/Effect";
18
18
  export { type Options, type Factory, type Policy, makeDefault, jittered, capped, throttlingOptions, transientOptions, throttlingFactory, transientFactory, } from "@distilled.cloud/core/retry";
19
19
  declare const Retry_base: Context.ServiceClass<Retry, "StackitRetry", Policy>;
20
20
  /** Context tag for configuring retry behavior of STACKIT API calls. */
21
- export declare class Retry extends Retry_base {
21
+ export declare class Retry extends /*@__PURE__*/ Retry_base {
22
22
  }
23
23
  /** Provides a custom retry policy to every STACKIT API call below it. */
24
24
  export declare const policy: (optionsOrFactory: Policy) => <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, Exclude<R, Retry>>;
@@ -1 +1 @@
1
- {"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../src/retry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAuC,MAAM,6BAA6B,CAAC;AAC/F;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAGxC,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,OAAO,EACZ,KAAK,MAAM,EACX,WAAW,EACX,QAAQ,EACR,MAAM,EACN,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,6BAA6B,CAAC;;AAErC,uEAAuE;AACvE,qBAAa,KAAM,SAAQ,UAAgD;CAAG;AAE9E,yEAAyE;AACzE,eAAO,MAAM,MAAM,qBAAsB,MAAM,sFACS,CAAC;AAEzD,sCAAsC;AACtC,eAAO,MAAM,IAAI,mFAA+D,CAAC;AAEjF,kFAAkF;AAClF,eAAO,MAAM,UAAU,mFAA4B,CAAC;AAEpD,oFAAoF;AACpF,eAAO,MAAM,SAAS,mFAA2B,CAAC"}
1
+ {"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../src/retry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAuC,MAAM,6BAA6B,CAAC;AAC/F;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAGxC,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,OAAO,EACZ,KAAK,MAAM,EACX,WAAW,EACX,QAAQ,EACR,MAAM,EACN,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,6BAA6B,CAAC;;AAErC,uEAAuE;AACvE,qBAAa,KAAM,SAAQ,aAAa,CAAC,UAAgD;CAAG;AAE5F,yEAAyE;AACzE,eAAO,MAAM,MAAM,qBAAsB,MAAM,sFACS,CAAC;AAEzD,sCAAsC;AACtC,eAAO,MAAM,IAAI,mFAEhB,CAAC;AAEF,kFAAkF;AAClF,eAAO,MAAM,UAAU,mFAA0C,CAAC;AAElE,oFAAoF;AACpF,eAAO,MAAM,SAAS,mFAAyC,CAAC"}
package/lib/retry.js CHANGED
@@ -1,31 +1 @@
1
- import { throttlingFactory, transientFactory } from "@distilled.cloud/core/retry";
2
- /**
3
- * STACKIT retry configuration.
4
- *
5
- * Defines the per-SDK `Retry` Context.Service tag that generated operations
6
- * wire into `API.make`. Callers can install a blanket retry policy at the
7
- * layer level and have every STACKIT API call below it pick it up:
8
- *
9
- * @example
10
- * ```ts
11
- * import * as Stackit from "@distilled.cloud/stackit";
12
- *
13
- * myEffect.pipe(Stackit.Retry.transient);
14
- * ```
15
- */
16
- import * as Context from "effect/Context";
17
- import * as Effect from "effect/Effect";
18
- import * as Layer from "effect/Layer";
19
- export { makeDefault, jittered, capped, throttlingOptions, transientOptions, throttlingFactory, transientFactory, } from "@distilled.cloud/core/retry";
20
- /** Context tag for configuring retry behavior of STACKIT API calls. */
21
- export class Retry extends Context.Service()("StackitRetry") {
22
- }
23
- /** Provides a custom retry policy to every STACKIT API call below it. */
24
- export const policy = (optionsOrFactory) => Effect.provide(Layer.succeed(Retry, optionsOrFactory));
25
- /** Disables all automatic retries. */
26
- export const none = Effect.provide(Layer.succeed(Retry, { while: () => false }));
27
- /** Apply the throttling retry policy (retries throttling errors indefinitely). */
28
- export const throttling = policy(throttlingFactory);
29
- /** Apply the transient retry policy (retries all transient errors indefinitely). */
30
- export const transient = policy(transientFactory);
31
- //# sourceMappingURL=retry.js.map
1
+ export { retry$Retry as Retry, retry$capped as capped, retry$jittered as jittered, retry$makeDefault as makeDefault, retry$none as none, retry$policy as policy, retry$throttling as throttling, retry$throttlingFactory as throttlingFactory, retry$throttlingOptions as throttlingOptions, retry$transient as transient, retry$transientFactory as transientFactory, retry$transientOptions as transientOptions } from "./_bundle/sdk.js";