UNPKG

the-moby-effect

Version:
74 lines 3 kB
import * as Context from "effect/Context"; import * as Effect from "effect/Effect"; import * as Layer from "effect/Layer"; import * as Schema from "effect/Schema"; import * as HttpClient from "effect/unstable/http/HttpClient"; import * as HttpApi from "effect/unstable/httpapi/HttpApi"; import * as HttpApiClient from "effect/unstable/httpapi/HttpApiClient"; import * as HttpApiEndpoint from "effect/unstable/httpapi/HttpApiEndpoint"; import * as HttpApiGroup from "effect/unstable/httpapi/HttpApiGroup"; import * as HttpApiSchema from "effect/unstable/httpapi/HttpApiSchema"; import { MobyConnectionOptions } from "../../MobyConnection.js"; import { makeAgnosticHttpClientLayer } from "../../MobyPlatforms.js"; import { hijackResponseUnsafe } from "../demux/hijack.js"; import { DockerError } from "./circular.js"; /** @see https://docs.docker.com/reference/api/engine/latest/#tag/Session/operation/Session */ const sessionEndpoint = /*#__PURE__*/HttpApiEndpoint.post("session", "/session", { headers: { Upgrade: /*#__PURE__*/Schema.Literal("h2c"), Connection: /*#__PURE__*/Schema.Literal("Upgrade") }, success: [/*#__PURE__*/HttpApiSchema.Empty(101), /*#__PURE__*/ // 101 Switching Protocols HttpApiSchema.Empty(200) // 200 OK ] }); /** @see https://docs.docker.com/reference/api/engine/latest/#tag/Session */ const SessionGroup = /*#__PURE__*/HttpApiGroup.make("session").add(sessionEndpoint); /** * @since 1.0.0 * @category HttpApi * @see https://docs.docker.com/reference/api/engine/latest/#tag/Session */ export const SessionApi = /*#__PURE__*/HttpApi.make("SessionApi").add(SessionGroup); /** * @since 1.0.0 * @category Services * @see https://docs.docker.com/reference/api/engine/latest/#tag/Session */ export class Sessions extends /*#__PURE__*/Context.Service()("@the-moby-effect/endpoints/Session", { make: /*#__PURE__*/Effect.gen(function* () { const httpClient = yield* HttpClient.HttpClient; const SessionsError = DockerError.WrapForModule("session"); const client = yield* HttpApiClient.group(SessionApi, { group: "session", httpClient }); const session_ = () => client.session({ headers: { Upgrade: "h2c", Connection: "Upgrade" }, responseMode: "response-only" }).pipe(Effect.flatMap(hijackResponseUnsafe), Effect.mapError(SessionsError("session"))); return { session: session_ }; }) }) {} /** * @since 1.0.0 * @category Layers * @see https://docs.docker.com/reference/api/engine/latest/#tag/Session */ export const SessionsLayer = /*#__PURE__*/Layer.effect(Sessions, Sessions.make); /** * @since 1.0.0 * @category Layers * @see https://docs.docker.com/reference/api/engine/latest/#tag/Session */ export const SessionsLayerLocalSocket = /*#__PURE__*/SessionsLayer.pipe(/*#__PURE__*/Layer.provide(/*#__PURE__*/makeAgnosticHttpClientLayer(/*#__PURE__*/MobyConnectionOptions.socket({ socketPath: "/var/run/docker.sock" })))); //# sourceMappingURL=session.js.map