@openhps/core
Version:
Open Hybrid Positioning System - Core component
1,467 lines (1,297 loc) • 231 kB
JavaScript
(function webpackUniversalModuleDefinition(root, factory) {
if(typeof exports === 'object' && typeof module === 'object')
module.exports = factory(require("@openhps/core"));
else if(typeof define === 'function' && define.amd)
define(["@openhps/core"], factory);
else {
var a = typeof exports === 'object' ? factory(require("@openhps/core")) : factory(root["@openhps/core"]);
for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];
}
})((typeof self !== 'undefined' ? self : this), (__WEBPACK_EXTERNAL_MODULE____) => {
return /******/ (() => { // webpackBootstrap
/******/ var __webpack_modules__ = ({
/***/ "./dist/cjs/worker/WorkerBase.js":
/*!***************************************!*\
!*** ./dist/cjs/worker/WorkerBase.js ***!
\***************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
var __dirname = "/";
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.WorkerBase = void 0;
const tslib_1 = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.mjs");
__webpack_require__(/*! reflect-metadata */ "./node_modules/reflect-metadata/Reflect.js");
const observable_1 = __webpack_require__(/*! threads/observable */ "./node_modules/threads/observable.js");
const __1 = __webpack_require__(/*! .. */ ".."); // external @openhps/core
class WorkerBase {
constructor() {
this.pullOutput = new observable_1.Subject();
this.pushOutput = new observable_1.Subject();
this.serviceOutputCall = new observable_1.Subject();
this.serviceOutputResponse = new observable_1.Subject();
this.eventOutput = new observable_1.Subject();
this.customMethods = new Map();
}
setShape(shape) {
this.shape = shape;
}
init(config) {
return new Promise((resolve, reject) => tslib_1.__awaiter(this, void 0, void 0, function* () {
this.config = config;
const importFn = typeof process !== 'object'
? config.type === 'module'
? (file) => Promise.resolve(`${file}`).then(s => __webpack_require__("./dist/cjs/worker sync recursive")(s)) // ES6
: (file) => Promise.resolve(importScripts(/* webpackIgnore: true */ file)) // CJS
: (file) => Promise.resolve(__webpack_require__("./dist/cjs/worker sync recursive")(file)); // eslint-disable-line
// Set global dir name
__dirname = config.directory; // eslint-disable-line
// Load external scripts
if (config.imports && config.imports.length > 0) {
config.imports.forEach((importFile) => {
importFn(importFile);
});
}
// Create model
const modelBuilder = __1.ModelBuilder.create();
// Add remote worker services if not already added
this.config.services.forEach((service) => {
if (service.dataType) {
const DataType = __1.DataSerializer.findTypeByName(service.dataType);
modelBuilder.addService(new __1.DummyDataService(service.uid, DataType), new __1.WorkerServiceProxy({
uid: service.uid,
callObservable: this.serviceOutputCall,
responseObservable: this.serviceOutputResponse,
}));
}
else {
modelBuilder.addService(new __1.DummyService(service.uid), new __1.WorkerServiceProxy({
uid: service.uid,
callObservable: this.serviceOutputCall,
responseObservable: this.serviceOutputResponse,
}));
}
});
this._initModel(modelBuilder);
// eslint-disable-next-line
const path = this.config.imports.length > 0 ? undefined : (typeof process !== 'object' ? undefined : __webpack_require__(/*! path */ "?9bad"));
try {
if (this.config.serialized) {
const traversalBuilder = modelBuilder.from();
const modelOrNode = __1.ModelSerializer.deserializeNode(this.config.serialized);
traversalBuilder.via(modelOrNode);
traversalBuilder.to();
}
else if (this.config.builder) {
const traversalBuilder = modelBuilder.from();
const builderCallback = eval(this.config.builder);
builderCallback(traversalBuilder, modelBuilder, this.config.args);
traversalBuilder.to();
}
else if (this.config.shape) {
const graph = yield importFn(path ? path.join(__dirname, this.config.shape) : this.config.shape);
if (graph) {
modelBuilder.addShape(graph.default);
}
}
else if (this.shape) {
modelBuilder.addShape(this.shape);
}
}
catch (ex) {
// Error deserializing, did you import the nodes?
reject(ex);
return;
}
modelBuilder
.build()
.then((m) => {
this.model = m;
// Load methods
this.config.methods.forEach((serializedMethod) => {
const method = eval(serializedMethod.handlerFn);
this.customMethods.set(serializedMethod.name, (model, ...args) => {
return Promise.resolve(method(model, ...args));
});
});
resolve();
})
.catch(reject);
}));
}
invokeMethod(methodName, ...args) {
return new Promise((resolve, reject) => {
const method = this.customMethods.get(methodName);
if (!method) {
return reject(new Error(`Unable to invoke unknown method '${methodName}'!`));
}
method(this.model, ...args.map((a) => __1.DataSerializer.deserialize(a)))
.then((result) => {
resolve(__1.DataSerializer.serialize(result));
})
.catch(reject);
});
}
/**
* Pull from this work
* @param {PullOptions} [options] Pull options
* @returns {Promise<void>} Pull promise
*/
pull(options) {
return this.model.pull(options);
}
/**
* Push to this worker
* @param {DataFrame} frame Data frame
* @param {PushOptions} [options] Push options
* @returns {Promise<void>} Push promise
*/
push(frame, options) {
return this.model.push(__1.DataSerializer.deserialize(frame), options);
}
/**
* Init the model internal input and internal output
* @param {ModelBuilder} modelBuilder Model builder
*/
_initModel(modelBuilder) {
const internalSource = new __1.CallbackSourceNode((options) => {
// Send a pull request to the main thread
this.pullOutput.next(options);
return undefined;
});
const internalSink = new __1.CallbackSinkNode((frame) => {
// Serialize the frame and transmit it to the main thread
this.pushOutput.next(__1.DataSerializer.serialize(frame));
});
modelBuilder.graph.deleteNode(modelBuilder.graph.internalSource);
modelBuilder.graph.internalSource = internalSource;
internalSource.on('error', (event) => {
this.eventOutput.next({
name: 'error',
event,
});
});
internalSource.on('completed', (event) => {
this.eventOutput.next({
name: 'completed',
event,
});
});
modelBuilder.graph.addNode(modelBuilder.graph.internalSource);
modelBuilder.graph.deleteNode(modelBuilder.graph.internalSink);
modelBuilder.graph.internalSink = internalSink;
modelBuilder.graph.addNode(modelBuilder.graph.internalSink);
}
findAllServices() {
return new Promise((resolve) => {
const services = this.model.findAllServices();
const servicesArray = services
.filter((service) => !(service instanceof __1.DummyDataService || service instanceof __1.DummyService))
.map((service) => {
// Services are wrapped in a proxy. Get prototype
const serviceBase = Object.getPrototypeOf(service);
return {
uid: service.uid,
type: serviceBase.constructor.name,
dataType: service instanceof __1.DataService ? service.driver.dataType.name : undefined,
};
});
resolve(servicesArray);
});
}
callService(call) {
return new Promise((resolve, reject) => {
const service = this.model.findDataService(call.serviceUID) || this.model.findService(call.serviceUID);
if (service[call.method]) {
const serializedParams = call.parameters;
const params = [];
serializedParams.forEach((param) => {
if (param['__type']) {
params.push(__1.DataSerializer.deserialize(param));
}
else {
params.push(param);
}
});
const promise = service[call.method](...params);
Promise.resolve(promise)
.then((_) => {
if (Array.isArray(_)) {
const result = [];
_.forEach((r) => {
result.push(__1.DataSerializer.serialize(r));
});
resolve({ id: call.id, success: true, result });
}
else {
const result = __1.DataSerializer.serialize(_);
resolve({ id: call.id, success: true, result });
}
})
.catch((ex) => {
reject({ id: call.id, success: false, result: ex });
});
}
});
}
}
exports.WorkerBase = WorkerBase;
//# sourceMappingURL=WorkerBase.js.map
/***/ }),
/***/ "./dist/cjs/worker sync recursive":
/*!*******************************!*\
!*** ./dist/cjs/worker/ sync ***!
\*******************************/
/***/ ((module) => {
function webpackEmptyContext(req) {
var e = new Error("Cannot find module '" + req + "'");
e.code = 'MODULE_NOT_FOUND';
throw e;
}
webpackEmptyContext.keys = () => ([]);
webpackEmptyContext.resolve = webpackEmptyContext;
webpackEmptyContext.id = "./dist/cjs/worker sync recursive";
module.exports = webpackEmptyContext;
/***/ }),
/***/ "./node_modules/debug/node_modules/ms/index.js":
/*!*****************************************************!*\
!*** ./node_modules/debug/node_modules/ms/index.js ***!
\*****************************************************/
/***/ ((module) => {
/**
* Helpers.
*/
var s = 1000;
var m = s * 60;
var h = m * 60;
var d = h * 24;
var w = d * 7;
var y = d * 365.25;
/**
* Parse or format the given `val`.
*
* Options:
*
* - `long` verbose formatting [false]
*
* @param {String|Number} val
* @param {Object} [options]
* @throws {Error} throw an error if val is not a non-empty string or a number
* @return {String|Number}
* @api public
*/
module.exports = function(val, options) {
options = options || {};
var type = typeof val;
if (type === 'string' && val.length > 0) {
return parse(val);
} else if (type === 'number' && isFinite(val)) {
return options.long ? fmtLong(val) : fmtShort(val);
}
throw new Error(
'val is not a non-empty string or a valid number. val=' +
JSON.stringify(val)
);
};
/**
* Parse the given `str` and return milliseconds.
*
* @param {String} str
* @return {Number}
* @api private
*/
function parse(str) {
str = String(str);
if (str.length > 100) {
return;
}
var match = /^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(
str
);
if (!match) {
return;
}
var n = parseFloat(match[1]);
var type = (match[2] || 'ms').toLowerCase();
switch (type) {
case 'years':
case 'year':
case 'yrs':
case 'yr':
case 'y':
return n * y;
case 'weeks':
case 'week':
case 'w':
return n * w;
case 'days':
case 'day':
case 'd':
return n * d;
case 'hours':
case 'hour':
case 'hrs':
case 'hr':
case 'h':
return n * h;
case 'minutes':
case 'minute':
case 'mins':
case 'min':
case 'm':
return n * m;
case 'seconds':
case 'second':
case 'secs':
case 'sec':
case 's':
return n * s;
case 'milliseconds':
case 'millisecond':
case 'msecs':
case 'msec':
case 'ms':
return n;
default:
return undefined;
}
}
/**
* Short format for `ms`.
*
* @param {Number} ms
* @return {String}
* @api private
*/
function fmtShort(ms) {
var msAbs = Math.abs(ms);
if (msAbs >= d) {
return Math.round(ms / d) + 'd';
}
if (msAbs >= h) {
return Math.round(ms / h) + 'h';
}
if (msAbs >= m) {
return Math.round(ms / m) + 'm';
}
if (msAbs >= s) {
return Math.round(ms / s) + 's';
}
return ms + 'ms';
}
/**
* Long format for `ms`.
*
* @param {Number} ms
* @return {String}
* @api private
*/
function fmtLong(ms) {
var msAbs = Math.abs(ms);
if (msAbs >= d) {
return plural(ms, msAbs, d, 'day');
}
if (msAbs >= h) {
return plural(ms, msAbs, h, 'hour');
}
if (msAbs >= m) {
return plural(ms, msAbs, m, 'minute');
}
if (msAbs >= s) {
return plural(ms, msAbs, s, 'second');
}
return ms + ' ms';
}
/**
* Pluralization helper.
*/
function plural(ms, msAbs, n, name) {
var isPlural = msAbs >= n * 1.5;
return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');
}
/***/ }),
/***/ "./node_modules/debug/src/browser.js":
/*!*******************************************!*\
!*** ./node_modules/debug/src/browser.js ***!
\*******************************************/
/***/ ((module, exports, __webpack_require__) => {
/* eslint-env browser */
/**
* This is the web browser implementation of `debug()`.
*/
exports.formatArgs = formatArgs;
exports.save = save;
exports.load = load;
exports.useColors = useColors;
exports.storage = localstorage();
exports.destroy = (() => {
let warned = false;
return () => {
if (!warned) {
warned = true;
console.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');
}
};
})();
/**
* Colors.
*/
exports.colors = [
'#0000CC',
'#0000FF',
'#0033CC',
'#0033FF',
'#0066CC',
'#0066FF',
'#0099CC',
'#0099FF',
'#00CC00',
'#00CC33',
'#00CC66',
'#00CC99',
'#00CCCC',
'#00CCFF',
'#3300CC',
'#3300FF',
'#3333CC',
'#3333FF',
'#3366CC',
'#3366FF',
'#3399CC',
'#3399FF',
'#33CC00',
'#33CC33',
'#33CC66',
'#33CC99',
'#33CCCC',
'#33CCFF',
'#6600CC',
'#6600FF',
'#6633CC',
'#6633FF',
'#66CC00',
'#66CC33',
'#9900CC',
'#9900FF',
'#9933CC',
'#9933FF',
'#99CC00',
'#99CC33',
'#CC0000',
'#CC0033',
'#CC0066',
'#CC0099',
'#CC00CC',
'#CC00FF',
'#CC3300',
'#CC3333',
'#CC3366',
'#CC3399',
'#CC33CC',
'#CC33FF',
'#CC6600',
'#CC6633',
'#CC9900',
'#CC9933',
'#CCCC00',
'#CCCC33',
'#FF0000',
'#FF0033',
'#FF0066',
'#FF0099',
'#FF00CC',
'#FF00FF',
'#FF3300',
'#FF3333',
'#FF3366',
'#FF3399',
'#FF33CC',
'#FF33FF',
'#FF6600',
'#FF6633',
'#FF9900',
'#FF9933',
'#FFCC00',
'#FFCC33'
];
/**
* Currently only WebKit-based Web Inspectors, Firefox >= v31,
* and the Firebug extension (any Firefox version) are known
* to support "%c" CSS customizations.
*
* TODO: add a `localStorage` variable to explicitly enable/disable colors
*/
// eslint-disable-next-line complexity
function useColors() {
// NB: In an Electron preload script, document will be defined but not fully
// initialized. Since we know we're in Chrome, we'll just detect this case
// explicitly
if (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {
return true;
}
// Internet Explorer and Edge do not support colors.
if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) {
return false;
}
// Is webkit? http://stackoverflow.com/a/16459606/376773
// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632
return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||
// Is firebug? http://stackoverflow.com/a/398120/376773
(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||
// Is firefox >= v31?
// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages
(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||
// Double check webkit in userAgent just in case we are in a worker
(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/));
}
/**
* Colorize log arguments if enabled.
*
* @api public
*/
function formatArgs(args) {
args[0] = (this.useColors ? '%c' : '') +
this.namespace +
(this.useColors ? ' %c' : ' ') +
args[0] +
(this.useColors ? '%c ' : ' ') +
'+' + module.exports.humanize(this.diff);
if (!this.useColors) {
return;
}
const c = 'color: ' + this.color;
args.splice(1, 0, c, 'color: inherit');
// The final "%c" is somewhat tricky, because there could be other
// arguments passed either before or after the %c, so we need to
// figure out the correct index to insert the CSS into
let index = 0;
let lastC = 0;
args[0].replace(/%[a-zA-Z%]/g, match => {
if (match === '%%') {
return;
}
index++;
if (match === '%c') {
// We only are interested in the *last* %c
// (the user may have provided their own)
lastC = index;
}
});
args.splice(lastC, 0, c);
}
/**
* Invokes `console.debug()` when available.
* No-op when `console.debug` is not a "function".
* If `console.debug` is not available, falls back
* to `console.log`.
*
* @api public
*/
exports.log = console.debug || console.log || (() => {});
/**
* Save `namespaces`.
*
* @param {String} namespaces
* @api private
*/
function save(namespaces) {
try {
if (namespaces) {
exports.storage.setItem('debug', namespaces);
} else {
exports.storage.removeItem('debug');
}
} catch (error) {
// Swallow
// XXX (@Qix-) should we be logging these?
}
}
/**
* Load `namespaces`.
*
* @return {String} returns the previously persisted debug modes
* @api private
*/
function load() {
let r;
try {
r = exports.storage.getItem('debug');
} catch (error) {
// Swallow
// XXX (@Qix-) should we be logging these?
}
// If debug isn't set in LS, and we're in Electron, try to load $DEBUG
if (!r && typeof process !== 'undefined' && 'env' in process) {
r = process.env.DEBUG;
}
return r;
}
/**
* Localstorage attempts to return the localstorage.
*
* This is necessary because safari throws
* when a user disables cookies/localstorage
* and you attempt to access it.
*
* @return {LocalStorage}
* @api private
*/
function localstorage() {
try {
// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context
// The Browser also has localStorage in the global context.
return localStorage;
} catch (error) {
// Swallow
// XXX (@Qix-) should we be logging these?
}
}
module.exports = __webpack_require__(/*! ./common */ "./node_modules/debug/src/common.js")(exports);
const {formatters} = module.exports;
/**
* Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.
*/
formatters.j = function (v) {
try {
return JSON.stringify(v);
} catch (error) {
return '[UnexpectedJSONParseError]: ' + error.message;
}
};
/***/ }),
/***/ "./node_modules/debug/src/common.js":
/*!******************************************!*\
!*** ./node_modules/debug/src/common.js ***!
\******************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
/**
* This is the common logic for both the Node.js and web browser
* implementations of `debug()`.
*/
function setup(env) {
createDebug.debug = createDebug;
createDebug.default = createDebug;
createDebug.coerce = coerce;
createDebug.disable = disable;
createDebug.enable = enable;
createDebug.enabled = enabled;
createDebug.humanize = __webpack_require__(/*! ms */ "./node_modules/debug/node_modules/ms/index.js");
createDebug.destroy = destroy;
Object.keys(env).forEach(key => {
createDebug[key] = env[key];
});
/**
* The currently active debug mode names, and names to skip.
*/
createDebug.names = [];
createDebug.skips = [];
/**
* Map of special "%n" handling functions, for the debug "format" argument.
*
* Valid key names are a single, lower or upper-case letter, i.e. "n" and "N".
*/
createDebug.formatters = {};
/**
* Selects a color for a debug namespace
* @param {String} namespace The namespace string for the debug instance to be colored
* @return {Number|String} An ANSI color code for the given namespace
* @api private
*/
function selectColor(namespace) {
let hash = 0;
for (let i = 0; i < namespace.length; i++) {
hash = ((hash << 5) - hash) + namespace.charCodeAt(i);
hash |= 0; // Convert to 32bit integer
}
return createDebug.colors[Math.abs(hash) % createDebug.colors.length];
}
createDebug.selectColor = selectColor;
/**
* Create a debugger with the given `namespace`.
*
* @param {String} namespace
* @return {Function}
* @api public
*/
function createDebug(namespace) {
let prevTime;
let enableOverride = null;
let namespacesCache;
let enabledCache;
function debug(...args) {
// Disabled?
if (!debug.enabled) {
return;
}
const self = debug;
// Set `diff` timestamp
const curr = Number(new Date());
const ms = curr - (prevTime || curr);
self.diff = ms;
self.prev = prevTime;
self.curr = curr;
prevTime = curr;
args[0] = createDebug.coerce(args[0]);
if (typeof args[0] !== 'string') {
// Anything else let's inspect with %O
args.unshift('%O');
}
// Apply any `formatters` transformations
let index = 0;
args[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {
// If we encounter an escaped % then don't increase the array index
if (match === '%%') {
return '%';
}
index++;
const formatter = createDebug.formatters[format];
if (typeof formatter === 'function') {
const val = args[index];
match = formatter.call(self, val);
// Now we need to remove `args[index]` since it's inlined in the `format`
args.splice(index, 1);
index--;
}
return match;
});
// Apply env-specific formatting (colors, etc.)
createDebug.formatArgs.call(self, args);
const logFn = self.log || createDebug.log;
logFn.apply(self, args);
}
debug.namespace = namespace;
debug.useColors = createDebug.useColors();
debug.color = createDebug.selectColor(namespace);
debug.extend = extend;
debug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.
Object.defineProperty(debug, 'enabled', {
enumerable: true,
configurable: false,
get: () => {
if (enableOverride !== null) {
return enableOverride;
}
if (namespacesCache !== createDebug.namespaces) {
namespacesCache = createDebug.namespaces;
enabledCache = createDebug.enabled(namespace);
}
return enabledCache;
},
set: v => {
enableOverride = v;
}
});
// Env-specific initialization logic for debug instances
if (typeof createDebug.init === 'function') {
createDebug.init(debug);
}
return debug;
}
function extend(namespace, delimiter) {
const newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);
newDebug.log = this.log;
return newDebug;
}
/**
* Enables a debug mode by namespaces. This can include modes
* separated by a colon and wildcards.
*
* @param {String} namespaces
* @api public
*/
function enable(namespaces) {
createDebug.save(namespaces);
createDebug.namespaces = namespaces;
createDebug.names = [];
createDebug.skips = [];
let i;
const split = (typeof namespaces === 'string' ? namespaces : '').split(/[\s,]+/);
const len = split.length;
for (i = 0; i < len; i++) {
if (!split[i]) {
// ignore empty strings
continue;
}
namespaces = split[i].replace(/\*/g, '.*?');
if (namespaces[0] === '-') {
createDebug.skips.push(new RegExp('^' + namespaces.slice(1) + '$'));
} else {
createDebug.names.push(new RegExp('^' + namespaces + '$'));
}
}
}
/**
* Disable debug output.
*
* @return {String} namespaces
* @api public
*/
function disable() {
const namespaces = [
...createDebug.names.map(toNamespace),
...createDebug.skips.map(toNamespace).map(namespace => '-' + namespace)
].join(',');
createDebug.enable('');
return namespaces;
}
/**
* Returns true if the given mode name is enabled, false otherwise.
*
* @param {String} name
* @return {Boolean}
* @api public
*/
function enabled(name) {
if (name[name.length - 1] === '*') {
return true;
}
let i;
let len;
for (i = 0, len = createDebug.skips.length; i < len; i++) {
if (createDebug.skips[i].test(name)) {
return false;
}
}
for (i = 0, len = createDebug.names.length; i < len; i++) {
if (createDebug.names[i].test(name)) {
return true;
}
}
return false;
}
/**
* Convert regexp to namespace
*
* @param {RegExp} regxep
* @return {String} namespace
* @api private
*/
function toNamespace(regexp) {
return regexp.toString()
.substring(2, regexp.toString().length - 2)
.replace(/\.\*\?$/, '*');
}
/**
* Coerce `val`.
*
* @param {Mixed} val
* @return {Mixed}
* @api private
*/
function coerce(val) {
if (val instanceof Error) {
return val.stack || val.message;
}
return val;
}
/**
* XXX DO NOT USE. This is a temporary stub function.
* XXX It WILL be removed in the next major release.
*/
function destroy() {
console.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');
}
createDebug.enable(createDebug.load());
return createDebug;
}
module.exports = setup;
/***/ }),
/***/ "./node_modules/is-observable/index.js":
/*!*********************************************!*\
!*** ./node_modules/is-observable/index.js ***!
\*********************************************/
/***/ ((module) => {
"use strict";
module.exports = value => {
if (!value) {
return false;
}
// eslint-disable-next-line no-use-extend-native/no-use-extend-native
if (typeof Symbol.observable === 'symbol' && typeof value[Symbol.observable] === 'function') {
// eslint-disable-next-line no-use-extend-native/no-use-extend-native
return value === value[Symbol.observable]();
}
if (typeof value['@@observable'] === 'function') {
return value === value['@@observable']();
}
return false;
};
/***/ }),
/***/ "./node_modules/observable-fns/dist.esm/_scheduler.js":
/*!************************************************************!*\
!*** ./node_modules/observable-fns/dist.esm/_scheduler.js ***!
\************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ AsyncSerialScheduler: () => (/* binding */ AsyncSerialScheduler)
/* harmony export */ });
var __awaiter = (undefined && undefined.__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());
});
};
class AsyncSerialScheduler {
constructor(observer) {
this._baseObserver = observer;
this._pendingPromises = new Set();
}
complete() {
Promise.all(this._pendingPromises)
.then(() => this._baseObserver.complete())
.catch(error => this._baseObserver.error(error));
}
error(error) {
this._baseObserver.error(error);
}
schedule(task) {
const prevPromisesCompletion = Promise.all(this._pendingPromises);
const values = [];
const next = (value) => values.push(value);
const promise = Promise.resolve()
.then(() => __awaiter(this, void 0, void 0, function* () {
yield prevPromisesCompletion;
yield task(next);
this._pendingPromises.delete(promise);
for (const value of values) {
this._baseObserver.next(value);
}
}))
.catch(error => {
this._pendingPromises.delete(promise);
this._baseObserver.error(error);
});
this._pendingPromises.add(promise);
}
}
/***/ }),
/***/ "./node_modules/observable-fns/dist.esm/_symbols.js":
/*!**********************************************************!*\
!*** ./node_modules/observable-fns/dist.esm/_symbols.js ***!
\**********************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ getSymbol: () => (/* binding */ getSymbol),
/* harmony export */ hasSymbol: () => (/* binding */ hasSymbol),
/* harmony export */ hasSymbols: () => (/* binding */ hasSymbols)
/* harmony export */ });
/* unused harmony export registerObservableSymbol */
const hasSymbols = () => typeof Symbol === "function";
const hasSymbol = (name) => hasSymbols() && Boolean(Symbol[name]);
const getSymbol = (name) => hasSymbol(name) ? Symbol[name] : "@@" + name;
function registerObservableSymbol() {
if (hasSymbols() && !hasSymbol("observable")) {
Symbol.observable = Symbol("observable");
}
}
if (!hasSymbol("asyncIterator")) {
Symbol.asyncIterator = Symbol.asyncIterator || Symbol.for("Symbol.asyncIterator");
}
/***/ }),
/***/ "./node_modules/observable-fns/dist.esm/_util.js":
/*!*******************************************************!*\
!*** ./node_modules/observable-fns/dist.esm/_util.js ***!
\*******************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ isAsyncIterator: () => (/* binding */ isAsyncIterator),
/* harmony export */ isIterator: () => (/* binding */ isIterator)
/* harmony export */ });
/* harmony import */ var _symbols__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_symbols */ "./node_modules/observable-fns/dist.esm/_symbols.js");
/// <reference lib="es2018" />
function isAsyncIterator(thing) {
return thing && (0,_symbols__WEBPACK_IMPORTED_MODULE_0__.hasSymbol)("asyncIterator") && thing[Symbol.asyncIterator];
}
function isIterator(thing) {
return thing && (0,_symbols__WEBPACK_IMPORTED_MODULE_0__.hasSymbol)("iterator") && thing[Symbol.iterator];
}
/***/ }),
/***/ "./node_modules/observable-fns/dist.esm/filter.js":
/*!********************************************************!*\
!*** ./node_modules/observable-fns/dist.esm/filter.js ***!
\********************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _scheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_scheduler */ "./node_modules/observable-fns/dist.esm/_scheduler.js");
/* harmony import */ var _observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./observable */ "./node_modules/observable-fns/dist.esm/observable.js");
/* harmony import */ var _unsubscribe__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./unsubscribe */ "./node_modules/observable-fns/dist.esm/unsubscribe.js");
var __awaiter = (undefined && undefined.__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());
});
};
/**
* Filters the values emitted by another observable.
* To be applied to an input observable using `pipe()`.
*/
function filter(test) {
return (observable) => {
return new _observable__WEBPACK_IMPORTED_MODULE_0__["default"](observer => {
const scheduler = new _scheduler__WEBPACK_IMPORTED_MODULE_1__.AsyncSerialScheduler(observer);
const subscription = observable.subscribe({
complete() {
scheduler.complete();
},
error(error) {
scheduler.error(error);
},
next(input) {
scheduler.schedule((next) => __awaiter(this, void 0, void 0, function* () {
if (yield test(input)) {
next(input);
}
}));
}
});
return () => (0,_unsubscribe__WEBPACK_IMPORTED_MODULE_2__["default"])(subscription);
});
};
}
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (filter);
/***/ }),
/***/ "./node_modules/observable-fns/dist.esm/flatMap.js":
/*!*********************************************************!*\
!*** ./node_modules/observable-fns/dist.esm/flatMap.js ***!
\*********************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _scheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_scheduler */ "./node_modules/observable-fns/dist.esm/_scheduler.js");
/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./_util */ "./node_modules/observable-fns/dist.esm/_util.js");
/* harmony import */ var _observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./observable */ "./node_modules/observable-fns/dist.esm/observable.js");
/* harmony import */ var _unsubscribe__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./unsubscribe */ "./node_modules/observable-fns/dist.esm/unsubscribe.js");
var __awaiter = (undefined && undefined.__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());
});
};
var __asyncValues = (undefined && undefined.__asyncValues) || function (o) {
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
var m = o[Symbol.asyncIterator], i;
return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
};
/**
* Maps the values emitted by another observable. In contrast to `map()`
* the `mapper` function returns an array of values that will be emitted
* separately.
* Use `flatMap()` to map input values to zero, one or multiple output
* values. To be applied to an input observable using `pipe()`.
*/
function flatMap(mapper) {
return (observable) => {
return new _observable__WEBPACK_IMPORTED_MODULE_0__["default"](observer => {
const scheduler = new _scheduler__WEBPACK_IMPORTED_MODULE_1__.AsyncSerialScheduler(observer);
const subscription = observable.subscribe({
complete() {
scheduler.complete();
},
error(error) {
scheduler.error(error);
},
next(input) {
scheduler.schedule((next) => __awaiter(this, void 0, void 0, function* () {
var e_1, _a;
const mapped = yield mapper(input);
if ((0,_util__WEBPACK_IMPORTED_MODULE_2__.isIterator)(mapped) || (0,_util__WEBPACK_IMPORTED_MODULE_2__.isAsyncIterator)(mapped)) {
try {
for (var mapped_1 = __asyncValues(mapped), mapped_1_1; mapped_1_1 = yield mapped_1.next(), !mapped_1_1.done;) {
const element = mapped_1_1.value;
next(element);
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (mapped_1_1 && !mapped_1_1.done && (_a = mapped_1.return)) yield _a.call(mapped_1);
}
finally { if (e_1) throw e_1.error; }
}
}
else {
mapped.map(output => next(output));
}
}));
}
});
return () => (0,_unsubscribe__WEBPACK_IMPORTED_MODULE_3__["default"])(subscription);
});
};
}
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (flatMap);
/***/ }),
/***/ "./node_modules/observable-fns/dist.esm/index.js":
/*!*******************************************************!*\
!*** ./node_modules/observable-fns/dist.esm/index.js ***!
\*******************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ Observable: () => (/* reexport safe */ _observable__WEBPACK_IMPORTED_MODULE_6__["default"]),
/* harmony export */ Subject: () => (/* reexport safe */ _subject__WEBPACK_IMPORTED_MODULE_8__["default"]),
/* harmony export */ filter: () => (/* reexport safe */ _filter__WEBPACK_IMPORTED_MODULE_0__["default"]),
/* harmony export */ flatMap: () => (/* reexport safe */ _flatMap__WEBPACK_IMPORTED_MODULE_1__["default"]),
/* harmony export */ interval: () => (/* reexport safe */ _interval__WEBPACK_IMPORTED_MODULE_2__["default"]),
/* harmony export */ map: () => (/* reexport safe */ _map__WEBPACK_IMPORTED_MODULE_3__["default"]),
/* harmony export */ merge: () => (/* reexport safe */ _merge__WEBPACK_IMPORTED_MODULE_4__["default"]),
/* harmony export */ multicast: () => (/* reexport safe */ _multicast__WEBPACK_IMPORTED_MODULE_5__["default"]),
/* harmony export */ scan: () => (/* reexport safe */ _scan__WEBPACK_IMPORTED_MODULE_7__["default"]),
/* harmony export */ unsubscribe: () => (/* reexport safe */ _unsubscribe__WEBPACK_IMPORTED_MODULE_9__["default"])
/* harmony export */ });
/* harmony import */ var _filter__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./filter */ "./node_modules/observable-fns/dist.esm/filter.js");
/* harmony import */ var _flatMap__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./flatMap */ "./node_modules/observable-fns/dist.esm/flatMap.js");
/* harmony import */ var _interval__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./interval */ "./node_modules/observable-fns/dist.esm/interval.js");
/* harmony import */ var _map__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./map */ "./node_modules/observable-fns/dist.esm/map.js");
/* harmony import */ var _merge__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./merge */ "./node_modules/observable-fns/dist.esm/merge.js");
/* harmony import */ var _multicast__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./multicast */ "./node_modules/observable-fns/dist.esm/multicast.js");
/* harmony import */ var _observable__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./observable */ "./node_modules/observable-fns/dist.esm/observable.js");
/* harmony import */ var _scan__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./scan */ "./node_modules/observable-fns/dist.esm/scan.js");
/* harmony import */ var _subject__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./subject */ "./node_modules/observable-fns/dist.esm/subject.js");
/* harmony import */ var _unsubscribe__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./unsubscribe */ "./node_modules/observable-fns/dist.esm/unsubscribe.js");
/***/ }),
/***/ "./node_modules/observable-fns/dist.esm/interval.js":
/*!**********************************************************!*\
!*** ./node_modules/observable-fns/dist.esm/interval.js ***!
\**********************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (/* binding */ interval)
/* harmony export */ });
/* harmony import */ var _observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./observable */ "./node_modules/observable-fns/dist.esm/observable.js");
/**
* Creates an observable that yields a new value every `period` milliseconds.
* The first value emitted is 0, then 1, 2, etc. The first value is not emitted
* immediately, but after the first interval.
*/
function interval(period) {
return new _observable__WEBPACK_IMPORTED_MODULE_0__.Observable(observer => {
let counter = 0;
const handle = setInterval(() => {
observer.next(counter++);
}, period);
return () => clearInterval(handle);
});
}
/***/ }),
/***/ "./node_modules/observable-fns/dist.esm/map.js":
/*!*****************************************************!*\
!*** ./node_modules/observable-fns/dist.esm/map.js ***!
\*****************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _scheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_scheduler */ "./node_modules/observable-fns/dist.esm/_scheduler.js");
/* harmony import */ var _observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./observable */ "./node_modules/observable-fns/dist.esm/observable.js");
/* harmony import */ var _unsubscribe__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./unsubscribe */ "./node_modules/observable-fns/dist.esm/unsubscribe.js");
var __awaiter = (undefined && undefined.__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());
});
};
/**
* Maps the values emitted by another observable to different values.
* To be applied to an input observable using `pipe()`.
*/
function map(mapper) {
return (observable) => {
return new _observable__WEBPACK_IMPORTED_MODULE_0__["default"](observer => {
const scheduler = new _scheduler__WEBPACK_IMPORTED_MODULE_1__.AsyncSerialScheduler(observer);
const subscription = observable.subscribe({
complete() {
scheduler.complete();
},
error(error) {
scheduler.error(error);
},
next(input) {
scheduler.schedule((next) => __awaiter(this, void 0, void 0, function* () {
const mapped = yield mapper(input);
next(mapped);
}));
}
});
return () => (0,_unsubscribe__WEBPACK_IMPORTED_MODULE_2__["default"])(subscription);
});
};
}
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (map);
/***/ }),
/***/ "./node_modules/observable-fns/dist.esm/merge.js":
/*!*******************************************************!*\
!*** ./node_modules/observable-fns/dist.esm/merge.js ***!
\*******************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./observable */ "./node_modules/observable-fns/dist.esm/observable.js");
/* harmony import */ var _unsubscribe__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./unsubscribe */ "./node_modules/observable-fns/dist.esm/unsubscribe.js");
function merge(...observables) {
if (observables.length === 0) {
return _observable__WEBPACK_IMPORTED_MODULE_0__.Observable.from([]);
}
return new _observable__WEBPACK_IMPORTED_MODULE_0__.Observable(observer => {
let completed = 0;
const subscriptions = observables.map(input => {
return input.subscribe({
error(error) {
observer.error(error);
unsubscribeAll();
},
next(value) {
observer.next(value);
},
complete() {
if (++completed === observables.length) {
observer.complete();
unsubscribeAll();
}
}
});
});
const unsubscribeAll = () => {
subscriptions.forEach(subscription => (0,_unsubscribe__WEBPACK_IMPORTED_MODULE_1__["default"])(subscription));
};
return unsubscribeAll;
});
}
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (merge);
/***/ }),
/***/ "./node_modules/observable-fns/dist.esm/multicast.js":
/*!***********************************************************!*\
!*** ./node_modules/observable-fns/dist.esm/multicast.js ***!
\***********************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _observable__WEBPACK_IMPORTED_MODULE_1__