prray
Version:
'Promisified' Array, comes with async method supports(such as mapAsync). And it is compatible with normal array.
38 lines (37 loc) • 1.59 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
const ava_1 = require("ava");
const prray_1 = require("../src/prray");
ava_1.default('array compatibility', (t) => __awaiter(this, void 0, void 0, function* () {
const p = prray_1.prray([1, 2, 3, 4]);
t.is(Array.isArray(p), true);
t.is(p instanceof prray_1.Prray, true);
t.is(p instanceof Array, true);
t.is(p.length, 4);
t.is(p[0], 1);
t.deepEqual(yield p.map(i => i + 1), prray_1.prray([2, 3, 4, 5]));
t.deepEqual([...p], [1, 2, 3, 4]);
t.deepEqual(JSON.stringify(p), JSON.stringify([1, 2, 3, 4]));
let ix = 1;
for (const item of p) {
t.is(item, ix++);
}
ix = 1;
for (const item in p) {
t.is(p[item], ix++);
}
const iterator = p[Symbol.iterator]();
t.is(iterator.next().value, 1);
t.is(iterator.next().value, 2);
t.is(iterator.next().value, 3);
t.is(iterator.next().value, 4);
t.true(iterator.next().done);
}));