projects
/
websub-hub
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'v1.3-dev' as v1.3.3
[websub-hub]
/
src
/
common.js
diff --git
a/src/common.js
b/src/common.js
index b82b13e35e9b2fbf8224b8ee6407b5e3076ac9a9..55a0807b00757e2c2fa0fe8d50e7c22701b0bacf 100644
(file)
--- a/
src/common.js
+++ b/
src/common.js
@@
-26,6
+26,22
@@
const validHash = (algorithm) => getHashes()
.filter((h) => h.match(/^sha[0-9]+$/))
.includes(algorithm);
.filter((h) => h.match(/^sha[0-9]+$/))
.includes(algorithm);
+
+/**
+ * Return an array containing x if x is not an array.
+ * @param {*} x
+ */
+const ensureArray = (x) => {
+ if (x === undefined) {
+ return [];
+ }
+ if (!Array.isArray(x)) {
+ return Array(x);
+ }
+ return x;
+};
+
+
/**
* Recursively freeze an object.
* @param {Object} o
/**
* Recursively freeze an object.
* @param {Object} o
@@
-84,7
+100,7
@@
const topicLeaseDefaults = () => {
* @param {Number} jitter
* @returns {Number}
*/
* @param {Number} jitter
* @returns {Number}
*/
-
const attemptRetrySeconds = (attempt, retryBackoffSeconds = [60, 120, 360, 1440, 7200, 43200, 86400], jitter = 0.618) => {
+const attemptRetrySeconds = (attempt, retryBackoffSeconds = [60, 120, 360, 1440, 7200, 43200, 86400], jitter = 0.618) => {
const maxAttempt = retryBackoffSeconds.length - 1;
if (typeof attempt !== 'number' || attempt < 0) {
attempt = 0;
const maxAttempt = retryBackoffSeconds.length - 1;
if (typeof attempt !== 'number' || attempt < 0) {
attempt = 0;
@@
-103,7
+119,7
@@
const topicLeaseDefaults = () => {
* @param {Array} array
* @param {Number} per
*/
* @param {Array} array
* @param {Number} per
*/
-
const arrayChunk = (array, per = 1) => {
+const arrayChunk = (array, per = 1) => {
const nChunks = Math.ceil(array.length / per);
return Array.from(Array(nChunks), (_, i) => array.slice(i * per, (i + 1) * per));
}
const nChunks = Math.ceil(array.length / per);
return Array.from(Array(nChunks), (_, i) => array.slice(i * per, (i + 1) * per));
}
@@
-114,7
+130,7
@@
const topicLeaseDefaults = () => {
* @param {Array} dst
* @param {Array} src
*/
* @param {Array} dst
* @param {Array} src
*/
-
const stackSafePush = (dst, src) => {
+const stackSafePush = (dst, src) => {
const jsEngineMaxArguments = 2**16; // Current as of Node 12
arrayChunk(src, jsEngineMaxArguments).forEach((items) => {
Array.prototype.push.apply(dst, items);
const jsEngineMaxArguments = 2**16; // Current as of Node 12
arrayChunk(src, jsEngineMaxArguments).forEach((items) => {
Array.prototype.push.apply(dst, items);
@@
-140,6
+156,7
@@
module.exports = {
arrayChunk,
attemptRetrySeconds,
axiosResponseLogData,
arrayChunk,
attemptRetrySeconds,
axiosResponseLogData,
+ ensureArray,
freezeDeep,
logTruncate,
randomBytesAsync,
freezeDeep,
logTruncate,
randomBytesAsync,