redoc/lib/utils/helpers.ts

81 lines
1.8 KiB
TypeScript
Raw Normal View History

2015-11-23 23:27:55 +03:00
'use strict';
export function stringify(obj:any) {
return JSON.stringify(obj);
}
export function isString(str:any) {
return typeof str === 'string';
}
export function isFunction(func: any) {
return typeof func === 'function';
}
export function isBlank(obj: any): boolean {
2016-10-30 18:56:24 +03:00
return obj == undefined;
}
2015-11-23 23:27:55 +03:00
export function statusCodeType(statusCode) {
2015-12-12 19:30:13 +03:00
if (statusCode < 100 || statusCode > 599) {
throw new Error('invalid HTTP code');
2015-12-12 19:30:13 +03:00
}
2015-11-23 23:27:55 +03:00
let res = 'success';
if (statusCode >= 300 && statusCode < 400) {
res = 'redirect';
2015-11-23 23:56:44 +03:00
} else if (statusCode >= 400) {
2015-11-23 23:27:55 +03:00
res = 'error';
2015-12-12 19:30:13 +03:00
} else if (statusCode < 200) {
2015-11-23 23:27:55 +03:00
res = 'info';
}
return res;
}
2016-06-22 19:13:57 +03:00
export function defaults(target, src) {
var props = Object.keys(src);
var index = -1,
length = props.length;
while (++index < length) {
var key = props[index];
if (target[key] === undefined) {
target[key] = src[key];
}
}
return target;
}
export function safePush(obj, prop, val) {
if (!obj[prop]) obj[prop] = [];
obj[prop].push(val);
}
2016-08-22 12:18:56 +03:00
// credits https://remysharp.com/2010/07/21/throttling-function-calls
export function throttle(fn, threshhold, scope) {
threshhold = threshhold || 250;
var last,
deferTimer;
return function () {
var context = scope || this;
var now = +new Date,
args = arguments;
if (last && now < last + threshhold) {
// hold on to it
clearTimeout(deferTimer);
deferTimer = setTimeout(function () {
last = now;
fn.apply(context, args);
}, threshhold);
} else {
last = now;
fn.apply(context, args);
}
};
}
2016-11-23 02:23:32 +03:00
export const isSafari = Object.prototype.toString.call(window.HTMLElement).indexOf('Constructor') > 0
|| (function (p) { return p.toString() === '[object SafariRemoteNotification]'; })(!window['safari']
|| safari.pushNotification);