Travis build: 1315 [cron]
This commit is contained in:
7
dist/_30s.es5.js
vendored
7
dist/_30s.es5.js
vendored
@ -1325,7 +1325,11 @@
|
||||
};
|
||||
var isWeekday = function isWeekday() {
|
||||
var t = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : new Date();
|
||||
return t.getDay() >= 1 && t.getDay() <= 5;
|
||||
return t.getDay() % 6 !== 0;
|
||||
};
|
||||
var isWeekend = function isWeekend() {
|
||||
var t = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : new Date();
|
||||
return t.getDay() % 6 === 0;
|
||||
};
|
||||
var isWritableStream = function isWritableStream(val) {
|
||||
return val !== null && _typeof(val) === 'object' && typeof val.pipe === 'function' && typeof val._write === 'function' && _typeof(val._writableState) === 'object';
|
||||
@ -2820,6 +2824,7 @@
|
||||
exports.isUpperCase = isUpperCase;
|
||||
exports.isValidJSON = isValidJSON;
|
||||
exports.isWeekday = isWeekday;
|
||||
exports.isWeekend = isWeekend;
|
||||
exports.isWritableStream = isWritableStream;
|
||||
exports.join = join;
|
||||
exports.last = last;
|
||||
|
||||
2
dist/_30s.es5.min.js
vendored
2
dist/_30s.es5.min.js
vendored
File diff suppressed because one or more lines are too long
7
dist/_30s.esm.js
vendored
7
dist/_30s.esm.js
vendored
@ -655,7 +655,10 @@ const isValidJSON = str => {
|
||||
}
|
||||
};
|
||||
const isWeekday = (t = new Date()) => {
|
||||
return t.getDay() >= 1 && t.getDay() <= 5;
|
||||
return t.getDay() % 6 !== 0;
|
||||
};
|
||||
const isWeekend = (t = new Date()) => {
|
||||
return t.getDay() % 6 === 0;
|
||||
};
|
||||
const isWritableStream = val =>
|
||||
val !== null &&
|
||||
@ -1374,4 +1377,4 @@ const zipWith = (...array) => {
|
||||
);
|
||||
};
|
||||
|
||||
export { CSVToArray, CSVToJSON, JSONToFile, JSONtoCSV, RGBToHex, URLJoin, UUIDGeneratorBrowser, UUIDGeneratorNode, all, allEqual, any, approximatelyEqual, arrayToCSV, arrayToHtmlList, ary, atob, attempt, average, averageBy, bifurcate, bifurcateBy, bind, bindAll, bindKey, binomialCoefficient, bottomVisible, btoa, byteSize, call, capitalize, capitalizeEveryWord, castArray, chainAsync, checkProp, chunk, clampNumber, cloneRegExp, coalesce, coalesceFactory, collectInto, colorize, compact, compactWhitespace, compose, composeRight, converge, copyToClipboard, countBy, countOccurrences, counter, createDirIfNotExists, createElement, createEventHub, currentURL, curry, dayOfYear, debounce, decapitalize, deepClone, deepFlatten, deepFreeze, deepGet, deepMapKeys, defaults, defer, degreesToRads, delay, detectDeviceType, difference, differenceBy, differenceWith, dig, digitize, distance, drop, dropRight, dropRightWhile, dropWhile, elementContains, elementIsVisibleInViewport, elo, equals, escapeHTML, escapeRegExp, everyNth, extendHex, factorial, fibonacci, filterFalsy, filterNonUnique, filterNonUniqueBy, findKey, findLast, findLastIndex, findLastKey, flatten, flattenObject, flip, forEachRight, forOwn, forOwnRight, formToObject, formatDuration, fromCamelCase, functionName, functions, gcd, geometricProgression, get, getColonTimeFromDate, getDaysDiffBetweenDates, getImages, getMeridiemSuffixOfInteger, getScrollPosition, getStyle, getType, getURLParameters, groupBy, hammingDistance, hasClass, hasFlags, hashBrowser, hashNode, head, hexToRGB, hide, httpGet, httpPost, httpsRedirect, hz, inRange, indentString, indexOfAll, initial, initialize2DArray, initializeArrayWithRange, initializeArrayWithRangeRight, initializeArrayWithValues, initializeNDArray, insertAfter, insertBefore, intersection, intersectionBy, intersectionWith, invertKeyValues, is, isAbsoluteURL, isAfterDate, isAnagram, isArrayLike, isBeforeDate, isBoolean, isBrowser, isBrowserTabFocused, isDivisible, isDuplexStream, isEmpty, isEven, isFunction, isLowerCase, isNegativeZero, isNil, isNull, isNumber, isObject, isObjectLike, isPlainObject, isPrime, isPrimitive, isPromiseLike, isReadableStream, isSameDate, isSorted, isStream, isString, isSymbol, isTravisCI, isUndefined, isUpperCase, isValidJSON, isWeekday, isWritableStream, join, last, lcm, longestItem, lowercaseKeys, luhnCheck, mapKeys, mapNumRange, mapObject, mapString, mapValues, mask, matches, matchesWith, maxBy, maxDate, maxN, median, memoize, merge, midpoint, minBy, minDate, minN, mostPerformant, negate, nest, nodeListToArray, none, nthArg, nthElement, objectFromPairs, objectToPairs, observeMutations, off, offset, omit, omitBy, on, onUserInputChange, once, orderBy, over, overArgs, pad, palindrome, parseCookie, partial, partialRight, partition, percentile, permutations, pick, pickBy, pipeAsyncFunctions, pipeFunctions, pluralize, powerset, prefix, prettyBytes, primes, promisify, pull, pullAtIndex, pullAtValue, pullBy, radsToDegrees, randomHexColorCode, randomIntArrayInRange, randomIntegerInRange, randomNumberInRange, readFileLines, rearg, recordAnimationFrames, redirect, reduceSuccessive, reduceWhich, reducedFilter, reject, remove, removeNonASCII, renameKeys, reverseString, round, runAsync, runPromisesInSeries, sample, sampleSize, scrollToTop, sdbm, serializeCookie, serializeForm, setStyle, shallowClone, shank, show, shuffle, similarity, size, sleep, smoothScroll, sortCharactersInString, sortedIndex, sortedIndexBy, sortedLastIndex, sortedLastIndexBy, splitLines, spreadOver, stableSort, standardDeviation, stringPermutations, stripHTMLTags, sum, sumBy, sumPower, symmetricDifference, symmetricDifferenceBy, symmetricDifferenceWith, tail, take, takeRight, takeRightWhile, takeWhile, throttle, timeTaken, times, toCamelCase, toCurrency, toDecimalMark, toHash, toKebabCase, toOrdinalSuffix, toSafeInteger, toSnakeCase, toTitleCase, toggleClass, tomorrow, transform, triggerEvent, truncateString, truthCheckCollection, unary, uncurry, unescapeHTML, unflattenObject, unfold, union, unionBy, unionWith, uniqueElements, uniqueElementsBy, uniqueElementsByRight, uniqueSymmetricDifference, untildify, unzip, unzipWith, validateNumber, vectorDistance, when, without, words, xProd, yesNo, yesterday, zip, zipObject, zipWith };
|
||||
export { CSVToArray, CSVToJSON, JSONToFile, JSONtoCSV, RGBToHex, URLJoin, UUIDGeneratorBrowser, UUIDGeneratorNode, all, allEqual, any, approximatelyEqual, arrayToCSV, arrayToHtmlList, ary, atob, attempt, average, averageBy, bifurcate, bifurcateBy, bind, bindAll, bindKey, binomialCoefficient, bottomVisible, btoa, byteSize, call, capitalize, capitalizeEveryWord, castArray, chainAsync, checkProp, chunk, clampNumber, cloneRegExp, coalesce, coalesceFactory, collectInto, colorize, compact, compactWhitespace, compose, composeRight, converge, copyToClipboard, countBy, countOccurrences, counter, createDirIfNotExists, createElement, createEventHub, currentURL, curry, dayOfYear, debounce, decapitalize, deepClone, deepFlatten, deepFreeze, deepGet, deepMapKeys, defaults, defer, degreesToRads, delay, detectDeviceType, difference, differenceBy, differenceWith, dig, digitize, distance, drop, dropRight, dropRightWhile, dropWhile, elementContains, elementIsVisibleInViewport, elo, equals, escapeHTML, escapeRegExp, everyNth, extendHex, factorial, fibonacci, filterFalsy, filterNonUnique, filterNonUniqueBy, findKey, findLast, findLastIndex, findLastKey, flatten, flattenObject, flip, forEachRight, forOwn, forOwnRight, formToObject, formatDuration, fromCamelCase, functionName, functions, gcd, geometricProgression, get, getColonTimeFromDate, getDaysDiffBetweenDates, getImages, getMeridiemSuffixOfInteger, getScrollPosition, getStyle, getType, getURLParameters, groupBy, hammingDistance, hasClass, hasFlags, hashBrowser, hashNode, head, hexToRGB, hide, httpGet, httpPost, httpsRedirect, hz, inRange, indentString, indexOfAll, initial, initialize2DArray, initializeArrayWithRange, initializeArrayWithRangeRight, initializeArrayWithValues, initializeNDArray, insertAfter, insertBefore, intersection, intersectionBy, intersectionWith, invertKeyValues, is, isAbsoluteURL, isAfterDate, isAnagram, isArrayLike, isBeforeDate, isBoolean, isBrowser, isBrowserTabFocused, isDivisible, isDuplexStream, isEmpty, isEven, isFunction, isLowerCase, isNegativeZero, isNil, isNull, isNumber, isObject, isObjectLike, isPlainObject, isPrime, isPrimitive, isPromiseLike, isReadableStream, isSameDate, isSorted, isStream, isString, isSymbol, isTravisCI, isUndefined, isUpperCase, isValidJSON, isWeekday, isWeekend, isWritableStream, join, last, lcm, longestItem, lowercaseKeys, luhnCheck, mapKeys, mapNumRange, mapObject, mapString, mapValues, mask, matches, matchesWith, maxBy, maxDate, maxN, median, memoize, merge, midpoint, minBy, minDate, minN, mostPerformant, negate, nest, nodeListToArray, none, nthArg, nthElement, objectFromPairs, objectToPairs, observeMutations, off, offset, omit, omitBy, on, onUserInputChange, once, orderBy, over, overArgs, pad, palindrome, parseCookie, partial, partialRight, partition, percentile, permutations, pick, pickBy, pipeAsyncFunctions, pipeFunctions, pluralize, powerset, prefix, prettyBytes, primes, promisify, pull, pullAtIndex, pullAtValue, pullBy, radsToDegrees, randomHexColorCode, randomIntArrayInRange, randomIntegerInRange, randomNumberInRange, readFileLines, rearg, recordAnimationFrames, redirect, reduceSuccessive, reduceWhich, reducedFilter, reject, remove, removeNonASCII, renameKeys, reverseString, round, runAsync, runPromisesInSeries, sample, sampleSize, scrollToTop, sdbm, serializeCookie, serializeForm, setStyle, shallowClone, shank, show, shuffle, similarity, size, sleep, smoothScroll, sortCharactersInString, sortedIndex, sortedIndexBy, sortedLastIndex, sortedLastIndexBy, splitLines, spreadOver, stableSort, standardDeviation, stringPermutations, stripHTMLTags, sum, sumBy, sumPower, symmetricDifference, symmetricDifferenceBy, symmetricDifferenceWith, tail, take, takeRight, takeRightWhile, takeWhile, throttle, timeTaken, times, toCamelCase, toCurrency, toDecimalMark, toHash, toKebabCase, toOrdinalSuffix, toSafeInteger, toSnakeCase, toTitleCase, toggleClass, tomorrow, transform, triggerEvent, truncateString, truthCheckCollection, unary, uncurry, unescapeHTML, unflattenObject, unfold, union, unionBy, unionWith, uniqueElements, uniqueElementsBy, uniqueElementsByRight, uniqueSymmetricDifference, untildify, unzip, unzipWith, validateNumber, vectorDistance, when, without, words, xProd, yesNo, yesterday, zip, zipObject, zipWith };
|
||||
|
||||
6
dist/_30s.js
vendored
6
dist/_30s.js
vendored
@ -661,7 +661,10 @@
|
||||
}
|
||||
};
|
||||
const isWeekday = (t = new Date()) => {
|
||||
return t.getDay() >= 1 && t.getDay() <= 5;
|
||||
return t.getDay() % 6 !== 0;
|
||||
};
|
||||
const isWeekend = (t = new Date()) => {
|
||||
return t.getDay() % 6 === 0;
|
||||
};
|
||||
const isWritableStream = val =>
|
||||
val !== null &&
|
||||
@ -1561,6 +1564,7 @@
|
||||
exports.isUpperCase = isUpperCase;
|
||||
exports.isValidJSON = isValidJSON;
|
||||
exports.isWeekday = isWeekday;
|
||||
exports.isWeekend = isWeekend;
|
||||
exports.isWritableStream = isWritableStream;
|
||||
exports.join = join;
|
||||
exports.last = last;
|
||||
|
||||
@ -386,7 +386,7 @@
|
||||
"archived": false
|
||||
},
|
||||
"meta": {
|
||||
"hash": "f6aaee6ddb2ff7884f5bc5b5d37d1def44b549c3b260f4522ab812f5d163996c"
|
||||
"hash": "8dcc260ee20fc2b7e5a17785db0c0b4ff357cea38a488d5219e47f93805bcade"
|
||||
}
|
||||
},
|
||||
{
|
||||
@ -841,7 +841,7 @@
|
||||
"archived": false
|
||||
},
|
||||
"meta": {
|
||||
"hash": "03b2d6752610b5912a1e4019ffc7ef9f199636595ffd8c58b14cdd9ffa0ec28a"
|
||||
"hash": "e66191a28aba485589b3b06933c13d999962af982b5b7b1b136c10f4d09abd8d"
|
||||
}
|
||||
},
|
||||
{
|
||||
@ -971,7 +971,7 @@
|
||||
"archived": false
|
||||
},
|
||||
"meta": {
|
||||
"hash": "f982b4e8e3ec3c8b0c2ef4f19b38dac90df6ebe2dd4daa0126c917ebc07d3e62"
|
||||
"hash": "828a6f2f3b94cc537ef0ee30c5ebda28fff688fea65030e47d5721831bdb48ce"
|
||||
}
|
||||
},
|
||||
{
|
||||
@ -1192,7 +1192,7 @@
|
||||
"archived": false
|
||||
},
|
||||
"meta": {
|
||||
"hash": "319e1a8fb41490965ee6e28db3e139e65c4ea5b7f43e332bc7216cd790e5d409"
|
||||
"hash": "383ed61e69b8f63ae42d0746a1995057f4f65b4af6ca7778d8f1771144802acd"
|
||||
}
|
||||
},
|
||||
{
|
||||
@ -2584,7 +2584,21 @@
|
||||
"archived": false
|
||||
},
|
||||
"meta": {
|
||||
"hash": "dedf944d8f3368a1625a8f6092139178390c0d140283426e9ea79f3745483b2b"
|
||||
"hash": "930437470e6f5e631df8fcc8df406babf81968e9ad11b1646d24383dec372520"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "isWeekend",
|
||||
"type": "snippetListing",
|
||||
"attributes": {
|
||||
"tags": [
|
||||
"date",
|
||||
"beginner"
|
||||
],
|
||||
"archived": false
|
||||
},
|
||||
"meta": {
|
||||
"hash": "710980ffa0d9cca0fe0a898b6f2991613d3ea1afd665b14642ca06e2c5003170"
|
||||
}
|
||||
},
|
||||
{
|
||||
@ -3450,7 +3464,7 @@
|
||||
"archived": false
|
||||
},
|
||||
"meta": {
|
||||
"hash": "dcdf66e8d0eb4a1761c6b767b8cc350757087ae817ec371436faab0fff7c0051"
|
||||
"hash": "4815876fd6dbb17ad34c0d8918e7a72d837104f9beee7dc51b0fa73057b9e83e"
|
||||
}
|
||||
},
|
||||
{
|
||||
@ -3822,7 +3836,7 @@
|
||||
"archived": false
|
||||
},
|
||||
"meta": {
|
||||
"hash": "2fd54c9fc1fb5b0a981df69501b518d5830ea77544d4d5290c7cc13745ca00ea"
|
||||
"hash": "ec9cb9384817f84cf0bacd62a23b69b2304fa2cf0352b16d3950b21d48c04f11"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
||||
@ -568,7 +568,7 @@
|
||||
},
|
||||
"meta": {
|
||||
"archived": false,
|
||||
"hash": "f6aaee6ddb2ff7884f5bc5b5d37d1def44b549c3b260f4522ab812f5d163996c"
|
||||
"hash": "8dcc260ee20fc2b7e5a17785db0c0b4ff357cea38a488d5219e47f93805bcade"
|
||||
}
|
||||
},
|
||||
{
|
||||
@ -1240,7 +1240,7 @@
|
||||
},
|
||||
"meta": {
|
||||
"archived": false,
|
||||
"hash": "03b2d6752610b5912a1e4019ffc7ef9f199636595ffd8c58b14cdd9ffa0ec28a"
|
||||
"hash": "e66191a28aba485589b3b06933c13d999962af982b5b7b1b136c10f4d09abd8d"
|
||||
}
|
||||
},
|
||||
{
|
||||
@ -1433,7 +1433,7 @@
|
||||
},
|
||||
"meta": {
|
||||
"archived": false,
|
||||
"hash": "f982b4e8e3ec3c8b0c2ef4f19b38dac90df6ebe2dd4daa0126c917ebc07d3e62"
|
||||
"hash": "828a6f2f3b94cc537ef0ee30c5ebda28fff688fea65030e47d5721831bdb48ce"
|
||||
}
|
||||
},
|
||||
{
|
||||
@ -1759,7 +1759,7 @@
|
||||
},
|
||||
"meta": {
|
||||
"archived": false,
|
||||
"hash": "319e1a8fb41490965ee6e28db3e139e65c4ea5b7f43e332bc7216cd790e5d409"
|
||||
"hash": "383ed61e69b8f63ae42d0746a1995057f4f65b4af6ca7778d8f1771144802acd"
|
||||
}
|
||||
},
|
||||
{
|
||||
@ -3796,10 +3796,10 @@
|
||||
"type": "snippet",
|
||||
"attributes": {
|
||||
"fileName": "isWeekday.md",
|
||||
"text": "Results in a boolean representation of a specific date.\n\nPass the specific date object firstly.\nUse `Date.getDay()` to check weekday then return a boolean.",
|
||||
"text": "Results in a boolean representation of a specific date.\n\nPass the specific date object firstly.\nUse `Date.getDay()` to check weekday by using a modulo operator and then returning a boolean.",
|
||||
"codeBlocks": {
|
||||
"es6": "const isWeekday = (t = new Date()) => {\n return t.getDay() >= 1 && t.getDay() <= 5;\n};",
|
||||
"es5": "var isWeekday = function isWeekday() {\n var t = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : new Date();\n return t.getDay() >= 1 && t.getDay() <= 5;\n};",
|
||||
"es6": "const isWeekday = (t = new Date()) => {\n return t.getDay() % 6 !== 0;\n};",
|
||||
"es5": "var isWeekday = function isWeekday() {\n var t = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : new Date();\n return t.getDay() % 6 !== 0;\n};",
|
||||
"example": "isWeekday(); // true (if current date is 2019-07-19)"
|
||||
},
|
||||
"tags": [
|
||||
@ -3809,7 +3809,28 @@
|
||||
},
|
||||
"meta": {
|
||||
"archived": false,
|
||||
"hash": "dedf944d8f3368a1625a8f6092139178390c0d140283426e9ea79f3745483b2b"
|
||||
"hash": "930437470e6f5e631df8fcc8df406babf81968e9ad11b1646d24383dec372520"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "isWeekend",
|
||||
"type": "snippet",
|
||||
"attributes": {
|
||||
"fileName": "isWeekend.md",
|
||||
"text": "Results in a boolean representation of a specific date.\n\nPass the specific date object firstly.\nUse `Date.getDay()` to check weekend based on the day being returned as 0 - 6 using a modulo operation then return a boolean.",
|
||||
"codeBlocks": {
|
||||
"es6": "const isWeekend = (t = new Date()) => {\n return t.getDay() % 6 === 0;\n};",
|
||||
"es5": "var isWeekend = function isWeekend() {\n var t = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : new Date();\n return t.getDay() % 6 === 0;\n};",
|
||||
"example": "isWeekend(); // 2018-10-19 (if current date is 2018-10-18)"
|
||||
},
|
||||
"tags": [
|
||||
"date",
|
||||
"beginner"
|
||||
]
|
||||
},
|
||||
"meta": {
|
||||
"archived": false,
|
||||
"hash": "710980ffa0d9cca0fe0a898b6f2991613d3ea1afd665b14642ca06e2c5003170"
|
||||
}
|
||||
},
|
||||
{
|
||||
@ -5070,7 +5091,7 @@
|
||||
"codeBlocks": {
|
||||
"es6": "const pipeAsyncFunctions = (...fns) => arg => fns.reduce((p, f) => p.then(f), Promise.resolve(arg));",
|
||||
"es5": "var pipeAsyncFunctions = function pipeAsyncFunctions() {\n for (var _len = arguments.length, fns = new Array(_len), _key = 0; _key < _len; _key++) {\n fns[_key] = arguments[_key];\n }\n\n return function (arg) {\n return fns.reduce(function (p, f) {\n return p.then(f);\n }, Promise.resolve(arg));\n };\n};",
|
||||
"example": "const sum = pipeAsyncFunctions(\n x => x + 1,\n x => new Promise(resolve => setTimeout(() => resolve(x + 2), 1000)),\n x => x + 3,\n async x => (await x) + 4\n);\n(async () => {\n console.log(await sum(5)); // 15 (after one second)\n})();"
|
||||
"example": "const sum = pipeAsyncFunctions(\n x => x + 1,\n x => new Promise(resolve => setTimeout(() => resolve(x + 2), 1000)),\n x => x + 3,\n async x => (await x) + 4\n);\n(async() => {\n console.log(await sum(5)); // 15 (after one second)\n})();"
|
||||
},
|
||||
"tags": [
|
||||
"adapter",
|
||||
@ -5081,7 +5102,7 @@
|
||||
},
|
||||
"meta": {
|
||||
"archived": false,
|
||||
"hash": "dcdf66e8d0eb4a1761c6b767b8cc350757087ae817ec371436faab0fff7c0051"
|
||||
"hash": "4815876fd6dbb17ad34c0d8918e7a72d837104f9beee7dc51b0fa73057b9e83e"
|
||||
}
|
||||
},
|
||||
{
|
||||
@ -5628,7 +5649,7 @@
|
||||
},
|
||||
"meta": {
|
||||
"archived": false,
|
||||
"hash": "2fd54c9fc1fb5b0a981df69501b518d5830ea77544d4d5290c7cc13745ca00ea"
|
||||
"hash": "ec9cb9384817f84cf0bacd62a23b69b2304fa2cf0352b16d3950b21d48c04f11"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
||||
@ -1672,10 +1672,19 @@
|
||||
"prefix": "30s_isWeekday",
|
||||
"body": [
|
||||
"const isWeekday = (t = new Date()) => {",
|
||||
" return t.getDay() >= 1 && t.getDay() <= 5;",
|
||||
" return t.getDay() % 6 !== 0;",
|
||||
"};"
|
||||
],
|
||||
"description": "Results in a boolean representation of a specific date.\n\nPass the specific date object firstly.\nUse `Date.getDay()` to check weekday then return a boolean"
|
||||
"description": "Results in a boolean representation of a specific date.\n\nPass the specific date object firstly.\nUse `Date.getDay()` to check weekday by using a modulo operator and then returning a boolean"
|
||||
},
|
||||
"isWeekend": {
|
||||
"prefix": "30s_isWeekend",
|
||||
"body": [
|
||||
"const isWeekend = (t = new Date()) => {",
|
||||
" return t.getDay() % 6 === 0;",
|
||||
"};"
|
||||
],
|
||||
"description": "Results in a boolean representation of a specific date.\n\nPass the specific date object firstly.\nUse `Date.getDay()` to check weekend based on the day being returned as 0 - 6 using a modulo operation then return a boolean"
|
||||
},
|
||||
"isWritableStream": {
|
||||
"prefix": "30s_isWritableStream",
|
||||
|
||||
Reference in New Issue
Block a user