@effect-ts/system
Version:
Effect-TS is a zero dependency set of libraries to write highly productive, purely functional TypeScript at scale.
74 lines (53 loc) • 1.18 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.arraySpliceIn = arraySpliceIn;
exports.arraySpliceOut = arraySpliceOut;
exports.arrayUpdate = arrayUpdate;
// ets_tracing: off
function arrayUpdate(mutate, at, v, arr) {
let out = arr;
if (!mutate) {
const len = arr.length;
out = new Array(len);
for (let i = 0; i < len; ++i) out[i] = arr[i];
}
out[at] = v;
return out;
}
function arraySpliceOut(mutate, at, arr) {
const newLen = arr.length - 1;
let i = 0;
let g = 0;
let out = arr;
if (mutate) {
i = g = at;
} else {
out = new Array(newLen);
while (i < at) out[g++] = arr[i++];
}
++i;
while (i <= newLen) out[g++] = arr[i++];
if (mutate) {
out.length = newLen;
}
return out;
}
function arraySpliceIn(mutate, at, v, arr) {
const len = arr.length;
if (mutate) {
let i = len;
while (i >= at) arr[i--] = arr[i];
arr[at] = v;
return arr;
}
let i = 0,
g = 0;
const out = new Array(len + 1);
while (i < at) out[g++] = arr[i++];
out[at] = v;
while (i < len) out[++g] = arr[i++];
return out;
}
//# sourceMappingURL=index.js.map