rsocket-rxjs
Version:
RSocket Protocol Client Implementation
73 lines (72 loc) • 2.41 kB
JavaScript
import { WellKnownMimeTypes } from "./well-known-mime-types";
export class CompositeMetadata {
constructor() {
this._array = [];
}
get length() { return this._array.length; }
push(data) {
this._array.push(data);
}
get(index) {
return this._array[index];
}
remove(index) {
const removed = this._array.splice(index, 1);
return removed.length > 0 ? removed[0] : undefined;
}
pop() {
return this._array.pop();
}
[Symbol.iterator]() {
let idx = 0;
return {
next: () => {
if (idx < this.length) {
return { value: this.get(idx++), done: false };
}
else {
return { value: undefined, done: true };
}
}
};
}
get route() {
var _a;
return (_a = this._array.find(v => v.mimeType == WellKnownMimeTypes.MESSAGE_X_RSOCKET_ROUTING_V0.name)) === null || _a === void 0 ? void 0 : _a.data;
}
set route(value) {
if (value != undefined) {
this._array.push({
mimeType: WellKnownMimeTypes.MESSAGE_X_RSOCKET_ROUTING_V0.name,
data: value
});
}
else {
let routeIdx = this._array.findIndex(v => v.mimeType !== WellKnownMimeTypes.MESSAGE_X_RSOCKET_ROUTING_V0.name);
if (routeIdx != -1) {
this._array.splice(routeIdx, 1);
}
}
}
get authentication() {
var _a;
return (_a = this._array.find(v => v.mimeType === WellKnownMimeTypes.MESSAGE_X_RSOCKET_AUTHENTICATION_V0.name)) === null || _a === void 0 ? void 0 : _a.data;
}
set authentication(auth) {
if (auth != undefined) {
this._array.push({
mimeType: WellKnownMimeTypes.MESSAGE_X_RSOCKET_AUTHENTICATION_V0.name,
data: auth
});
}
else {
let authIdx = this._array.findIndex(v => v.mimeType !== WellKnownMimeTypes.MESSAGE_X_RSOCKET_AUTHENTICATION_V0.name);
if (authIdx != -1) {
this._array.splice(authIdx, 1);
}
}
}
getByMimeType(mimeType) {
return this._array.find(v => v.mimeType === mimeType).data;
}
}