upd. deps (5.7 MB)

This commit is contained in:
Smith
2022-07-21 10:36:57 +02:00
parent b2ace6f5e3
commit e7a397abc0
106 changed files with 2234 additions and 2424 deletions

View File

@@ -1,54 +1,113 @@
"use strict";
/// <reference lib="es2016"/>
/// <reference lib="es2017.sharedmemory"/>
/// <reference lib="esnext.asynciterable"/>
/// <reference lib="es2018"/>
/// <reference lib="dom"/>
/// <reference types="node"/>
Object.defineProperty(exports, "__esModule", { value: true });
// TODO: Use the `URL` global when targeting Node.js 10
// tslint:disable-next-line
const URLGlobal = typeof URL === 'undefined' ? require('url').URL : URL;
const toString = Object.prototype.toString;
const isOfType = (type) => (value) => typeof value === type;
const isBuffer = (input) => !is.nullOrUndefined(input) && !is.nullOrUndefined(input.constructor) && is.function_(input.constructor.isBuffer) && input.constructor.isBuffer(input);
const typedArrayTypeNames = [
'Int8Array',
'Uint8Array',
'Uint8ClampedArray',
'Int16Array',
'Uint16Array',
'Int32Array',
'Uint32Array',
'Float32Array',
'Float64Array',
'BigInt64Array',
'BigUint64Array'
];
function isTypedArrayName(name) {
return typedArrayTypeNames.includes(name);
}
const objectTypeNames = [
'Function',
'Generator',
'AsyncGenerator',
'GeneratorFunction',
'AsyncGeneratorFunction',
'AsyncFunction',
'Observable',
'Array',
'Buffer',
'Blob',
'Object',
'RegExp',
'Date',
'Error',
'Map',
'Set',
'WeakMap',
'WeakSet',
'ArrayBuffer',
'SharedArrayBuffer',
'DataView',
'Promise',
'URL',
'FormData',
'URLSearchParams',
'HTMLElement',
...typedArrayTypeNames
];
function isObjectTypeName(name) {
return objectTypeNames.includes(name);
}
const primitiveTypeNames = [
'null',
'undefined',
'string',
'number',
'bigint',
'boolean',
'symbol'
];
function isPrimitiveTypeName(name) {
return primitiveTypeNames.includes(name);
}
// eslint-disable-next-line @typescript-eslint/ban-types
function isOfType(type) {
return (value) => typeof value === type;
}
const { toString } = Object.prototype;
const getObjectType = (value) => {
const objectName = toString.call(value).slice(8, -1);
if (objectName) {
return objectName;
const objectTypeName = toString.call(value).slice(8, -1);
if (/HTML\w+Element/.test(objectTypeName) && is.domElement(value)) {
return 'HTMLElement';
}
return null;
if (isObjectTypeName(objectTypeName)) {
return objectTypeName;
}
return undefined;
};
const isObjectOfType = (type) => (value) => getObjectType(value) === type;
function is(value) {
switch (value) {
case null:
return "null" /* null */;
case true:
case false:
return "boolean" /* boolean */;
default:
if (value === null) {
return 'null';
}
switch (typeof value) {
case 'undefined':
return "undefined" /* undefined */;
return 'undefined';
case 'string':
return "string" /* string */;
return 'string';
case 'number':
return "number" /* number */;
return 'number';
case 'boolean':
return 'boolean';
case 'function':
return 'Function';
case 'bigint':
return 'bigint';
case 'symbol':
return "symbol" /* symbol */;
return 'symbol';
default:
}
if (is.function_(value)) {
return "Function" /* Function */;
}
if (is.observable(value)) {
return "Observable" /* Observable */;
return 'Observable';
}
if (Array.isArray(value)) {
return "Array" /* Array */;
if (is.array(value)) {
return 'Array';
}
if (isBuffer(value)) {
return "Buffer" /* Buffer */;
if (is.buffer(value)) {
return 'Buffer';
}
const tagType = getObjectType(value);
if (tagType) {
@@ -57,174 +116,293 @@ function is(value) {
if (value instanceof String || value instanceof Boolean || value instanceof Number) {
throw new TypeError('Please don\'t use object wrappers for primitive types');
}
return "Object" /* Object */;
return 'Object';
}
(function (is) {
// tslint:disable-next-line:strict-type-predicates
const isObject = (value) => typeof value === 'object';
// tslint:disable:variable-name
is.undefined = isOfType('undefined');
is.string = isOfType('string');
is.number = isOfType('number');
is.function_ = isOfType('function');
// tslint:disable-next-line:strict-type-predicates
is.null_ = (value) => value === null;
is.class_ = (value) => is.function_(value) && value.toString().startsWith('class ');
is.boolean = (value) => value === true || value === false;
is.symbol = isOfType('symbol');
// tslint:enable:variable-name
is.numericString = (value) => is.string(value) && value.length > 0 && !Number.isNaN(Number(value));
is.array = Array.isArray;
is.buffer = isBuffer;
is.nullOrUndefined = (value) => is.null_(value) || is.undefined(value);
is.object = (value) => !is.nullOrUndefined(value) && (is.function_(value) || isObject(value));
is.iterable = (value) => !is.nullOrUndefined(value) && is.function_(value[Symbol.iterator]);
is.asyncIterable = (value) => !is.nullOrUndefined(value) && is.function_(value[Symbol.asyncIterator]);
is.generator = (value) => is.iterable(value) && is.function_(value.next) && is.function_(value.throw);
is.nativePromise = (value) => isObjectOfType("Promise" /* Promise */)(value);
const hasPromiseAPI = (value) => !is.null_(value) &&
isObject(value) &&
is.function_(value.then) &&
is.function_(value.catch);
is.promise = (value) => is.nativePromise(value) || hasPromiseAPI(value);
is.generatorFunction = isObjectOfType("GeneratorFunction" /* GeneratorFunction */);
is.asyncFunction = isObjectOfType("AsyncFunction" /* AsyncFunction */);
is.boundFunction = (value) => is.function_(value) && !value.hasOwnProperty('prototype');
is.regExp = isObjectOfType("RegExp" /* RegExp */);
is.date = isObjectOfType("Date" /* Date */);
is.error = isObjectOfType("Error" /* Error */);
is.map = (value) => isObjectOfType("Map" /* Map */)(value);
is.set = (value) => isObjectOfType("Set" /* Set */)(value);
is.weakMap = (value) => isObjectOfType("WeakMap" /* WeakMap */)(value);
is.weakSet = (value) => isObjectOfType("WeakSet" /* WeakSet */)(value);
is.int8Array = isObjectOfType("Int8Array" /* Int8Array */);
is.uint8Array = isObjectOfType("Uint8Array" /* Uint8Array */);
is.uint8ClampedArray = isObjectOfType("Uint8ClampedArray" /* Uint8ClampedArray */);
is.int16Array = isObjectOfType("Int16Array" /* Int16Array */);
is.uint16Array = isObjectOfType("Uint16Array" /* Uint16Array */);
is.int32Array = isObjectOfType("Int32Array" /* Int32Array */);
is.uint32Array = isObjectOfType("Uint32Array" /* Uint32Array */);
is.float32Array = isObjectOfType("Float32Array" /* Float32Array */);
is.float64Array = isObjectOfType("Float64Array" /* Float64Array */);
is.arrayBuffer = isObjectOfType("ArrayBuffer" /* ArrayBuffer */);
is.sharedArrayBuffer = isObjectOfType("SharedArrayBuffer" /* SharedArrayBuffer */);
is.dataView = isObjectOfType("DataView" /* DataView */);
is.directInstanceOf = (instance, klass) => Object.getPrototypeOf(instance) === klass.prototype;
is.urlInstance = (value) => isObjectOfType("URL" /* URL */)(value);
is.urlString = (value) => {
if (!is.string(value)) {
return false;
}
try {
new URLGlobal(value); // tslint:disable-line no-unused-expression
return true;
}
catch (_a) {
return false;
}
};
is.truthy = (value) => Boolean(value);
is.falsy = (value) => !value;
is.nan = (value) => Number.isNaN(value);
const primitiveTypes = new Set([
'undefined',
'string',
'number',
'boolean',
'symbol'
]);
is.primitive = (value) => is.null_(value) || primitiveTypes.has(typeof value);
is.integer = (value) => Number.isInteger(value);
is.safeInteger = (value) => Number.isSafeInteger(value);
is.plainObject = (value) => {
// From: https://github.com/sindresorhus/is-plain-obj/blob/master/index.js
let prototype;
return getObjectType(value) === "Object" /* Object */ &&
(prototype = Object.getPrototypeOf(value), prototype === null || // tslint:disable-line:ban-comma-operator
prototype === Object.getPrototypeOf({}));
};
const typedArrayTypes = new Set([
"Int8Array" /* Int8Array */,
"Uint8Array" /* Uint8Array */,
"Uint8ClampedArray" /* Uint8ClampedArray */,
"Int16Array" /* Int16Array */,
"Uint16Array" /* Uint16Array */,
"Int32Array" /* Int32Array */,
"Uint32Array" /* Uint32Array */,
"Float32Array" /* Float32Array */,
"Float64Array" /* Float64Array */
]);
is.typedArray = (value) => {
const objectType = getObjectType(value);
if (objectType === null) {
return false;
}
return typedArrayTypes.has(objectType);
};
const isValidLength = (value) => is.safeInteger(value) && value > -1;
is.arrayLike = (value) => !is.nullOrUndefined(value) && !is.function_(value) && isValidLength(value.length);
is.inRange = (value, range) => {
if (is.number(range)) {
return value >= Math.min(0, range) && value <= Math.max(range, 0);
}
if (is.array(range) && range.length === 2) {
return value >= Math.min(...range) && value <= Math.max(...range);
}
throw new TypeError(`Invalid range: ${JSON.stringify(range)}`);
};
const NODE_TYPE_ELEMENT = 1;
const DOM_PROPERTIES_TO_CHECK = [
'innerHTML',
'ownerDocument',
'style',
'attributes',
'nodeValue'
];
is.domElement = (value) => is.object(value) && value.nodeType === NODE_TYPE_ELEMENT && is.string(value.nodeName) &&
!is.plainObject(value) && DOM_PROPERTIES_TO_CHECK.every(property => property in value);
is.observable = (value) => {
if (!value) {
return false;
}
if (value[Symbol.observable] && value === value[Symbol.observable]()) {
return true;
}
if (value['@@observable'] && value === value['@@observable']()) {
return true;
}
is.undefined = isOfType('undefined');
is.string = isOfType('string');
const isNumberType = isOfType('number');
is.number = (value) => isNumberType(value) && !is.nan(value);
is.bigint = isOfType('bigint');
// eslint-disable-next-line @typescript-eslint/ban-types
is.function_ = isOfType('function');
is.null_ = (value) => value === null;
is.class_ = (value) => is.function_(value) && value.toString().startsWith('class ');
is.boolean = (value) => value === true || value === false;
is.symbol = isOfType('symbol');
is.numericString = (value) => is.string(value) && !is.emptyStringOrWhitespace(value) && !Number.isNaN(Number(value));
is.array = (value, assertion) => {
if (!Array.isArray(value)) {
return false;
};
is.nodeStream = (value) => !is.nullOrUndefined(value) && isObject(value) && is.function_(value.pipe) && !is.observable(value);
is.infinite = (value) => value === Infinity || value === -Infinity;
const isAbsoluteMod2 = (rem) => (value) => is.integer(value) && Math.abs(value % 2) === rem;
is.even = isAbsoluteMod2(0);
is.odd = isAbsoluteMod2(1);
const isWhiteSpaceString = (value) => is.string(value) && /\S/.test(value) === false;
is.emptyArray = (value) => is.array(value) && value.length === 0;
is.nonEmptyArray = (value) => is.array(value) && value.length > 0;
is.emptyString = (value) => is.string(value) && value.length === 0;
is.nonEmptyString = (value) => is.string(value) && value.length > 0;
is.emptyStringOrWhitespace = (value) => is.emptyString(value) || isWhiteSpaceString(value);
is.emptyObject = (value) => is.object(value) && !is.map(value) && !is.set(value) && Object.keys(value).length === 0;
is.nonEmptyObject = (value) => is.object(value) && !is.map(value) && !is.set(value) && Object.keys(value).length > 0;
is.emptySet = (value) => is.set(value) && value.size === 0;
is.nonEmptySet = (value) => is.set(value) && value.size > 0;
is.emptyMap = (value) => is.map(value) && value.size === 0;
is.nonEmptyMap = (value) => is.map(value) && value.size > 0;
const predicateOnArray = (method, predicate, values) => {
if (is.function_(predicate) === false) {
throw new TypeError(`Invalid predicate: ${JSON.stringify(predicate)}`);
}
if (!is.function_(assertion)) {
return true;
}
return value.every(assertion);
};
is.buffer = (value) => { var _a, _b, _c, _d; return (_d = (_c = (_b = (_a = value) === null || _a === void 0 ? void 0 : _a.constructor) === null || _b === void 0 ? void 0 : _b.isBuffer) === null || _c === void 0 ? void 0 : _c.call(_b, value)) !== null && _d !== void 0 ? _d : false; };
is.blob = (value) => isObjectOfType('Blob')(value);
is.nullOrUndefined = (value) => is.null_(value) || is.undefined(value);
is.object = (value) => !is.null_(value) && (typeof value === 'object' || is.function_(value));
is.iterable = (value) => { var _a; return is.function_((_a = value) === null || _a === void 0 ? void 0 : _a[Symbol.iterator]); };
is.asyncIterable = (value) => { var _a; return is.function_((_a = value) === null || _a === void 0 ? void 0 : _a[Symbol.asyncIterator]); };
is.generator = (value) => { var _a, _b; return is.iterable(value) && is.function_((_a = value) === null || _a === void 0 ? void 0 : _a.next) && is.function_((_b = value) === null || _b === void 0 ? void 0 : _b.throw); };
is.asyncGenerator = (value) => is.asyncIterable(value) && is.function_(value.next) && is.function_(value.throw);
is.nativePromise = (value) => isObjectOfType('Promise')(value);
const hasPromiseAPI = (value) => {
var _a, _b;
return is.function_((_a = value) === null || _a === void 0 ? void 0 : _a.then) &&
is.function_((_b = value) === null || _b === void 0 ? void 0 : _b.catch);
};
is.promise = (value) => is.nativePromise(value) || hasPromiseAPI(value);
is.generatorFunction = isObjectOfType('GeneratorFunction');
is.asyncGeneratorFunction = (value) => getObjectType(value) === 'AsyncGeneratorFunction';
is.asyncFunction = (value) => getObjectType(value) === 'AsyncFunction';
// eslint-disable-next-line no-prototype-builtins, @typescript-eslint/ban-types
is.boundFunction = (value) => is.function_(value) && !value.hasOwnProperty('prototype');
is.regExp = isObjectOfType('RegExp');
is.date = isObjectOfType('Date');
is.error = isObjectOfType('Error');
is.map = (value) => isObjectOfType('Map')(value);
is.set = (value) => isObjectOfType('Set')(value);
is.weakMap = (value) => isObjectOfType('WeakMap')(value);
is.weakSet = (value) => isObjectOfType('WeakSet')(value);
is.int8Array = isObjectOfType('Int8Array');
is.uint8Array = isObjectOfType('Uint8Array');
is.uint8ClampedArray = isObjectOfType('Uint8ClampedArray');
is.int16Array = isObjectOfType('Int16Array');
is.uint16Array = isObjectOfType('Uint16Array');
is.int32Array = isObjectOfType('Int32Array');
is.uint32Array = isObjectOfType('Uint32Array');
is.float32Array = isObjectOfType('Float32Array');
is.float64Array = isObjectOfType('Float64Array');
is.bigInt64Array = isObjectOfType('BigInt64Array');
is.bigUint64Array = isObjectOfType('BigUint64Array');
is.arrayBuffer = isObjectOfType('ArrayBuffer');
is.sharedArrayBuffer = isObjectOfType('SharedArrayBuffer');
is.dataView = isObjectOfType('DataView');
is.enumCase = (value, targetEnum) => Object.values(targetEnum).includes(value);
is.directInstanceOf = (instance, class_) => Object.getPrototypeOf(instance) === class_.prototype;
is.urlInstance = (value) => isObjectOfType('URL')(value);
is.urlString = (value) => {
if (!is.string(value)) {
return false;
}
try {
new URL(value); // eslint-disable-line no-new
return true;
}
catch (_a) {
return false;
}
};
// Example: `is.truthy = (value: unknown): value is (not false | not 0 | not '' | not undefined | not null) => Boolean(value);`
is.truthy = (value) => Boolean(value);
// Example: `is.falsy = (value: unknown): value is (not true | 0 | '' | undefined | null) => Boolean(value);`
is.falsy = (value) => !value;
is.nan = (value) => Number.isNaN(value);
is.primitive = (value) => is.null_(value) || isPrimitiveTypeName(typeof value);
is.integer = (value) => Number.isInteger(value);
is.safeInteger = (value) => Number.isSafeInteger(value);
is.plainObject = (value) => {
// From: https://github.com/sindresorhus/is-plain-obj/blob/main/index.js
if (toString.call(value) !== '[object Object]') {
return false;
}
const prototype = Object.getPrototypeOf(value);
return prototype === null || prototype === Object.getPrototypeOf({});
};
is.typedArray = (value) => isTypedArrayName(getObjectType(value));
const isValidLength = (value) => is.safeInteger(value) && value >= 0;
is.arrayLike = (value) => !is.nullOrUndefined(value) && !is.function_(value) && isValidLength(value.length);
is.inRange = (value, range) => {
if (is.number(range)) {
return value >= Math.min(0, range) && value <= Math.max(range, 0);
}
if (is.array(range) && range.length === 2) {
return value >= Math.min(...range) && value <= Math.max(...range);
}
throw new TypeError(`Invalid range: ${JSON.stringify(range)}`);
};
const NODE_TYPE_ELEMENT = 1;
const DOM_PROPERTIES_TO_CHECK = [
'innerHTML',
'ownerDocument',
'style',
'attributes',
'nodeValue'
];
is.domElement = (value) => {
return is.object(value) &&
value.nodeType === NODE_TYPE_ELEMENT &&
is.string(value.nodeName) &&
!is.plainObject(value) &&
DOM_PROPERTIES_TO_CHECK.every(property => property in value);
};
is.observable = (value) => {
var _a, _b, _c, _d;
if (!value) {
return false;
}
// eslint-disable-next-line no-use-extend-native/no-use-extend-native
if (value === ((_b = (_a = value)[Symbol.observable]) === null || _b === void 0 ? void 0 : _b.call(_a))) {
return true;
}
if (value === ((_d = (_c = value)['@@observable']) === null || _d === void 0 ? void 0 : _d.call(_c))) {
return true;
}
return false;
};
is.nodeStream = (value) => is.object(value) && is.function_(value.pipe) && !is.observable(value);
is.infinite = (value) => value === Infinity || value === -Infinity;
const isAbsoluteMod2 = (remainder) => (value) => is.integer(value) && Math.abs(value % 2) === remainder;
is.evenInteger = isAbsoluteMod2(0);
is.oddInteger = isAbsoluteMod2(1);
is.emptyArray = (value) => is.array(value) && value.length === 0;
is.nonEmptyArray = (value) => is.array(value) && value.length > 0;
is.emptyString = (value) => is.string(value) && value.length === 0;
const isWhiteSpaceString = (value) => is.string(value) && !/\S/.test(value);
is.emptyStringOrWhitespace = (value) => is.emptyString(value) || isWhiteSpaceString(value);
// TODO: Use `not ''` when the `not` operator is available.
is.nonEmptyString = (value) => is.string(value) && value.length > 0;
// TODO: Use `not ''` when the `not` operator is available.
is.nonEmptyStringAndNotWhitespace = (value) => is.string(value) && !is.emptyStringOrWhitespace(value);
is.emptyObject = (value) => is.object(value) && !is.map(value) && !is.set(value) && Object.keys(value).length === 0;
// TODO: Use `not` operator here to remove `Map` and `Set` from type guard:
// - https://github.com/Microsoft/TypeScript/pull/29317
is.nonEmptyObject = (value) => is.object(value) && !is.map(value) && !is.set(value) && Object.keys(value).length > 0;
is.emptySet = (value) => is.set(value) && value.size === 0;
is.nonEmptySet = (value) => is.set(value) && value.size > 0;
is.emptyMap = (value) => is.map(value) && value.size === 0;
is.nonEmptyMap = (value) => is.map(value) && value.size > 0;
// `PropertyKey` is any value that can be used as an object key (string, number, or symbol)
is.propertyKey = (value) => is.any([is.string, is.number, is.symbol], value);
is.formData = (value) => isObjectOfType('FormData')(value);
is.urlSearchParams = (value) => isObjectOfType('URLSearchParams')(value);
const predicateOnArray = (method, predicate, values) => {
if (!is.function_(predicate)) {
throw new TypeError(`Invalid predicate: ${JSON.stringify(predicate)}`);
}
if (values.length === 0) {
throw new TypeError('Invalid number of values');
}
return method.call(values, predicate);
};
is.any = (predicate, ...values) => {
const predicates = is.array(predicate) ? predicate : [predicate];
return predicates.some(singlePredicate => predicateOnArray(Array.prototype.some, singlePredicate, values));
};
is.all = (predicate, ...values) => predicateOnArray(Array.prototype.every, predicate, values);
const assertType = (condition, description, value, options = {}) => {
if (!condition) {
const { multipleValues } = options;
const valuesMessage = multipleValues ?
`received values of types ${[
...new Set(value.map(singleValue => `\`${is(singleValue)}\``))
].join(', ')}` :
`received value of type \`${is(value)}\``;
throw new TypeError(`Expected value which is \`${description}\`, ${valuesMessage}.`);
}
};
exports.assert = {
// Unknowns.
undefined: (value) => assertType(is.undefined(value), 'undefined', value),
string: (value) => assertType(is.string(value), 'string', value),
number: (value) => assertType(is.number(value), 'number', value),
bigint: (value) => assertType(is.bigint(value), 'bigint', value),
// eslint-disable-next-line @typescript-eslint/ban-types
function_: (value) => assertType(is.function_(value), 'Function', value),
null_: (value) => assertType(is.null_(value), 'null', value),
class_: (value) => assertType(is.class_(value), "Class" /* class_ */, value),
boolean: (value) => assertType(is.boolean(value), 'boolean', value),
symbol: (value) => assertType(is.symbol(value), 'symbol', value),
numericString: (value) => assertType(is.numericString(value), "string with a number" /* numericString */, value),
array: (value, assertion) => {
const assert = assertType;
assert(is.array(value), 'Array', value);
if (assertion) {
value.forEach(assertion);
}
if (values.length === 0) {
throw new TypeError('Invalid number of values');
}
return method.call(values, predicate);
};
// tslint:disable variable-name
is.any = (predicate, ...values) => predicateOnArray(Array.prototype.some, predicate, values);
is.all = (predicate, ...values) => predicateOnArray(Array.prototype.every, predicate, values);
// tslint:enable variable-name
})(is || (is = {}));
},
buffer: (value) => assertType(is.buffer(value), 'Buffer', value),
blob: (value) => assertType(is.blob(value), 'Blob', value),
nullOrUndefined: (value) => assertType(is.nullOrUndefined(value), "null or undefined" /* nullOrUndefined */, value),
object: (value) => assertType(is.object(value), 'Object', value),
iterable: (value) => assertType(is.iterable(value), "Iterable" /* iterable */, value),
asyncIterable: (value) => assertType(is.asyncIterable(value), "AsyncIterable" /* asyncIterable */, value),
generator: (value) => assertType(is.generator(value), 'Generator', value),
asyncGenerator: (value) => assertType(is.asyncGenerator(value), 'AsyncGenerator', value),
nativePromise: (value) => assertType(is.nativePromise(value), "native Promise" /* nativePromise */, value),
promise: (value) => assertType(is.promise(value), 'Promise', value),
generatorFunction: (value) => assertType(is.generatorFunction(value), 'GeneratorFunction', value),
asyncGeneratorFunction: (value) => assertType(is.asyncGeneratorFunction(value), 'AsyncGeneratorFunction', value),
// eslint-disable-next-line @typescript-eslint/ban-types
asyncFunction: (value) => assertType(is.asyncFunction(value), 'AsyncFunction', value),
// eslint-disable-next-line @typescript-eslint/ban-types
boundFunction: (value) => assertType(is.boundFunction(value), 'Function', value),
regExp: (value) => assertType(is.regExp(value), 'RegExp', value),
date: (value) => assertType(is.date(value), 'Date', value),
error: (value) => assertType(is.error(value), 'Error', value),
map: (value) => assertType(is.map(value), 'Map', value),
set: (value) => assertType(is.set(value), 'Set', value),
weakMap: (value) => assertType(is.weakMap(value), 'WeakMap', value),
weakSet: (value) => assertType(is.weakSet(value), 'WeakSet', value),
int8Array: (value) => assertType(is.int8Array(value), 'Int8Array', value),
uint8Array: (value) => assertType(is.uint8Array(value), 'Uint8Array', value),
uint8ClampedArray: (value) => assertType(is.uint8ClampedArray(value), 'Uint8ClampedArray', value),
int16Array: (value) => assertType(is.int16Array(value), 'Int16Array', value),
uint16Array: (value) => assertType(is.uint16Array(value), 'Uint16Array', value),
int32Array: (value) => assertType(is.int32Array(value), 'Int32Array', value),
uint32Array: (value) => assertType(is.uint32Array(value), 'Uint32Array', value),
float32Array: (value) => assertType(is.float32Array(value), 'Float32Array', value),
float64Array: (value) => assertType(is.float64Array(value), 'Float64Array', value),
bigInt64Array: (value) => assertType(is.bigInt64Array(value), 'BigInt64Array', value),
bigUint64Array: (value) => assertType(is.bigUint64Array(value), 'BigUint64Array', value),
arrayBuffer: (value) => assertType(is.arrayBuffer(value), 'ArrayBuffer', value),
sharedArrayBuffer: (value) => assertType(is.sharedArrayBuffer(value), 'SharedArrayBuffer', value),
dataView: (value) => assertType(is.dataView(value), 'DataView', value),
enumCase: (value, targetEnum) => assertType(is.enumCase(value, targetEnum), 'EnumCase', value),
urlInstance: (value) => assertType(is.urlInstance(value), 'URL', value),
urlString: (value) => assertType(is.urlString(value), "string with a URL" /* urlString */, value),
truthy: (value) => assertType(is.truthy(value), "truthy" /* truthy */, value),
falsy: (value) => assertType(is.falsy(value), "falsy" /* falsy */, value),
nan: (value) => assertType(is.nan(value), "NaN" /* nan */, value),
primitive: (value) => assertType(is.primitive(value), "primitive" /* primitive */, value),
integer: (value) => assertType(is.integer(value), "integer" /* integer */, value),
safeInteger: (value) => assertType(is.safeInteger(value), "integer" /* safeInteger */, value),
plainObject: (value) => assertType(is.plainObject(value), "plain object" /* plainObject */, value),
typedArray: (value) => assertType(is.typedArray(value), "TypedArray" /* typedArray */, value),
arrayLike: (value) => assertType(is.arrayLike(value), "array-like" /* arrayLike */, value),
domElement: (value) => assertType(is.domElement(value), "HTMLElement" /* domElement */, value),
observable: (value) => assertType(is.observable(value), 'Observable', value),
nodeStream: (value) => assertType(is.nodeStream(value), "Node.js Stream" /* nodeStream */, value),
infinite: (value) => assertType(is.infinite(value), "infinite number" /* infinite */, value),
emptyArray: (value) => assertType(is.emptyArray(value), "empty array" /* emptyArray */, value),
nonEmptyArray: (value) => assertType(is.nonEmptyArray(value), "non-empty array" /* nonEmptyArray */, value),
emptyString: (value) => assertType(is.emptyString(value), "empty string" /* emptyString */, value),
emptyStringOrWhitespace: (value) => assertType(is.emptyStringOrWhitespace(value), "empty string or whitespace" /* emptyStringOrWhitespace */, value),
nonEmptyString: (value) => assertType(is.nonEmptyString(value), "non-empty string" /* nonEmptyString */, value),
nonEmptyStringAndNotWhitespace: (value) => assertType(is.nonEmptyStringAndNotWhitespace(value), "non-empty string and not whitespace" /* nonEmptyStringAndNotWhitespace */, value),
emptyObject: (value) => assertType(is.emptyObject(value), "empty object" /* emptyObject */, value),
nonEmptyObject: (value) => assertType(is.nonEmptyObject(value), "non-empty object" /* nonEmptyObject */, value),
emptySet: (value) => assertType(is.emptySet(value), "empty set" /* emptySet */, value),
nonEmptySet: (value) => assertType(is.nonEmptySet(value), "non-empty set" /* nonEmptySet */, value),
emptyMap: (value) => assertType(is.emptyMap(value), "empty map" /* emptyMap */, value),
nonEmptyMap: (value) => assertType(is.nonEmptyMap(value), "non-empty map" /* nonEmptyMap */, value),
propertyKey: (value) => assertType(is.propertyKey(value), 'PropertyKey', value),
formData: (value) => assertType(is.formData(value), 'FormData', value),
urlSearchParams: (value) => assertType(is.urlSearchParams(value), 'URLSearchParams', value),
// Numbers.
evenInteger: (value) => assertType(is.evenInteger(value), "even integer" /* evenInteger */, value),
oddInteger: (value) => assertType(is.oddInteger(value), "odd integer" /* oddInteger */, value),
// Two arguments.
directInstanceOf: (instance, class_) => assertType(is.directInstanceOf(instance, class_), "T" /* directInstanceOf */, instance),
inRange: (value, range) => assertType(is.inRange(value, range), "in range" /* inRange */, value),
// Variadic functions.
any: (predicate, ...values) => {
return assertType(is.any(predicate, ...values), "predicate returns truthy for any value" /* any */, values, { multipleValues: true });
},
all: (predicate, ...values) => assertType(is.all(predicate, ...values), "predicate returns truthy for all values" /* all */, values, { multipleValues: true })
};
// Some few keywords are reserved, but we'll populate them for Node.js users
// See https://github.com/Microsoft/TypeScript/issues/2536
Object.defineProperties(is, {
@@ -238,8 +416,19 @@ Object.defineProperties(is, {
value: is.null_
}
});
Object.defineProperties(exports.assert, {
class: {
value: exports.assert.class_
},
function: {
value: exports.assert.function_
},
null: {
value: exports.assert.null_
}
});
exports.default = is;
// For CommonJS default export support
module.exports = is;
module.exports.default = is;
//# sourceMappingURL=index.js.map
module.exports.assert = exports.assert;

View File

@@ -1,6 +1,6 @@
MIT License
Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com)
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

View File

@@ -1,65 +1,75 @@
{
"_args": [
[
"@sindresorhus/is@0.14.0",
"@sindresorhus/is@4.6.0",
"C:\\Users\\Smith\\repos\\game-server-watcher"
]
],
"_from": "@sindresorhus/is@0.14.0",
"_id": "@sindresorhus/is@0.14.0",
"_from": "@sindresorhus/is@4.6.0",
"_id": "@sindresorhus/is@4.6.0",
"_inBundle": false,
"_integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==",
"_integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==",
"_location": "/@sindresorhus/is",
"_phantomChildren": {},
"_requested": {
"type": "version",
"registry": true,
"raw": "@sindresorhus/is@0.14.0",
"raw": "@sindresorhus/is@4.6.0",
"name": "@sindresorhus/is",
"escapedName": "@sindresorhus%2fis",
"scope": "@sindresorhus",
"rawSpec": "0.14.0",
"rawSpec": "4.6.0",
"saveSpec": null,
"fetchSpec": "0.14.0"
"fetchSpec": "4.6.0"
},
"_requiredBy": [
"/gamedig/got",
"/package-json/got"
"/got"
],
"_resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz",
"_spec": "0.14.0",
"_resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz",
"_spec": "4.6.0",
"_where": "C:\\Users\\Smith\\repos\\game-server-watcher",
"author": {
"name": "Sindre Sorhus",
"email": "sindresorhus@gmail.com",
"url": "sindresorhus.com"
"url": "https://sindresorhus.com"
},
"ava": {
"extensions": [
"ts"
],
"require": [
"ts-node/register"
]
},
"bugs": {
"url": "https://github.com/sindresorhus/is/issues"
},
"description": "Type check values: `is.string('🦄') //=> true`",
"description": "Type check values",
"devDependencies": {
"@sindresorhus/tsconfig": "^0.1.0",
"@types/jsdom": "^11.12.0",
"@types/node": "^10.12.10",
"@types/tempy": "^0.2.0",
"@sindresorhus/tsconfig": "^0.7.0",
"@types/jsdom": "^16.1.0",
"@types/node": "^14.0.13",
"@types/zen-observable": "^0.8.0",
"ava": "^0.25.0",
"del-cli": "^1.1.0",
"jsdom": "^11.6.2",
"rxjs": "^6.3.3",
"tempy": "^0.2.1",
"tslint": "^5.9.1",
"tslint-xo": "^0.10.0",
"typescript": "^3.2.1",
"@typescript-eslint/eslint-plugin": "^2.20.0",
"@typescript-eslint/parser": "^2.20.0",
"ava": "^3.3.0",
"del-cli": "^2.0.0",
"eslint-config-xo-typescript": "^0.26.0",
"jsdom": "^16.0.1",
"rxjs": "^6.4.0",
"tempy": "^0.4.0",
"ts-node": "^8.3.0",
"typescript": "~3.8.2",
"xo": "^0.26.1",
"zen-observable": "^0.8.8"
},
"engines": {
"node": ">=6"
"node": ">=10"
},
"files": [
"dist"
],
"funding": "https://github.com/sindresorhus/is?sponsor=1",
"homepage": "https://github.com/sindresorhus/is#readme",
"keywords": [
"type",
@@ -80,7 +90,10 @@
"kind",
"primitive",
"verify",
"compare"
"compare",
"typescript",
"typeguards",
"types"
],
"license": "MIT",
"main": "dist/index.js",
@@ -91,10 +104,29 @@
},
"scripts": {
"build": "del dist && tsc",
"lint": "tslint --format stylish --project .",
"prepublish": "npm run build && del dist/tests",
"test": "npm run lint && npm run build && ava dist/tests"
"prepare": "npm run build",
"test": "xo && ava"
},
"sideEffects": false,
"types": "dist/index.d.ts",
"version": "0.14.0"
"version": "4.6.0",
"xo": {
"extends": "xo-typescript",
"extensions": [
"ts"
],
"parserOptions": {
"project": "./tsconfig.xo.json"
},
"globals": [
"BigInt",
"BigInt64Array",
"BigUint64Array"
],
"rules": {
"@typescript-eslint/promise-function-async": "off",
"@typescript-eslint/no-empty-function": "off",
"@typescript-eslint/explicit-function-return-type": "off"
}
}
}

View File

@@ -1,56 +1,69 @@
{
"_args": [
[
"@szmarczak/http-timer@1.1.2",
"@szmarczak/http-timer@4.0.6",
"C:\\Users\\Smith\\repos\\game-server-watcher"
]
],
"_from": "@szmarczak/http-timer@1.1.2",
"_id": "@szmarczak/http-timer@1.1.2",
"_from": "@szmarczak/http-timer@4.0.6",
"_id": "@szmarczak/http-timer@4.0.6",
"_inBundle": false,
"_integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==",
"_integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==",
"_location": "/@szmarczak/http-timer",
"_phantomChildren": {},
"_requested": {
"type": "version",
"registry": true,
"raw": "@szmarczak/http-timer@1.1.2",
"raw": "@szmarczak/http-timer@4.0.6",
"name": "@szmarczak/http-timer",
"escapedName": "@szmarczak%2fhttp-timer",
"scope": "@szmarczak",
"rawSpec": "1.1.2",
"rawSpec": "4.0.6",
"saveSpec": null,
"fetchSpec": "1.1.2"
"fetchSpec": "4.0.6"
},
"_requiredBy": [
"/gamedig/got",
"/package-json/got"
"/got"
],
"_resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz",
"_spec": "1.1.2",
"_resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz",
"_spec": "4.0.6",
"_where": "C:\\Users\\Smith\\repos\\game-server-watcher",
"author": {
"name": "Szymon Marczak"
},
"ava": {
"typescript": {
"compile": false,
"rewritePaths": {
"tests/": "dist/tests/"
}
}
},
"bugs": {
"url": "https://github.com/szmarczak/http-timer/issues"
},
"dependencies": {
"defer-to-connect": "^1.0.1"
"defer-to-connect": "^2.0.0"
},
"description": "Timings for HTTP requests",
"devDependencies": {
"ava": "^0.25.0",
"coveralls": "^3.0.2",
"nyc": "^12.0.2",
"p-event": "^2.1.0",
"xo": "^0.22.0"
"@ava/typescript": "^2.0.0",
"@sindresorhus/tsconfig": "^1.0.2",
"@types/node": "^16.3.1",
"ava": "^3.15.0",
"coveralls": "^3.1.1",
"del-cli": "^3.0.1",
"http2-wrapper": "^2.0.7",
"nyc": "^15.1.0",
"p-event": "^4.2.0",
"typescript": "^4.3.5",
"xo": "^0.39.1"
},
"engines": {
"node": ">=6"
"node": ">=10"
},
"files": [
"source"
"dist/source"
],
"homepage": "https://github.com/szmarczak/http-timer#readme",
"keywords": [
@@ -60,20 +73,31 @@
"timings"
],
"license": "MIT",
"main": "source",
"main": "dist/source",
"name": "@szmarczak/http-timer",
"nyc": {
"extension": [
".ts"
],
"exclude": [
"**/tests/**"
]
},
"repository": {
"type": "git",
"url": "git+https://github.com/szmarczak/http-timer.git"
},
"scripts": {
"build": "del-cli dist && tsc",
"coveralls": "nyc report --reporter=text-lcov | coveralls",
"test": "xo && nyc ava"
"prepare": "npm run build",
"test": "xo && tsc --noEmit && nyc ava"
},
"version": "1.1.2",
"types": "dist/source",
"version": "4.0.6",
"xo": {
"rules": {
"unicorn/filename-case": "camelCase"
"@typescript-eslint/no-non-null-assertion": "off"
}
}
}

View File

@@ -1,34 +1,31 @@
{
"_args": [
[
"cacheable-request@6.1.0",
"cacheable-request@7.0.2",
"C:\\Users\\Smith\\repos\\game-server-watcher"
]
],
"_from": "cacheable-request@6.1.0",
"_id": "cacheable-request@6.1.0",
"_from": "cacheable-request@7.0.2",
"_id": "cacheable-request@7.0.2",
"_inBundle": false,
"_integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==",
"_integrity": "sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew==",
"_location": "/cacheable-request",
"_phantomChildren": {
"pump": "3.0.0"
},
"_phantomChildren": {},
"_requested": {
"type": "version",
"registry": true,
"raw": "cacheable-request@6.1.0",
"raw": "cacheable-request@7.0.2",
"name": "cacheable-request",
"escapedName": "cacheable-request",
"rawSpec": "6.1.0",
"rawSpec": "7.0.2",
"saveSpec": null,
"fetchSpec": "6.1.0"
"fetchSpec": "7.0.2"
},
"_requiredBy": [
"/gamedig/got",
"/package-json/got"
"/got"
],
"_resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz",
"_spec": "6.1.0",
"_resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.2.tgz",
"_spec": "7.0.2",
"_where": "C:\\Users\\Smith\\repos\\game-server-watcher",
"author": {
"name": "Luke Childs",
@@ -42,10 +39,10 @@
"clone-response": "^1.0.2",
"get-stream": "^5.1.0",
"http-cache-semantics": "^4.0.0",
"keyv": "^3.0.0",
"keyv": "^4.0.0",
"lowercase-keys": "^2.0.0",
"normalize-url": "^4.1.0",
"responselike": "^1.0.2"
"normalize-url": "^6.0.1",
"responselike": "^2.0.0"
},
"description": "Wrap native HTTP requests with RFC compliant cache support",
"devDependencies": {
@@ -91,7 +88,7 @@
"coverage": "nyc report --reporter=text-lcov | coveralls",
"test": "xo && nyc ava"
},
"version": "6.1.0",
"version": "7.0.2",
"xo": {
"extends": "xo-lukechilds"
}

View File

@@ -1,32 +1,32 @@
{
"_args": [
[
"clone-response@1.0.2",
"clone-response@1.0.3",
"C:\\Users\\Smith\\repos\\game-server-watcher"
]
],
"_from": "clone-response@1.0.2",
"_id": "clone-response@1.0.2",
"_from": "clone-response@1.0.3",
"_id": "clone-response@1.0.3",
"_inBundle": false,
"_integrity": "sha512-yjLXh88P599UOyPTFX0POsd7WxnbsVsGohcwzHOLspIhhpalPw1BcqED8NblyZLKcGrL8dTgMlcaZxV2jAD41Q==",
"_integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==",
"_location": "/clone-response",
"_phantomChildren": {},
"_requested": {
"type": "version",
"registry": true,
"raw": "clone-response@1.0.2",
"raw": "clone-response@1.0.3",
"name": "clone-response",
"escapedName": "clone-response",
"rawSpec": "1.0.2",
"rawSpec": "1.0.3",
"saveSpec": null,
"fetchSpec": "1.0.2"
"fetchSpec": "1.0.3"
},
"_requiredBy": [
"/cacheable-request",
"/got/cacheable-request"
"/node8-gamedig/cacheable-request"
],
"_resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz",
"_spec": "1.0.2",
"_resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz",
"_spec": "1.0.3",
"_where": "C:\\Users\\Smith\\repos\\game-server-watcher",
"author": {
"name": "Luke Childs",
@@ -34,7 +34,7 @@
"url": "http://lukechilds.co.uk"
},
"bugs": {
"url": "https://github.com/lukechilds/clone-response/issues"
"url": "https://github.com/sindresorhus/clone-response/issues"
},
"dependencies": {
"mimic-response": "^1.0.0"
@@ -50,7 +50,8 @@
"pify": "^3.0.0",
"xo": "^0.19.0"
},
"homepage": "https://github.com/lukechilds/clone-response",
"funding": "https://github.com/sponsors/sindresorhus",
"homepage": "https://github.com/sindresorhus/clone-response#readme",
"keywords": [
"clone",
"duplicate",
@@ -64,13 +65,13 @@
"name": "clone-response",
"repository": {
"type": "git",
"url": "git+https://github.com/lukechilds/clone-response.git"
"url": "git+https://github.com/sindresorhus/clone-response.git"
},
"scripts": {
"coverage": "nyc report --reporter=text-lcov | coveralls",
"test": "xo && nyc ava"
},
"version": "1.0.2",
"version": "1.0.3",
"xo": {
"extends": "xo-lukechilds"
}

View File

@@ -1,58 +0,0 @@
//TODO: handle reviver/dehydrate function like normal
//and handle indentation, like normal.
//if anyone needs this... please send pull request.
exports.stringify = function stringify (o) {
if('undefined' == typeof o) return o
if(o && Buffer.isBuffer(o))
return JSON.stringify(':base64:' + o.toString('base64'))
if(o && o.toJSON)
o = o.toJSON()
if(o && 'object' === typeof o) {
var s = ''
var array = Array.isArray(o)
s = array ? '[' : '{'
var first = true
for(var k in o) {
var ignore = 'function' == typeof o[k] || (!array && 'undefined' === typeof o[k])
if(Object.hasOwnProperty.call(o, k) && !ignore) {
if(!first)
s += ','
first = false
if (array) {
if(o[k] == undefined)
s += 'null'
else
s += stringify(o[k])
} else if (o[k] !== void(0)) {
s += stringify(k) + ':' + stringify(o[k])
}
}
}
s += array ? ']' : '}'
return s
} else if ('string' === typeof o) {
return JSON.stringify(/^:/.test(o) ? ':' + o : o)
} else if ('undefined' === typeof o) {
return 'null';
} else
return JSON.stringify(o)
}
exports.parse = function (s) {
return JSON.parse(s, function (key, value) {
if('string' === typeof value) {
if(/^:base64:/.test(value))
return Buffer.from(value.substring(8), 'base64')
else
return /^:/.test(value) ? value.substring(1) : value
}
return value
})
}

View File

@@ -1,69 +0,0 @@
{
"_args": [
[
"json-buffer@3.0.1",
"C:\\Users\\Smith\\repos\\game-server-watcher"
]
],
"_from": "json-buffer@3.0.1",
"_id": "json-buffer@3.0.1",
"_inBundle": false,
"_integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
"_location": "/compress-brotli/json-buffer",
"_phantomChildren": {},
"_requested": {
"type": "version",
"registry": true,
"raw": "json-buffer@3.0.1",
"name": "json-buffer",
"escapedName": "json-buffer",
"rawSpec": "3.0.1",
"saveSpec": null,
"fetchSpec": "3.0.1"
},
"_requiredBy": [
"/compress-brotli"
],
"_resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
"_spec": "3.0.1",
"_where": "C:\\Users\\Smith\\repos\\game-server-watcher",
"author": {
"name": "Dominic Tarr",
"email": "dominic.tarr@gmail.com",
"url": "http://dominictarr.com"
},
"bugs": {
"url": "https://github.com/dominictarr/json-buffer/issues"
},
"description": "JSON parse & stringify that supports binary via bops & base64",
"devDependencies": {
"tape": "^4.6.3"
},
"homepage": "https://github.com/dominictarr/json-buffer",
"license": "MIT",
"name": "json-buffer",
"repository": {
"type": "git",
"url": "git://github.com/dominictarr/json-buffer.git"
},
"scripts": {
"test": "set -e; for t in test/*.js; do node $t; done"
},
"testling": {
"files": "test/*.js",
"browsers": [
"ie/8..latest",
"firefox/17..latest",
"firefox/nightly",
"chrome/22..latest",
"chrome/canary",
"opera/12..latest",
"opera/next",
"safari/5.1..latest",
"ipad/6.0..latest",
"iphone/6.0..latest",
"android-browser/4.2..latest"
]
},
"version": "3.0.1"
}

View File

@@ -1,29 +1,58 @@
'use strict';
const PassThrough = require('stream').PassThrough;
const {Transform, PassThrough} = require('stream');
const zlib = require('zlib');
const mimicResponse = require('mimic-response');
module.exports = response => {
// TODO: Use Array#includes when targeting Node.js 6
if (['gzip', 'deflate'].indexOf(response.headers['content-encoding']) === -1) {
const contentEncoding = (response.headers['content-encoding'] || '').toLowerCase();
if (!['gzip', 'deflate', 'br'].includes(contentEncoding)) {
return response;
}
const unzip = zlib.createUnzip();
const stream = new PassThrough();
// TODO: Remove this when targeting Node.js 12.
const isBrotli = contentEncoding === 'br';
if (isBrotli && typeof zlib.createBrotliDecompress !== 'function') {
response.destroy(new Error('Brotli is not supported on Node.js < 12'));
return response;
}
mimicResponse(response, stream);
let isEmpty = true;
unzip.on('error', err => {
if (err.code === 'Z_BUF_ERROR') {
stream.end();
const checker = new Transform({
transform(data, _encoding, callback) {
isEmpty = false;
callback(null, data);
},
flush(callback) {
callback();
}
});
const finalStream = new PassThrough({
autoDestroy: false,
destroy(error, callback) {
response.destroy();
callback(error);
}
});
const decompressStream = isBrotli ? zlib.createBrotliDecompress() : zlib.createUnzip();
decompressStream.once('error', error => {
if (isEmpty && !response.readable) {
finalStream.end();
return;
}
stream.emit('error', err);
finalStream.destroy(error);
});
response.pipe(unzip).pipe(stream);
mimicResponse(response, finalStream);
response.pipe(checker).pipe(decompressStream).pipe(finalStream);
return stream;
return finalStream;
};

View File

@@ -1,21 +1,9 @@
`The MIT License (MIT)
MIT License
Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com)
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

View File

@@ -9,7 +9,7 @@
"_id": "mimic-response@3.1.0",
"_inBundle": false,
"_integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==",
"_location": "/got/mimic-response",
"_location": "/decompress-response/mimic-response",
"_phantomChildren": {},
"_requested": {
"type": "version",
@@ -22,7 +22,7 @@
"fetchSpec": "3.1.0"
},
"_requiredBy": [
"/got/decompress-response"
"/decompress-response"
],
"_resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz",
"_spec": "3.1.0",

View File

@@ -1,52 +1,60 @@
{
"_args": [
[
"decompress-response@3.3.0",
"decompress-response@6.0.0",
"C:\\Users\\Smith\\repos\\game-server-watcher"
]
],
"_from": "decompress-response@3.3.0",
"_id": "decompress-response@3.3.0",
"_from": "decompress-response@6.0.0",
"_id": "decompress-response@6.0.0",
"_inBundle": false,
"_integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==",
"_integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==",
"_location": "/decompress-response",
"_phantomChildren": {},
"_requested": {
"type": "version",
"registry": true,
"raw": "decompress-response@3.3.0",
"raw": "decompress-response@6.0.0",
"name": "decompress-response",
"escapedName": "decompress-response",
"rawSpec": "3.3.0",
"rawSpec": "6.0.0",
"saveSpec": null,
"fetchSpec": "3.3.0"
"fetchSpec": "6.0.0"
},
"_requiredBy": [
"/gamedig/got",
"/package-json/got"
"/got"
],
"_resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz",
"_spec": "3.3.0",
"_resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz",
"_spec": "6.0.0",
"_where": "C:\\Users\\Smith\\repos\\game-server-watcher",
"author": {
"name": "Sindre Sorhus",
"email": "sindresorhus@gmail.com",
"url": "https://sindresorhus.com"
},
"bugs": {
"url": "https://github.com/sindresorhus/decompress-response/issues"
},
"dependencies": {
"mimic-response": "^1.0.0"
"mimic-response": "^3.1.0"
},
"description": "Decompress a HTTP response if needed",
"devDependencies": {
"ava": "*",
"get-stream": "^3.0.0",
"pify": "^3.0.0",
"xo": "*"
"@types/node": "^14.0.1",
"ava": "^2.2.0",
"get-stream": "^5.0.0",
"pify": "^5.0.0",
"tsd": "^0.11.0",
"xo": "^0.30.0"
},
"engines": {
"node": ">=4"
"node": ">=10"
},
"files": [
"index.js"
"index.js",
"index.d.ts"
],
"funding": "https://github.com/sponsors/sindresorhus",
"homepage": "https://github.com/sindresorhus/decompress-response#readme",
"keywords": [
"decompress",
@@ -62,28 +70,22 @@
"incoming",
"message",
"stream",
"compressed"
"compressed",
"brotli"
],
"license": "MIT",
"maintainers": [
{
"name": "Sindre Sorhus",
"email": "sindresorhus@gmail.com",
"url": "sindresorhus.com"
},
{
"name": "Vsevolod Strukchinsky",
"email": "floatdrop@gmail.com",
"url": "github.com/floatdrop"
}
],
"name": "decompress-response",
"repository": {
"type": "git",
"url": "git+https://github.com/sindresorhus/decompress-response.git"
},
"scripts": {
"test": "xo && ava"
"test": "xo && ava && tsd"
},
"version": "3.3.0"
"version": "6.0.0",
"xo": {
"rules": {
"@typescript-eslint/prefer-readonly-parameter-types": "off"
}
}
}

View File

@@ -1,70 +1,67 @@
{
"_args": [
[
"defer-to-connect@1.1.3",
"defer-to-connect@2.0.1",
"C:\\Users\\Smith\\repos\\game-server-watcher"
]
],
"_from": "defer-to-connect@1.1.3",
"_id": "defer-to-connect@1.1.3",
"_from": "defer-to-connect@2.0.1",
"_id": "defer-to-connect@2.0.1",
"_inBundle": false,
"_integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==",
"_integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==",
"_location": "/defer-to-connect",
"_phantomChildren": {},
"_requested": {
"type": "version",
"registry": true,
"raw": "defer-to-connect@1.1.3",
"raw": "defer-to-connect@2.0.1",
"name": "defer-to-connect",
"escapedName": "defer-to-connect",
"rawSpec": "1.1.3",
"rawSpec": "2.0.1",
"saveSpec": null,
"fetchSpec": "1.1.3"
"fetchSpec": "2.0.1"
},
"_requiredBy": [
"/@szmarczak/http-timer"
],
"_resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz",
"_spec": "1.1.3",
"_resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz",
"_spec": "2.0.1",
"_where": "C:\\Users\\Smith\\repos\\game-server-watcher",
"author": {
"name": "Szymon Marczak"
},
"ava": {
"babel": false,
"compileEnhancements": false,
"extensions": [
"ts"
],
"require": [
"ts-node/register"
],
"files": [
"!dist/tests/test.d.ts"
]
"typescript": {
"rewritePaths": {
"tests/": "dist/tests/"
}
}
},
"bugs": {
"url": "https://github.com/szmarczak/defer-to-connect/issues"
},
"description": "The safe way to handle the `connect` socket event",
"devDependencies": {
"@sindresorhus/tsconfig": "^0.5.0",
"@types/node": "^12.12.4",
"@typescript-eslint/eslint-plugin": "^1.11.0",
"@typescript-eslint/parser": "^1.11.0",
"ava": "^2.1.0",
"coveralls": "^3.0.7",
"@ava/typescript": "^1.1.0",
"@sindresorhus/tsconfig": "^0.7.0",
"@types/node": "^13.5.0",
"@typescript-eslint/eslint-plugin": "^2.18.0",
"@typescript-eslint/parser": "^2.18.0",
"ava": "^3.2.0",
"coveralls": "^3.0.9",
"create-cert": "^1.0.6",
"del-cli": "^3.0.0",
"eslint-config-xo-typescript": "^0.15.0",
"nyc": "^14.0.0",
"eslint-config-xo-typescript": "^0.24.1",
"nyc": "^15.0.0",
"p-event": "^4.1.0",
"ts-node": "^8.1.0",
"typescript": "^3.6.4",
"typescript": "^3.7.5",
"xo": "^0.25.3"
},
"engines": {
"node": ">=10"
},
"files": [
"dist"
"dist/source"
],
"homepage": "https://github.com/szmarczak/defer-to-connect#readme",
"keywords": [
@@ -73,9 +70,12 @@
"event"
],
"license": "MIT",
"main": "dist",
"main": "dist/source",
"name": "defer-to-connect",
"nyc": {
"include": [
"dist/source"
],
"extension": [
".ts"
]
@@ -87,18 +87,15 @@
"scripts": {
"build": "del-cli dist && tsc",
"coveralls": "nyc report --reporter=text-lcov | coveralls",
"prepublishOnly": "npm run build",
"test": "xo && nyc ava"
"prepare": "npm run build",
"test": "xo && tsc --noEmit && nyc ava"
},
"types": "dist",
"version": "1.1.3",
"types": "dist/source/index.d.ts",
"version": "2.0.1",
"xo": {
"extends": "xo-typescript",
"extensions": [
"ts"
],
"rules": {
"ava/no-ignored-test-files": "off"
}
]
}
}

10
node_modules/duplexer3/license generated vendored Normal file
View File

@@ -0,0 +1,10 @@
Copyright (c) 2022, Sindre Sorhus.
Copyright (c) 2020, Vsevolod Strukchinsky.
Copyright (c) 2013, Deoxxa Development.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

34
node_modules/duplexer3/package.json generated vendored
View File

@@ -1,40 +1,34 @@
{
"_args": [
[
"duplexer3@0.1.4",
"duplexer3@0.1.5",
"C:\\Users\\Smith\\repos\\game-server-watcher"
]
],
"_from": "duplexer3@0.1.4",
"_id": "duplexer3@0.1.4",
"_from": "duplexer3@0.1.5",
"_id": "duplexer3@0.1.5",
"_inBundle": false,
"_integrity": "sha512-CEj8FwwNA4cVH2uFCoHUrmojhYh1vmCdOaneKJXwkeY1i9jnlslVo9dx+hQ5Hl9GnH/Bwy/IjxAyOePyPKYnzA==",
"_integrity": "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==",
"_location": "/duplexer3",
"_phantomChildren": {},
"_requested": {
"type": "version",
"registry": true,
"raw": "duplexer3@0.1.4",
"raw": "duplexer3@0.1.5",
"name": "duplexer3",
"escapedName": "duplexer3",
"rawSpec": "0.1.4",
"rawSpec": "0.1.5",
"saveSpec": null,
"fetchSpec": "0.1.4"
"fetchSpec": "0.1.5"
},
"_requiredBy": [
"/gamedig/got",
"/package-json/got"
"/node8-gamedig/got"
],
"_resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz",
"_spec": "0.1.4",
"_resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz",
"_spec": "0.1.5",
"_where": "C:\\Users\\Smith\\repos\\game-server-watcher",
"author": {
"name": "Conrad Pankoff",
"email": "deoxxa@fknsrs.biz",
"url": "http://www.fknsrs.biz/"
},
"bugs": {
"url": "https://github.com/floatdrop/duplexer3/issues"
"url": "https://github.com/sindresorhus/duplexer3/issues"
},
"description": "Like duplexer but using streams3",
"devDependencies": {
@@ -46,7 +40,7 @@
"files": [
"index.js"
],
"homepage": "https://github.com/floatdrop/duplexer3#readme",
"homepage": "https://github.com/sindresorhus/duplexer3#readme",
"keywords": [
"duplex",
"duplexer",
@@ -59,10 +53,10 @@
"name": "duplexer3",
"repository": {
"type": "git",
"url": "git+https://github.com/floatdrop/duplexer3.git"
"url": "git+https://github.com/sindresorhus/duplexer3.git"
},
"scripts": {
"test": "mocha -R tap"
},
"version": "0.1.4"
"version": "0.1.5"
}

View File

@@ -1,51 +1,52 @@
'use strict';
const {PassThrough} = require('stream');
const {PassThrough: PassThroughStream} = require('stream');
module.exports = options => {
options = Object.assign({}, options);
options = {...options};
const {array} = options;
let {encoding} = options;
const buffer = encoding === 'buffer';
const isBuffer = encoding === 'buffer';
let objectMode = false;
if (array) {
objectMode = !(encoding || buffer);
objectMode = !(encoding || isBuffer);
} else {
encoding = encoding || 'utf8';
}
if (buffer) {
if (isBuffer) {
encoding = null;
}
let len = 0;
const ret = [];
const stream = new PassThrough({objectMode});
const stream = new PassThroughStream({objectMode});
if (encoding) {
stream.setEncoding(encoding);
}
let length = 0;
const chunks = [];
stream.on('data', chunk => {
ret.push(chunk);
chunks.push(chunk);
if (objectMode) {
len = ret.length;
length = chunks.length;
} else {
len += chunk.length;
length += chunk.length;
}
});
stream.getBufferedValue = () => {
if (array) {
return ret;
return chunks;
}
return buffer ? Buffer.concat(ret, len) : ret.join('');
return isBuffer ? Buffer.concat(chunks, length) : chunks.join('');
};
stream.getBufferedLength = () => len;
stream.getBufferedLength = () => length;
return stream;
};

24
node_modules/get-stream/index.js generated vendored
View File

@@ -1,4 +1,5 @@
'use strict';
const {constants: BufferConstants} = require('buffer');
const pump = require('pump');
const bufferStream = require('./buffer-stream');
@@ -9,21 +10,26 @@ class MaxBufferError extends Error {
}
}
function getStream(inputStream, options) {
async function getStream(inputStream, options) {
if (!inputStream) {
return Promise.reject(new Error('Expected a stream'));
}
options = Object.assign({maxBuffer: Infinity}, options);
options = {
maxBuffer: Infinity,
...options
};
const {maxBuffer} = options;
let stream;
return new Promise((resolve, reject) => {
await new Promise((resolve, reject) => {
const rejectPromise = error => {
if (error) { // A null check
// Don't retrieve an oversized buffer.
if (error && stream.getBufferedLength() <= BufferConstants.MAX_LENGTH) {
error.bufferedData = stream.getBufferedValue();
}
reject(error);
};
@@ -41,10 +47,14 @@ function getStream(inputStream, options) {
rejectPromise(new MaxBufferError());
}
});
}).then(() => stream.getBufferedValue());
});
return stream.getBufferedValue();
}
module.exports = getStream;
module.exports.buffer = (stream, options) => getStream(stream, Object.assign({}, options, {encoding: 'buffer'}));
module.exports.array = (stream, options) => getStream(stream, Object.assign({}, options, {array: true}));
// TODO: Remove this for the next major release
module.exports.default = getStream;
module.exports.buffer = (stream, options) => getStream(stream, {...options, encoding: 'buffer'});
module.exports.array = (stream, options) => getStream(stream, {...options, array: true});
module.exports.MaxBufferError = MaxBufferError;

2
node_modules/get-stream/license generated vendored
View File

@@ -1,6 +1,6 @@
MIT License
Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com)
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

39
node_modules/get-stream/package.json generated vendored
View File

@@ -1,37 +1,36 @@
{
"_args": [
[
"get-stream@4.1.0",
"get-stream@5.2.0",
"C:\\Users\\Smith\\repos\\game-server-watcher"
]
],
"_from": "get-stream@4.1.0",
"_id": "get-stream@4.1.0",
"_from": "get-stream@5.2.0",
"_id": "get-stream@5.2.0",
"_inBundle": false,
"_integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
"_integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
"_location": "/get-stream",
"_phantomChildren": {},
"_requested": {
"type": "version",
"registry": true,
"raw": "get-stream@4.1.0",
"raw": "get-stream@5.2.0",
"name": "get-stream",
"escapedName": "get-stream",
"rawSpec": "4.1.0",
"rawSpec": "5.2.0",
"saveSpec": null,
"fetchSpec": "4.1.0"
"fetchSpec": "5.2.0"
},
"_requiredBy": [
"/gamedig/got",
"/package-json/got"
"/cacheable-request"
],
"_resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
"_spec": "4.1.0",
"_resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
"_spec": "5.2.0",
"_where": "C:\\Users\\Smith\\repos\\game-server-watcher",
"author": {
"name": "Sindre Sorhus",
"email": "sindresorhus@gmail.com",
"url": "sindresorhus.com"
"url": "https://sindresorhus.com"
},
"bugs": {
"url": "https://github.com/sindresorhus/get-stream/issues"
@@ -41,17 +40,21 @@
},
"description": "Get a stream as a string, buffer, or array",
"devDependencies": {
"ava": "*",
"into-stream": "^3.0.0",
"xo": "*"
"@types/node": "^12.0.7",
"ava": "^2.0.0",
"into-stream": "^5.0.0",
"tsd": "^0.7.2",
"xo": "^0.24.0"
},
"engines": {
"node": ">=6"
"node": ">=8"
},
"files": [
"index.js",
"index.d.ts",
"buffer-stream.js"
],
"funding": "https://github.com/sponsors/sindresorhus",
"homepage": "https://github.com/sindresorhus/get-stream#readme",
"keywords": [
"get",
@@ -76,7 +79,7 @@
"url": "git+https://github.com/sindresorhus/get-stream.git"
},
"scripts": {
"test": "xo && ava"
"test": "xo && ava && tsd"
},
"version": "4.1.0"
"version": "5.2.0"
}

View File

@@ -1,434 +0,0 @@
"use strict";
/// <reference lib="es2018"/>
/// <reference lib="dom"/>
/// <reference types="node"/>
Object.defineProperty(exports, "__esModule", { value: true });
const typedArrayTypeNames = [
'Int8Array',
'Uint8Array',
'Uint8ClampedArray',
'Int16Array',
'Uint16Array',
'Int32Array',
'Uint32Array',
'Float32Array',
'Float64Array',
'BigInt64Array',
'BigUint64Array'
];
function isTypedArrayName(name) {
return typedArrayTypeNames.includes(name);
}
const objectTypeNames = [
'Function',
'Generator',
'AsyncGenerator',
'GeneratorFunction',
'AsyncGeneratorFunction',
'AsyncFunction',
'Observable',
'Array',
'Buffer',
'Blob',
'Object',
'RegExp',
'Date',
'Error',
'Map',
'Set',
'WeakMap',
'WeakSet',
'ArrayBuffer',
'SharedArrayBuffer',
'DataView',
'Promise',
'URL',
'FormData',
'URLSearchParams',
'HTMLElement',
...typedArrayTypeNames
];
function isObjectTypeName(name) {
return objectTypeNames.includes(name);
}
const primitiveTypeNames = [
'null',
'undefined',
'string',
'number',
'bigint',
'boolean',
'symbol'
];
function isPrimitiveTypeName(name) {
return primitiveTypeNames.includes(name);
}
// eslint-disable-next-line @typescript-eslint/ban-types
function isOfType(type) {
return (value) => typeof value === type;
}
const { toString } = Object.prototype;
const getObjectType = (value) => {
const objectTypeName = toString.call(value).slice(8, -1);
if (/HTML\w+Element/.test(objectTypeName) && is.domElement(value)) {
return 'HTMLElement';
}
if (isObjectTypeName(objectTypeName)) {
return objectTypeName;
}
return undefined;
};
const isObjectOfType = (type) => (value) => getObjectType(value) === type;
function is(value) {
if (value === null) {
return 'null';
}
switch (typeof value) {
case 'undefined':
return 'undefined';
case 'string':
return 'string';
case 'number':
return 'number';
case 'boolean':
return 'boolean';
case 'function':
return 'Function';
case 'bigint':
return 'bigint';
case 'symbol':
return 'symbol';
default:
}
if (is.observable(value)) {
return 'Observable';
}
if (is.array(value)) {
return 'Array';
}
if (is.buffer(value)) {
return 'Buffer';
}
const tagType = getObjectType(value);
if (tagType) {
return tagType;
}
if (value instanceof String || value instanceof Boolean || value instanceof Number) {
throw new TypeError('Please don\'t use object wrappers for primitive types');
}
return 'Object';
}
is.undefined = isOfType('undefined');
is.string = isOfType('string');
const isNumberType = isOfType('number');
is.number = (value) => isNumberType(value) && !is.nan(value);
is.bigint = isOfType('bigint');
// eslint-disable-next-line @typescript-eslint/ban-types
is.function_ = isOfType('function');
is.null_ = (value) => value === null;
is.class_ = (value) => is.function_(value) && value.toString().startsWith('class ');
is.boolean = (value) => value === true || value === false;
is.symbol = isOfType('symbol');
is.numericString = (value) => is.string(value) && !is.emptyStringOrWhitespace(value) && !Number.isNaN(Number(value));
is.array = (value, assertion) => {
if (!Array.isArray(value)) {
return false;
}
if (!is.function_(assertion)) {
return true;
}
return value.every(assertion);
};
is.buffer = (value) => { var _a, _b, _c, _d; return (_d = (_c = (_b = (_a = value) === null || _a === void 0 ? void 0 : _a.constructor) === null || _b === void 0 ? void 0 : _b.isBuffer) === null || _c === void 0 ? void 0 : _c.call(_b, value)) !== null && _d !== void 0 ? _d : false; };
is.blob = (value) => isObjectOfType('Blob')(value);
is.nullOrUndefined = (value) => is.null_(value) || is.undefined(value);
is.object = (value) => !is.null_(value) && (typeof value === 'object' || is.function_(value));
is.iterable = (value) => { var _a; return is.function_((_a = value) === null || _a === void 0 ? void 0 : _a[Symbol.iterator]); };
is.asyncIterable = (value) => { var _a; return is.function_((_a = value) === null || _a === void 0 ? void 0 : _a[Symbol.asyncIterator]); };
is.generator = (value) => { var _a, _b; return is.iterable(value) && is.function_((_a = value) === null || _a === void 0 ? void 0 : _a.next) && is.function_((_b = value) === null || _b === void 0 ? void 0 : _b.throw); };
is.asyncGenerator = (value) => is.asyncIterable(value) && is.function_(value.next) && is.function_(value.throw);
is.nativePromise = (value) => isObjectOfType('Promise')(value);
const hasPromiseAPI = (value) => {
var _a, _b;
return is.function_((_a = value) === null || _a === void 0 ? void 0 : _a.then) &&
is.function_((_b = value) === null || _b === void 0 ? void 0 : _b.catch);
};
is.promise = (value) => is.nativePromise(value) || hasPromiseAPI(value);
is.generatorFunction = isObjectOfType('GeneratorFunction');
is.asyncGeneratorFunction = (value) => getObjectType(value) === 'AsyncGeneratorFunction';
is.asyncFunction = (value) => getObjectType(value) === 'AsyncFunction';
// eslint-disable-next-line no-prototype-builtins, @typescript-eslint/ban-types
is.boundFunction = (value) => is.function_(value) && !value.hasOwnProperty('prototype');
is.regExp = isObjectOfType('RegExp');
is.date = isObjectOfType('Date');
is.error = isObjectOfType('Error');
is.map = (value) => isObjectOfType('Map')(value);
is.set = (value) => isObjectOfType('Set')(value);
is.weakMap = (value) => isObjectOfType('WeakMap')(value);
is.weakSet = (value) => isObjectOfType('WeakSet')(value);
is.int8Array = isObjectOfType('Int8Array');
is.uint8Array = isObjectOfType('Uint8Array');
is.uint8ClampedArray = isObjectOfType('Uint8ClampedArray');
is.int16Array = isObjectOfType('Int16Array');
is.uint16Array = isObjectOfType('Uint16Array');
is.int32Array = isObjectOfType('Int32Array');
is.uint32Array = isObjectOfType('Uint32Array');
is.float32Array = isObjectOfType('Float32Array');
is.float64Array = isObjectOfType('Float64Array');
is.bigInt64Array = isObjectOfType('BigInt64Array');
is.bigUint64Array = isObjectOfType('BigUint64Array');
is.arrayBuffer = isObjectOfType('ArrayBuffer');
is.sharedArrayBuffer = isObjectOfType('SharedArrayBuffer');
is.dataView = isObjectOfType('DataView');
is.enumCase = (value, targetEnum) => Object.values(targetEnum).includes(value);
is.directInstanceOf = (instance, class_) => Object.getPrototypeOf(instance) === class_.prototype;
is.urlInstance = (value) => isObjectOfType('URL')(value);
is.urlString = (value) => {
if (!is.string(value)) {
return false;
}
try {
new URL(value); // eslint-disable-line no-new
return true;
}
catch (_a) {
return false;
}
};
// Example: `is.truthy = (value: unknown): value is (not false | not 0 | not '' | not undefined | not null) => Boolean(value);`
is.truthy = (value) => Boolean(value);
// Example: `is.falsy = (value: unknown): value is (not true | 0 | '' | undefined | null) => Boolean(value);`
is.falsy = (value) => !value;
is.nan = (value) => Number.isNaN(value);
is.primitive = (value) => is.null_(value) || isPrimitiveTypeName(typeof value);
is.integer = (value) => Number.isInteger(value);
is.safeInteger = (value) => Number.isSafeInteger(value);
is.plainObject = (value) => {
// From: https://github.com/sindresorhus/is-plain-obj/blob/main/index.js
if (toString.call(value) !== '[object Object]') {
return false;
}
const prototype = Object.getPrototypeOf(value);
return prototype === null || prototype === Object.getPrototypeOf({});
};
is.typedArray = (value) => isTypedArrayName(getObjectType(value));
const isValidLength = (value) => is.safeInteger(value) && value >= 0;
is.arrayLike = (value) => !is.nullOrUndefined(value) && !is.function_(value) && isValidLength(value.length);
is.inRange = (value, range) => {
if (is.number(range)) {
return value >= Math.min(0, range) && value <= Math.max(range, 0);
}
if (is.array(range) && range.length === 2) {
return value >= Math.min(...range) && value <= Math.max(...range);
}
throw new TypeError(`Invalid range: ${JSON.stringify(range)}`);
};
const NODE_TYPE_ELEMENT = 1;
const DOM_PROPERTIES_TO_CHECK = [
'innerHTML',
'ownerDocument',
'style',
'attributes',
'nodeValue'
];
is.domElement = (value) => {
return is.object(value) &&
value.nodeType === NODE_TYPE_ELEMENT &&
is.string(value.nodeName) &&
!is.plainObject(value) &&
DOM_PROPERTIES_TO_CHECK.every(property => property in value);
};
is.observable = (value) => {
var _a, _b, _c, _d;
if (!value) {
return false;
}
// eslint-disable-next-line no-use-extend-native/no-use-extend-native
if (value === ((_b = (_a = value)[Symbol.observable]) === null || _b === void 0 ? void 0 : _b.call(_a))) {
return true;
}
if (value === ((_d = (_c = value)['@@observable']) === null || _d === void 0 ? void 0 : _d.call(_c))) {
return true;
}
return false;
};
is.nodeStream = (value) => is.object(value) && is.function_(value.pipe) && !is.observable(value);
is.infinite = (value) => value === Infinity || value === -Infinity;
const isAbsoluteMod2 = (remainder) => (value) => is.integer(value) && Math.abs(value % 2) === remainder;
is.evenInteger = isAbsoluteMod2(0);
is.oddInteger = isAbsoluteMod2(1);
is.emptyArray = (value) => is.array(value) && value.length === 0;
is.nonEmptyArray = (value) => is.array(value) && value.length > 0;
is.emptyString = (value) => is.string(value) && value.length === 0;
const isWhiteSpaceString = (value) => is.string(value) && !/\S/.test(value);
is.emptyStringOrWhitespace = (value) => is.emptyString(value) || isWhiteSpaceString(value);
// TODO: Use `not ''` when the `not` operator is available.
is.nonEmptyString = (value) => is.string(value) && value.length > 0;
// TODO: Use `not ''` when the `not` operator is available.
is.nonEmptyStringAndNotWhitespace = (value) => is.string(value) && !is.emptyStringOrWhitespace(value);
is.emptyObject = (value) => is.object(value) && !is.map(value) && !is.set(value) && Object.keys(value).length === 0;
// TODO: Use `not` operator here to remove `Map` and `Set` from type guard:
// - https://github.com/Microsoft/TypeScript/pull/29317
is.nonEmptyObject = (value) => is.object(value) && !is.map(value) && !is.set(value) && Object.keys(value).length > 0;
is.emptySet = (value) => is.set(value) && value.size === 0;
is.nonEmptySet = (value) => is.set(value) && value.size > 0;
is.emptyMap = (value) => is.map(value) && value.size === 0;
is.nonEmptyMap = (value) => is.map(value) && value.size > 0;
// `PropertyKey` is any value that can be used as an object key (string, number, or symbol)
is.propertyKey = (value) => is.any([is.string, is.number, is.symbol], value);
is.formData = (value) => isObjectOfType('FormData')(value);
is.urlSearchParams = (value) => isObjectOfType('URLSearchParams')(value);
const predicateOnArray = (method, predicate, values) => {
if (!is.function_(predicate)) {
throw new TypeError(`Invalid predicate: ${JSON.stringify(predicate)}`);
}
if (values.length === 0) {
throw new TypeError('Invalid number of values');
}
return method.call(values, predicate);
};
is.any = (predicate, ...values) => {
const predicates = is.array(predicate) ? predicate : [predicate];
return predicates.some(singlePredicate => predicateOnArray(Array.prototype.some, singlePredicate, values));
};
is.all = (predicate, ...values) => predicateOnArray(Array.prototype.every, predicate, values);
const assertType = (condition, description, value, options = {}) => {
if (!condition) {
const { multipleValues } = options;
const valuesMessage = multipleValues ?
`received values of types ${[
...new Set(value.map(singleValue => `\`${is(singleValue)}\``))
].join(', ')}` :
`received value of type \`${is(value)}\``;
throw new TypeError(`Expected value which is \`${description}\`, ${valuesMessage}.`);
}
};
exports.assert = {
// Unknowns.
undefined: (value) => assertType(is.undefined(value), 'undefined', value),
string: (value) => assertType(is.string(value), 'string', value),
number: (value) => assertType(is.number(value), 'number', value),
bigint: (value) => assertType(is.bigint(value), 'bigint', value),
// eslint-disable-next-line @typescript-eslint/ban-types
function_: (value) => assertType(is.function_(value), 'Function', value),
null_: (value) => assertType(is.null_(value), 'null', value),
class_: (value) => assertType(is.class_(value), "Class" /* class_ */, value),
boolean: (value) => assertType(is.boolean(value), 'boolean', value),
symbol: (value) => assertType(is.symbol(value), 'symbol', value),
numericString: (value) => assertType(is.numericString(value), "string with a number" /* numericString */, value),
array: (value, assertion) => {
const assert = assertType;
assert(is.array(value), 'Array', value);
if (assertion) {
value.forEach(assertion);
}
},
buffer: (value) => assertType(is.buffer(value), 'Buffer', value),
blob: (value) => assertType(is.blob(value), 'Blob', value),
nullOrUndefined: (value) => assertType(is.nullOrUndefined(value), "null or undefined" /* nullOrUndefined */, value),
object: (value) => assertType(is.object(value), 'Object', value),
iterable: (value) => assertType(is.iterable(value), "Iterable" /* iterable */, value),
asyncIterable: (value) => assertType(is.asyncIterable(value), "AsyncIterable" /* asyncIterable */, value),
generator: (value) => assertType(is.generator(value), 'Generator', value),
asyncGenerator: (value) => assertType(is.asyncGenerator(value), 'AsyncGenerator', value),
nativePromise: (value) => assertType(is.nativePromise(value), "native Promise" /* nativePromise */, value),
promise: (value) => assertType(is.promise(value), 'Promise', value),
generatorFunction: (value) => assertType(is.generatorFunction(value), 'GeneratorFunction', value),
asyncGeneratorFunction: (value) => assertType(is.asyncGeneratorFunction(value), 'AsyncGeneratorFunction', value),
// eslint-disable-next-line @typescript-eslint/ban-types
asyncFunction: (value) => assertType(is.asyncFunction(value), 'AsyncFunction', value),
// eslint-disable-next-line @typescript-eslint/ban-types
boundFunction: (value) => assertType(is.boundFunction(value), 'Function', value),
regExp: (value) => assertType(is.regExp(value), 'RegExp', value),
date: (value) => assertType(is.date(value), 'Date', value),
error: (value) => assertType(is.error(value), 'Error', value),
map: (value) => assertType(is.map(value), 'Map', value),
set: (value) => assertType(is.set(value), 'Set', value),
weakMap: (value) => assertType(is.weakMap(value), 'WeakMap', value),
weakSet: (value) => assertType(is.weakSet(value), 'WeakSet', value),
int8Array: (value) => assertType(is.int8Array(value), 'Int8Array', value),
uint8Array: (value) => assertType(is.uint8Array(value), 'Uint8Array', value),
uint8ClampedArray: (value) => assertType(is.uint8ClampedArray(value), 'Uint8ClampedArray', value),
int16Array: (value) => assertType(is.int16Array(value), 'Int16Array', value),
uint16Array: (value) => assertType(is.uint16Array(value), 'Uint16Array', value),
int32Array: (value) => assertType(is.int32Array(value), 'Int32Array', value),
uint32Array: (value) => assertType(is.uint32Array(value), 'Uint32Array', value),
float32Array: (value) => assertType(is.float32Array(value), 'Float32Array', value),
float64Array: (value) => assertType(is.float64Array(value), 'Float64Array', value),
bigInt64Array: (value) => assertType(is.bigInt64Array(value), 'BigInt64Array', value),
bigUint64Array: (value) => assertType(is.bigUint64Array(value), 'BigUint64Array', value),
arrayBuffer: (value) => assertType(is.arrayBuffer(value), 'ArrayBuffer', value),
sharedArrayBuffer: (value) => assertType(is.sharedArrayBuffer(value), 'SharedArrayBuffer', value),
dataView: (value) => assertType(is.dataView(value), 'DataView', value),
enumCase: (value, targetEnum) => assertType(is.enumCase(value, targetEnum), 'EnumCase', value),
urlInstance: (value) => assertType(is.urlInstance(value), 'URL', value),
urlString: (value) => assertType(is.urlString(value), "string with a URL" /* urlString */, value),
truthy: (value) => assertType(is.truthy(value), "truthy" /* truthy */, value),
falsy: (value) => assertType(is.falsy(value), "falsy" /* falsy */, value),
nan: (value) => assertType(is.nan(value), "NaN" /* nan */, value),
primitive: (value) => assertType(is.primitive(value), "primitive" /* primitive */, value),
integer: (value) => assertType(is.integer(value), "integer" /* integer */, value),
safeInteger: (value) => assertType(is.safeInteger(value), "integer" /* safeInteger */, value),
plainObject: (value) => assertType(is.plainObject(value), "plain object" /* plainObject */, value),
typedArray: (value) => assertType(is.typedArray(value), "TypedArray" /* typedArray */, value),
arrayLike: (value) => assertType(is.arrayLike(value), "array-like" /* arrayLike */, value),
domElement: (value) => assertType(is.domElement(value), "HTMLElement" /* domElement */, value),
observable: (value) => assertType(is.observable(value), 'Observable', value),
nodeStream: (value) => assertType(is.nodeStream(value), "Node.js Stream" /* nodeStream */, value),
infinite: (value) => assertType(is.infinite(value), "infinite number" /* infinite */, value),
emptyArray: (value) => assertType(is.emptyArray(value), "empty array" /* emptyArray */, value),
nonEmptyArray: (value) => assertType(is.nonEmptyArray(value), "non-empty array" /* nonEmptyArray */, value),
emptyString: (value) => assertType(is.emptyString(value), "empty string" /* emptyString */, value),
emptyStringOrWhitespace: (value) => assertType(is.emptyStringOrWhitespace(value), "empty string or whitespace" /* emptyStringOrWhitespace */, value),
nonEmptyString: (value) => assertType(is.nonEmptyString(value), "non-empty string" /* nonEmptyString */, value),
nonEmptyStringAndNotWhitespace: (value) => assertType(is.nonEmptyStringAndNotWhitespace(value), "non-empty string and not whitespace" /* nonEmptyStringAndNotWhitespace */, value),
emptyObject: (value) => assertType(is.emptyObject(value), "empty object" /* emptyObject */, value),
nonEmptyObject: (value) => assertType(is.nonEmptyObject(value), "non-empty object" /* nonEmptyObject */, value),
emptySet: (value) => assertType(is.emptySet(value), "empty set" /* emptySet */, value),
nonEmptySet: (value) => assertType(is.nonEmptySet(value), "non-empty set" /* nonEmptySet */, value),
emptyMap: (value) => assertType(is.emptyMap(value), "empty map" /* emptyMap */, value),
nonEmptyMap: (value) => assertType(is.nonEmptyMap(value), "non-empty map" /* nonEmptyMap */, value),
propertyKey: (value) => assertType(is.propertyKey(value), 'PropertyKey', value),
formData: (value) => assertType(is.formData(value), 'FormData', value),
urlSearchParams: (value) => assertType(is.urlSearchParams(value), 'URLSearchParams', value),
// Numbers.
evenInteger: (value) => assertType(is.evenInteger(value), "even integer" /* evenInteger */, value),
oddInteger: (value) => assertType(is.oddInteger(value), "odd integer" /* oddInteger */, value),
// Two arguments.
directInstanceOf: (instance, class_) => assertType(is.directInstanceOf(instance, class_), "T" /* directInstanceOf */, instance),
inRange: (value, range) => assertType(is.inRange(value, range), "in range" /* inRange */, value),
// Variadic functions.
any: (predicate, ...values) => {
return assertType(is.any(predicate, ...values), "predicate returns truthy for any value" /* any */, values, { multipleValues: true });
},
all: (predicate, ...values) => assertType(is.all(predicate, ...values), "predicate returns truthy for all values" /* all */, values, { multipleValues: true })
};
// Some few keywords are reserved, but we'll populate them for Node.js users
// See https://github.com/Microsoft/TypeScript/issues/2536
Object.defineProperties(is, {
class: {
value: is.class_
},
function: {
value: is.function_
},
null: {
value: is.null_
}
});
Object.defineProperties(exports.assert, {
class: {
value: exports.assert.class_
},
function: {
value: exports.assert.function_
},
null: {
value: exports.assert.null_
}
});
exports.default = is;
// For CommonJS default export support
module.exports = is;
module.exports.default = is;
module.exports.assert = exports.assert;

View File

@@ -1,132 +0,0 @@
{
"_args": [
[
"@sindresorhus/is@4.6.0",
"C:\\Users\\Smith\\repos\\game-server-watcher"
]
],
"_from": "@sindresorhus/is@4.6.0",
"_id": "@sindresorhus/is@4.6.0",
"_inBundle": false,
"_integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==",
"_location": "/got/@sindresorhus/is",
"_phantomChildren": {},
"_requested": {
"type": "version",
"registry": true,
"raw": "@sindresorhus/is@4.6.0",
"name": "@sindresorhus/is",
"escapedName": "@sindresorhus%2fis",
"scope": "@sindresorhus",
"rawSpec": "4.6.0",
"saveSpec": null,
"fetchSpec": "4.6.0"
},
"_requiredBy": [
"/got"
],
"_resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz",
"_spec": "4.6.0",
"_where": "C:\\Users\\Smith\\repos\\game-server-watcher",
"author": {
"name": "Sindre Sorhus",
"email": "sindresorhus@gmail.com",
"url": "https://sindresorhus.com"
},
"ava": {
"extensions": [
"ts"
],
"require": [
"ts-node/register"
]
},
"bugs": {
"url": "https://github.com/sindresorhus/is/issues"
},
"description": "Type check values",
"devDependencies": {
"@sindresorhus/tsconfig": "^0.7.0",
"@types/jsdom": "^16.1.0",
"@types/node": "^14.0.13",
"@types/zen-observable": "^0.8.0",
"@typescript-eslint/eslint-plugin": "^2.20.0",
"@typescript-eslint/parser": "^2.20.0",
"ava": "^3.3.0",
"del-cli": "^2.0.0",
"eslint-config-xo-typescript": "^0.26.0",
"jsdom": "^16.0.1",
"rxjs": "^6.4.0",
"tempy": "^0.4.0",
"ts-node": "^8.3.0",
"typescript": "~3.8.2",
"xo": "^0.26.1",
"zen-observable": "^0.8.8"
},
"engines": {
"node": ">=10"
},
"files": [
"dist"
],
"funding": "https://github.com/sindresorhus/is?sponsor=1",
"homepage": "https://github.com/sindresorhus/is#readme",
"keywords": [
"type",
"types",
"is",
"check",
"checking",
"validate",
"validation",
"utility",
"util",
"typeof",
"instanceof",
"object",
"assert",
"assertion",
"test",
"kind",
"primitive",
"verify",
"compare",
"typescript",
"typeguards",
"types"
],
"license": "MIT",
"main": "dist/index.js",
"name": "@sindresorhus/is",
"repository": {
"type": "git",
"url": "git+https://github.com/sindresorhus/is.git"
},
"scripts": {
"build": "del dist && tsc",
"prepare": "npm run build",
"test": "xo && ava"
},
"sideEffects": false,
"types": "dist/index.d.ts",
"version": "4.6.0",
"xo": {
"extends": "xo-typescript",
"extensions": [
"ts"
],
"parserOptions": {
"project": "./tsconfig.xo.json"
},
"globals": [
"BigInt",
"BigInt64Array",
"BigUint64Array"
],
"rules": {
"@typescript-eslint/promise-function-async": "off",
"@typescript-eslint/no-empty-function": "off",
"@typescript-eslint/explicit-function-return-type": "off"
}
}
}

View File

@@ -1,103 +0,0 @@
{
"_args": [
[
"@szmarczak/http-timer@4.0.6",
"C:\\Users\\Smith\\repos\\game-server-watcher"
]
],
"_from": "@szmarczak/http-timer@4.0.6",
"_id": "@szmarczak/http-timer@4.0.6",
"_inBundle": false,
"_integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==",
"_location": "/got/@szmarczak/http-timer",
"_phantomChildren": {},
"_requested": {
"type": "version",
"registry": true,
"raw": "@szmarczak/http-timer@4.0.6",
"name": "@szmarczak/http-timer",
"escapedName": "@szmarczak%2fhttp-timer",
"scope": "@szmarczak",
"rawSpec": "4.0.6",
"saveSpec": null,
"fetchSpec": "4.0.6"
},
"_requiredBy": [
"/got"
],
"_resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz",
"_spec": "4.0.6",
"_where": "C:\\Users\\Smith\\repos\\game-server-watcher",
"author": {
"name": "Szymon Marczak"
},
"ava": {
"typescript": {
"compile": false,
"rewritePaths": {
"tests/": "dist/tests/"
}
}
},
"bugs": {
"url": "https://github.com/szmarczak/http-timer/issues"
},
"dependencies": {
"defer-to-connect": "^2.0.0"
},
"description": "Timings for HTTP requests",
"devDependencies": {
"@ava/typescript": "^2.0.0",
"@sindresorhus/tsconfig": "^1.0.2",
"@types/node": "^16.3.1",
"ava": "^3.15.0",
"coveralls": "^3.1.1",
"del-cli": "^3.0.1",
"http2-wrapper": "^2.0.7",
"nyc": "^15.1.0",
"p-event": "^4.2.0",
"typescript": "^4.3.5",
"xo": "^0.39.1"
},
"engines": {
"node": ">=10"
},
"files": [
"dist/source"
],
"homepage": "https://github.com/szmarczak/http-timer#readme",
"keywords": [
"http",
"https",
"timer",
"timings"
],
"license": "MIT",
"main": "dist/source",
"name": "@szmarczak/http-timer",
"nyc": {
"extension": [
".ts"
],
"exclude": [
"**/tests/**"
]
},
"repository": {
"type": "git",
"url": "git+https://github.com/szmarczak/http-timer.git"
},
"scripts": {
"build": "del-cli dist && tsc",
"coveralls": "nyc report --reporter=text-lcov | coveralls",
"prepare": "npm run build",
"test": "xo && tsc --noEmit && nyc ava"
},
"types": "dist/source",
"version": "4.0.6",
"xo": {
"rules": {
"@typescript-eslint/no-non-null-assertion": "off"
}
}
}

View File

@@ -1,58 +0,0 @@
'use strict';
const {Transform, PassThrough} = require('stream');
const zlib = require('zlib');
const mimicResponse = require('mimic-response');
module.exports = response => {
const contentEncoding = (response.headers['content-encoding'] || '').toLowerCase();
if (!['gzip', 'deflate', 'br'].includes(contentEncoding)) {
return response;
}
// TODO: Remove this when targeting Node.js 12.
const isBrotli = contentEncoding === 'br';
if (isBrotli && typeof zlib.createBrotliDecompress !== 'function') {
response.destroy(new Error('Brotli is not supported on Node.js < 12'));
return response;
}
let isEmpty = true;
const checker = new Transform({
transform(data, _encoding, callback) {
isEmpty = false;
callback(null, data);
},
flush(callback) {
callback();
}
});
const finalStream = new PassThrough({
autoDestroy: false,
destroy(error, callback) {
response.destroy();
callback(error);
}
});
const decompressStream = isBrotli ? zlib.createBrotliDecompress() : zlib.createUnzip();
decompressStream.once('error', error => {
if (isEmpty && !response.readable) {
finalStream.end();
return;
}
finalStream.destroy(error);
});
mimicResponse(response, finalStream);
response.pipe(checker).pipe(decompressStream).pipe(finalStream);
return finalStream;
};

View File

@@ -1,9 +0,0 @@
MIT License
Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com)
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

View File

@@ -1,52 +0,0 @@
'use strict';
const {PassThrough: PassThroughStream} = require('stream');
module.exports = options => {
options = {...options};
const {array} = options;
let {encoding} = options;
const isBuffer = encoding === 'buffer';
let objectMode = false;
if (array) {
objectMode = !(encoding || isBuffer);
} else {
encoding = encoding || 'utf8';
}
if (isBuffer) {
encoding = null;
}
const stream = new PassThroughStream({objectMode});
if (encoding) {
stream.setEncoding(encoding);
}
let length = 0;
const chunks = [];
stream.on('data', chunk => {
chunks.push(chunk);
if (objectMode) {
length = chunks.length;
} else {
length += chunk.length;
}
});
stream.getBufferedValue = () => {
if (array) {
return chunks;
}
return isBuffer ? Buffer.concat(chunks, length) : chunks.join('');
};
stream.getBufferedLength = () => length;
return stream;
};

View File

@@ -1,3 +0,0 @@
language: node_js
node_js:
- '0.10'

View File

@@ -1,22 +0,0 @@
Copyright (c) 2013 Dominic Tarr
Permission is hereby granted, free of charge,
to any person obtaining a copy of this software and
associated documentation files (the "Software"), to
deal in the Software without restriction, including
without limitation the rights to use, copy, modify,
merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom
the Software is furnished to do so,
subject to the following conditions:
The above copyright notice and this permission notice
shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

View File

@@ -1,63 +0,0 @@
var test = require('tape')
var _JSON = require('../')
function clone (o) {
return JSON.parse(JSON.stringify(o))
}
var examples = {
simple: { foo: [], bar: {}, baz: Buffer.from('some binary data') },
just_buffer: Buffer.from('JUST A BUFFER'),
all_types: {
string:'hello',
number: 3145,
null: null,
object: {},
array: [],
boolean: true,
boolean2: false
},
foo: Buffer.from('foo'),
foo2: Buffer.from('foo2'),
escape: {
buffer: Buffer.from('x'),
string: _JSON.stringify(Buffer.from('x'))
},
escape2: {
buffer: Buffer.from('x'),
string: ':base64:'+ Buffer.from('x').toString('base64')
},
undefined: {
empty: undefined, test: true
},
undefined2: {
first: 1, empty: undefined, test: true
},
undefinedArray: {
array: [undefined, 1, 'two']
},
fn: {
fn: function () {}
},
undefined: undefined
}
for(k in examples)
(function (value, k) {
test(k, function (t) {
var s = _JSON.stringify(value)
console.log('parse', s)
if(JSON.stringify(value) !== undefined) {
console.log(s)
var _value = _JSON.parse(s)
t.deepEqual(clone(_value), clone(value))
}
else
t.equal(s, undefined)
t.end()
})
})(examples[k], k)

View File

@@ -1,89 +0,0 @@
{
"_args": [
[
"keyv@4.3.2",
"C:\\Users\\Smith\\repos\\game-server-watcher"
]
],
"_from": "keyv@4.3.2",
"_id": "keyv@4.3.2",
"_inBundle": false,
"_integrity": "sha512-kn8WmodVBe12lmHpA6W8OY7SNh6wVR+Z+wZESF4iF5FCazaVXGWOtnbnvX0tMQ1bO+/TmOD9LziuYMvrIIs0xw==",
"_location": "/got/keyv",
"_phantomChildren": {},
"_requested": {
"type": "version",
"registry": true,
"raw": "keyv@4.3.2",
"name": "keyv",
"escapedName": "keyv",
"rawSpec": "4.3.2",
"saveSpec": null,
"fetchSpec": "4.3.2"
},
"_requiredBy": [
"/got/cacheable-request"
],
"_resolved": "https://registry.npmjs.org/keyv/-/keyv-4.3.2.tgz",
"_spec": "4.3.2",
"_where": "C:\\Users\\Smith\\repos\\game-server-watcher",
"author": {
"name": "Jared Wray",
"email": "me@jaredwray.com",
"url": "http://jaredwray.com"
},
"bugs": {
"url": "https://github.com/jaredwray/keyv/issues"
},
"dependencies": {
"compress-brotli": "^1.3.8",
"json-buffer": "3.0.1"
},
"description": "Simple key-value storage with support for multiple backends",
"devDependencies": {
"@keyv/test-suite": "*",
"ava": "^4.3.0",
"eslint-plugin-promise": "^6.0.0",
"nyc": "^15.1.0",
"pify": "5.0.0",
"this": "^1.1.0",
"timekeeper": "^2.2.0",
"tsd": "^0.21.0",
"typescript": "^4.7.4",
"xo": "^0.50.0"
},
"files": [
"src"
],
"homepage": "https://github.com/jaredwray/keyv",
"keywords": [
"key",
"value",
"store",
"cache",
"ttl"
],
"license": "MIT",
"main": "src/index.js",
"name": "keyv",
"repository": {
"type": "git",
"url": "git+https://github.com/jaredwray/keyv.git"
},
"scripts": {
"clean": "rm -rf node_modules && rm -rf .nyc_output && rm -rf coverage.lcov && rm -rf ./test/testdb.sqlite",
"coverage": "nyc report --reporter=text-lcov > coverage.lcov",
"test": "xo && nyc ava --serial"
},
"tsd": {
"directory": "test"
},
"types": "./src/index.d.ts",
"version": "4.3.2",
"xo": {
"rules": {
"unicorn/prefer-module": 0,
"unicorn/prefer-node-protocol": 0
}
}
}

View File

@@ -1,272 +0,0 @@
'use strict';
const EventEmitter = require('events');
const JSONB = require('json-buffer');
const compressBrotli = require('compress-brotli');
const loadStore = options => {
const adapters = {
redis: '@keyv/redis',
rediss: '@keyv/redis',
mongodb: '@keyv/mongo',
mongo: '@keyv/mongo',
sqlite: '@keyv/sqlite',
postgresql: '@keyv/postgres',
postgres: '@keyv/postgres',
mysql: '@keyv/mysql',
etcd: '@keyv/etcd',
offline: '@keyv/offline',
tiered: '@keyv/tiered',
};
if (options.adapter || options.uri) {
const adapter = options.adapter || /^[^:+]*/.exec(options.uri)[0];
return new (require(adapters[adapter]))(options);
}
return new Map();
};
const iterableAdapters = [
'sqlite',
'postgres',
'mysql',
'mongo',
'redis',
'tiered',
];
class Keyv extends EventEmitter {
constructor(uri, {emitErrors = true, ...options} = {}) {
super();
this.opts = {
namespace: 'keyv',
serialize: JSONB.stringify,
deserialize: JSONB.parse,
...((typeof uri === 'string') ? {uri} : uri),
...options,
};
if (!this.opts.store) {
const adapterOptions = {...this.opts};
this.opts.store = loadStore(adapterOptions);
}
if (this.opts.compress) {
const brotli = compressBrotli(this.opts.compress.opts);
this.opts.serialize = async ({value, expires}) => brotli.serialize({value: await brotli.compress(value), expires});
this.opts.deserialize = async data => {
const {value, expires} = brotli.deserialize(data);
return {value: await brotli.decompress(value), expires};
};
}
if (typeof this.opts.store.on === 'function' && emitErrors) {
this.opts.store.on('error', error => this.emit('error', error));
}
this.opts.store.namespace = this.opts.namespace;
const generateIterator = iterator => async function * () {
for await (const [key, raw] of typeof iterator === 'function'
? iterator(this.opts.store.namespace)
: iterator) {
const data = this.opts.deserialize(raw);
if (this.opts.store.namespace && !key.includes(this.opts.store.namespace)) {
continue;
}
if (typeof data.expires === 'number' && Date.now() > data.expires) {
this.delete(key);
continue;
}
yield [this._getKeyUnprefix(key), data.value];
}
};
// Attach iterators
if (typeof this.opts.store[Symbol.iterator] === 'function' && this.opts.store instanceof Map) {
this.iterator = generateIterator(this.opts.store);
} else if (typeof this.opts.store.iterator === 'function' && this.opts.store.opts
&& this._checkIterableAdaptar()) {
this.iterator = generateIterator(this.opts.store.iterator.bind(this.opts.store));
}
}
_checkIterableAdaptar() {
return iterableAdapters.includes(this.opts.store.opts.dialect)
|| iterableAdapters.findIndex(element => this.opts.store.opts.url.includes(element)) >= 0;
}
_getKeyPrefix(key) {
return `${this.opts.namespace}:${key}`;
}
_getKeyPrefixArray(keys) {
return keys.map(key => `${this.opts.namespace}:${key}`);
}
_getKeyUnprefix(key) {
return key
.split(':')
.splice(1)
.join(':');
}
get(key, options) {
const {store} = this.opts;
const isArray = Array.isArray(key);
const keyPrefixed = isArray ? this._getKeyPrefixArray(key) : this._getKeyPrefix(key);
if (isArray && store.getMany === undefined) {
const promises = [];
for (const key of keyPrefixed) {
promises.push(Promise.resolve()
.then(() => store.get(key))
.then(data => (typeof data === 'string') ? this.opts.deserialize(data) : data)
.then(data => {
if (data === undefined || data === null) {
return undefined;
}
if (typeof data.expires === 'number' && Date.now() > data.expires) {
return this.delete(key).then(() => undefined);
}
return (options && options.raw) ? data : data.value;
}),
);
}
return Promise.allSettled(promises)
.then(values => {
const data = [];
for (const value of values) {
data.push(value.value);
}
return data.every(x => x === undefined) ? [] : data;
});
}
return Promise.resolve()
.then(() => isArray ? store.getMany(keyPrefixed) : store.get(keyPrefixed))
.then(data => (typeof data === 'string') ? this.opts.deserialize(data) : data)
.then(data => {
if (data === undefined || data === null) {
return undefined;
}
if (isArray) {
const result = [];
if (data.length === 0) {
return [];
}
for (let row of data) {
if ((typeof row === 'string')) {
row = this.opts.deserialize(row);
}
if (row === undefined || row === null) {
result.push(undefined);
continue;
}
if (typeof row.expires === 'number' && Date.now() > row.expires) {
this.delete(key).then(() => undefined);
result.push(undefined);
} else {
result.push((options && options.raw) ? row : row.value);
}
}
return result.every(x => x === undefined) ? [] : result;
}
if (typeof data.expires === 'number' && Date.now() > data.expires) {
return this.delete(key).then(() => undefined);
}
return (options && options.raw) ? data : data.value;
});
}
set(key, value, ttl) {
const keyPrefixed = this._getKeyPrefix(key);
if (typeof ttl === 'undefined') {
ttl = this.opts.ttl;
}
if (ttl === 0) {
ttl = undefined;
}
const {store} = this.opts;
return Promise.resolve()
.then(() => {
const expires = (typeof ttl === 'number') ? (Date.now() + ttl) : null;
if (typeof value === 'symbol') {
this.emit('error', 'symbol cannot be serialized');
}
value = {value, expires};
return this.opts.serialize(value);
})
.then(value => store.set(keyPrefixed, value, ttl))
.then(() => true);
}
delete(key) {
const {store} = this.opts;
if (Array.isArray(key)) {
const keyPrefixed = this._getKeyPrefixArray(key);
if (store.deleteMany === undefined) {
const promises = [];
for (const key of keyPrefixed) {
promises.push(store.delete(key));
}
return Promise.allSettled(promises)
.then(values => values.every(x => x.value === true));
}
return Promise.resolve()
.then(() => store.deleteMany(keyPrefixed));
}
const keyPrefixed = this._getKeyPrefix(key);
return Promise.resolve()
.then(() => store.delete(keyPrefixed));
}
clear() {
const {store} = this.opts;
return Promise.resolve()
.then(() => store.clear());
}
has(key) {
const keyPrefixed = this._getKeyPrefix(key);
const {store} = this.opts;
return Promise.resolve()
.then(async () => {
if (typeof store.has === 'function') {
return store.has(keyPrefixed);
}
const value = await store.get(keyPrefixed);
return value !== undefined;
});
}
disconnect() {
const {store} = this.opts;
if (typeof store.disconnect === 'function') {
return store.disconnect();
}
}
}
module.exports = Keyv;

View File

@@ -1,10 +0,0 @@
'use strict';
module.exports = object => {
const result = {};
for (const [key, value] of Object.entries(object)) {
result[key.toLowerCase()] = value;
}
return result;
};

View File

@@ -1,9 +0,0 @@
MIT License
Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com)
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

View File

@@ -3,19 +3,28 @@ Object.defineProperty(exports, "__esModule", { value: true });
exports.defaultAdapter = exports.adapters = void 0;
const SECRET_HEADER = "X-Telegram-Bot-Api-Secret-Token";
/** Node.js native 'http' and 'https' modules */
const http = (req, res) => ({
update: new Promise((resolve, reject) => {
const chunks = [];
req.on("data", (chunk) => chunks.push(chunk)).once("end", () => {
const raw = Buffer.concat(chunks).toString("utf-8");
resolve(JSON.parse(raw));
}).once("error", reject);
}),
header: String(req.headers[SECRET_HEADER.toLowerCase()]),
end: () => res.end(),
respond: (json) => res.writeHead(200, { "Content-Type": "application/json" }).end(json),
unauthorized: () => res.writeHead(401).end("secret token is wrong"),
});
const http = (req, res) => {
const secretHeaderFromRequest = req.headers[SECRET_HEADER.toLowerCase()];
return {
update: new Promise((resolve, reject) => {
const chunks = [];
req.on("data", (chunk) => chunks.push(chunk))
.once("end", () => {
const raw = Buffer.concat(chunks).toString("utf-8");
resolve(JSON.parse(raw));
})
.once("error", reject);
}),
header: Array.isArray(secretHeaderFromRequest)
? secretHeaderFromRequest[0]
: secretHeaderFromRequest,
end: () => res.end(),
respond: (json) => res
.writeHead(200, { "Content-Type": "application/json" })
.end(json),
unauthorized: () => res.writeHead(401).end("secret token is wrong"),
};
};
/** express web framework */
const express = (req, res) => ({
update: Promise.resolve(req.body),
@@ -47,7 +56,7 @@ const koa = (ctx) => ({
/** fastify web framework */
const fastify = (req, reply) => ({
update: Promise.resolve(req.body),
header: req.headers[SECRET_HEADER],
header: req.headers[SECRET_HEADER.toLowerCase()],
end: () => reply.status(200).send(),
respond: (json) => reply.send(json),
unauthorized: () => reply.code(401).send("secret token is wrong"),

2
node_modules/grammy/out/mod.js generated vendored
View File

@@ -23,7 +23,7 @@ var platform_node_js_1 = require("./platform.node.js");
Object.defineProperty(exports, "InputFile", { enumerable: true, get: function () { return platform_node_js_1.InputFile; } });
var context_js_1 = require("./context.js");
Object.defineProperty(exports, "Context", { enumerable: true, get: function () { return context_js_1.Context; } });
// Convenience stuff and helpers
// Convenience stuff, built-in plugins, and helpers
__exportStar(require("./convenience/keyboard.js"), exports);
__exportStar(require("./convenience/session.js"), exports);
__exportStar(require("./convenience/webhook.js"), exports);

24
node_modules/grammy/package.json generated vendored
View File

@@ -1,31 +1,31 @@
{
"_args": [
[
"grammy@1.9.0",
"grammy@1.9.2",
"C:\\Users\\Smith\\repos\\game-server-watcher"
]
],
"_from": "grammy@1.9.0",
"_id": "grammy@1.9.0",
"_from": "grammy@1.9.2",
"_id": "grammy@1.9.2",
"_inBundle": false,
"_integrity": "sha512-aIUONCSbUtHVw+YuVB0kQEgoKXbYspihk2a0xFeWa7hk76PbRSBP/n3q3gHq+O4MHy6DsIjP3WrezsA1qyuQ4w==",
"_integrity": "sha512-3u73ov2dJZeUiWKN/N7jgF3XtMFCOcBYsRB+/YjOGVPnk2CDo8n7VLnhH+jznhrqJEgeRB/CqKsP+PIPOUpizA==",
"_location": "/grammy",
"_phantomChildren": {},
"_requested": {
"type": "version",
"registry": true,
"raw": "grammy@1.9.0",
"raw": "grammy@1.9.2",
"name": "grammy",
"escapedName": "grammy",
"rawSpec": "1.9.0",
"rawSpec": "1.9.2",
"saveSpec": null,
"fetchSpec": "1.9.0"
"fetchSpec": "1.9.2"
},
"_requiredBy": [
"/"
],
"_resolved": "https://registry.npmjs.org/grammy/-/grammy-1.9.0.tgz",
"_spec": "1.9.0",
"_resolved": "https://registry.npmjs.org/grammy/-/grammy-1.9.2.tgz",
"_spec": "1.9.2",
"_where": "C:\\Users\\Smith\\repos\\game-server-watcher",
"author": {
"name": "KnorpelSenf"
@@ -34,7 +34,7 @@
"url": "https://github.com/grammyjs/grammY/issues"
},
"dependencies": {
"@grammyjs/types": "^2.8.0",
"@grammyjs/types": "^2.8.1",
"abort-controller": "^3.0.0",
"debug": "^4.3.4",
"node-fetch": "^2.6.7"
@@ -45,7 +45,7 @@
"@types/node": "^12.20.50",
"@types/node-fetch": "^2.6.2",
"all-contributors-cli": "^6.20.0",
"deno2node": "^1.3.0"
"deno2node": "^1.4.0"
},
"engines": {
"node": "^12.20.0 || >=14.13.1"
@@ -76,5 +76,5 @@
"prepare": "npm run backport"
},
"types": "./out/mod.d.ts",
"version": "1.9.0"
"version": "1.9.2"
}

2
node_modules/json-buffer/index.js generated vendored
View File

@@ -49,7 +49,7 @@ exports.parse = function (s) {
return JSON.parse(s, function (key, value) {
if('string' === typeof value) {
if(/^:base64:/.test(value))
return new Buffer(value.substring(8), 'base64')
return Buffer.from(value.substring(8), 'base64')
else
return /^:/.test(value) ? value.substring(1) : value
}

View File

@@ -1,31 +1,32 @@
{
"_args": [
[
"json-buffer@3.0.0",
"json-buffer@3.0.1",
"C:\\Users\\Smith\\repos\\game-server-watcher"
]
],
"_from": "json-buffer@3.0.0",
"_id": "json-buffer@3.0.0",
"_from": "json-buffer@3.0.1",
"_id": "json-buffer@3.0.1",
"_inBundle": false,
"_integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==",
"_integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
"_location": "/json-buffer",
"_phantomChildren": {},
"_requested": {
"type": "version",
"registry": true,
"raw": "json-buffer@3.0.0",
"raw": "json-buffer@3.0.1",
"name": "json-buffer",
"escapedName": "json-buffer",
"rawSpec": "3.0.0",
"rawSpec": "3.0.1",
"saveSpec": null,
"fetchSpec": "3.0.0"
"fetchSpec": "3.0.1"
},
"_requiredBy": [
"/compress-brotli",
"/keyv"
],
"_resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz",
"_spec": "3.0.0",
"_resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
"_spec": "3.0.1",
"_where": "C:\\Users\\Smith\\repos\\game-server-watcher",
"author": {
"name": "Dominic Tarr",
@@ -65,5 +66,5 @@
"android-browser/4.2..latest"
]
},
"version": "3.0.0"
"version": "3.0.1"
}

75
node_modules/keyv/package.json generated vendored
View File

@@ -1,60 +1,62 @@
{
"_args": [
[
"keyv@3.1.0",
"keyv@4.3.3",
"C:\\Users\\Smith\\repos\\game-server-watcher"
]
],
"_from": "keyv@3.1.0",
"_id": "keyv@3.1.0",
"_from": "keyv@4.3.3",
"_id": "keyv@4.3.3",
"_inBundle": false,
"_integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==",
"_integrity": "sha512-AcysI17RvakTh8ir03+a3zJr5r0ovnAH/XTXei/4HIv3bL2K/jzvgivLK9UuI/JbU1aJjM3NSAnVvVVd3n+4DQ==",
"_location": "/keyv",
"_phantomChildren": {},
"_requested": {
"type": "version",
"registry": true,
"raw": "keyv@3.1.0",
"raw": "keyv@4.3.3",
"name": "keyv",
"escapedName": "keyv",
"rawSpec": "3.1.0",
"rawSpec": "4.3.3",
"saveSpec": null,
"fetchSpec": "3.1.0"
"fetchSpec": "4.3.3"
},
"_requiredBy": [
"/cacheable-request"
],
"_resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz",
"_spec": "3.1.0",
"_resolved": "https://registry.npmjs.org/keyv/-/keyv-4.3.3.tgz",
"_spec": "4.3.3",
"_where": "C:\\Users\\Smith\\repos\\game-server-watcher",
"author": {
"name": "Luke Childs",
"email": "lukechilds123@gmail.com",
"url": "http://lukechilds.co.uk"
"name": "Jared Wray",
"email": "me@jaredwray.com",
"url": "http://jaredwray.com"
},
"bugs": {
"url": "https://github.com/lukechilds/keyv/issues"
"url": "https://github.com/jaredwray/keyv/issues"
},
"dependencies": {
"json-buffer": "3.0.0"
"compress-brotli": "^1.3.8",
"json-buffer": "3.0.1"
},
"description": "Simple key-value storage with support for multiple backends",
"devDependencies": {
"@keyv/mongo": "*",
"@keyv/mysql": "*",
"@keyv/postgres": "*",
"@keyv/redis": "*",
"@keyv/sqlite": "*",
"@keyv/test-suite": "*",
"ava": "^0.25.0",
"coveralls": "^3.0.0",
"eslint-config-xo-lukechilds": "^1.0.0",
"nyc": "^11.0.3",
"this": "^1.0.2",
"timekeeper": "^2.0.0",
"xo": "^0.20.1"
"ava": "^4.3.0",
"eslint": "^8.19.0",
"eslint-plugin-promise": "^6.0.0",
"nyc": "^15.1.0",
"pify": "5.0.0",
"this": "^1.1.0",
"timekeeper": "^2.2.0",
"tsd": "^0.22.0",
"typescript": "^4.7.4",
"xo": "^0.50.0"
},
"homepage": "https://github.com/lukechilds/keyv",
"files": [
"src"
],
"homepage": "https://github.com/jaredwray/keyv",
"keywords": [
"key",
"value",
@@ -67,15 +69,22 @@
"name": "keyv",
"repository": {
"type": "git",
"url": "git+https://github.com/lukechilds/keyv.git"
"url": "git+https://github.com/jaredwray/keyv.git"
},
"scripts": {
"coverage": "nyc report --reporter=text-lcov | coveralls",
"test": "xo && nyc ava test/keyv.js",
"test:full": "xo && nyc ava --serial"
"clean": "rm -rf node_modules && rm -rf .nyc_output && rm -rf coverage.lcov && rm -rf ./test/testdb.sqlite",
"coverage": "nyc report --reporter=text-lcov > coverage.lcov",
"test": "xo && nyc ava --serial"
},
"version": "3.1.0",
"tsd": {
"directory": "test"
},
"types": "./src/index.d.ts",
"version": "4.3.3",
"xo": {
"extends": "xo-lukechilds"
"rules": {
"unicorn/prefer-module": 0,
"unicorn/prefer-node-protocol": 0
}
}
}

241
node_modules/keyv/src/index.js generated vendored
View File

@@ -2,102 +2,271 @@
const EventEmitter = require('events');
const JSONB = require('json-buffer');
const compressBrotli = require('compress-brotli');
const loadStore = opts => {
const loadStore = options => {
const adapters = {
redis: '@keyv/redis',
rediss: '@keyv/redis',
mongodb: '@keyv/mongo',
mongo: '@keyv/mongo',
sqlite: '@keyv/sqlite',
postgresql: '@keyv/postgres',
postgres: '@keyv/postgres',
mysql: '@keyv/mysql'
mysql: '@keyv/mysql',
etcd: '@keyv/etcd',
offline: '@keyv/offline',
tiered: '@keyv/tiered',
};
if (opts.adapter || opts.uri) {
const adapter = opts.adapter || /^[^:]*/.exec(opts.uri)[0];
return new (require(adapters[adapter]))(opts);
if (options.adapter || options.uri) {
const adapter = options.adapter || /^[^:+]*/.exec(options.uri)[0];
return new (require(adapters[adapter]))(options);
}
return new Map();
};
const iterableAdapters = [
'sqlite',
'postgres',
'mysql',
'mongo',
'redis',
'tiered',
];
class Keyv extends EventEmitter {
constructor(uri, opts) {
constructor(uri, {emitErrors = true, ...options} = {}) {
super();
this.opts = Object.assign(
{
namespace: 'keyv',
serialize: JSONB.stringify,
deserialize: JSONB.parse
},
(typeof uri === 'string') ? { uri } : uri,
opts
);
this.opts = {
namespace: 'keyv',
serialize: JSONB.stringify,
deserialize: JSONB.parse,
...((typeof uri === 'string') ? {uri} : uri),
...options,
};
if (!this.opts.store) {
const adapterOpts = Object.assign({}, this.opts);
this.opts.store = loadStore(adapterOpts);
const adapterOptions = {...this.opts};
this.opts.store = loadStore(adapterOptions);
}
if (typeof this.opts.store.on === 'function') {
this.opts.store.on('error', err => this.emit('error', err));
if (this.opts.compress) {
const brotli = compressBrotli(this.opts.compress.opts);
this.opts.serialize = async ({value, expires}) => brotli.serialize({value: await brotli.compress(value), expires});
this.opts.deserialize = async data => {
const {value, expires} = brotli.deserialize(data);
return {value: await brotli.decompress(value), expires};
};
}
if (typeof this.opts.store.on === 'function' && emitErrors) {
this.opts.store.on('error', error => this.emit('error', error));
}
this.opts.store.namespace = this.opts.namespace;
const generateIterator = iterator => async function * () {
for await (const [key, raw] of typeof iterator === 'function'
? iterator(this.opts.store.namespace)
: iterator) {
const data = this.opts.deserialize(raw);
if (this.opts.store.namespace && !key.includes(this.opts.store.namespace)) {
continue;
}
if (typeof data.expires === 'number' && Date.now() > data.expires) {
this.delete(key);
continue;
}
yield [this._getKeyUnprefix(key), data.value];
}
};
// Attach iterators
if (typeof this.opts.store[Symbol.iterator] === 'function' && this.opts.store instanceof Map) {
this.iterator = generateIterator(this.opts.store);
} else if (typeof this.opts.store.iterator === 'function' && this.opts.store.opts
&& this._checkIterableAdaptar()) {
this.iterator = generateIterator(this.opts.store.iterator.bind(this.opts.store));
}
}
_checkIterableAdaptar() {
return iterableAdapters.includes(this.opts.store.opts.dialect)
|| iterableAdapters.findIndex(element => this.opts.store.opts.url.includes(element)) >= 0;
}
_getKeyPrefix(key) {
return `${this.opts.namespace}:${key}`;
}
get(key) {
key = this._getKeyPrefix(key);
const store = this.opts.store;
_getKeyPrefixArray(keys) {
return keys.map(key => `${this.opts.namespace}:${key}`);
}
_getKeyUnprefix(key) {
return key
.split(':')
.splice(1)
.join(':');
}
get(key, options) {
const {store} = this.opts;
const isArray = Array.isArray(key);
const keyPrefixed = isArray ? this._getKeyPrefixArray(key) : this._getKeyPrefix(key);
if (isArray && store.getMany === undefined) {
const promises = [];
for (const key of keyPrefixed) {
promises.push(Promise.resolve()
.then(() => store.get(key))
.then(data => (typeof data === 'string') ? this.opts.deserialize(data) : data)
.then(data => {
if (data === undefined || data === null) {
return undefined;
}
if (typeof data.expires === 'number' && Date.now() > data.expires) {
return this.delete(key).then(() => undefined);
}
return (options && options.raw) ? data : data.value;
}),
);
}
return Promise.allSettled(promises)
.then(values => {
const data = [];
for (const value of values) {
data.push(value.value);
}
return data.every(x => x === undefined) ? [] : data;
});
}
return Promise.resolve()
.then(() => store.get(key))
.then(() => isArray ? store.getMany(keyPrefixed) : store.get(keyPrefixed))
.then(data => (typeof data === 'string') ? this.opts.deserialize(data) : data)
.then(data => {
data = (typeof data === 'string') ? this.opts.deserialize(data) : data;
if (data === undefined) {
if (data === undefined || data === null) {
return undefined;
}
if (isArray) {
const result = [];
if (data.length === 0) {
return [];
}
for (let row of data) {
if ((typeof row === 'string')) {
row = this.opts.deserialize(row);
}
if (row === undefined || row === null) {
result.push(undefined);
continue;
}
if (typeof row.expires === 'number' && Date.now() > row.expires) {
this.delete(key).then(() => undefined);
result.push(undefined);
} else {
result.push((options && options.raw) ? row : row.value);
}
}
return result.every(x => x === undefined) ? [] : result;
}
if (typeof data.expires === 'number' && Date.now() > data.expires) {
this.delete(key);
return undefined;
return this.delete(key).then(() => undefined);
}
return data.value;
return (options && options.raw) ? data : data.value;
});
}
set(key, value, ttl) {
key = this._getKeyPrefix(key);
const keyPrefixed = this._getKeyPrefix(key);
if (typeof ttl === 'undefined') {
ttl = this.opts.ttl;
}
if (ttl === 0) {
ttl = undefined;
}
const store = this.opts.store;
const {store} = this.opts;
return Promise.resolve()
.then(() => {
const expires = (typeof ttl === 'number') ? (Date.now() + ttl) : null;
value = { value, expires };
return store.set(key, this.opts.serialize(value), ttl);
if (typeof value === 'symbol') {
this.emit('error', 'symbol cannot be serialized');
}
value = {value, expires};
return this.opts.serialize(value);
})
.then(value => store.set(keyPrefixed, value, ttl))
.then(() => true);
}
delete(key) {
key = this._getKeyPrefix(key);
const store = this.opts.store;
const {store} = this.opts;
if (Array.isArray(key)) {
const keyPrefixed = this._getKeyPrefixArray(key);
if (store.deleteMany === undefined) {
const promises = [];
for (const key of keyPrefixed) {
promises.push(store.delete(key));
}
return Promise.allSettled(promises)
.then(values => values.every(x => x.value === true));
}
return Promise.resolve()
.then(() => store.deleteMany(keyPrefixed));
}
const keyPrefixed = this._getKeyPrefix(key);
return Promise.resolve()
.then(() => store.delete(key));
.then(() => store.delete(keyPrefixed));
}
clear() {
const store = this.opts.store;
const {store} = this.opts;
return Promise.resolve()
.then(() => store.clear());
}
has(key) {
const keyPrefixed = this._getKeyPrefix(key);
const {store} = this.opts;
return Promise.resolve()
.then(async () => {
if (typeof store.has === 'function') {
return store.has(keyPrefixed);
}
const value = await store.get(keyPrefixed);
return value !== undefined;
});
}
disconnect() {
const {store} = this.opts;
if (typeof store.disconnect === 'function') {
return store.disconnect();
}
}
}
module.exports = Keyv;

11
node_modules/lowercase-keys/index.js generated vendored
View File

@@ -1,11 +1,10 @@
'use strict';
module.exports = function (obj) {
var ret = {};
var keys = Object.keys(Object(obj));
module.exports = object => {
const result = {};
for (var i = 0; i < keys.length; i++) {
ret[keys[i].toLowerCase()] = obj[keys[i]];
for (const [key, value] of Object.entries(object)) {
result[key.toLowerCase()] = value;
}
return ret;
return result;
};

20
node_modules/lowercase-keys/license generated vendored
View File

@@ -1,21 +1,9 @@
The MIT License (MIT)
MIT License
Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

View File

@@ -1,33 +1,33 @@
{
"_args": [
[
"lowercase-keys@1.0.1",
"lowercase-keys@2.0.0",
"C:\\Users\\Smith\\repos\\game-server-watcher"
]
],
"_from": "lowercase-keys@1.0.1",
"_id": "lowercase-keys@1.0.1",
"_from": "lowercase-keys@2.0.0",
"_id": "lowercase-keys@2.0.0",
"_inBundle": false,
"_integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==",
"_integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==",
"_location": "/lowercase-keys",
"_phantomChildren": {},
"_requested": {
"type": "version",
"registry": true,
"raw": "lowercase-keys@1.0.1",
"raw": "lowercase-keys@2.0.0",
"name": "lowercase-keys",
"escapedName": "lowercase-keys",
"rawSpec": "1.0.1",
"rawSpec": "2.0.0",
"saveSpec": null,
"fetchSpec": "1.0.1"
"fetchSpec": "2.0.0"
},
"_requiredBy": [
"/gamedig/got",
"/package-json/got",
"/cacheable-request",
"/got",
"/responselike"
],
"_resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz",
"_spec": "1.0.1",
"_resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz",
"_spec": "2.0.0",
"_where": "C:\\Users\\Smith\\repos\\game-server-watcher",
"author": {
"name": "Sindre Sorhus",
@@ -39,13 +39,16 @@
},
"description": "Lowercase the keys of an object",
"devDependencies": {
"ava": "*"
"ava": "^1.4.1",
"tsd": "^0.7.2",
"xo": "^0.24.0"
},
"engines": {
"node": ">=0.10.0"
"node": ">=8"
},
"files": [
"index.js"
"index.js",
"index.d.ts"
],
"homepage": "https://github.com/sindresorhus/lowercase-keys#readme",
"keywords": [
@@ -66,7 +69,7 @@
"url": "git+https://github.com/sindresorhus/lowercase-keys.git"
},
"scripts": {
"test": "ava"
"test": "xo && ava && tsd"
},
"version": "1.0.1"
"version": "2.0.0"
}

View File

@@ -0,0 +1,245 @@
"use strict";
/// <reference lib="es2016"/>
/// <reference lib="es2017.sharedmemory"/>
/// <reference lib="esnext.asynciterable"/>
/// <reference lib="dom"/>
Object.defineProperty(exports, "__esModule", { value: true });
// TODO: Use the `URL` global when targeting Node.js 10
// tslint:disable-next-line
const URLGlobal = typeof URL === 'undefined' ? require('url').URL : URL;
const toString = Object.prototype.toString;
const isOfType = (type) => (value) => typeof value === type;
const isBuffer = (input) => !is.nullOrUndefined(input) && !is.nullOrUndefined(input.constructor) && is.function_(input.constructor.isBuffer) && input.constructor.isBuffer(input);
const getObjectType = (value) => {
const objectName = toString.call(value).slice(8, -1);
if (objectName) {
return objectName;
}
return null;
};
const isObjectOfType = (type) => (value) => getObjectType(value) === type;
function is(value) {
switch (value) {
case null:
return "null" /* null */;
case true:
case false:
return "boolean" /* boolean */;
default:
}
switch (typeof value) {
case 'undefined':
return "undefined" /* undefined */;
case 'string':
return "string" /* string */;
case 'number':
return "number" /* number */;
case 'symbol':
return "symbol" /* symbol */;
default:
}
if (is.function_(value)) {
return "Function" /* Function */;
}
if (is.observable(value)) {
return "Observable" /* Observable */;
}
if (Array.isArray(value)) {
return "Array" /* Array */;
}
if (isBuffer(value)) {
return "Buffer" /* Buffer */;
}
const tagType = getObjectType(value);
if (tagType) {
return tagType;
}
if (value instanceof String || value instanceof Boolean || value instanceof Number) {
throw new TypeError('Please don\'t use object wrappers for primitive types');
}
return "Object" /* Object */;
}
(function (is) {
// tslint:disable-next-line:strict-type-predicates
const isObject = (value) => typeof value === 'object';
// tslint:disable:variable-name
is.undefined = isOfType('undefined');
is.string = isOfType('string');
is.number = isOfType('number');
is.function_ = isOfType('function');
// tslint:disable-next-line:strict-type-predicates
is.null_ = (value) => value === null;
is.class_ = (value) => is.function_(value) && value.toString().startsWith('class ');
is.boolean = (value) => value === true || value === false;
is.symbol = isOfType('symbol');
// tslint:enable:variable-name
is.numericString = (value) => is.string(value) && value.length > 0 && !Number.isNaN(Number(value));
is.array = Array.isArray;
is.buffer = isBuffer;
is.nullOrUndefined = (value) => is.null_(value) || is.undefined(value);
is.object = (value) => !is.nullOrUndefined(value) && (is.function_(value) || isObject(value));
is.iterable = (value) => !is.nullOrUndefined(value) && is.function_(value[Symbol.iterator]);
is.asyncIterable = (value) => !is.nullOrUndefined(value) && is.function_(value[Symbol.asyncIterator]);
is.generator = (value) => is.iterable(value) && is.function_(value.next) && is.function_(value.throw);
is.nativePromise = (value) => isObjectOfType("Promise" /* Promise */)(value);
const hasPromiseAPI = (value) => !is.null_(value) &&
isObject(value) &&
is.function_(value.then) &&
is.function_(value.catch);
is.promise = (value) => is.nativePromise(value) || hasPromiseAPI(value);
is.generatorFunction = isObjectOfType("GeneratorFunction" /* GeneratorFunction */);
is.asyncFunction = isObjectOfType("AsyncFunction" /* AsyncFunction */);
is.boundFunction = (value) => is.function_(value) && !value.hasOwnProperty('prototype');
is.regExp = isObjectOfType("RegExp" /* RegExp */);
is.date = isObjectOfType("Date" /* Date */);
is.error = isObjectOfType("Error" /* Error */);
is.map = (value) => isObjectOfType("Map" /* Map */)(value);
is.set = (value) => isObjectOfType("Set" /* Set */)(value);
is.weakMap = (value) => isObjectOfType("WeakMap" /* WeakMap */)(value);
is.weakSet = (value) => isObjectOfType("WeakSet" /* WeakSet */)(value);
is.int8Array = isObjectOfType("Int8Array" /* Int8Array */);
is.uint8Array = isObjectOfType("Uint8Array" /* Uint8Array */);
is.uint8ClampedArray = isObjectOfType("Uint8ClampedArray" /* Uint8ClampedArray */);
is.int16Array = isObjectOfType("Int16Array" /* Int16Array */);
is.uint16Array = isObjectOfType("Uint16Array" /* Uint16Array */);
is.int32Array = isObjectOfType("Int32Array" /* Int32Array */);
is.uint32Array = isObjectOfType("Uint32Array" /* Uint32Array */);
is.float32Array = isObjectOfType("Float32Array" /* Float32Array */);
is.float64Array = isObjectOfType("Float64Array" /* Float64Array */);
is.arrayBuffer = isObjectOfType("ArrayBuffer" /* ArrayBuffer */);
is.sharedArrayBuffer = isObjectOfType("SharedArrayBuffer" /* SharedArrayBuffer */);
is.dataView = isObjectOfType("DataView" /* DataView */);
is.directInstanceOf = (instance, klass) => Object.getPrototypeOf(instance) === klass.prototype;
is.urlInstance = (value) => isObjectOfType("URL" /* URL */)(value);
is.urlString = (value) => {
if (!is.string(value)) {
return false;
}
try {
new URLGlobal(value); // tslint:disable-line no-unused-expression
return true;
}
catch (_a) {
return false;
}
};
is.truthy = (value) => Boolean(value);
is.falsy = (value) => !value;
is.nan = (value) => Number.isNaN(value);
const primitiveTypes = new Set([
'undefined',
'string',
'number',
'boolean',
'symbol'
]);
is.primitive = (value) => is.null_(value) || primitiveTypes.has(typeof value);
is.integer = (value) => Number.isInteger(value);
is.safeInteger = (value) => Number.isSafeInteger(value);
is.plainObject = (value) => {
// From: https://github.com/sindresorhus/is-plain-obj/blob/master/index.js
let prototype;
return getObjectType(value) === "Object" /* Object */ &&
(prototype = Object.getPrototypeOf(value), prototype === null || // tslint:disable-line:ban-comma-operator
prototype === Object.getPrototypeOf({}));
};
const typedArrayTypes = new Set([
"Int8Array" /* Int8Array */,
"Uint8Array" /* Uint8Array */,
"Uint8ClampedArray" /* Uint8ClampedArray */,
"Int16Array" /* Int16Array */,
"Uint16Array" /* Uint16Array */,
"Int32Array" /* Int32Array */,
"Uint32Array" /* Uint32Array */,
"Float32Array" /* Float32Array */,
"Float64Array" /* Float64Array */
]);
is.typedArray = (value) => {
const objectType = getObjectType(value);
if (objectType === null) {
return false;
}
return typedArrayTypes.has(objectType);
};
const isValidLength = (value) => is.safeInteger(value) && value > -1;
is.arrayLike = (value) => !is.nullOrUndefined(value) && !is.function_(value) && isValidLength(value.length);
is.inRange = (value, range) => {
if (is.number(range)) {
return value >= Math.min(0, range) && value <= Math.max(range, 0);
}
if (is.array(range) && range.length === 2) {
return value >= Math.min(...range) && value <= Math.max(...range);
}
throw new TypeError(`Invalid range: ${JSON.stringify(range)}`);
};
const NODE_TYPE_ELEMENT = 1;
const DOM_PROPERTIES_TO_CHECK = [
'innerHTML',
'ownerDocument',
'style',
'attributes',
'nodeValue'
];
is.domElement = (value) => is.object(value) && value.nodeType === NODE_TYPE_ELEMENT && is.string(value.nodeName) &&
!is.plainObject(value) && DOM_PROPERTIES_TO_CHECK.every(property => property in value);
is.observable = (value) => {
if (!value) {
return false;
}
if (value[Symbol.observable] && value === value[Symbol.observable]()) {
return true;
}
if (value['@@observable'] && value === value['@@observable']()) {
return true;
}
return false;
};
is.nodeStream = (value) => !is.nullOrUndefined(value) && isObject(value) && is.function_(value.pipe) && !is.observable(value);
is.infinite = (value) => value === Infinity || value === -Infinity;
const isAbsoluteMod2 = (rem) => (value) => is.integer(value) && Math.abs(value % 2) === rem;
is.even = isAbsoluteMod2(0);
is.odd = isAbsoluteMod2(1);
const isWhiteSpaceString = (value) => is.string(value) && /\S/.test(value) === false;
is.emptyArray = (value) => is.array(value) && value.length === 0;
is.nonEmptyArray = (value) => is.array(value) && value.length > 0;
is.emptyString = (value) => is.string(value) && value.length === 0;
is.nonEmptyString = (value) => is.string(value) && value.length > 0;
is.emptyStringOrWhitespace = (value) => is.emptyString(value) || isWhiteSpaceString(value);
is.emptyObject = (value) => is.object(value) && !is.map(value) && !is.set(value) && Object.keys(value).length === 0;
is.nonEmptyObject = (value) => is.object(value) && !is.map(value) && !is.set(value) && Object.keys(value).length > 0;
is.emptySet = (value) => is.set(value) && value.size === 0;
is.nonEmptySet = (value) => is.set(value) && value.size > 0;
is.emptyMap = (value) => is.map(value) && value.size === 0;
is.nonEmptyMap = (value) => is.map(value) && value.size > 0;
const predicateOnArray = (method, predicate, values) => {
if (is.function_(predicate) === false) {
throw new TypeError(`Invalid predicate: ${JSON.stringify(predicate)}`);
}
if (values.length === 0) {
throw new TypeError('Invalid number of values');
}
return method.call(values, predicate);
};
// tslint:disable variable-name
is.any = (predicate, ...values) => predicateOnArray(Array.prototype.some, predicate, values);
is.all = (predicate, ...values) => predicateOnArray(Array.prototype.every, predicate, values);
// tslint:enable variable-name
})(is || (is = {}));
// Some few keywords are reserved, but we'll populate them for Node.js users
// See https://github.com/Microsoft/TypeScript/issues/2536
Object.defineProperties(is, {
class: {
value: is.class_
},
function: {
value: is.function_
},
null: {
value: is.null_
}
});
exports.default = is;
// For CommonJS default export support
module.exports = is;
module.exports.default = is;
//# sourceMappingURL=index.js.map

View File

@@ -0,0 +1,99 @@
{
"_args": [
[
"@sindresorhus/is@0.14.0",
"C:\\Users\\Smith\\repos\\game-server-watcher"
]
],
"_from": "@sindresorhus/is@0.14.0",
"_id": "@sindresorhus/is@0.14.0",
"_inBundle": false,
"_integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==",
"_location": "/node8-gamedig/@sindresorhus/is",
"_phantomChildren": {},
"_requested": {
"type": "version",
"registry": true,
"raw": "@sindresorhus/is@0.14.0",
"name": "@sindresorhus/is",
"escapedName": "@sindresorhus%2fis",
"scope": "@sindresorhus",
"rawSpec": "0.14.0",
"saveSpec": null,
"fetchSpec": "0.14.0"
},
"_requiredBy": [
"/node8-gamedig/got"
],
"_resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz",
"_spec": "0.14.0",
"_where": "C:\\Users\\Smith\\repos\\game-server-watcher",
"author": {
"name": "Sindre Sorhus",
"email": "sindresorhus@gmail.com",
"url": "sindresorhus.com"
},
"bugs": {
"url": "https://github.com/sindresorhus/is/issues"
},
"description": "Type check values: `is.string('🦄') //=> true`",
"devDependencies": {
"@sindresorhus/tsconfig": "^0.1.0",
"@types/jsdom": "^11.12.0",
"@types/node": "^10.12.10",
"@types/tempy": "^0.2.0",
"@types/zen-observable": "^0.8.0",
"ava": "^0.25.0",
"del-cli": "^1.1.0",
"jsdom": "^11.6.2",
"rxjs": "^6.3.3",
"tempy": "^0.2.1",
"tslint": "^5.9.1",
"tslint-xo": "^0.10.0",
"typescript": "^3.2.1",
"zen-observable": "^0.8.8"
},
"engines": {
"node": ">=6"
},
"files": [
"dist"
],
"homepage": "https://github.com/sindresorhus/is#readme",
"keywords": [
"type",
"types",
"is",
"check",
"checking",
"validate",
"validation",
"utility",
"util",
"typeof",
"instanceof",
"object",
"assert",
"assertion",
"test",
"kind",
"primitive",
"verify",
"compare"
],
"license": "MIT",
"main": "dist/index.js",
"name": "@sindresorhus/is",
"repository": {
"type": "git",
"url": "git+https://github.com/sindresorhus/is.git"
},
"scripts": {
"build": "del dist && tsc",
"lint": "tslint --format stylish --project .",
"prepublish": "npm run build && del dist/tests",
"test": "npm run lint && npm run build && ava dist/tests"
},
"types": "dist/index.d.ts",
"version": "0.14.0"
}

View File

@@ -0,0 +1,78 @@
{
"_args": [
[
"@szmarczak/http-timer@1.1.2",
"C:\\Users\\Smith\\repos\\game-server-watcher"
]
],
"_from": "@szmarczak/http-timer@1.1.2",
"_id": "@szmarczak/http-timer@1.1.2",
"_inBundle": false,
"_integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==",
"_location": "/node8-gamedig/@szmarczak/http-timer",
"_phantomChildren": {},
"_requested": {
"type": "version",
"registry": true,
"raw": "@szmarczak/http-timer@1.1.2",
"name": "@szmarczak/http-timer",
"escapedName": "@szmarczak%2fhttp-timer",
"scope": "@szmarczak",
"rawSpec": "1.1.2",
"saveSpec": null,
"fetchSpec": "1.1.2"
},
"_requiredBy": [
"/node8-gamedig/got"
],
"_resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz",
"_spec": "1.1.2",
"_where": "C:\\Users\\Smith\\repos\\game-server-watcher",
"author": {
"name": "Szymon Marczak"
},
"bugs": {
"url": "https://github.com/szmarczak/http-timer/issues"
},
"dependencies": {
"defer-to-connect": "^1.0.1"
},
"description": "Timings for HTTP requests",
"devDependencies": {
"ava": "^0.25.0",
"coveralls": "^3.0.2",
"nyc": "^12.0.2",
"p-event": "^2.1.0",
"xo": "^0.22.0"
},
"engines": {
"node": ">=6"
},
"files": [
"source"
],
"homepage": "https://github.com/szmarczak/http-timer#readme",
"keywords": [
"http",
"https",
"timer",
"timings"
],
"license": "MIT",
"main": "source",
"name": "@szmarczak/http-timer",
"repository": {
"type": "git",
"url": "git+https://github.com/szmarczak/http-timer.git"
},
"scripts": {
"coveralls": "nyc report --reporter=text-lcov | coveralls",
"test": "xo && nyc ava"
},
"version": "1.1.2",
"xo": {
"rules": {
"unicorn/filename-case": "camelCase"
}
}
}

View File

@@ -9,7 +9,7 @@
"_id": "get-stream@5.2.0",
"_inBundle": false,
"_integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
"_location": "/cacheable-request/get-stream",
"_location": "/node8-gamedig/cacheable-request/get-stream",
"_phantomChildren": {},
"_requested": {
"type": "version",
@@ -22,7 +22,7 @@
"fetchSpec": "5.2.0"
},
"_requiredBy": [
"/cacheable-request"
"/node8-gamedig/cacheable-request"
],
"_resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
"_spec": "5.2.0",

View File

@@ -9,7 +9,7 @@
"_id": "lowercase-keys@2.0.0",
"_inBundle": false,
"_integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==",
"_location": "/cacheable-request/lowercase-keys",
"_location": "/node8-gamedig/cacheable-request/lowercase-keys",
"_phantomChildren": {},
"_requested": {
"type": "version",
@@ -22,7 +22,7 @@
"fetchSpec": "2.0.0"
},
"_requiredBy": [
"/cacheable-request"
"/node8-gamedig/cacheable-request"
],
"_resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz",
"_spec": "2.0.0",

View File

@@ -1,31 +1,33 @@
{
"_args": [
[
"cacheable-request@7.0.2",
"cacheable-request@6.1.0",
"C:\\Users\\Smith\\repos\\game-server-watcher"
]
],
"_from": "cacheable-request@7.0.2",
"_id": "cacheable-request@7.0.2",
"_from": "cacheable-request@6.1.0",
"_id": "cacheable-request@6.1.0",
"_inBundle": false,
"_integrity": "sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew==",
"_location": "/got/cacheable-request",
"_phantomChildren": {},
"_integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==",
"_location": "/node8-gamedig/cacheable-request",
"_phantomChildren": {
"pump": "3.0.0"
},
"_requested": {
"type": "version",
"registry": true,
"raw": "cacheable-request@7.0.2",
"raw": "cacheable-request@6.1.0",
"name": "cacheable-request",
"escapedName": "cacheable-request",
"rawSpec": "7.0.2",
"rawSpec": "6.1.0",
"saveSpec": null,
"fetchSpec": "7.0.2"
"fetchSpec": "6.1.0"
},
"_requiredBy": [
"/got"
"/node8-gamedig/got"
],
"_resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.2.tgz",
"_spec": "7.0.2",
"_resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz",
"_spec": "6.1.0",
"_where": "C:\\Users\\Smith\\repos\\game-server-watcher",
"author": {
"name": "Luke Childs",
@@ -39,10 +41,10 @@
"clone-response": "^1.0.2",
"get-stream": "^5.1.0",
"http-cache-semantics": "^4.0.0",
"keyv": "^4.0.0",
"keyv": "^3.0.0",
"lowercase-keys": "^2.0.0",
"normalize-url": "^6.0.1",
"responselike": "^2.0.0"
"normalize-url": "^4.1.0",
"responselike": "^1.0.2"
},
"description": "Wrap native HTTP requests with RFC compliant cache support",
"devDependencies": {
@@ -88,7 +90,7 @@
"coverage": "nyc report --reporter=text-lcov | coveralls",
"test": "xo && nyc ava"
},
"version": "7.0.2",
"version": "6.1.0",
"xo": {
"extends": "xo-lukechilds"
}

View File

@@ -0,0 +1,29 @@
'use strict';
const PassThrough = require('stream').PassThrough;
const zlib = require('zlib');
const mimicResponse = require('mimic-response');
module.exports = response => {
// TODO: Use Array#includes when targeting Node.js 6
if (['gzip', 'deflate'].indexOf(response.headers['content-encoding']) === -1) {
return response;
}
const unzip = zlib.createUnzip();
const stream = new PassThrough();
mimicResponse(response, stream);
unzip.on('error', err => {
if (err.code === 'Z_BUF_ERROR') {
stream.end();
return;
}
stream.emit('error', err);
});
response.pipe(unzip).pipe(stream);
return stream;
};

View File

@@ -0,0 +1,21 @@
`The MIT License (MIT)
Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

View File

@@ -1,60 +1,51 @@
{
"_args": [
[
"decompress-response@6.0.0",
"decompress-response@3.3.0",
"C:\\Users\\Smith\\repos\\game-server-watcher"
]
],
"_from": "decompress-response@6.0.0",
"_id": "decompress-response@6.0.0",
"_from": "decompress-response@3.3.0",
"_id": "decompress-response@3.3.0",
"_inBundle": false,
"_integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==",
"_location": "/got/decompress-response",
"_integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==",
"_location": "/node8-gamedig/decompress-response",
"_phantomChildren": {},
"_requested": {
"type": "version",
"registry": true,
"raw": "decompress-response@6.0.0",
"raw": "decompress-response@3.3.0",
"name": "decompress-response",
"escapedName": "decompress-response",
"rawSpec": "6.0.0",
"rawSpec": "3.3.0",
"saveSpec": null,
"fetchSpec": "6.0.0"
"fetchSpec": "3.3.0"
},
"_requiredBy": [
"/got"
"/node8-gamedig/got"
],
"_resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz",
"_spec": "6.0.0",
"_resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz",
"_spec": "3.3.0",
"_where": "C:\\Users\\Smith\\repos\\game-server-watcher",
"author": {
"name": "Sindre Sorhus",
"email": "sindresorhus@gmail.com",
"url": "https://sindresorhus.com"
},
"bugs": {
"url": "https://github.com/sindresorhus/decompress-response/issues"
},
"dependencies": {
"mimic-response": "^3.1.0"
"mimic-response": "^1.0.0"
},
"description": "Decompress a HTTP response if needed",
"devDependencies": {
"@types/node": "^14.0.1",
"ava": "^2.2.0",
"get-stream": "^5.0.0",
"pify": "^5.0.0",
"tsd": "^0.11.0",
"xo": "^0.30.0"
"ava": "*",
"get-stream": "^3.0.0",
"pify": "^3.0.0",
"xo": "*"
},
"engines": {
"node": ">=10"
"node": ">=4"
},
"files": [
"index.js",
"index.d.ts"
"index.js"
],
"funding": "https://github.com/sponsors/sindresorhus",
"homepage": "https://github.com/sindresorhus/decompress-response#readme",
"keywords": [
"decompress",
@@ -70,22 +61,28 @@
"incoming",
"message",
"stream",
"compressed",
"brotli"
"compressed"
],
"license": "MIT",
"maintainers": [
{
"name": "Sindre Sorhus",
"email": "sindresorhus@gmail.com",
"url": "sindresorhus.com"
},
{
"name": "Vsevolod Strukchinsky",
"email": "floatdrop@gmail.com",
"url": "github.com/floatdrop"
}
],
"name": "decompress-response",
"repository": {
"type": "git",
"url": "git+https://github.com/sindresorhus/decompress-response.git"
},
"scripts": {
"test": "xo && ava && tsd"
"test": "xo && ava"
},
"version": "6.0.0",
"xo": {
"rules": {
"@typescript-eslint/prefer-readonly-parameter-types": "off"
}
}
"version": "3.3.0"
}

View File

@@ -1,67 +1,70 @@
{
"_args": [
[
"defer-to-connect@2.0.1",
"defer-to-connect@1.1.3",
"C:\\Users\\Smith\\repos\\game-server-watcher"
]
],
"_from": "defer-to-connect@2.0.1",
"_id": "defer-to-connect@2.0.1",
"_from": "defer-to-connect@1.1.3",
"_id": "defer-to-connect@1.1.3",
"_inBundle": false,
"_integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==",
"_location": "/got/defer-to-connect",
"_integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==",
"_location": "/node8-gamedig/defer-to-connect",
"_phantomChildren": {},
"_requested": {
"type": "version",
"registry": true,
"raw": "defer-to-connect@2.0.1",
"raw": "defer-to-connect@1.1.3",
"name": "defer-to-connect",
"escapedName": "defer-to-connect",
"rawSpec": "2.0.1",
"rawSpec": "1.1.3",
"saveSpec": null,
"fetchSpec": "2.0.1"
"fetchSpec": "1.1.3"
},
"_requiredBy": [
"/got/@szmarczak/http-timer"
"/node8-gamedig/@szmarczak/http-timer"
],
"_resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz",
"_spec": "2.0.1",
"_resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz",
"_spec": "1.1.3",
"_where": "C:\\Users\\Smith\\repos\\game-server-watcher",
"author": {
"name": "Szymon Marczak"
},
"ava": {
"typescript": {
"rewritePaths": {
"tests/": "dist/tests/"
}
}
"babel": false,
"compileEnhancements": false,
"extensions": [
"ts"
],
"require": [
"ts-node/register"
],
"files": [
"!dist/tests/test.d.ts"
]
},
"bugs": {
"url": "https://github.com/szmarczak/defer-to-connect/issues"
},
"description": "The safe way to handle the `connect` socket event",
"devDependencies": {
"@ava/typescript": "^1.1.0",
"@sindresorhus/tsconfig": "^0.7.0",
"@types/node": "^13.5.0",
"@typescript-eslint/eslint-plugin": "^2.18.0",
"@typescript-eslint/parser": "^2.18.0",
"ava": "^3.2.0",
"coveralls": "^3.0.9",
"@sindresorhus/tsconfig": "^0.5.0",
"@types/node": "^12.12.4",
"@typescript-eslint/eslint-plugin": "^1.11.0",
"@typescript-eslint/parser": "^1.11.0",
"ava": "^2.1.0",
"coveralls": "^3.0.7",
"create-cert": "^1.0.6",
"del-cli": "^3.0.0",
"eslint-config-xo-typescript": "^0.24.1",
"nyc": "^15.0.0",
"eslint-config-xo-typescript": "^0.15.0",
"nyc": "^14.0.0",
"p-event": "^4.1.0",
"typescript": "^3.7.5",
"ts-node": "^8.1.0",
"typescript": "^3.6.4",
"xo": "^0.25.3"
},
"engines": {
"node": ">=10"
},
"files": [
"dist/source"
"dist"
],
"homepage": "https://github.com/szmarczak/defer-to-connect#readme",
"keywords": [
@@ -70,12 +73,9 @@
"event"
],
"license": "MIT",
"main": "dist/source",
"main": "dist",
"name": "defer-to-connect",
"nyc": {
"include": [
"dist/source"
],
"extension": [
".ts"
]
@@ -87,15 +87,18 @@
"scripts": {
"build": "del-cli dist && tsc",
"coveralls": "nyc report --reporter=text-lcov | coveralls",
"prepare": "npm run build",
"test": "xo && tsc --noEmit && nyc ava"
"prepublishOnly": "npm run build",
"test": "xo && nyc ava"
},
"types": "dist/source/index.d.ts",
"version": "2.0.1",
"types": "dist",
"version": "1.1.3",
"xo": {
"extends": "xo-typescript",
"extensions": [
"ts"
]
],
"rules": {
"ava/no-ignored-test-files": "off"
}
}
}

View File

@@ -0,0 +1,51 @@
'use strict';
const {PassThrough} = require('stream');
module.exports = options => {
options = Object.assign({}, options);
const {array} = options;
let {encoding} = options;
const buffer = encoding === 'buffer';
let objectMode = false;
if (array) {
objectMode = !(encoding || buffer);
} else {
encoding = encoding || 'utf8';
}
if (buffer) {
encoding = null;
}
let len = 0;
const ret = [];
const stream = new PassThrough({objectMode});
if (encoding) {
stream.setEncoding(encoding);
}
stream.on('data', chunk => {
ret.push(chunk);
if (objectMode) {
len = ret.length;
} else {
len += chunk.length;
}
});
stream.getBufferedValue = () => {
if (array) {
return ret;
}
return buffer ? Buffer.concat(ret, len) : ret.join('');
};
stream.getBufferedLength = () => len;
return stream;
};

View File

@@ -1,5 +1,4 @@
'use strict';
const {constants: BufferConstants} = require('buffer');
const pump = require('pump');
const bufferStream = require('./buffer-stream');
@@ -10,26 +9,21 @@ class MaxBufferError extends Error {
}
}
async function getStream(inputStream, options) {
function getStream(inputStream, options) {
if (!inputStream) {
return Promise.reject(new Error('Expected a stream'));
}
options = {
maxBuffer: Infinity,
...options
};
options = Object.assign({maxBuffer: Infinity}, options);
const {maxBuffer} = options;
let stream;
await new Promise((resolve, reject) => {
return new Promise((resolve, reject) => {
const rejectPromise = error => {
// Don't retrieve an oversized buffer.
if (error && stream.getBufferedLength() <= BufferConstants.MAX_LENGTH) {
if (error) { // A null check
error.bufferedData = stream.getBufferedValue();
}
reject(error);
};
@@ -47,14 +41,10 @@ async function getStream(inputStream, options) {
rejectPromise(new MaxBufferError());
}
});
});
return stream.getBufferedValue();
}).then(() => stream.getBufferedValue());
}
module.exports = getStream;
// TODO: Remove this for the next major release
module.exports.default = getStream;
module.exports.buffer = (stream, options) => getStream(stream, {...options, encoding: 'buffer'});
module.exports.array = (stream, options) => getStream(stream, {...options, array: true});
module.exports.buffer = (stream, options) => getStream(stream, Object.assign({}, options, {encoding: 'buffer'}));
module.exports.array = (stream, options) => getStream(stream, Object.assign({}, options, {array: true}));
module.exports.MaxBufferError = MaxBufferError;

View File

@@ -1,36 +1,36 @@
{
"_args": [
[
"get-stream@5.2.0",
"get-stream@4.1.0",
"C:\\Users\\Smith\\repos\\game-server-watcher"
]
],
"_from": "get-stream@5.2.0",
"_id": "get-stream@5.2.0",
"_from": "get-stream@4.1.0",
"_id": "get-stream@4.1.0",
"_inBundle": false,
"_integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
"_location": "/got/get-stream",
"_integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
"_location": "/node8-gamedig/get-stream",
"_phantomChildren": {},
"_requested": {
"type": "version",
"registry": true,
"raw": "get-stream@5.2.0",
"raw": "get-stream@4.1.0",
"name": "get-stream",
"escapedName": "get-stream",
"rawSpec": "5.2.0",
"rawSpec": "4.1.0",
"saveSpec": null,
"fetchSpec": "5.2.0"
"fetchSpec": "4.1.0"
},
"_requiredBy": [
"/got/cacheable-request"
"/node8-gamedig/got"
],
"_resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
"_spec": "5.2.0",
"_resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
"_spec": "4.1.0",
"_where": "C:\\Users\\Smith\\repos\\game-server-watcher",
"author": {
"name": "Sindre Sorhus",
"email": "sindresorhus@gmail.com",
"url": "https://sindresorhus.com"
"url": "sindresorhus.com"
},
"bugs": {
"url": "https://github.com/sindresorhus/get-stream/issues"
@@ -40,21 +40,17 @@
},
"description": "Get a stream as a string, buffer, or array",
"devDependencies": {
"@types/node": "^12.0.7",
"ava": "^2.0.0",
"into-stream": "^5.0.0",
"tsd": "^0.7.2",
"xo": "^0.24.0"
"ava": "*",
"into-stream": "^3.0.0",
"xo": "*"
},
"engines": {
"node": ">=8"
"node": ">=6"
},
"files": [
"index.js",
"index.d.ts",
"buffer-stream.js"
],
"funding": "https://github.com/sponsors/sindresorhus",
"homepage": "https://github.com/sindresorhus/get-stream#readme",
"keywords": [
"get",
@@ -79,7 +75,7 @@
"url": "git+https://github.com/sindresorhus/get-stream.git"
},
"scripts": {
"test": "xo && ava && tsd"
"test": "xo && ava"
},
"version": "5.2.0"
"version": "4.1.0"
}

View File

@@ -49,7 +49,7 @@ exports.parse = function (s) {
return JSON.parse(s, function (key, value) {
if('string' === typeof value) {
if(/^:base64:/.test(value))
return Buffer.from(value.substring(8), 'base64')
return new Buffer(value.substring(8), 'base64')
else
return /^:/.test(value) ? value.substring(1) : value
}

View File

@@ -1,31 +1,31 @@
{
"_args": [
[
"json-buffer@3.0.1",
"json-buffer@3.0.0",
"C:\\Users\\Smith\\repos\\game-server-watcher"
]
],
"_from": "json-buffer@3.0.1",
"_id": "json-buffer@3.0.1",
"_from": "json-buffer@3.0.0",
"_id": "json-buffer@3.0.0",
"_inBundle": false,
"_integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
"_location": "/got/json-buffer",
"_integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==",
"_location": "/node8-gamedig/json-buffer",
"_phantomChildren": {},
"_requested": {
"type": "version",
"registry": true,
"raw": "json-buffer@3.0.1",
"raw": "json-buffer@3.0.0",
"name": "json-buffer",
"escapedName": "json-buffer",
"rawSpec": "3.0.1",
"rawSpec": "3.0.0",
"saveSpec": null,
"fetchSpec": "3.0.1"
"fetchSpec": "3.0.0"
},
"_requiredBy": [
"/got/keyv"
"/node8-gamedig/keyv"
],
"_resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
"_spec": "3.0.1",
"_resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz",
"_spec": "3.0.0",
"_where": "C:\\Users\\Smith\\repos\\game-server-watcher",
"author": {
"name": "Dominic Tarr",
@@ -65,5 +65,5 @@
"android-browser/4.2..latest"
]
},
"version": "3.0.1"
"version": "3.0.0"
}

View File

@@ -7,8 +7,8 @@ function clone (o) {
}
var examples = {
simple: { foo: [], bar: {}, baz: Buffer.from('some binary data') },
just_buffer: Buffer.from('JUST A BUFFER'),
simple: { foo: [], bar: {}, baz: new Buffer('some binary data') },
just_buffer: new Buffer('JUST A BUFFER'),
all_types: {
string:'hello',
number: 3145,
@@ -18,15 +18,15 @@ var examples = {
boolean: true,
boolean2: false
},
foo: Buffer.from('foo'),
foo2: Buffer.from('foo2'),
foo: new Buffer('foo'),
foo2: new Buffer('foo2'),
escape: {
buffer: Buffer.from('x'),
string: _JSON.stringify(Buffer.from('x'))
buffer: new Buffer('x'),
string: _JSON.stringify(new Buffer('x'))
},
escape2: {
buffer: Buffer.from('x'),
string: ':base64:'+ Buffer.from('x').toString('base64')
buffer: new Buffer('x'),
string: ':base64:'+ new Buffer('x').toString('base64')
},
undefined: {
empty: undefined, test: true

View File

@@ -0,0 +1,81 @@
{
"_args": [
[
"keyv@3.1.0",
"C:\\Users\\Smith\\repos\\game-server-watcher"
]
],
"_from": "keyv@3.1.0",
"_id": "keyv@3.1.0",
"_inBundle": false,
"_integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==",
"_location": "/node8-gamedig/keyv",
"_phantomChildren": {},
"_requested": {
"type": "version",
"registry": true,
"raw": "keyv@3.1.0",
"name": "keyv",
"escapedName": "keyv",
"rawSpec": "3.1.0",
"saveSpec": null,
"fetchSpec": "3.1.0"
},
"_requiredBy": [
"/node8-gamedig/cacheable-request"
],
"_resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz",
"_spec": "3.1.0",
"_where": "C:\\Users\\Smith\\repos\\game-server-watcher",
"author": {
"name": "Luke Childs",
"email": "lukechilds123@gmail.com",
"url": "http://lukechilds.co.uk"
},
"bugs": {
"url": "https://github.com/lukechilds/keyv/issues"
},
"dependencies": {
"json-buffer": "3.0.0"
},
"description": "Simple key-value storage with support for multiple backends",
"devDependencies": {
"@keyv/mongo": "*",
"@keyv/mysql": "*",
"@keyv/postgres": "*",
"@keyv/redis": "*",
"@keyv/sqlite": "*",
"@keyv/test-suite": "*",
"ava": "^0.25.0",
"coveralls": "^3.0.0",
"eslint-config-xo-lukechilds": "^1.0.0",
"nyc": "^11.0.3",
"this": "^1.0.2",
"timekeeper": "^2.0.0",
"xo": "^0.20.1"
},
"homepage": "https://github.com/lukechilds/keyv",
"keywords": [
"key",
"value",
"store",
"cache",
"ttl"
],
"license": "MIT",
"main": "src/index.js",
"name": "keyv",
"repository": {
"type": "git",
"url": "git+https://github.com/lukechilds/keyv.git"
},
"scripts": {
"coverage": "nyc report --reporter=text-lcov | coveralls",
"test": "xo && nyc ava test/keyv.js",
"test:full": "xo && nyc ava --serial"
},
"version": "3.1.0",
"xo": {
"extends": "xo-lukechilds"
}
}

View File

@@ -0,0 +1,103 @@
'use strict';
const EventEmitter = require('events');
const JSONB = require('json-buffer');
const loadStore = opts => {
const adapters = {
redis: '@keyv/redis',
mongodb: '@keyv/mongo',
mongo: '@keyv/mongo',
sqlite: '@keyv/sqlite',
postgresql: '@keyv/postgres',
postgres: '@keyv/postgres',
mysql: '@keyv/mysql'
};
if (opts.adapter || opts.uri) {
const adapter = opts.adapter || /^[^:]*/.exec(opts.uri)[0];
return new (require(adapters[adapter]))(opts);
}
return new Map();
};
class Keyv extends EventEmitter {
constructor(uri, opts) {
super();
this.opts = Object.assign(
{
namespace: 'keyv',
serialize: JSONB.stringify,
deserialize: JSONB.parse
},
(typeof uri === 'string') ? { uri } : uri,
opts
);
if (!this.opts.store) {
const adapterOpts = Object.assign({}, this.opts);
this.opts.store = loadStore(adapterOpts);
}
if (typeof this.opts.store.on === 'function') {
this.opts.store.on('error', err => this.emit('error', err));
}
this.opts.store.namespace = this.opts.namespace;
}
_getKeyPrefix(key) {
return `${this.opts.namespace}:${key}`;
}
get(key) {
key = this._getKeyPrefix(key);
const store = this.opts.store;
return Promise.resolve()
.then(() => store.get(key))
.then(data => {
data = (typeof data === 'string') ? this.opts.deserialize(data) : data;
if (data === undefined) {
return undefined;
}
if (typeof data.expires === 'number' && Date.now() > data.expires) {
this.delete(key);
return undefined;
}
return data.value;
});
}
set(key, value, ttl) {
key = this._getKeyPrefix(key);
if (typeof ttl === 'undefined') {
ttl = this.opts.ttl;
}
if (ttl === 0) {
ttl = undefined;
}
const store = this.opts.store;
return Promise.resolve()
.then(() => {
const expires = (typeof ttl === 'number') ? (Date.now() + ttl) : null;
value = { value, expires };
return store.set(key, this.opts.serialize(value), ttl);
})
.then(() => true);
}
delete(key) {
key = this._getKeyPrefix(key);
const store = this.opts.store;
return Promise.resolve()
.then(() => store.delete(key));
}
clear() {
const store = this.opts.store;
return Promise.resolve()
.then(() => store.clear());
}
}
module.exports = Keyv;

View File

@@ -0,0 +1,11 @@
'use strict';
module.exports = function (obj) {
var ret = {};
var keys = Object.keys(Object(obj));
for (var i = 0; i < keys.length; i++) {
ret[keys[i].toLowerCase()] = obj[keys[i]];
}
return ret;
};

View File

@@ -0,0 +1,21 @@
The MIT License (MIT)
Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

View File

@@ -1,33 +1,32 @@
{
"_args": [
[
"lowercase-keys@2.0.0",
"lowercase-keys@1.0.1",
"C:\\Users\\Smith\\repos\\game-server-watcher"
]
],
"_from": "lowercase-keys@2.0.0",
"_id": "lowercase-keys@2.0.0",
"_from": "lowercase-keys@1.0.1",
"_id": "lowercase-keys@1.0.1",
"_inBundle": false,
"_integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==",
"_location": "/got/lowercase-keys",
"_integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==",
"_location": "/node8-gamedig/lowercase-keys",
"_phantomChildren": {},
"_requested": {
"type": "version",
"registry": true,
"raw": "lowercase-keys@2.0.0",
"raw": "lowercase-keys@1.0.1",
"name": "lowercase-keys",
"escapedName": "lowercase-keys",
"rawSpec": "2.0.0",
"rawSpec": "1.0.1",
"saveSpec": null,
"fetchSpec": "2.0.0"
"fetchSpec": "1.0.1"
},
"_requiredBy": [
"/got",
"/got/cacheable-request",
"/got/responselike"
"/node8-gamedig/got",
"/node8-gamedig/responselike"
],
"_resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz",
"_spec": "2.0.0",
"_resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz",
"_spec": "1.0.1",
"_where": "C:\\Users\\Smith\\repos\\game-server-watcher",
"author": {
"name": "Sindre Sorhus",
@@ -39,16 +38,13 @@
},
"description": "Lowercase the keys of an object",
"devDependencies": {
"ava": "^1.4.1",
"tsd": "^0.7.2",
"xo": "^0.24.0"
"ava": "*"
},
"engines": {
"node": ">=8"
"node": ">=0.10.0"
},
"files": [
"index.js",
"index.d.ts"
"index.js"
],
"homepage": "https://github.com/sindresorhus/lowercase-keys#readme",
"keywords": [
@@ -69,7 +65,7 @@
"url": "git+https://github.com/sindresorhus/lowercase-keys.git"
},
"scripts": {
"test": "xo && ava && tsd"
"test": "ava"
},
"version": "2.0.0"
"version": "1.0.1"
}

View File

@@ -1,4 +1,6 @@
'use strict';
// TODO: Use the `URL` global when targeting Node.js 10
const URLParser = typeof URL === 'undefined' ? require('url').URL : URL;
// https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs
const DATA_URL_DEFAULT_MIME_TYPE = 'text/plain';
@@ -9,20 +11,21 @@ const testParameter = (name, filters) => {
};
const normalizeDataURL = (urlString, {stripHash}) => {
const match = /^data:(?<type>[^,]*?),(?<data>[^#]*?)(?:#(?<hash>.*))?$/.exec(urlString);
const parts = urlString.match(/^data:([^,]*?),([^#]*?)(?:#(.*))?$/);
if (!match) {
if (!parts) {
throw new Error(`Invalid URL: ${urlString}`);
}
let {type, data, hash} = match.groups;
const mediaType = type.split(';');
hash = stripHash ? '' : hash;
const mediaType = parts[1].split(';');
const body = parts[2];
const hash = stripHash ? '' : parts[3];
let base64 = false;
let isBase64 = false;
if (mediaType[mediaType.length - 1] === 'base64') {
mediaType.pop();
isBase64 = true;
base64 = true;
}
// Lowercase MIME type
@@ -48,7 +51,7 @@ const normalizeDataURL = (urlString, {stripHash}) => {
...attributes
];
if (isBase64) {
if (base64) {
normalizedMediaType.push('base64');
}
@@ -56,7 +59,7 @@ const normalizeDataURL = (urlString, {stripHash}) => {
normalizedMediaType.unshift(mimeType);
}
return `data:${normalizedMediaType.join(';')},${isBase64 ? data.trim() : data}${hash ? `#${hash}` : ''}`;
return `data:${normalizedMediaType.join(';')},${base64 ? body.trim() : body}${hash ? `#${hash}` : ''}`;
};
const normalizeUrl = (urlString, options) => {
@@ -67,16 +70,27 @@ const normalizeUrl = (urlString, options) => {
forceHttps: false,
stripAuthentication: true,
stripHash: false,
stripTextFragment: true,
stripWWW: true,
removeQueryParameters: [/^utm_\w+/i],
removeTrailingSlash: true,
removeSingleSlash: true,
removeDirectoryIndex: false,
sortQueryParameters: true,
...options
};
// TODO: Remove this at some point in the future
if (Reflect.has(options, 'normalizeHttps')) {
throw new Error('options.normalizeHttps is renamed to options.forceHttp');
}
if (Reflect.has(options, 'normalizeHttp')) {
throw new Error('options.normalizeHttp is renamed to options.forceHttps');
}
if (Reflect.has(options, 'stripFragment')) {
throw new Error('options.stripFragment is renamed to options.stripHash');
}
urlString = urlString.trim();
// Data URL
@@ -84,10 +98,6 @@ const normalizeUrl = (urlString, options) => {
return normalizeDataURL(urlString, options);
}
if (/^view-source:/i.test(urlString)) {
throw new Error('`view-source:` is not supported as it is a non-standard protocol');
}
const hasRelativeProtocol = urlString.startsWith('//');
const isRelativeUrl = !hasRelativeProtocol && /^\.*\//.test(urlString);
@@ -96,7 +106,7 @@ const normalizeUrl = (urlString, options) => {
urlString = urlString.replace(/^(?!(?:\w+:)?\/\/)|^\/\//, options.defaultProtocol);
}
const urlObj = new URL(urlString);
const urlObj = new URLParser(urlString);
if (options.forceHttp && options.forceHttps) {
throw new Error('The `forceHttp` and `forceHttps` options cannot be used together');
@@ -119,20 +129,24 @@ const normalizeUrl = (urlString, options) => {
// Remove hash
if (options.stripHash) {
urlObj.hash = '';
} else if (options.stripTextFragment) {
urlObj.hash = urlObj.hash.replace(/#?:~:text.*?$/i, '');
}
// Remove duplicate slashes if not preceded by a protocol
if (urlObj.pathname) {
urlObj.pathname = urlObj.pathname.replace(/(?<!\b(?:[a-z][a-z\d+\-.]{1,50}:))\/{2,}/g, '/');
// TODO: Use the following instead when targeting Node.js 10
// `urlObj.pathname = urlObj.pathname.replace(/(?<!https?:)\/{2,}/g, '/');`
urlObj.pathname = urlObj.pathname.replace(/((?!:).|^)\/{2,}/g, (_, p1) => {
if (/^(?!\/)/g.test(p1)) {
return `${p1}/`;
}
return '/';
});
}
// Decode URI octets
if (urlObj.pathname) {
try {
urlObj.pathname = decodeURI(urlObj.pathname);
} catch (_) {}
urlObj.pathname = decodeURI(urlObj.pathname);
}
// Remove directory index
@@ -155,11 +169,10 @@ const normalizeUrl = (urlString, options) => {
urlObj.hostname = urlObj.hostname.replace(/\.$/, '');
// Remove `www.`
if (options.stripWWW && /^www\.(?!www\.)(?:[a-z\-\d]{1,63})\.(?:[a-z.\-\d]{2,63})$/.test(urlObj.hostname)) {
// Each label should be max 63 at length (min: 1).
if (options.stripWWW && /^www\.([a-z\-\d]{2,63})\.([a-z.]{2,5})$/.test(urlObj.hostname)) {
// Each label should be max 63 at length (min: 2).
// The extension should be max 5 at length (min: 2).
// Source: https://en.wikipedia.org/wiki/Hostname#Restrictions_on_valid_host_names
// Each TLD should be up to 63 characters long (min: 2).
// It is technically possible to have a single character TLD, but none currently exist.
urlObj.hostname = urlObj.hostname.replace(/^www\./, '');
}
}
@@ -173,10 +186,6 @@ const normalizeUrl = (urlString, options) => {
}
}
if (options.removeQueryParameters === true) {
urlObj.search = '';
}
// Sort query parameters
if (options.sortQueryParameters) {
urlObj.searchParams.sort();
@@ -186,17 +195,11 @@ const normalizeUrl = (urlString, options) => {
urlObj.pathname = urlObj.pathname.replace(/\/$/, '');
}
const oldUrlString = urlString;
// Take advantage of many of the Node `url` normalizations
urlString = urlObj.toString();
if (!options.removeSingleSlash && urlObj.pathname === '/' && !oldUrlString.endsWith('/') && urlObj.hash === '') {
urlString = urlString.replace(/\/$/, '');
}
// Remove ending `/` unless removeSingleSlash is false
if ((options.removeTrailingSlash || urlObj.pathname === '/') && urlObj.hash === '' && options.removeSingleSlash) {
// Remove ending `/`
if ((options.removeTrailingSlash || urlObj.pathname === '/') && urlObj.hash === '') {
urlString = urlString.replace(/\/$/, '');
}
@@ -214,3 +217,5 @@ const normalizeUrl = (urlString, options) => {
};
module.exports = normalizeUrl;
// TODO: Remove this for the next major release
module.exports.default = normalizeUrl;

View File

@@ -1,36 +1,36 @@
{
"_args": [
[
"normalize-url@6.1.0",
"normalize-url@4.5.1",
"C:\\Users\\Smith\\repos\\game-server-watcher"
]
],
"_from": "normalize-url@6.1.0",
"_id": "normalize-url@6.1.0",
"_from": "normalize-url@4.5.1",
"_id": "normalize-url@4.5.1",
"_inBundle": false,
"_integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==",
"_location": "/got/normalize-url",
"_integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==",
"_location": "/node8-gamedig/normalize-url",
"_phantomChildren": {},
"_requested": {
"type": "version",
"registry": true,
"raw": "normalize-url@6.1.0",
"raw": "normalize-url@4.5.1",
"name": "normalize-url",
"escapedName": "normalize-url",
"rawSpec": "6.1.0",
"rawSpec": "4.5.1",
"saveSpec": null,
"fetchSpec": "6.1.0"
"fetchSpec": "4.5.1"
},
"_requiredBy": [
"/got/cacheable-request"
"/node8-gamedig/cacheable-request"
],
"_resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz",
"_spec": "6.1.0",
"_resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz",
"_spec": "4.5.1",
"_where": "C:\\Users\\Smith\\repos\\game-server-watcher",
"author": {
"name": "Sindre Sorhus",
"email": "sindresorhus@gmail.com",
"url": "https://sindresorhus.com"
"url": "sindresorhus.com"
},
"bugs": {
"url": "https://github.com/sindresorhus/normalize-url/issues"
@@ -38,18 +38,18 @@
"description": "Normalize a URL",
"devDependencies": {
"ava": "^2.4.0",
"nyc": "^15.0.0",
"tsd": "^0.11.0",
"xo": "^0.25.3"
"coveralls": "^3.0.6",
"nyc": "^14.1.1",
"tsd": "^0.8.0",
"xo": "^0.24.0"
},
"engines": {
"node": ">=10"
"node": ">=8"
},
"files": [
"index.js",
"index.d.ts"
],
"funding": "https://github.com/sponsors/sindresorhus",
"homepage": "https://github.com/sindresorhus/normalize-url#readme",
"keywords": [
"normalize",
@@ -68,12 +68,6 @@
],
"license": "MIT",
"name": "normalize-url",
"nyc": {
"reporter": [
"text",
"lcov"
]
},
"repository": {
"type": "git",
"url": "git+https://github.com/sindresorhus/normalize-url.git"
@@ -81,5 +75,5 @@
"scripts": {
"test": "xo && nyc ava && tsd"
},
"version": "6.1.0"
"version": "4.5.1"
}

View File

@@ -13,11 +13,10 @@ class CancelError extends Error {
class PCancelable {
static fn(userFn) {
return (...arguments_) => {
return (...args) => {
return new PCancelable((resolve, reject, onCancel) => {
arguments_.push(onCancel);
// eslint-disable-next-line promise/prefer-await-to-then
userFn(...arguments_).then(resolve, reject);
args.push(onCancel);
userFn(...args).then(resolve, reject);
});
};
}
@@ -32,10 +31,8 @@ class PCancelable {
this._reject = reject;
const onResolve = value => {
if (!this._isCanceled || !onCancel.shouldReject) {
this._isPending = false;
resolve(value);
}
this._isPending = false;
resolve(value);
};
const onReject = error => {
@@ -44,18 +41,14 @@ class PCancelable {
};
const onCancel = handler => {
if (!this._isPending) {
throw new Error('The `onCancel` handler was attached after the promise settled.');
}
this._cancelHandlers.push(handler);
};
Object.defineProperties(onCancel, {
shouldReject: {
get: () => this._rejectOnCancel,
set: boolean => {
this._rejectOnCancel = boolean;
set: bool => {
this._rejectOnCancel = bool;
}
}
});
@@ -65,7 +58,6 @@ class PCancelable {
}
then(onFulfilled, onRejected) {
// eslint-disable-next-line promise/prefer-await-to-then
return this._promise.then(onFulfilled, onRejected);
}
@@ -82,8 +74,6 @@ class PCancelable {
return;
}
this._isCanceled = true;
if (this._cancelHandlers.length > 0) {
try {
for (const handler of this._cancelHandlers) {
@@ -91,10 +81,10 @@ class PCancelable {
}
} catch (error) {
this._reject(error);
return;
}
}
this._isCanceled = true;
if (this._rejectOnCancel) {
this._reject(new CancelError(reason));
}
@@ -108,4 +98,6 @@ class PCancelable {
Object.setPrototypeOf(PCancelable.prototype, Promise.prototype);
module.exports = PCancelable;
module.exports.default = PCancelable;
module.exports.CancelError = CancelError;

View File

@@ -1,6 +1,6 @@
MIT License
Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com)
Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

View File

@@ -1,31 +1,31 @@
{
"_args": [
[
"p-cancelable@2.1.1",
"p-cancelable@1.1.0",
"C:\\Users\\Smith\\repos\\game-server-watcher"
]
],
"_from": "p-cancelable@2.1.1",
"_id": "p-cancelable@2.1.1",
"_from": "p-cancelable@1.1.0",
"_id": "p-cancelable@1.1.0",
"_inBundle": false,
"_integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==",
"_location": "/got/p-cancelable",
"_integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==",
"_location": "/node8-gamedig/p-cancelable",
"_phantomChildren": {},
"_requested": {
"type": "version",
"registry": true,
"raw": "p-cancelable@2.1.1",
"raw": "p-cancelable@1.1.0",
"name": "p-cancelable",
"escapedName": "p-cancelable",
"rawSpec": "2.1.1",
"rawSpec": "1.1.0",
"saveSpec": null,
"fetchSpec": "2.1.1"
"fetchSpec": "1.1.0"
},
"_requiredBy": [
"/got"
"/node8-gamedig/got"
],
"_resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz",
"_spec": "2.1.1",
"_resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz",
"_spec": "1.1.0",
"_where": "C:\\Users\\Smith\\repos\\game-server-watcher",
"author": {
"name": "Sindre Sorhus",
@@ -37,14 +37,14 @@
},
"description": "Create a promise that can be canceled",
"devDependencies": {
"ava": "^1.4.1",
"ava": "^1.3.1",
"delay": "^4.1.0",
"promise.prototype.finally": "^3.1.0",
"tsd": "^0.7.1",
"tsd-check": "^0.3.0",
"xo": "^0.24.0"
},
"engines": {
"node": ">=8"
"node": ">=6"
},
"files": [
"index.js",
@@ -78,7 +78,7 @@
"url": "git+https://github.com/sindresorhus/p-cancelable.git"
},
"scripts": {
"test": "xo && ava && tsd"
"test": "xo && ava && tsd-check"
},
"version": "2.1.1"
"version": "1.1.0"
}

View File

@@ -1,32 +1,31 @@
{
"_args": [
[
"responselike@2.0.0",
"responselike@1.0.2",
"C:\\Users\\Smith\\repos\\game-server-watcher"
]
],
"_from": "responselike@2.0.0",
"_id": "responselike@2.0.0",
"_from": "responselike@1.0.2",
"_id": "responselike@1.0.2",
"_inBundle": false,
"_integrity": "sha512-xH48u3FTB9VsZw7R+vvgaKeLKzT6jOogbQhEe/jewwnZgzPcnyWui2Av6JpoYZF/91uueC+lqhWqeURw5/qhCw==",
"_location": "/got/responselike",
"_integrity": "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==",
"_location": "/node8-gamedig/responselike",
"_phantomChildren": {},
"_requested": {
"type": "version",
"registry": true,
"raw": "responselike@2.0.0",
"raw": "responselike@1.0.2",
"name": "responselike",
"escapedName": "responselike",
"rawSpec": "2.0.0",
"rawSpec": "1.0.2",
"saveSpec": null,
"fetchSpec": "2.0.0"
"fetchSpec": "1.0.2"
},
"_requiredBy": [
"/got",
"/got/cacheable-request"
"/node8-gamedig/cacheable-request"
],
"_resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.0.tgz",
"_spec": "2.0.0",
"_resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz",
"_spec": "1.0.2",
"_where": "C:\\Users\\Smith\\repos\\game-server-watcher",
"author": {
"name": "lukechilds"
@@ -35,15 +34,15 @@
"url": "https://github.com/lukechilds/responselike/issues"
},
"dependencies": {
"lowercase-keys": "^2.0.0"
"lowercase-keys": "^1.0.0"
},
"description": "A response-like object for mocking a Node.js HTTP response stream",
"devDependencies": {
"ava": "^0.25.0",
"coveralls": "^3.0.0",
"ava": "^0.22.0",
"coveralls": "^2.13.1",
"eslint-config-xo-lukechilds": "^1.0.0",
"get-stream": "^3.0.0",
"nyc": "^11.8.0",
"nyc": "^11.1.0",
"xo": "^0.19.0"
},
"homepage": "https://github.com/lukechilds/responselike#readme",
@@ -66,7 +65,7 @@
"coverage": "nyc report --reporter=text-lcov | coveralls",
"test": "xo && nyc ava"
},
"version": "2.0.0",
"version": "1.0.2",
"xo": {
"extends": "xo-lukechilds"
}

View File

@@ -1,43 +1,39 @@
{
"_args": [
[
"node8-gamedig@4.0.4",
"node8-gamedig@4.0.5",
"C:\\Users\\Smith\\repos\\game-server-watcher"
]
],
"_from": "node8-gamedig@4.0.4",
"_id": "node8-gamedig@4.0.4",
"_from": "node8-gamedig@4.0.5",
"_id": "node8-gamedig@4.0.5",
"_inBundle": false,
"_integrity": "sha512-Wjnahdz7WyY+9dm3ikUNM1L3VydhM0/3Fu1cv/gqpTCT5yLuHkS4LzcQhW6wk7RgBJ52itluWSFane3iqCpW9Q==",
"_integrity": "sha512-A+hNow0xg3gvY/IlB/lDitbpd50EKVDITEmGS78ZmuG3pHgu74GjMfSSpLXdfQ8e0C7AVMKdfKMF8AdSKGmwfw==",
"_location": "/node8-gamedig",
"_phantomChildren": {
"@sindresorhus/is": "0.14.0",
"@szmarczak/http-timer": "1.1.2",
"cacheable-request": "6.1.0",
"decompress-response": "3.3.0",
"duplexer3": "0.1.4",
"get-stream": "4.1.0",
"lowercase-keys": "1.0.1",
"clone-response": "1.0.3",
"duplexer3": "0.1.5",
"http-cache-semantics": "4.1.0",
"mimic-response": "1.0.1",
"p-cancelable": "1.1.0",
"pump": "3.0.0",
"to-readable-stream": "1.0.0",
"url-parse-lax": "3.0.0"
},
"_requested": {
"type": "version",
"registry": true,
"raw": "node8-gamedig@4.0.4",
"raw": "node8-gamedig@4.0.5",
"name": "node8-gamedig",
"escapedName": "node8-gamedig",
"rawSpec": "4.0.4",
"rawSpec": "4.0.5",
"saveSpec": null,
"fetchSpec": "4.0.4"
"fetchSpec": "4.0.5"
},
"_requiredBy": [
"/"
],
"_resolved": "https://registry.npmjs.org/node8-gamedig/-/node8-gamedig-4.0.4.tgz",
"_spec": "4.0.4",
"_resolved": "https://registry.npmjs.org/node8-gamedig/-/node8-gamedig-4.0.5.tgz",
"_spec": "4.0.5",
"_where": "C:\\Users\\Smith\\repos\\game-server-watcher",
"author": {
"name": "GameDig Contributors"
@@ -104,5 +100,5 @@
"csgo",
"minecraft"
],
"version": "4.0.4"
"version": "4.0.5"
}

View File

@@ -115,7 +115,7 @@ class OpenTtd extends Core {
const temp = new Date(0,0,1);
temp.setFullYear(0);
temp.setDate(daysSinceZero+1);
return date.toISOString().split('T')[0];
return temp.toISOString().split('T')[0];
}
decode(num,arr) {

View File

@@ -8,7 +8,12 @@ const AppId = {
Bat1944: 489940,
Ship: 2400,
DayZ: 221100,
Rust: 252490
Rust: 252490,
CSGO: 730,
CS_Source: 240,
EternalSilence: 17550,
Insurgency_MIC: 17700,
Source_SDK_Base_2006: 215
};
class Valve extends Core {
@@ -114,10 +119,10 @@ class Valve extends Core {
// from https://developer.valvesoftware.com/wiki/Server_queries
if(
state.raw.protocol === 7 && (
state.raw.appId === 215
|| state.raw.appId === 17550
|| state.raw.appId === 17700
|| state.raw.appId === 240
state.raw.appId === AppId.Source_SDK_Base_2006
|| state.raw.appId === AppId.EternalSilence
|| state.raw.appId === AppId.Insurgency_MIC
|| state.raw.appId === AppId.CS_Source
)
) {
this._skipSizeInSplitHeader = true;
@@ -226,7 +231,7 @@ class Valve extends Core {
if(!name) continue;
// CSGO sometimes adds a bot named 'Max Players' if host_players_show is not 2
if (state.raw.steamappid === 730 && name === 'Max Players') continue;
if (state.raw.appId === AppId.CSGO && name === 'Max Players') continue;
state.raw.players.push({
name:name, score:score, time:time

81
node_modules/normalize-url/index.js generated vendored
View File

@@ -1,6 +1,4 @@
'use strict';
// TODO: Use the `URL` global when targeting Node.js 10
const URLParser = typeof URL === 'undefined' ? require('url').URL : URL;
// https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs
const DATA_URL_DEFAULT_MIME_TYPE = 'text/plain';
@@ -11,21 +9,20 @@ const testParameter = (name, filters) => {
};
const normalizeDataURL = (urlString, {stripHash}) => {
const parts = urlString.match(/^data:([^,]*?),([^#]*?)(?:#(.*))?$/);
const match = /^data:(?<type>[^,]*?),(?<data>[^#]*?)(?:#(?<hash>.*))?$/.exec(urlString);
if (!parts) {
if (!match) {
throw new Error(`Invalid URL: ${urlString}`);
}
const mediaType = parts[1].split(';');
const body = parts[2];
const hash = stripHash ? '' : parts[3];
let base64 = false;
let {type, data, hash} = match.groups;
const mediaType = type.split(';');
hash = stripHash ? '' : hash;
let isBase64 = false;
if (mediaType[mediaType.length - 1] === 'base64') {
mediaType.pop();
base64 = true;
isBase64 = true;
}
// Lowercase MIME type
@@ -51,7 +48,7 @@ const normalizeDataURL = (urlString, {stripHash}) => {
...attributes
];
if (base64) {
if (isBase64) {
normalizedMediaType.push('base64');
}
@@ -59,7 +56,7 @@ const normalizeDataURL = (urlString, {stripHash}) => {
normalizedMediaType.unshift(mimeType);
}
return `data:${normalizedMediaType.join(';')},${base64 ? body.trim() : body}${hash ? `#${hash}` : ''}`;
return `data:${normalizedMediaType.join(';')},${isBase64 ? data.trim() : data}${hash ? `#${hash}` : ''}`;
};
const normalizeUrl = (urlString, options) => {
@@ -70,27 +67,16 @@ const normalizeUrl = (urlString, options) => {
forceHttps: false,
stripAuthentication: true,
stripHash: false,
stripTextFragment: true,
stripWWW: true,
removeQueryParameters: [/^utm_\w+/i],
removeTrailingSlash: true,
removeSingleSlash: true,
removeDirectoryIndex: false,
sortQueryParameters: true,
...options
};
// TODO: Remove this at some point in the future
if (Reflect.has(options, 'normalizeHttps')) {
throw new Error('options.normalizeHttps is renamed to options.forceHttp');
}
if (Reflect.has(options, 'normalizeHttp')) {
throw new Error('options.normalizeHttp is renamed to options.forceHttps');
}
if (Reflect.has(options, 'stripFragment')) {
throw new Error('options.stripFragment is renamed to options.stripHash');
}
urlString = urlString.trim();
// Data URL
@@ -98,6 +84,10 @@ const normalizeUrl = (urlString, options) => {
return normalizeDataURL(urlString, options);
}
if (/^view-source:/i.test(urlString)) {
throw new Error('`view-source:` is not supported as it is a non-standard protocol');
}
const hasRelativeProtocol = urlString.startsWith('//');
const isRelativeUrl = !hasRelativeProtocol && /^\.*\//.test(urlString);
@@ -106,7 +96,7 @@ const normalizeUrl = (urlString, options) => {
urlString = urlString.replace(/^(?!(?:\w+:)?\/\/)|^\/\//, options.defaultProtocol);
}
const urlObj = new URLParser(urlString);
const urlObj = new URL(urlString);
if (options.forceHttp && options.forceHttps) {
throw new Error('The `forceHttp` and `forceHttps` options cannot be used together');
@@ -129,24 +119,20 @@ const normalizeUrl = (urlString, options) => {
// Remove hash
if (options.stripHash) {
urlObj.hash = '';
} else if (options.stripTextFragment) {
urlObj.hash = urlObj.hash.replace(/#?:~:text.*?$/i, '');
}
// Remove duplicate slashes if not preceded by a protocol
if (urlObj.pathname) {
// TODO: Use the following instead when targeting Node.js 10
// `urlObj.pathname = urlObj.pathname.replace(/(?<!https?:)\/{2,}/g, '/');`
urlObj.pathname = urlObj.pathname.replace(/((?!:).|^)\/{2,}/g, (_, p1) => {
if (/^(?!\/)/g.test(p1)) {
return `${p1}/`;
}
return '/';
});
urlObj.pathname = urlObj.pathname.replace(/(?<!\b(?:[a-z][a-z\d+\-.]{1,50}:))\/{2,}/g, '/');
}
// Decode URI octets
if (urlObj.pathname) {
urlObj.pathname = decodeURI(urlObj.pathname);
try {
urlObj.pathname = decodeURI(urlObj.pathname);
} catch (_) {}
}
// Remove directory index
@@ -169,10 +155,11 @@ const normalizeUrl = (urlString, options) => {
urlObj.hostname = urlObj.hostname.replace(/\.$/, '');
// Remove `www.`
if (options.stripWWW && /^www\.([a-z\-\d]{2,63})\.([a-z.]{2,5})$/.test(urlObj.hostname)) {
// Each label should be max 63 at length (min: 2).
// The extension should be max 5 at length (min: 2).
if (options.stripWWW && /^www\.(?!www\.)(?:[a-z\-\d]{1,63})\.(?:[a-z.\-\d]{2,63})$/.test(urlObj.hostname)) {
// Each label should be max 63 at length (min: 1).
// Source: https://en.wikipedia.org/wiki/Hostname#Restrictions_on_valid_host_names
// Each TLD should be up to 63 characters long (min: 2).
// It is technically possible to have a single character TLD, but none currently exist.
urlObj.hostname = urlObj.hostname.replace(/^www\./, '');
}
}
@@ -186,6 +173,10 @@ const normalizeUrl = (urlString, options) => {
}
}
if (options.removeQueryParameters === true) {
urlObj.search = '';
}
// Sort query parameters
if (options.sortQueryParameters) {
urlObj.searchParams.sort();
@@ -195,11 +186,17 @@ const normalizeUrl = (urlString, options) => {
urlObj.pathname = urlObj.pathname.replace(/\/$/, '');
}
const oldUrlString = urlString;
// Take advantage of many of the Node `url` normalizations
urlString = urlObj.toString();
// Remove ending `/`
if ((options.removeTrailingSlash || urlObj.pathname === '/') && urlObj.hash === '') {
if (!options.removeSingleSlash && urlObj.pathname === '/' && !oldUrlString.endsWith('/') && urlObj.hash === '') {
urlString = urlString.replace(/\/$/, '');
}
// Remove ending `/` unless removeSingleSlash is false
if ((options.removeTrailingSlash || urlObj.pathname === '/') && urlObj.hash === '' && options.removeSingleSlash) {
urlString = urlString.replace(/\/$/, '');
}
@@ -217,5 +214,3 @@ const normalizeUrl = (urlString, options) => {
};
module.exports = normalizeUrl;
// TODO: Remove this for the next major release
module.exports.default = normalizeUrl;

View File

@@ -1,36 +1,36 @@
{
"_args": [
[
"normalize-url@4.5.1",
"normalize-url@6.1.0",
"C:\\Users\\Smith\\repos\\game-server-watcher"
]
],
"_from": "normalize-url@4.5.1",
"_id": "normalize-url@4.5.1",
"_from": "normalize-url@6.1.0",
"_id": "normalize-url@6.1.0",
"_inBundle": false,
"_integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==",
"_integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==",
"_location": "/normalize-url",
"_phantomChildren": {},
"_requested": {
"type": "version",
"registry": true,
"raw": "normalize-url@4.5.1",
"raw": "normalize-url@6.1.0",
"name": "normalize-url",
"escapedName": "normalize-url",
"rawSpec": "4.5.1",
"rawSpec": "6.1.0",
"saveSpec": null,
"fetchSpec": "4.5.1"
"fetchSpec": "6.1.0"
},
"_requiredBy": [
"/cacheable-request"
],
"_resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz",
"_spec": "4.5.1",
"_resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz",
"_spec": "6.1.0",
"_where": "C:\\Users\\Smith\\repos\\game-server-watcher",
"author": {
"name": "Sindre Sorhus",
"email": "sindresorhus@gmail.com",
"url": "sindresorhus.com"
"url": "https://sindresorhus.com"
},
"bugs": {
"url": "https://github.com/sindresorhus/normalize-url/issues"
@@ -38,18 +38,18 @@
"description": "Normalize a URL",
"devDependencies": {
"ava": "^2.4.0",
"coveralls": "^3.0.6",
"nyc": "^14.1.1",
"tsd": "^0.8.0",
"xo": "^0.24.0"
"nyc": "^15.0.0",
"tsd": "^0.11.0",
"xo": "^0.25.3"
},
"engines": {
"node": ">=8"
"node": ">=10"
},
"files": [
"index.js",
"index.d.ts"
],
"funding": "https://github.com/sponsors/sindresorhus",
"homepage": "https://github.com/sindresorhus/normalize-url#readme",
"keywords": [
"normalize",
@@ -68,6 +68,12 @@
],
"license": "MIT",
"name": "normalize-url",
"nyc": {
"reporter": [
"text",
"lcov"
]
},
"repository": {
"type": "git",
"url": "git+https://github.com/sindresorhus/normalize-url.git"
@@ -75,5 +81,5 @@
"scripts": {
"test": "xo && nyc ava && tsd"
},
"version": "4.5.1"
"version": "6.1.0"
}

28
node_modules/p-cancelable/index.js generated vendored
View File

@@ -13,10 +13,11 @@ class CancelError extends Error {
class PCancelable {
static fn(userFn) {
return (...args) => {
return (...arguments_) => {
return new PCancelable((resolve, reject, onCancel) => {
args.push(onCancel);
userFn(...args).then(resolve, reject);
arguments_.push(onCancel);
// eslint-disable-next-line promise/prefer-await-to-then
userFn(...arguments_).then(resolve, reject);
});
};
}
@@ -31,8 +32,10 @@ class PCancelable {
this._reject = reject;
const onResolve = value => {
this._isPending = false;
resolve(value);
if (!this._isCanceled || !onCancel.shouldReject) {
this._isPending = false;
resolve(value);
}
};
const onReject = error => {
@@ -41,14 +44,18 @@ class PCancelable {
};
const onCancel = handler => {
if (!this._isPending) {
throw new Error('The `onCancel` handler was attached after the promise settled.');
}
this._cancelHandlers.push(handler);
};
Object.defineProperties(onCancel, {
shouldReject: {
get: () => this._rejectOnCancel,
set: bool => {
this._rejectOnCancel = bool;
set: boolean => {
this._rejectOnCancel = boolean;
}
}
});
@@ -58,6 +65,7 @@ class PCancelable {
}
then(onFulfilled, onRejected) {
// eslint-disable-next-line promise/prefer-await-to-then
return this._promise.then(onFulfilled, onRejected);
}
@@ -74,6 +82,8 @@ class PCancelable {
return;
}
this._isCanceled = true;
if (this._cancelHandlers.length > 0) {
try {
for (const handler of this._cancelHandlers) {
@@ -81,10 +91,10 @@ class PCancelable {
}
} catch (error) {
this._reject(error);
return;
}
}
this._isCanceled = true;
if (this._rejectOnCancel) {
this._reject(new CancelError(reason));
}
@@ -98,6 +108,4 @@ class PCancelable {
Object.setPrototypeOf(PCancelable.prototype, Promise.prototype);
module.exports = PCancelable;
module.exports.default = PCancelable;
module.exports.CancelError = CancelError;

Some files were not shown because too many files have changed in this diff Show More