the-moby-effect
Version:
Moby/Docker API client built using effect-ts
76 lines (75 loc) • 3.85 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.isSessionsError = exports.SessionsLayer = exports.SessionsErrorTypeId = exports.SessionsError = exports.Sessions = void 0;
var PlatformError = _interopRequireWildcard(require("@effect/platform/Error"));
var HttpClient = _interopRequireWildcard(require("@effect/platform/HttpClient"));
var HttpClientRequest = _interopRequireWildcard(require("@effect/platform/HttpClientRequest"));
var Effect = _interopRequireWildcard(require("effect/Effect"));
var Function = _interopRequireWildcard(require("effect/Function"));
var Predicate = _interopRequireWildcard(require("effect/Predicate"));
var _hijack = require("../demux/hijack.js");
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
/**
* @since 1.0.0
* @category Errors
*/
const SessionsErrorTypeId = exports.SessionsErrorTypeId = /*#__PURE__*/Symbol.for("@the-moby-effect/endpoints/SessionsError");
/**
* @since 1.0.0
* @category Errors
*/
const isSessionsError = u => Predicate.hasProperty(u, SessionsErrorTypeId);
/**
* @since 1.0.0
* @category Errors
*/
exports.isSessionsError = isSessionsError;
class SessionsError extends /*#__PURE__*/PlatformError.TypeIdError(SessionsErrorTypeId, "SessionsError") {
get message() {
return `${this.method}`;
}
}
/**
* @since 1.0.0
* @category Tags
* @see https://docs.docker.com/reference/api/engine/latest/#tag/Session
*/
exports.SessionsError = SessionsError;
class Sessions extends /*#__PURE__*/Effect.Service()("@the-moby-effect/endpoints/Session", {
accessors: false,
dependencies: [],
effect: /*#__PURE__*/Effect.gen(function* () {
const defaultClient = yield* HttpClient.HttpClient;
const client = defaultClient.pipe(HttpClient.filterStatus(status => status === 101));
/**
* Start a new interactive session with a server. Session allows server
* to call back to the client for advanced capabilities. This endpoint
* hijacks the HTTP connection to HTTP2 transport that allows the client
* to expose gPRC services on that connection. For example, the client
* sends this request to upgrade the connection: `POST /session HTTP/1.1
* Upgrade: h2c Connection: Upgrade` The Docker daemon responds with a
* `101 UPGRADED` response follow with the raw stream: `HTTP/1.1 101
* UPGRADED Connection: Upgrade Upgrade: h2c`
*
* @see https://docs.docker.com/reference/api/engine/latest/#tag/Session/operation/Session
*/
const session_ = () => Function.pipe(HttpClientRequest.post("/session"), HttpClientRequest.setHeader("Upgrade", "h2c"), HttpClientRequest.setHeader("Connection", "Upgrade"), client.execute, Effect.flatMap(_hijack.hijackResponseUnsafe), Effect.mapError(cause => new SessionsError({
method: "session",
cause
})));
return {
session: session_
};
})
}) {}
/**
* @since 1.0.0
* @category Layers
* @see https://docs.docker.com/reference/api/engine/latest/#tag/Session
*/
exports.Sessions = Sessions;
const SessionsLayer = exports.SessionsLayer = Sessions.Default;
//# sourceMappingURL=session.js.map