supercat666's picture
add igv
78c921d
raw
history blame
4.74 kB
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership. The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied. See the License for the
// specific language governing permissions and limitations
// under the License.
import { __awaiter } from "tslib";
import streamAdapters from './adapters.mjs';
/** @ignore */
export const ITERATOR_DONE = Object.freeze({ done: true, value: void (0) });
/** @ignore */
export class ArrowJSON {
constructor(_json) {
this._json = _json;
}
get schema() { return this._json['schema']; }
get batches() { return (this._json['batches'] || []); }
get dictionaries() { return (this._json['dictionaries'] || []); }
}
/** @ignore */
export class ReadableInterop {
tee() {
return this._getDOMStream().tee();
}
pipe(writable, options) {
return this._getNodeStream().pipe(writable, options);
}
pipeTo(writable, options) { return this._getDOMStream().pipeTo(writable, options); }
pipeThrough(duplex, options) {
return this._getDOMStream().pipeThrough(duplex, options);
}
_getDOMStream() {
return this._DOMStream || (this._DOMStream = this.toDOMStream());
}
_getNodeStream() {
return this._nodeStream || (this._nodeStream = this.toNodeStream());
}
}
/** @ignore */
export class AsyncQueue extends ReadableInterop {
constructor() {
super();
this._values = [];
this.resolvers = [];
this._closedPromise = new Promise((r) => this._closedPromiseResolve = r);
}
get closed() { return this._closedPromise; }
cancel(reason) {
return __awaiter(this, void 0, void 0, function* () { yield this.return(reason); });
}
write(value) {
if (this._ensureOpen()) {
this.resolvers.length <= 0
? (this._values.push(value))
: (this.resolvers.shift().resolve({ done: false, value }));
}
}
abort(value) {
if (this._closedPromiseResolve) {
this.resolvers.length <= 0
? (this._error = { error: value })
: (this.resolvers.shift().reject({ done: true, value }));
}
}
close() {
if (this._closedPromiseResolve) {
const { resolvers } = this;
while (resolvers.length > 0) {
resolvers.shift().resolve(ITERATOR_DONE);
}
this._closedPromiseResolve();
this._closedPromiseResolve = undefined;
}
}
[Symbol.asyncIterator]() { return this; }
toDOMStream(options) {
return streamAdapters.toDOMStream((this._closedPromiseResolve || this._error)
? this
: this._values, options);
}
toNodeStream(options) {
return streamAdapters.toNodeStream((this._closedPromiseResolve || this._error)
? this
: this._values, options);
}
throw(_) {
return __awaiter(this, void 0, void 0, function* () { yield this.abort(_); return ITERATOR_DONE; });
}
return(_) {
return __awaiter(this, void 0, void 0, function* () { yield this.close(); return ITERATOR_DONE; });
}
read(size) {
return __awaiter(this, void 0, void 0, function* () { return (yield this.next(size, 'read')).value; });
}
peek(size) {
return __awaiter(this, void 0, void 0, function* () { return (yield this.next(size, 'peek')).value; });
}
next(..._args) {
if (this._values.length > 0) {
return Promise.resolve({ done: false, value: this._values.shift() });
}
else if (this._error) {
return Promise.reject({ done: true, value: this._error.error });
}
else if (!this._closedPromiseResolve) {
return Promise.resolve(ITERATOR_DONE);
}
else {
return new Promise((resolve, reject) => {
this.resolvers.push({ resolve, reject });
});
}
}
_ensureOpen() {
if (this._closedPromiseResolve) {
return true;
}
throw new Error(`AsyncQueue is closed`);
}
}
//# sourceMappingURL=interfaces.mjs.map