avancement planning

This commit is contained in:
2026-05-26 11:58:39 +02:00
parent 619a2b240a
commit 150b97cd2e
4892 changed files with 99214 additions and 429382 deletions
+25 -4
View File
@@ -5,11 +5,32 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [v1.0.1](https://github.com/ljharb/side-channel-list.git
/compare/v1.0.0...v1.0.1) - 2026-04-08
### Fixed
- [Fix] `delete`: do not reset the list when deleting the head node of a multi-node list [`#3`](https://github.com/ljharb/side-channel-list.git
/issues/3)
### Commits
- [actions] update workflows [`9e79e6b`](https://github.com/ljharb/side-channel-list.git
/commit/9e79e6bf845532fafbf03b547429fe4f737214a3)
- [Deps] update `@arethetypeswrong/cli`, `@ljharb/eslint-config`, `@ljharb/tsconfig`, `@types/tape`, `eslint`, `npmignore` [`babf3ca`](https://github.com/ljharb/side-channel-list.git
/commit/babf3ca4849d2fd893a470a6b82c62a80ccc9307)
- [Deps] update `object-inspect` [`9f0f4b8`](https://github.com/ljharb/side-channel-list.git
/commit/9f0f4b88ff2aa8b7b7c9e589ac1513f133d64b9f)
## v1.0.0 - 2024-12-10
### Commits
- Initial implementation, tests, readme, types [`5d6baee`](https://github.com/ljharb/side-channel-list/commit/5d6baee5c9054a1238007f5a1dfc109a7a816251)
- Initial commit [`3ae784c`](https://github.com/ljharb/side-channel-list/commit/3ae784c63a47895fbaeed2a91ab54a8029a7a100)
- npm init [`07055a4`](https://github.com/ljharb/side-channel-list/commit/07055a4d139895565b199dba5fe2479c1a1b9e28)
- Only apps should have lockfiles [`9573058`](https://github.com/ljharb/side-channel-list/commit/9573058a47494e2d68f8c6c77b5d7fbe441949c1)
- Initial implementation, tests, readme, types [`5d6baee`](https://github.com/ljharb/side-channel-list.git
/commit/5d6baee5c9054a1238007f5a1dfc109a7a816251)
- Initial commit [`3ae784c`](https://github.com/ljharb/side-channel-list.git
/commit/3ae784c63a47895fbaeed2a91ab54a8029a7a100)
- npm init [`07055a4`](https://github.com/ljharb/side-channel-list.git
/commit/07055a4d139895565b199dba5fe2479c1a1b9e28)
- Only apps should have lockfiles [`9573058`](https://github.com/ljharb/side-channel-list.git
/commit/9573058a47494e2d68f8c6c77b5d7fbe441949c1)
+1 -3
View File
@@ -84,9 +84,8 @@ module.exports = function getSideChannelList() {
}
},
'delete': function (key) {
var root = $o && $o.next;
var deletedNode = listDelete($o, key);
if (deletedNode && root && root === deletedNode) {
if (deletedNode && $o && !$o.next) {
$o = void undefined;
}
return !!deletedNode;
@@ -108,6 +107,5 @@ module.exports = function getSideChannelList() {
listSet(/** @type {NonNullable<typeof $o>} */ ($o), key, value);
}
};
// @ts-expect-error TODO: figure out why this is erroring
return channel;
};
+8 -8
View File
@@ -1,6 +1,6 @@
{
"name": "side-channel-list",
"version": "1.0.0",
"version": "1.0.1",
"description": "Store information about any JS value in a side channel, using a linked list",
"main": "index.js",
"exports": {
@@ -38,21 +38,21 @@
"homepage": "https://github.com/ljharb/side-channel-list#readme",
"dependencies": {
"es-errors": "^1.3.0",
"object-inspect": "^1.13.3"
"object-inspect": "^1.13.4"
},
"devDependencies": {
"@arethetypeswrong/cli": "^0.17.1",
"@ljharb/eslint-config": "^21.1.1",
"@ljharb/tsconfig": "^0.2.2",
"@arethetypeswrong/cli": "^0.18.2",
"@ljharb/eslint-config": "^22.2.2",
"@ljharb/tsconfig": "^0.3.2",
"@types/object-inspect": "^1.13.0",
"@types/tape": "^5.6.5",
"@types/tape": "^5.8.1",
"auto-changelog": "^2.5.0",
"eclint": "^2.8.1",
"encoding": "^0.1.13",
"eslint": "=8.8.0",
"eslint": "^8.57.1",
"evalmd": "^0.0.19",
"in-publish": "^2.0.1",
"npmignore": "^0.3.1",
"npmignore": "^0.3.5",
"nyc": "^10.3.2",
"safe-publish-latest": "^2.0.0",
"tape": "^5.9.0",
+50
View File
@@ -100,5 +100,55 @@ test('getSideChannelList', function (t) {
st.end();
});
t.test('delete: first node in a multi-node list', function (st) {
var channel = getSideChannelList();
channel.set('a', 1);
channel.set('b', 2);
st.equal(channel['delete']('b'), true, 'deleting first data node yields true');
st.equal(channel.has('a'), true, 'second node is still present after deleting first');
st.equal(channel.get('a'), 1, 'second node value is intact after deleting first');
st.equal(channel.has('b'), false, 'deleted node is gone');
st.end();
});
t.test('delete: last remaining node empties the list', function (st) {
var channel = getSideChannelList();
channel.set('a', 1);
channel.set('b', 2);
st.equal(channel['delete']('b'), true, 'delete first node');
st.equal(channel['delete']('a'), true, 'delete second (last) node');
st.equal(channel.has('a'), false, 'a is gone');
st.equal(channel.has('b'), false, 'b is gone');
st.equal(channel.get('a'), undefined, 'get a yields undefined');
channel.set('c', 3);
st.equal(channel.get('c'), 3, 'can set new values after emptying');
st.end();
});
t.test('delete: middle node in a multi-node list', function (st) {
var channel = getSideChannelList();
channel.set('a', 1);
channel.set('b', 2);
channel.set('c', 3);
st.equal(channel['delete']('b'), true, 'deleting middle node yields true');
st.equal(channel.get('a'), 1, 'first node still intact');
st.equal(channel.has('b'), false, 'middle node is gone');
st.equal(channel.get('c'), 3, 'last node still intact');
st.end();
});
t.end();
});