list-toolkit 2.1.0 → 2.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -101,7 +101,7 @@ const john = new Person('John'),
101
101
 
102
102
  const people = List.from([john, jane, jim, jill]);
103
103
 
104
- // iterator over the list manually:
104
+ // iterate over the list manually:
105
105
  for (let node = people.front; node !== people; node = node[people.nextName]) {
106
106
  console.log(node.name); // John, Jane, Jim, Jill
107
107
  }
@@ -146,6 +146,7 @@ BSD 3-Clause "New" or "Revised" License. See the LICENSE file for details.
146
146
 
147
147
  ## Release History
148
148
 
149
+ * 2.1.1 *Allowed functions to be used as nodes. Updated deps.*
149
150
  * 2.1.0 *Added splay tree. Updated deps.*
150
151
  * 2.0.0 *New major release.*
151
152
  * 1.0.1 *Fixed exports. Added more methods to `MinHeap`.*
package/cjs/list/nodes.js CHANGED
@@ -36,9 +36,9 @@ class HeadNode extends Node {
36
36
  isNodeLike(node) {
37
37
  if (!node) return false;
38
38
  const next = node[this.nextName];
39
- if (!next || typeof next != 'object') return false;
39
+ if (!next || _metaUtils.canHaveProps[typeof next] !== 1) return false;
40
40
  const prev = node[this.prevName];
41
- return prev && typeof prev == 'object';
41
+ return prev && _metaUtils.canHaveProps[typeof prev] === 1;
42
42
  }
43
43
  isCompatibleNames({
44
44
  nextName,
package/cjs/meta-utils.js CHANGED
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.toSnakeCase = exports.toPascalCase = exports.toKebabCase = exports.toCamelCase = exports.toAllCapsSnakeCase = exports.normalizeIterator = exports.mapIterator = exports.fromSnakeCase = exports.fromSetter = exports.fromPascalCase = exports.fromKebabCase = exports.fromGetter = exports.fromCamelCase = exports.fromAccessors = exports.defaultDescriptor = exports.copyOptions = exports.copyDescriptors = exports.capitalize = exports.augmentIterator = exports.addGetters = exports.addDescriptors = exports.addDescriptor = exports.addAliases = exports.addAlias = exports.addAccessor = void 0;
6
+ exports.toSnakeCase = exports.toPascalCase = exports.toKebabCase = exports.toCamelCase = exports.toAllCapsSnakeCase = exports.normalizeIterator = exports.mapIterator = exports.fromSnakeCase = exports.fromSetter = exports.fromPascalCase = exports.fromKebabCase = exports.fromGetter = exports.fromCamelCase = exports.fromAccessors = exports.defaultDescriptor = exports.copyOptions = exports.copyDescriptors = exports.capitalize = exports.canHaveProps = exports.augmentIterator = exports.addGetters = exports.addDescriptors = exports.addDescriptor = exports.addAliases = exports.addAlias = exports.addAccessor = void 0;
7
7
  const capitalize = name => name ? name[0].toUpperCase() + name.substring(1).toLowerCase() : name;
8
8
  exports.capitalize = capitalize;
9
9
  const toCamelCase = names => names.map((name, index) => index ? capitalize(name) : name.toLowerCase()).join('');
@@ -150,6 +150,10 @@ const mapIterator = (iterator, callbackFn) => {
150
150
  };
151
151
  };
152
152
  exports.mapIterator = mapIterator;
153
+ const canHaveProps = exports.canHaveProps = {
154
+ object: 1,
155
+ function: 1
156
+ };
153
157
  const copyOptions = (target, pattern, ...sources) => {
154
158
  target = target || {};
155
159
  const keys = Object.keys(pattern);
@@ -157,7 +161,7 @@ const copyOptions = (target, pattern, ...sources) => {
157
161
  target[key] = pattern[key];
158
162
  }
159
163
  for (const source of sources) {
160
- if (!source || typeof source !== 'object') continue;
164
+ if (!source || canHaveProps[typeof source] !== 1) continue;
161
165
  for (const key of keys) {
162
166
  if (key in source) target[key] = source[key];
163
167
  }
@@ -36,7 +36,7 @@ class HeadNode extends Node {
36
36
  isNodeLike(node) {
37
37
  if (!node) return false;
38
38
  const next = node[this.nextName];
39
- return next && typeof next == 'object';
39
+ return next && _metaUtils.canHaveProps[typeof next] === 1;
40
40
  }
41
41
  isCompatibleNames({
42
42
  nextName
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "list-toolkit",
3
- "version": "2.1.0",
3
+ "version": "2.1.1",
4
4
  "description": "List-based data structures to organize your objects.",
5
5
  "type": "module",
6
6
  "exports": {
@@ -10,10 +10,14 @@
10
10
  }
11
11
  },
12
12
  "scripts": {
13
- "test": "tape6 --flags FO",
14
13
  "prepare-dist": "node scripts/prepare-dist.js",
15
14
  "build": "babel src --out-dir cjs",
16
- "prepublishOnly": "npm run prepare-dist && npm run build"
15
+ "prepublishOnly": "npm run prepare-dist && npm run build",
16
+ "test": "tape6 --flags FO",
17
+ "test:bun": "tape6-bun --flags FO",
18
+ "test:deno-original": "tape6-deno --flags FO",
19
+ "test:deno": "deno run -A `tape6-runner main` --flags FO",
20
+ "start": "tape6-server --trace"
17
21
  },
18
22
  "repository": {
19
23
  "type": "git",
@@ -33,10 +37,10 @@
33
37
  },
34
38
  "homepage": "https://github.com/uhop/list-toolkit#readme",
35
39
  "devDependencies": {
36
- "@babel/cli": "^7.24.8",
40
+ "@babel/cli": "^7.25.6",
37
41
  "@babel/core": "^7.25.2",
38
42
  "@babel/preset-env": "^7.25.4",
39
- "tape-six": "^0.9.6"
43
+ "tape-six": "^0.12.2"
40
44
  },
41
45
  "files": [
42
46
  "/src",
@@ -57,6 +61,12 @@
57
61
  "tape6": {
58
62
  "tests": [
59
63
  "/tests/test-*.*js"
60
- ]
64
+ ],
65
+ "importmap": {
66
+ "imports": {
67
+ "tape-six": "/node_modules/tape-six/index.js",
68
+ "list-toolkit/": "/src/"
69
+ }
70
+ }
61
71
  }
62
72
  }
package/src/list/nodes.js CHANGED
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  import {isRangeLike, normalizeNode, normalizeRange} from '../list-helpers.js';
4
- import {addAlias, copyDescriptors} from '../meta-utils.js';
4
+ import {addAlias, copyDescriptors, canHaveProps} from '../meta-utils.js';
5
5
 
6
6
  export const isNodeLike = ({nextName, prevName}, node) => node && node[prevName] && node[nextName];
7
7
  export const isStandAlone = ({nextName, prevName}, node) => node && node[prevName] === node && node[nextName] === node;
@@ -22,9 +22,9 @@ export class HeadNode extends Node {
22
22
  isNodeLike(node) {
23
23
  if (!node) return false;
24
24
  const next = node[this.nextName];
25
- if (!next || typeof next != 'object') return false;
25
+ if (!next || canHaveProps[typeof next] !== 1) return false;
26
26
  const prev = node[this.prevName];
27
- return prev && typeof prev == 'object';
27
+ return prev && canHaveProps[typeof prev] === 1;
28
28
  }
29
29
 
30
30
  isCompatibleNames({nextName, prevName}) {
package/src/meta-utils.js CHANGED
@@ -131,6 +131,8 @@ export const mapIterator = (iterator, callbackFn) => {
131
131
  };
132
132
  };
133
133
 
134
+ export const canHaveProps = {object: 1, function: 1};
135
+
134
136
  export const copyOptions = (target, pattern, ...sources) => {
135
137
  target = target || {};
136
138
  const keys = Object.keys(pattern);
@@ -138,7 +140,7 @@ export const copyOptions = (target, pattern, ...sources) => {
138
140
  target[key] = pattern[key];
139
141
  }
140
142
  for (const source of sources) {
141
- if (!source || typeof source !== 'object') continue;
143
+ if (!source || canHaveProps[typeof source] !== 1) continue;
142
144
  for (const key of keys) {
143
145
  if (key in source) target[key] = source[key];
144
146
  }
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  import {isRangeLike, normalizeNode, normalizeRange, normalizePtrRange} from '../list-helpers.js';
4
- import {addAlias, copyDescriptors} from '../meta-utils.js';
4
+ import {addAlias, copyDescriptors, canHaveProps} from '../meta-utils.js';
5
5
 
6
6
  export const isNodeLike = ({nextName}, node) => node && node[nextName];
7
7
  export const isStandAlone = ({nextName}, node) => node && node[nextName] === node;
@@ -25,7 +25,7 @@ export class HeadNode extends Node {
25
25
  isNodeLike(node) {
26
26
  if (!node) return false;
27
27
  const next = node[this.nextName];
28
- return next && typeof next == 'object';
28
+ return next && canHaveProps[typeof next] === 1;
29
29
  }
30
30
  isCompatibleNames({nextName}) {
31
31
  return this.nextName === nextName;