@dashkite/joy
Version:
[](https://firstdonoharm.dev/version/3/0/core.html)
260 lines (259 loc) • 22.2 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
function _export(target, all) {
for(var name in all)Object.defineProperty(target, name, {
enumerable: true,
get: Object.getOwnPropertyDescriptor(all, name).get
});
}
_export(exports, {
get cat () {
return cat;
},
get compact () {
return compact;
},
get dequeue () {
return dequeue;
},
get enqueue () {
return enqueue;
},
get fifth () {
return fifth;
},
get fill () {
return fill;
},
get first () {
return first;
},
get fourth () {
return fourth;
},
get insert () {
return insert;
},
get last () {
return last;
},
get nth () {
return nth;
},
get pair () {
return pair;
},
get peek () {
return peek;
},
get pluck () {
return pluck;
},
get poke () {
return poke;
},
get pop () {
return pop;
},
get push () {
return push;
},
get range () {
return range;
},
get remove () {
return remove;
},
get rest () {
return rest;
},
get second () {
return second;
},
get shift () {
return shift;
},
get shuffle () {
return shuffle;
},
get slice () {
return slice;
},
get sort () {
return sort;
},
get splice () {
return splice;
},
get third () {
return third;
},
get unshift () {
return unshift;
}
});
const _function = require("./function");
const _value = require("./value");
const _set = /*#__PURE__*/ _interop_require_wildcard(require("./set"));
function _getRequireWildcardCache(nodeInterop) {
if (typeof WeakMap !== "function") return null;
var cacheBabelInterop = new WeakMap();
var cacheNodeInterop = new WeakMap();
return (_getRequireWildcardCache = function(nodeInterop) {
return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
})(nodeInterop);
}
function _interop_require_wildcard(obj, nodeInterop) {
if (!nodeInterop && obj && obj.__esModule) {
return obj;
}
if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
return {
default: obj
};
}
var cache = _getRequireWildcardCache(nodeInterop);
if (cache && cache.has(obj)) {
return cache.get(obj);
}
var newObj = {
__proto__: null
};
var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
for(var key in obj){
if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
if (desc && (desc.get || desc.set)) {
Object.defineProperty(newObj, key, desc);
} else {
newObj[key] = obj[key];
}
}
}
newObj.default = obj;
if (cache) {
cache.set(obj, newObj);
}
return newObj;
}
var cat, compact, dequeue, enqueue, fifth, fill, first, floor, fourth, insert, last, nth, pair, peek, pluck, poke, pop, push, random, range, remove, rest, round, second, shift, shuffle, slice, sort, splice, third, unshift, splice1 = [].splice;
nth = (0, _function.curry)(function(i, ax) {
return ax[i - 1];
});
first = nth(1);
second = nth(2);
third = nth(3);
fourth = nth(4);
fifth = nth(5);
last = function(arg) {
var arg, last, rest;
[...rest] = arg, [last] = splice1.call(rest, -1);
return last;
};
rest = function([first, ...rest]) {
return rest;
};
// Array mutators
push = (0, _function.curry)(function(a, ax) {
ax.push(a);
return ax;
});
pop = (0, _function.detach)(Array.prototype.pop);
shift = (0, _function.detach)(Array.prototype.shift);
unshift = (0, _function.curry)(function(a, ax) {
ax.unshift(a);
return ax;
});
enqueue = unshift;
dequeue = pop;
// Add for completeness
peek = function(ax) {
return ax[ax.length - 1];
};
poke = function(a, ax) {
return ax[ax.length - 1] = a;
};
// true splice without weird insertion option
// or compose-breaking return value
splice = (0, _function.curry)(function(i, n, ax) {
ax.splice(i, n);
return ax;
});
insert = (0, _function.curry)(function(i, a, ax) {
ax.splice(i, 0, a);
return ax;
});
remove = (0, _function.curry)(function(a, ax) {
var i;
if ((i = ax.indexOf(a)) !== -1) {
ax.splice(i, 1);
}
return ax;
});
cat = (0, _function.detach)(Array.prototype.concat);
slice = (0, _function.curry)(function(i, j, ax) {
return ax.slice(i, j);
});
fill = (0, _function.curry)(function(a, ax) {
return ax.fill(a);
});
range = (0, _function.curry)(function(start, finish) {
return (function() {
var results = [];
for(var k = start; start <= finish ? k <= finish : k >= finish; start <= finish ? k++ : k--){
results.push(k);
}
return results;
}).apply(this);
});
({ random, round } = Math);
pluck = function(ax) {
return ax[round(random() * (ax.length - 1))];
};
pair = (0, _function.curry)(function(a, b) {
return [
a,
b
];
});
sort = (0, _function.curry)(function(f, ax) {
return ax.toSorted(f, ax);
});
compact = (0, _function.curry)(function(ax) {
return ax.filter(function(a) {
return a != null;
});
});
// https://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle
({ floor, random } = Math);
shuffle = function(ax) {
var bx, i, j;
bx = [
...ax
];
i = bx.length;
if (!(i <= 1)) {
while(--i > 0){
// the distinguishing characteristic of fisher-yates is that the random
// value generated is bounded by the iterator index (Math.random() * i)
// instead of the size of the array (Math.random() * bx.length)
j = floor(random() * (i + 1));
[bx[i], bx[j]] = [
bx[j],
bx[i]
];
}
if ((0, _value.equal)(ax, bx)) {
return shuffle(ax);
} else {
return bx;
}
} else {
return bx;
}
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiL0BkYXNoa2l0ZS9qb3kvc3JjL2FycmF5LmNvZmZlZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxJQUFBLEdBQUEsRUFBQSxPQUFBLEVBQUEsT0FBQSxFQUFBLE9BQUEsRUFBQSxLQUFBLEVBQUEsSUFBQSxFQUFBLEtBQUEsRUFBQSxLQUFBLEVBQUEsTUFBQSxFQUFBLE1BQUEsRUFBQSxJQUFBLEVBQUEsR0FBQSxFQUFBLElBQUEsRUFBQSxJQUFBLEVBQUEsS0FBQSxFQUFBLElBQUEsRUFBQSxHQUFBLEVBQUEsSUFBQSxFQUFBLE1BQUEsRUFBQSxLQUFBLEVBQUEsTUFBQSxFQUFBLElBQUEsRUFBQSxLQUFBLEVBQUEsTUFBQSxFQUFBLEtBQUEsRUFBQSxPQUFBLEVBQUEsS0FBQSxFQUFBLElBQUEsRUFBQSxNQUFBLEVBQUEsS0FBQSxFQUFBLE9BQUE7RUFBQTs7QUFBQSxPQUFBO0VBQVEsS0FBUjtFQUFlLElBQWY7RUFBcUIsT0FBckI7RUFBOEIsT0FBOUI7RUFBdUMsQ0FBdkM7RUFBMEMsUUFBMUM7RUFDRSxLQURGO0VBQ1MsTUFEVDtFQUNpQixPQURqQjtFQUMwQixNQUQxQjtDQUFBLE1BQUE7O0FBRUEsT0FBQTtFQUFRLEtBQVI7Q0FBQSxNQUFBOztBQUNBLE9BQU8sQ0FBQSxNQUFQLE1BQUE7O0FBRUEsR0FBQSxHQUFNLEtBQUEsQ0FBTSxRQUFBLENBQUMsQ0FBRCxFQUFJLEVBQUosQ0FBQTtTQUFXLEVBQUUsQ0FBQyxDQUFBLEdBQUksQ0FBTDtBQUFiLENBQU47O0FBQ04sS0FBQSxHQUFTLEdBQUEsQ0FBSSxDQUFKOztBQUNULE1BQUEsR0FBUyxHQUFBLENBQUksQ0FBSjs7QUFDVCxLQUFBLEdBQVMsR0FBQSxDQUFJLENBQUo7O0FBQ1QsTUFBQSxHQUFTLEdBQUEsQ0FBSSxDQUFKOztBQUNULEtBQUEsR0FBUyxHQUFBLENBQUksQ0FBSjs7QUFDVCxJQUFBLEdBQU8sUUFBQSxDQUFDLEdBQUQs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QkUsTUFuQkY7RUFvQkUsR0FwQkY7RUFxQkUsS0FyQkY7RUFzQkUsSUF0QkY7RUF1QkUsS0F2QkY7RUF3QkUsS0F4QkY7RUF5QkUsSUF6QkY7RUEwQkUsSUExQkY7RUEyQkUsT0EzQkY7RUE0QkUsT0E1QkYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2N1cnJ5LCBmbGlwLCBjb21wb3NlLCBwYXJ0aWFsLCBfLCBpZGVudGl0eSxcbiAgdW5hcnksIGJpbmFyeSwgdGVybmFyeSwgZGV0YWNofSBmcm9tIFwiLi9mdW5jdGlvblwiXG5pbXBvcnQge2VxdWFsfSBmcm9tIFwiLi92YWx1ZVwiXG5pbXBvcnQgKiBhcyBTZSBmcm9tIFwiLi9zZXRcIlxuXG5udGggPSBjdXJyeSAoaSwgYXgpIC0+IGF4W2kgLSAxXVxuZmlyc3QgID0gbnRoIDFcbnNlY29uZCA9IG50aCAyXG50aGlyZCAgPSBudGggM1xuZm91cnRoID0gbnRoIDRcbmZpZnRoICA9IG50aCA1XG5sYXN0ID0gKFtyZXN0Li4uLCBsYXN0XSkgLT4gbGFzdFxucmVzdCA9IChbZmlyc3QsIHJlc3QuLi5dKSAtPiByZXN0XG5cbiMgQXJyYXkgbXV0YXRvcnNcbnB1c2ggPSBjdXJyeSAoYSwgYXgpIC0+IGF4LnB1c2ggYTsgYXhcbnBvcCA9IGRldGFjaCBBcnJheTo6cG9wXG5zaGlmdCA9IGRldGFjaCBBcnJheTo6c2hpZnRcbnVuc2hpZnQgPSBjdXJyeSAoYSwgYXgpIC0+IGF4LnVuc2hpZnQgYTsgYXhcbmVucXVldWUgPSB1bnNoaWZ0XG5kZXF1ZXVlID0gcG9wXG5cbiMgQWRkIGZvciBjb21wbGV0ZW5lc3NcbnBlZWsgPSAoIGF4ICkgLT4gYXhbIGF4Lmxlbmd0aCAtIDEgXVxucG9rZSA9ICggYSwgYXggKSAtPiBheFsgYXgubGVuZ3RoIC0gMSBdID0gYVxuXG4jIHRydWUgc3BsaWNlIHdpdGhvdXQgd2VpcmQgaW5zZXJ0aW9uIG9wdGlvblxuIyBvciBjb21wb3NlLWJyZWFraW5nIHJldHVybiB2YWx1ZVxuc3BsaWNlID0gY3VycnkgKGksIG4sIGF4KSAtPlxuICBheC5zcGxpY2UgaSwgblxuICBheFxuXG5pbnNlcnQgPSBjdXJyeSAoaSwgYSwgYXgpIC0+XG4gIGF4LnNwbGljZSBpLCAwLCBhXG4gIGF4XG5cbnJlbW92ZSA9IGN1cnJ5IChhLCBheCkgLT5cbiAgKGF4LnNwbGljZSBpLCAxKSBpZiAoaSA9IGF4LmluZGV4T2YoIGEgKSkgIT0gLTFcbiAgYXhcblxuY2F0ID0gZGV0YWNoIEFycmF5Ojpjb25jYXRcblxuc2xpY2UgPSBjdXJyeSAoaSwgaiwgYXgpIC0+IGF4W2kuLi5qXVxuXG5maWxsID0gY3VycnkgKGEsIGF4KSAtPiBheC5maWxsIGFcblxucmFuZ2UgPSBjdXJyeSAoc3RhcnQsIGZpbmlzaCkgLT4gW3N0YXJ0Li5maW5pc2hdXG5cbntyYW5kb20sIHJvdW5kfSA9IE1hdGhcbnBsdWNrID0gKGF4KSAtPiBheFsocm91bmQgcmFuZG9tKCkgKiAoYXgubGVuZ3RoIC0gMSkpXVxuXG5wYWlyID0gY3VycnkgKGEsIGIpIC0+IFthLCBiXVxuXG5zb3J0ID0gY3VycnkgKGYsIGF4KSAtPiBheC50b1NvcnRlZCBmLCBheFxuXG5jb21wYWN0ID0gY3VycnkgKCBheCApIC0+IGF4LmZpbHRlciAoIGEgKSAtPiBhP1xuXG5cbiMgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRmlzaGVyJUUyJTgwJTkzWWF0ZXNfc2h1ZmZsZVxuI1xueyBmbG9vciwgcmFuZG9tIH0gPSBNYXRoXG5zaHVmZmxlID0gKCBheCApIC0+XG4gIGJ4ID0gWyBheC4uLiBdXG4gIGkgPSBieC5sZW5ndGhcbiAgdW5sZXNzIGkgPD0gMVxuICAgIHdoaWxlIC0taSA+IDBcbiAgICAgICMgdGhlIGRpc3Rpbmd1aXNoaW5nIGNoYXJhY3RlcmlzdGljIG9mIGZpc2hlci15YXRlcyBpcyB0aGF0IHRoZSByYW5kb21cbiAgICAgICMgdmFsdWUgZ2VuZXJhdGVkIGlzIGJvdW5kZWQgYnkgdGhlIGl0ZXJhdG9yIGluZGV4IChNYXRoLnJhbmRvbSgpICogaSlcbiAgICAgICMgaW5zdGVhZCBvZiB0aGUgc2l6ZSBvZiB0aGUgYXJyYXkgKE1hdGgucmFuZG9tKCkgKiBieC5sZW5ndGgpXG4gICAgICBqID0gZmxvb3IgcmFuZG9tKCkgKiAoaSArIDEpXG4gICAgICBbYnhbaV0sIGJ4W2pdXSA9IFtieFtqXSwgYnhbaV1dXG4gICAgaWYgZXF1YWwgYXgsIGJ4IHRoZW4gc2h1ZmZsZSBheCBlbHNlIGJ4XG4gIGVsc2VcbiAgICBieFxuXG5leHBvcnQge1xuICBmaXJzdFxuICBzZWNvbmRcbiAgdGhpcmRcbiAgZm91cnRoXG4gIGZpZnRoXG4gIG50aFxuICBsYXN0XG4gIHJlc3RcbiAgcHVzaFxuICBwb3BcbiAgc2hpZnRcbiAgdW5zaGlmdFxuICBlbnF1ZXVlXG4gIGRlcXVldWVcbiAgcGVla1xuICBwb2tlXG4gIHNwbGljZVxuICBpbnNlcnRcbiAgcmVtb3ZlXG4gIGNhdFxuICBzbGljZVxuICBmaWxsXG4gIHJhbmdlXG4gIHBsdWNrXG4gIHBhaXJcbiAgc29ydFxuICBjb21wYWN0XG4gIHNodWZmbGVcbn1cbiJdfQ==
//# sourceURL=/@dashkite/joy/src/array.coffee
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiIiwic291cmNlcyI6WyIvQGRhc2hraXRlL2pveS9zcmMvYXJyYXkuY29mZmVlIl0sInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2N1cnJ5LCBmbGlwLCBjb21wb3NlLCBwYXJ0aWFsLCBfLCBpZGVudGl0eSxcbiAgdW5hcnksIGJpbmFyeSwgdGVybmFyeSwgZGV0YWNofSBmcm9tIFwiLi9mdW5jdGlvblwiXG5pbXBvcnQge2VxdWFsfSBmcm9tIFwiLi92YWx1ZVwiXG5pbXBvcnQgKiBhcyBTZSBmcm9tIFwiLi9zZXRcIlxuXG5udGggPSBjdXJyeSAoaSwgYXgpIC0+IGF4W2kgLSAxXVxuZmlyc3QgID0gbnRoIDFcbnNlY29uZCA9IG50aCAyXG50aGlyZCAgPSBudGggM1xuZm91cnRoID0gbnRoIDRcbmZpZnRoICA9IG50aCA1XG5sYXN0ID0gKFtyZXN0Li4uLCBsYXN0XSkgLT4gbGFzdFxucmVzdCA9IChbZmlyc3QsIHJlc3QuLi5dKSAtPiByZXN0XG5cbiMgQXJyYXkgbXV0YXRvcnNcbnB1c2ggPSBjdXJyeSAoYSwgYXgpIC0+IGF4LnB1c2ggYTsgYXhcbnBvcCA9IGRldGFjaCBBcnJheTo6cG9wXG5zaGlmdCA9IGRldGFjaCBBcnJheTo6c2hpZnRcbnVuc2hpZnQgPSBjdXJyeSAoYSwgYXgpIC0+IGF4LnVuc2hpZnQgYTsgYXhcbmVucXVldWUgPSB1bnNoaWZ0XG5kZXF1ZXVlID0gcG9wXG5cbiMgQWRkIGZvciBjb21wbGV0ZW5lc3NcbnBlZWsgPSAoIGF4ICkgLT4gYXhbIGF4Lmxlbmd0aCAtIDEgXVxucG9rZSA9ICggYSwgYXggKSAtPiBheFsgYXgubGVuZ3RoIC0gMSBdID0gYVxuXG4jIHRydWUgc3BsaWNlIHdpdGhvdXQgd2VpcmQgaW5zZXJ0aW9uIG9wdGlvblxuIyBvciBjb21wb3NlLWJyZWFraW5nIHJldHVybiB2YWx1ZVxuc3BsaWNlID0gY3VycnkgKGksIG4sIGF4KSAtPlxuICBheC5zcGxpY2UgaSwgblxuICBheFxuXG5pbnNlcnQgPSBjdXJyeSAoaSwgYSwgYXgpIC0+XG4gIGF4LnNwbGljZSBpLCAwLCBhXG4gIGF4XG5cbnJlbW92ZSA9IGN1cnJ5IChhLCBheCkgLT5cbiAgKGF4LnNwbGljZSBpLCAxKSBpZiAoaSA9IGF4LmluZGV4T2YoIGEgKSkgIT0gLTFcbiAgYXhcblxuY2F0ID0gZGV0YWNoIEFycmF5Ojpjb25jYXRcblxuc2xpY2UgPSBjdXJyeSAoaSwgaiwgYXgpIC0+IGF4W2kuLi5qXVxuXG5maWxsID0gY3VycnkgKGEsIGF4KSAtPiBheC5maWxsIGFcblxucmFuZ2UgPSBjdXJyeSAoc3RhcnQsIGZpbmlzaCkgLT4gW3N0YXJ0Li5maW5pc2hdXG5cbntyYW5kb20sIHJvdW5kfSA9IE1hdGhcbnBsdWNrID0gKGF4KSAtPiBheFsocm91bmQgcmFuZG9tKCkgKiAoYXgubGVuZ3RoIC0gMSkpXVxuXG5wYWlyID0gY3VycnkgKGEsIGIpIC0+IFthLCBiXVxuXG5zb3J0ID0gY3VycnkgKGYsIGF4KSAtPiBheC50b1NvcnRlZCBmLCBheFxuXG5jb21wYWN0ID0gY3VycnkgKCBheCApIC0+IGF4LmZpbHRlciAoIGEgKSAtPiBhP1xuXG5cbiMgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRmlzaGVyJUUyJTgwJTkzWWF0ZXNfc2h1ZmZsZVxuI1xueyBmbG9vciwgcmFuZG9tIH0gPSBNYXRoXG5zaHVmZmxlID0gKCBheCApIC0+XG4gIGJ4ID0gWyBheC4uLiBdXG4gIGkgPSBieC5sZW5ndGhcbiAgdW5sZXNzIGkgPD0gMVxuICAgIHdoaWxlIC0taSA+IDBcbiAgICAgICMgdGhlIGRpc3Rpbmd1aXNoaW5nIGNoYXJhY3RlcmlzdGljIG9mIGZpc2hlci15YXRlcyBpcyB0aGF0IHRoZSByYW5kb21cbiAgICAgICMgdmFsdWUgZ2VuZXJhdGVkIGlzIGJvdW5kZWQgYnkgdGhlIGl0ZXJhdG9yIGluZGV4IChNYXRoLnJhbmRvbSgpICogaSlcbiAgICAgICMgaW5zdGVhZCBvZiB0aGUgc2l6ZSBvZiB0aGUgYXJyYXkgKE1hdGgucmFuZG9tKCkgKiBieC5sZW5ndGgpXG4gICAgICBqID0gZmxvb3IgcmFuZG9tKCkgKiAoaSArIDEpXG4gICAgICBbYnhbaV0sIGJ4W2pdXSA9IFtieFtqXSwgYnhbaV1dXG4gICAgaWYgZXF1YWwgYXgsIGJ4IHRoZW4gc2h1ZmZsZSBheCBlbHNlIGJ4XG4gIGVsc2VcbiAgICBieFxuXG5leHBvcnQge1xuICBmaXJzdFxuICBzZWNvbmRcbiAgdGhpcmRcbiAgZm91cnRoXG4gIGZpZnRoXG4gIG50aFxuICBsYXN0XG4gIHJlc3RcbiAgcHVzaFxuICBwb3BcbiAgc2hpZnRcbiAgdW5zaGlmdFxuICBlbnF1ZXVlXG4gIGRlcXVldWVcbiAgcGVla1xuICBwb2tlXG4gIHNwbGljZVxuICBpbnNlcnRcbiAgcmVtb3ZlXG4gIGNhdFxuICBzbGljZVxuICBmaWxsXG4gIHJhbmdlXG4gIHBsdWNrXG4gIHBhaXJcbiAgc29ydFxuICBjb21wYWN0XG4gIHNodWZmbGVcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztRQStGRSxHQXBCRjs7OztlQTJCRSxPQTNCRjs7O2VBY0UsT0FkRjs7UUFhRSxPQWJGOzs7O2VBS0UsS0FMRjs7UUFzQkUsSUF0QkY7Ozs7ZUFDRSxLQURGOzs7ZUFJRSxNQUpGOzs7ZUFrQkUsTUFsQkY7OztlQU9FLElBUEY7O1FBTUUsR0FORjs7OztlQXlCRSxJQXpCRjs7O2VBZUUsSUFmRjs7UUF3QkUsS0F4QkY7Ozs7ZUFnQkUsSUFoQkY7OztlQVVFLEdBVkY7OztlQVNFLElBVEY7OztlQXVCRSxLQXZCRjs7O2VBbUJFLE1BbkJGOzs7ZUFRRSxJQVJGOzs7ZUFFRSxNQUZGOzs7ZUFXRSxLQVhGOzs7ZUE0QkUsT0E1QkY7OztlQXFCRSxLQXJCRjs7O2VBMEJFLElBMUJGOzs7ZUFpQkUsTUFqQkY7OztlQUdFLEtBSEY7OztlQVlFLE9BWkY7OzswQkEzRUE7dUJBRUE7NkRBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUhBLElB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