Repository navigation
Releases
2.4.0
- 2.4.0 (#32) (6159ff9)
- Publish to npm from GitHub Actions (trusted publishing) (#31) (dec1d9c)
- Count only the TypeScript source in GitHub's language stats (#30) (2934b91)
- Babel 8 (js-build-tools 8.0.0) (#29) (51fcf4a)
- js-build-tools 7.0.0 (#28) (74b47ae)
- js-build-tools 6.9.0 (#27) (d464f42)
- Lockfile: npm audit fix (dev tooling only) (#26) (f011a71)
- Stop tracking generated build output (
dist/,browser/) in git (#25) (76c28d0) - Generate docs at release, not on every build; add .gitattributes (#24) (8f0124a)
- Merge pull request #23 from jheagle/fix/typedoc-warnings (9488fd1)
- Fix the two TypeDoc warnings in the doc comments (e9f0bdc)
- Merge pull request #22 from jheagle/chore/npm12-and-lint (44d8216)
- Adopt js-build-tools 6.4.1: npm 12 install-script choices and a lint script (dcf61cf)
2.3.0
- Merge pull request #20 from jheagle/feature/flat-browser-global (8a22767)
- Merge branch 'main' into feature/flat-browser-global (f70bbdf)
- Merge pull request #21 from jheagle/chore/bump-dependencies (5a6b943)
- update core-js and js-build-tools (1c05926)
- Browser global: everything once, no
default(7bafe75) - Merge pull request #19 from jheagle/feature/copy-files-and-release-it (68757bd)
- Add copyFiles, release-it; fix docs/copyFiles never being exported from gulpfile.mjs (28e8f09)
- Merge pull request #18 from jheagle/chore/update-js-build-tools (ad8a941)
2.2.0
New ScopedCollection<Scope, Key, Value>: a keyed collection partitioned by an arbitrary scope object, backed by WeakMap<Scope, Map<Key, Value>> - a scope's own keys are freed once nothing else references that scope.
This is the first piece of a larger json-dom change (stable item ids, replacing position-based getItemPath/getItemByPath forwarding, which breaks whenever a client's tree differs in shape from the server's). json-dom depends on this published version to build a per-root id→item lookup index. The same WeakMap<Root, X> shape already existed independently twice in battleship's own code - a signal this belongs here as a general collection, not a one-off.
199 tests passing, typecheck and build both clean.
2.1.3
JSDoc which TypeScript makes redundant (@memberOf, @typedef, the {Type} of @param/@returns) is stripped across 28 files, plus 9 stray leftover "@PARAM values]" bracket typos fixed - the types come from the signatures and this repo's own tsconfig now.
docs.enabled now publishes straight to the sibling website checkout, one module per top-level folder of src (collections, recipes, services). The old readme/jsdoc2md config and htmldocs script are gone; MAIN.md/README.md are hand-written and short, and their example is run against the real dist/ before being committed.
2.1.2
2.2.1
2.1.1
Remove a redundant hand-written import 'core-js/stable' in main.ts, which pulled in the whole core-js polyfill set instead of letting the existing usage-based babel config inject only what is needed. browser/collect-your-stuff.min.js: 421 KB -> 64 KB. No source behaviour change.
2.1.0
Keep the tree consistent. Iterating a LinkedTreeList now visits the linkers of that list and everything below them and stays within the list (a list of children used to iterate the whole tree from the root; a top level list is unchanged); parseTreeNext / TreeLinkerIterator take an optional boundary parent. Linkers added to a list of children get the list's parent, a removed linker no longer has a parent, and an emptied list remembers its parent. setChildren throws for an item which is not one of the list's linkers and, with no children given, removes the item's children. childrenFromArray keeps existing linkers and plain values (0, '', false, null, strings) instead of copying them into plain objects.
2.0.0
Breaking: Queue and Stack are now the standard collections. Queue: enqueue(item) (returns the queue), dequeue() / peek() return the front item (null when empty), fromArray puts the first value at the front. Stack: push(item), pop() / peek() / top() return the top item (null when empty), fromArray pushes in turn so the last value is on top (was the first). Both are iterable, store any value exactly as given (functions, objects with a data property, null, 0) and are constant time. Queue.remove() / Stack.remove() are gone (use dequeue() / pop()), and the constructor / fromArray take (list, listClass, linkerClass). The previous task-running behaviour (dequeue / pop RUN the queued task) is kept, unchanged, as TaskQueue (with Queueable) and TaskStack (with Stackable), so migrating is a rename. New IsQueue / IsStack types; a Queue can be passed to si-funciona's queueManager / queueTimeout.
1.4.0
Constant-time ends and length for LinkedList, DoublyLinkedList and LinkedTreeList: the lists remember their tail and length (kept up to date by their own methods), so last, length, append, prepend and Queue / Stack size() no longer walk the whole list (8000 appends: LinkedList 218ms -> 1ms, DoublyLinkedList 760ms -> 1ms). first / last still find linkers linked on directly, but the cached length does not: call reset() (new on LinkedList, now also refreshes the tail and length on the doubly / tree lists) after changing linkers directly. Arrayable.append / prepend no longer search with indexOf. Minor bump because of the new reset() and the cached length.