@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.
- package/lib/.lazy.json +1 -0
- package/lib/_bundle/lazy.js +4 -0
- package/lib/_bundle/sdk.js +2 -0
- package/lib/_bundle/sdk.js.map +1 -0
- package/lib/credentials.d.ts +2 -2
- package/lib/credentials.d.ts.map +1 -1
- package/lib/credentials.js +1 -49
- package/lib/errors.d.ts +13 -13
- package/lib/errors.d.ts.map +1 -1
- package/lib/errors.js +1 -26
- package/lib/index.d.ts +2 -2
- package/lib/index.js +1 -24
- package/lib/index.lazy.js +7 -0
- package/lib/pagination.d.ts +1 -1
- package/lib/pagination.js +1 -45
- package/lib/protocol.d.ts +3 -3
- package/lib/protocol.d.ts.map +1 -1
- package/lib/protocol.js +1 -147
- package/lib/retry.d.ts +1 -1
- package/lib/retry.d.ts.map +1 -1
- package/lib/retry.js +1 -31
- package/lib/services/alb.d.ts +10 -87
- package/lib/services/alb.d.ts.map +1 -1
- package/lib/services/alb.js +28 -512
- package/lib/services/alb.js.map +1 -1
- package/lib/services/alb_waf.d.ts +9 -82
- package/lib/services/alb_waf.d.ts.map +1 -1
- package/lib/services/alb_waf.js +33 -520
- package/lib/services/alb_waf.js.map +1 -1
- package/lib/services/authorization.d.ts +5 -47
- package/lib/services/authorization.d.ts.map +1 -1
- package/lib/services/authorization.js +1 -322
- package/lib/services/authorization.js.map +1 -1
- package/lib/services/automation.d.ts +7 -47
- package/lib/services/automation.d.ts.map +1 -1
- package/lib/services/automation.js +1 -362
- package/lib/services/automation.js.map +1 -1
- package/lib/services/cdn.d.ts +8 -220
- package/lib/services/cdn.d.ts.map +1 -1
- package/lib/services/cdn.js +31 -905
- package/lib/services/cdn.js.map +1 -1
- package/lib/services/certificates.d.ts +8 -27
- package/lib/services/certificates.d.ts.map +1 -1
- package/lib/services/certificates.js +1 -178
- package/lib/services/certificates.js.map +1 -1
- package/lib/services/cost.d.ts +10 -37
- package/lib/services/cost.d.ts.map +1 -1
- package/lib/services/cost.js +1 -176
- package/lib/services/cost.js.map +1 -1
- package/lib/services/dns.d.ts +9 -104
- package/lib/services/dns.d.ts.map +1 -1
- package/lib/services/dns.js +40 -725
- package/lib/services/dns.js.map +1 -1
- package/lib/services/dremio.d.ts +8 -50
- package/lib/services/dremio.d.ts.map +1 -1
- package/lib/services/dremio.js +1 -316
- package/lib/services/dremio.js.map +1 -1
- package/lib/services/edge.d.ts +7 -40
- package/lib/services/edge.d.ts.map +1 -1
- package/lib/services/edge.js +1 -356
- package/lib/services/edge.js.map +1 -1
- package/lib/services/functions.d.ts +1 -48
- package/lib/services/functions.d.ts.map +1 -1
- package/lib/services/functions.js +1 -398
- package/lib/services/functions.js.map +1 -1
- package/lib/services/git.d.ts +8 -61
- package/lib/services/git.d.ts.map +1 -1
- package/lib/services/git.js +35 -519
- package/lib/services/git.js.map +1 -1
- package/lib/services/iaas.d.ts +9 -337
- package/lib/services/iaas.d.ts.map +1 -1
- package/lib/services/iaas.js +181 -3542
- package/lib/services/iaas.js.map +1 -1
- package/lib/services/index.js +0 -2
- package/lib/services/intake.d.ts +8 -75
- package/lib/services/intake.d.ts.map +1 -1
- package/lib/services/intake.js +29 -474
- package/lib/services/intake.js.map +1 -1
- package/lib/services/kms.d.ts +9 -92
- package/lib/services/kms.d.ts.map +1 -1
- package/lib/services/kms.js +41 -662
- package/lib/services/kms.js.map +1 -1
- package/lib/services/lb_ip_lists.d.ts +9 -25
- package/lib/services/lb_ip_lists.d.ts.map +1 -1
- package/lib/services/lb_ip_lists.js +1 -153
- package/lib/services/lb_ip_lists.js.map +1 -1
- package/lib/services/load_balancer.d.ts +10 -81
- package/lib/services/load_balancer.d.ts.map +1 -1
- package/lib/services/load_balancer.js +29 -496
- package/lib/services/load_balancer.js.map +1 -1
- package/lib/services/logme.d.ts +8 -69
- package/lib/services/logme.d.ts.map +1 -1
- package/lib/services/logme.js +33 -573
- package/lib/services/logme.js.map +1 -1
- package/lib/services/logs.d.ts +8 -64
- package/lib/services/logs.d.ts.map +1 -1
- package/lib/services/logs.js +34 -474
- package/lib/services/logs.js.map +1 -1
- package/lib/services/mariadb.d.ts +8 -65
- package/lib/services/mariadb.d.ts.map +1 -1
- package/lib/services/mariadb.js +34 -550
- package/lib/services/mariadb.js.map +1 -1
- package/lib/services/model_experiments.d.ts +9 -48
- package/lib/services/model_experiments.d.ts.map +1 -1
- package/lib/services/model_experiments.js +1 -335
- package/lib/services/model_experiments.js.map +1 -1
- package/lib/services/model_serving.d.ts +7 -47
- package/lib/services/model_serving.d.ts.map +1 -1
- package/lib/services/model_serving.js +1 -286
- package/lib/services/model_serving.js.map +1 -1
- package/lib/services/mongodb_flex.d.ts +8 -137
- package/lib/services/mongodb_flex.d.ts.map +1 -1
- package/lib/services/mongodb_flex.js +42 -802
- package/lib/services/mongodb_flex.js.map +1 -1
- package/lib/services/object_storage.d.ts +12 -59
- package/lib/services/object_storage.d.ts.map +1 -1
- package/lib/services/object_storage.js +38 -539
- package/lib/services/object_storage.js.map +1 -1
- package/lib/services/observability.d.ts +8 -407
- package/lib/services/observability.d.ts.map +1 -1
- package/lib/services/observability.js +159 -3157
- package/lib/services/observability.js.map +1 -1
- package/lib/services/opensearch.d.ts +8 -71
- package/lib/services/opensearch.d.ts.map +1 -1
- package/lib/services/opensearch.js +34 -562
- package/lib/services/opensearch.js.map +1 -1
- package/lib/services/pim.d.ts +12 -108
- package/lib/services/pim.d.ts.map +1 -1
- package/lib/services/pim.js +31 -735
- package/lib/services/pim.js.map +1 -1
- package/lib/services/postgres_flex.d.ts +14 -136
- package/lib/services/postgres_flex.d.ts.map +1 -1
- package/lib/services/postgres_flex.js +47 -852
- package/lib/services/postgres_flex.js.map +1 -1
- package/lib/services/pubsub.d.ts +11 -73
- package/lib/services/pubsub.d.ts.map +1 -1
- package/lib/services/pubsub.js +37 -518
- package/lib/services/pubsub.js.map +1 -1
- package/lib/services/rabbitmq.d.ts +8 -76
- package/lib/services/rabbitmq.d.ts.map +1 -1
- package/lib/services/rabbitmq.js +35 -573
- package/lib/services/rabbitmq.js.map +1 -1
- package/lib/services/registry.d.ts +10 -28
- package/lib/services/registry.d.ts.map +1 -1
- package/lib/services/registry.js +1 -197
- package/lib/services/registry.js.map +1 -1
- package/lib/services/resource_manager.d.ts +9 -61
- package/lib/services/resource_manager.d.ts.map +1 -1
- package/lib/services/resource_manager.js +36 -472
- package/lib/services/resource_manager.js.map +1 -1
- package/lib/services/run_command.d.ts +5 -28
- package/lib/services/run_command.d.ts.map +1 -1
- package/lib/services/run_command.js +1 -184
- package/lib/services/run_command.js.map +1 -1
- package/lib/services/sca.d.ts +8 -79
- package/lib/services/sca.d.ts.map +1 -1
- package/lib/services/sca.js +25 -444
- package/lib/services/sca.js.map +1 -1
- package/lib/services/scf.d.ts +8 -64
- package/lib/services/scf.d.ts.map +1 -1
- package/lib/services/scf.js +40 -669
- package/lib/services/scf.js.map +1 -1
- package/lib/services/secrets_manager.d.ts +8 -61
- package/lib/services/secrets_manager.d.ts.map +1 -1
- package/lib/services/secrets_manager.js +42 -612
- package/lib/services/secrets_manager.js.map +1 -1
- package/lib/services/server_backup.d.ts +7 -50
- package/lib/services/server_backup.d.ts.map +1 -1
- package/lib/services/server_backup.js +29 -453
- package/lib/services/server_backup.js.map +1 -1
- package/lib/services/server_update.d.ts +7 -35
- package/lib/services/server_update.d.ts.map +1 -1
- package/lib/services/server_update.js +1 -351
- package/lib/services/server_update.js.map +1 -1
- package/lib/services/service_account.d.ts +10 -68
- package/lib/services/service_account.d.ts.map +1 -1
- package/lib/services/service_account.js +30 -505
- package/lib/services/service_account.js.map +1 -1
- package/lib/services/service_enablement.d.ts +7 -29
- package/lib/services/service_enablement.d.ts.map +1 -1
- package/lib/services/service_enablement.js +1 -156
- package/lib/services/service_enablement.js.map +1 -1
- package/lib/services/sfs.d.ts +4 -96
- package/lib/services/sfs.d.ts.map +1 -1
- package/lib/services/sfs.js +46 -789
- package/lib/services/sfs.js.map +1 -1
- package/lib/services/ske.d.ts +9 -108
- package/lib/services/ske.d.ts.map +1 -1
- package/lib/services/ske.js +26 -557
- package/lib/services/ske.js.map +1 -1
- package/lib/services/sqlserverflex.d.ts +11 -152
- package/lib/services/sqlserverflex.d.ts.map +1 -1
- package/lib/services/sqlserverflex.js +46 -935
- package/lib/services/sqlserverflex.js.map +1 -1
- package/lib/services/stackit_marketplace.d.ts +9 -38
- package/lib/services/stackit_marketplace.d.ts.map +1 -1
- package/lib/services/stackit_marketplace.js +26 -378
- package/lib/services/stackit_marketplace.js.map +1 -1
- package/lib/services/telemetry_link.d.ts +8 -61
- package/lib/services/telemetry_link.d.ts.map +1 -1
- package/lib/services/telemetry_link.js +34 -531
- package/lib/services/telemetry_link.js.map +1 -1
- package/lib/services/telemetry_router.d.ts +8 -72
- package/lib/services/telemetry_router.d.ts.map +1 -1
- package/lib/services/telemetry_router.js +29 -483
- package/lib/services/telemetry_router.js.map +1 -1
- package/lib/services/ufw.d.ts +7 -42
- package/lib/services/ufw.d.ts.map +1 -1
- package/lib/services/ufw.js +1 -278
- package/lib/services/ufw.js.map +1 -1
- package/lib/services/valkey.d.ts +8 -68
- package/lib/services/valkey.d.ts.map +1 -1
- package/lib/services/valkey.js +34 -566
- package/lib/services/valkey.js.map +1 -1
- package/lib/services/vpn.d.ts +21 -186
- package/lib/services/vpn.d.ts.map +1 -1
- package/lib/services/vpn.js +43 -930
- package/lib/services/vpn.js.map +1 -1
- package/lib/services/workflows.d.ts +15 -84
- package/lib/services/workflows.d.ts.map +1 -1
- package/lib/services/workflows.js +27 -507
- package/lib/services/workflows.js.map +1 -1
- package/lib/services.lazy/alb.js +4 -0
- package/lib/services.lazy/alb_waf.js +4 -0
- package/lib/services.lazy/authorization.js +1 -0
- package/lib/services.lazy/automation.js +1 -0
- package/lib/services.lazy/cdn.js +4 -0
- package/lib/services.lazy/certificates.js +1 -0
- package/lib/services.lazy/cost.js +1 -0
- package/lib/services.lazy/dns.js +4 -0
- package/lib/services.lazy/dremio.js +1 -0
- package/lib/services.lazy/edge.js +1 -0
- package/lib/services.lazy/functions.js +1 -0
- package/lib/services.lazy/git.js +4 -0
- package/lib/services.lazy/iaas.js +4 -0
- package/lib/services.lazy/index.js +3 -0
- package/lib/services.lazy/intake.js +4 -0
- package/lib/services.lazy/kms.js +4 -0
- package/lib/services.lazy/lb_ip_lists.js +1 -0
- package/lib/services.lazy/load_balancer.js +4 -0
- package/lib/services.lazy/logme.js +4 -0
- package/lib/services.lazy/logs.js +4 -0
- package/lib/services.lazy/mariadb.js +4 -0
- package/lib/services.lazy/model_experiments.js +1 -0
- package/lib/services.lazy/model_serving.js +1 -0
- package/lib/services.lazy/mongodb_flex.js +4 -0
- package/lib/services.lazy/object_storage.js +4 -0
- package/lib/services.lazy/observability.js +4 -0
- package/lib/services.lazy/opensearch.js +4 -0
- package/lib/services.lazy/pim.js +4 -0
- package/lib/services.lazy/postgres_flex.js +4 -0
- package/lib/services.lazy/pubsub.js +4 -0
- package/lib/services.lazy/rabbitmq.js +4 -0
- package/lib/services.lazy/registry.js +1 -0
- package/lib/services.lazy/resource_manager.js +4 -0
- package/lib/services.lazy/run_command.js +1 -0
- package/lib/services.lazy/sca.js +4 -0
- package/lib/services.lazy/scf.js +4 -0
- package/lib/services.lazy/secrets_manager.js +4 -0
- package/lib/services.lazy/server_backup.js +4 -0
- package/lib/services.lazy/server_update.js +1 -0
- package/lib/services.lazy/service_account.js +4 -0
- package/lib/services.lazy/service_enablement.js +1 -0
- package/lib/services.lazy/sfs.js +4 -0
- package/lib/services.lazy/ske.js +4 -0
- package/lib/services.lazy/sqlserverflex.js +4 -0
- package/lib/services.lazy/stackit_marketplace.js +4 -0
- package/lib/services.lazy/telemetry_link.js +4 -0
- package/lib/services.lazy/telemetry_router.js +4 -0
- package/lib/services.lazy/ufw.js +1 -0
- package/lib/services.lazy/valkey.js +4 -0
- package/lib/services.lazy/vpn.js +4 -0
- package/lib/services.lazy/workflows.js +4 -0
- package/lib/traits.d.ts +1 -1
- package/lib/traits.js +1 -15
- package/package.json +9 -7
- package/src/credentials.ts +21 -18
- package/src/errors.ts +10 -14
- package/src/index.ts +2 -2
- package/src/pagination.ts +2 -2
- package/src/protocol.ts +12 -9
- package/src/retry.ts +6 -4
- package/src/services/alb.ts +599 -655
- package/src/services/alb_waf.ts +597 -637
- package/src/services/authorization.ts +400 -383
- package/src/services/automation.ts +422 -405
- package/src/services/cdn.ts +817 -1375
- package/src/services/certificates.ts +209 -190
- package/src/services/cost.ts +100 -207
- package/src/services/dns.ts +793 -833
- package/src/services/dremio.ts +356 -349
- package/src/services/edge.ts +406 -366
- package/src/services/functions.ts +465 -463
- package/src/services/git.ts +602 -547
- package/src/services/iaas.ts +3931 -3821
- package/src/services/intake.ts +521 -549
- package/src/services/kms.ts +715 -692
- package/src/services/lb_ip_lists.ts +173 -152
- package/src/services/load_balancer.ts +576 -619
- package/src/services/logme.ts +696 -641
- package/src/services/logs.ts +510 -493
- package/src/services/mariadb.ts +671 -604
- package/src/services/model_experiments.ts +343 -356
- package/src/services/model_serving.ts +337 -328
- package/src/services/mongodb_flex.ts +955 -1007
- package/src/services/object_storage.ts +614 -557
- package/src/services/observability.ts +3469 -3866
- package/src/services/opensearch.ts +679 -628
- package/src/services/pim.ts +672 -909
- package/src/services/postgres_flex.ts +966 -986
- package/src/services/pubsub.ts +524 -546
- package/src/services/rabbitmq.ts +693 -654
- package/src/services/registry.ts +227 -194
- package/src/services/resource_manager.ts +520 -517
- package/src/services/run_command.ts +219 -211
- package/src/services/sca.ts +543 -570
- package/src/services/scf.ts +790 -716
- package/src/services/secrets_manager.ts +707 -622
- package/src/services/server_backup.ts +490 -475
- package/src/services/server_update.ts +353 -356
- package/src/services/service_account.ts +515 -553
- package/src/services/service_enablement.ts +162 -166
- package/src/services/sfs.ts +879 -958
- package/src/services/ske.ts +694 -769
- package/src/services/sqlserverflex.ts +1042 -1117
- package/src/services/stackit_marketplace.ts +377 -372
- package/src/services/telemetry_link.ts +530 -531
- package/src/services/telemetry_router.ts +509 -534
- package/src/services/ufw.ts +305 -307
- package/src/services/valkey.ts +684 -629
- package/src/services/vpn.ts +935 -1195
- package/src/services/workflows.ts +426 -586
- package/src/traits.ts +1 -1
- package/lib/credentials.js.map +0 -1
- package/lib/errors.js.map +0 -1
- package/lib/pagination.js.map +0 -1
- package/lib/protocol.js.map +0 -1
- package/lib/protocol.test.d.ts +0 -2
- package/lib/protocol.test.d.ts.map +0 -1
- package/lib/protocol.test.js +0 -181
- package/lib/protocol.test.js.map +0 -1
- package/lib/retry.js.map +0 -1
- package/lib/services/index.js.map +0 -1
- package/lib/traits.js.map +0 -1
- package/src/protocol.test.ts +0 -304
- /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,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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"}
|
package/lib/credentials.d.ts
CHANGED
|
@@ -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. */
|
package/lib/credentials.d.ts.map
CHANGED
|
@@ -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,
|
|
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"}
|
package/lib/credentials.js
CHANGED
|
@@ -1,49 +1 @@
|
|
|
1
|
-
|
|
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 "
|
|
13
|
-
declare const UnknownStackitError_base: Schema.
|
|
14
|
-
readonly code: Schema.optional<Schema.String>;
|
|
15
|
-
readonly message: Schema.optional<Schema.String>;
|
|
16
|
-
readonly body: Schema.Unknown;
|
|
17
|
-
}
|
|
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
|
|
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.
|
|
26
|
-
readonly body: Schema.Unknown;
|
|
27
|
-
readonly cause: Schema.Unknown;
|
|
28
|
-
}
|
|
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
|
package/lib/errors.d.ts.map
CHANGED
|
@@ -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,
|
|
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
|
|
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,
|
|
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
|
|
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";
|
package/lib/pagination.d.ts
CHANGED
|
@@ -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`,
|
|
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
|
-
|
|
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
|
-
*
|
|
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
|
-
*
|
|
25
|
+
* * `https://<svc>.api.stackit.cloud` becomes
|
|
26
26
|
* `https://<svc>.api.<region>.stackit.cloud`.
|
|
27
|
-
*
|
|
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;
|
package/lib/protocol.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,2BAA2B,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
|
-
|
|
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>>;
|
package/lib/retry.d.ts.map
CHANGED
|
@@ -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;
|
|
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
|
-
|
|
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";
|