UNPKG

nats

Version:

Node.js client for NATS, a lightweight, high-performance cloud native messaging system

107 lines 4.72 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.ConsumerAPIImpl = void 0; const jsbaseclient_api_1 = require("./jsbaseclient_api"); const jslister_1 = require("./jslister"); const jsutil_1 = require("./jsutil"); const semver_1 = require("./semver"); class ConsumerAPIImpl extends jsbaseclient_api_1.BaseApiClient { constructor(nc, opts) { super(nc, opts); } add(stream, cfg) { var _a, _b, _c; return __awaiter(this, void 0, void 0, function* () { (0, jsutil_1.validateStreamName)(stream); if (cfg.deliver_group && cfg.flow_control) { throw new Error("jetstream flow control is not supported with queue groups"); } if (cfg.deliver_group && cfg.idle_heartbeat) { throw new Error("jetstream idle heartbeat is not supported with queue groups"); } const cr = {}; cr.config = cfg; cr.stream_name = stream; if (cr.config.durable_name) { (0, jsutil_1.validateDurableName)(cr.config.durable_name); } const nci = this.nc; const { min, ok: newAPI } = nci.features.get(semver_1.Feature.JS_NEW_CONSUMER_CREATE_API); const name = cfg.name === "" ? undefined : cfg.name; if (name && !newAPI) { throw new Error(`consumer 'name' requires server ${min}`); } if (name) { const m = (0, jsutil_1.validName)(name); if (m.length) { throw new Error(`consumer 'name' ${m}`); } } let subj; let consumerName = ""; if (newAPI) { consumerName = (_b = (_a = cfg.name) !== null && _a !== void 0 ? _a : cfg.durable_name) !== null && _b !== void 0 ? _b : ""; } if (consumerName !== "") { let fs = (_c = cfg.filter_subject) !== null && _c !== void 0 ? _c : undefined; if (fs === ">") { fs = undefined; } subj = fs !== undefined ? `${this.prefix}.CONSUMER.CREATE.${stream}.${consumerName}.${fs}` : `${this.prefix}.CONSUMER.CREATE.${stream}.${consumerName}`; } else { subj = cfg.durable_name ? `${this.prefix}.CONSUMER.DURABLE.CREATE.${stream}.${cfg.durable_name}` : `${this.prefix}.CONSUMER.CREATE.${stream}`; } const r = yield this._request(subj, cr); return r; }); } update(stream, durable, cfg) { return __awaiter(this, void 0, void 0, function* () { const ci = yield this.info(stream, durable); const changable = cfg; return this.add(stream, Object.assign(ci.config, changable)); }); } info(stream, name) { return __awaiter(this, void 0, void 0, function* () { (0, jsutil_1.validateStreamName)(stream); (0, jsutil_1.validateDurableName)(name); const r = yield this._request(`${this.prefix}.CONSUMER.INFO.${stream}.${name}`); return r; }); } delete(stream, name) { return __awaiter(this, void 0, void 0, function* () { (0, jsutil_1.validateStreamName)(stream); (0, jsutil_1.validateDurableName)(name); const r = yield this._request(`${this.prefix}.CONSUMER.DELETE.${stream}.${name}`); const cr = r; return cr.success; }); } list(stream) { (0, jsutil_1.validateStreamName)(stream); const filter = (v) => { const clr = v; return clr.consumers; }; const subj = `${this.prefix}.CONSUMER.LIST.${stream}`; return new jslister_1.ListerImpl(subj, filter, this); } } exports.ConsumerAPIImpl = ConsumerAPIImpl; //# sourceMappingURL=jsmconsumer_api.js.map