feat(stdlib): new modules + eslint/tsconfig migration

- Add array/async/etc. modules and type tests; migrate to eslint flat config
  and composite tsconfig (vitest typecheck enabled).
- Fix PubSub.emit to snapshot listeners before iterating (stable EventEmitter
  semantics; avoids invoking listeners added during the same emit).
This commit is contained in:
2026-06-07 16:29:08 +07:00
parent 008d85a8fd
commit 96f4cba4a8
118 changed files with 3511 additions and 240 deletions
+17 -1
View File
@@ -1,4 +1,4 @@
import { describe, it, expect } from 'vitest';
import { describe, expect, it } from 'vitest';
import { Deque } from '.';
describe('deque', () => {
@@ -31,6 +31,22 @@ describe('deque', () => {
expect(deque.length).toBe(0);
expect(deque.isFull).toBe(false);
});
it('throw when initial values exceed maxSize', () => {
expect(() => new Deque([1, 2, 3, 4, 5], { maxSize: 3 })).toThrow(RangeError);
});
it('enforce maxSize against subsequent pushes', () => {
const deque = new Deque([1, 2], { maxSize: 2 });
expect(deque.isFull).toBe(true);
expect(() => deque.pushBack(3)).toThrow(RangeError);
expect(() => deque.pushFront(0)).toThrow(RangeError);
deque.popFront();
expect(deque.isFull).toBe(false);
expect(() => deque.pushBack(3)).not.toThrow();
});
});
describe('pushBack', () => {