pnpm 10.8.1 → 10.9.0

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.
Files changed (34) hide show
  1. package/dist/node_modules/.modules.yaml +8 -6
  2. package/dist/node_modules/.pnpm/lock.yaml +8 -8
  3. package/dist/node_modules/.pnpm-workspace-state.json +1 -1
  4. package/dist/node_modules/fdir/dist/api/walker.js +3 -2
  5. package/dist/node_modules/fdir/dist/builder/index.js +1 -1
  6. package/dist/node_modules/fdir/dist/utils.js +5 -1
  7. package/dist/node_modules/fdir/package.json +3 -1
  8. package/dist/node_modules/minipass-flush/node_modules/yallist/package.json +29 -0
  9. package/dist/node_modules/minipass-pipeline/node_modules/yallist/LICENSE +15 -0
  10. package/dist/node_modules/minipass-pipeline/node_modules/yallist/iterator.js +8 -0
  11. package/dist/node_modules/minipass-pipeline/node_modules/yallist/package.json +29 -0
  12. package/dist/node_modules/minipass-pipeline/node_modules/yallist/yallist.js +426 -0
  13. package/dist/node_modules/minipass-sized/node_modules/yallist/LICENSE +15 -0
  14. package/dist/node_modules/minipass-sized/node_modules/yallist/iterator.js +8 -0
  15. package/dist/node_modules/minipass-sized/node_modules/yallist/package.json +29 -0
  16. package/dist/node_modules/minipass-sized/node_modules/yallist/yallist.js +426 -0
  17. package/dist/node_modules/tinyglobby/dist/index.js +2 -2
  18. package/dist/node_modules/tinyglobby/dist/index.mjs +2 -2
  19. package/dist/node_modules/tinyglobby/package.json +7 -7
  20. package/dist/node_modules/yallist/package.json +51 -12
  21. package/dist/pnpm.cjs +1463 -1313
  22. package/package.json +1 -1
  23. package/dist/node_modules/tar/node_modules/yallist/package.json +0 -68
  24. /package/dist/node_modules/{yallist → minipass-flush/node_modules/yallist}/LICENSE +0 -0
  25. /package/dist/node_modules/{yallist → minipass-flush/node_modules/yallist}/iterator.js +0 -0
  26. /package/dist/node_modules/{yallist → minipass-flush/node_modules/yallist}/yallist.js +0 -0
  27. /package/dist/node_modules/{tar/node_modules/yallist → yallist}/dist/commonjs/index.d.ts.map +0 -0
  28. /package/dist/node_modules/{tar/node_modules/yallist → yallist}/dist/commonjs/index.js +0 -0
  29. /package/dist/node_modules/{tar/node_modules/yallist → yallist}/dist/commonjs/index.js.map +0 -0
  30. /package/dist/node_modules/{tar/node_modules/yallist → yallist}/dist/commonjs/package.json +0 -0
  31. /package/dist/node_modules/{tar/node_modules/yallist → yallist}/dist/esm/index.d.ts.map +0 -0
  32. /package/dist/node_modules/{tar/node_modules/yallist → yallist}/dist/esm/index.js +0 -0
  33. /package/dist/node_modules/{tar/node_modules/yallist → yallist}/dist/esm/index.js.map +0 -0
  34. /package/dist/node_modules/{tar/node_modules/yallist → yallist}/dist/esm/package.json +0 -0
@@ -16,9 +16,9 @@ hoistedLocations:
16
16
  agent-base@7.1.3:
17
17
  - node_modules/agent-base
18
18
  ansi-regex@5.0.1:
19
- - node_modules/strip-ansi-cjs/node_modules/ansi-regex
20
19
  - node_modules/wrap-ansi-cjs/node_modules/ansi-regex
21
20
  - node_modules/string-width-cjs/node_modules/ansi-regex
21
+ - node_modules/strip-ansi-cjs/node_modules/ansi-regex
22
22
  ansi-regex@6.1.0:
23
23
  - node_modules/ansi-regex
24
24
  ansi-styles@4.3.0:
@@ -56,7 +56,7 @@ hoistedLocations:
56
56
  - node_modules/err-code
57
57
  exponential-backoff@3.1.2:
58
58
  - node_modules/exponential-backoff
59
- fdir@6.4.3(picomatch@4.0.2):
59
+ fdir@6.4.4(picomatch@4.0.2):
60
60
  - node_modules/fdir
61
61
  foreground-child@3.3.1:
62
62
  - node_modules/foreground-child
@@ -171,7 +171,7 @@ hoistedLocations:
171
171
  - node_modules/strip-ansi
172
172
  tar@7.4.3:
173
173
  - node_modules/tar
174
- tinyglobby@0.2.12:
174
+ tinyglobby@0.2.13:
175
175
  - node_modules/tinyglobby
176
176
  unique-filename@4.0.0:
177
177
  - node_modules/unique-filename
@@ -188,9 +188,11 @@ hoistedLocations:
188
188
  wrap-ansi@8.1.0:
189
189
  - node_modules/wrap-ansi
190
190
  yallist@4.0.0:
191
- - node_modules/yallist
191
+ - node_modules/minipass-flush/node_modules/yallist
192
+ - node_modules/minipass-pipeline/node_modules/yallist
193
+ - node_modules/minipass-sized/node_modules/yallist
192
194
  yallist@5.0.0:
193
- - node_modules/tar/node_modules/yallist
195
+ - node_modules/yallist
194
196
  included:
195
197
  dependencies: true
196
198
  devDependencies: true
@@ -200,7 +202,7 @@ layoutVersion: 5
200
202
  nodeLinker: hoisted
201
203
  packageManager: pnpm@10.6.5
202
204
  pendingBuilds: []
203
- prunedAt: Mon, 14 Apr 2025 11:13:19 GMT
205
+ prunedAt: Mon, 21 Apr 2025 08:36:27 GMT
204
206
  publicHoistPattern: []
205
207
  registries:
206
208
  default: https://registry.npmjs.org/
@@ -147,8 +147,8 @@ packages:
147
147
  exponential-backoff@3.1.2:
148
148
  resolution: {integrity: sha512-8QxYTVXUkuy7fIIoitQkPwGonB8F3Zj8eEO8Sqg9Zv/bkI7RJAzowee4gr81Hak/dUTpA2Z7VfQgoijjPNlUZA==}
149
149
 
150
- fdir@6.4.3:
151
- resolution: {integrity: sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw==}
150
+ fdir@6.4.4:
151
+ resolution: {integrity: sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==}
152
152
  peerDependencies:
153
153
  picomatch: ^3 || ^4
154
154
  peerDependenciesMeta:
@@ -365,8 +365,8 @@ packages:
365
365
  resolution: {integrity: sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==}
366
366
  engines: {node: '>=18'}
367
367
 
368
- tinyglobby@0.2.12:
369
- resolution: {integrity: sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww==}
368
+ tinyglobby@0.2.13:
369
+ resolution: {integrity: sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==}
370
370
  engines: {node: '>=12.0.0'}
371
371
 
372
372
  unique-filename@4.0.0:
@@ -531,7 +531,7 @@ snapshots:
531
531
  exponential-backoff@3.1.2:
532
532
  optional: true
533
533
 
534
- fdir@6.4.3(picomatch@4.0.2):
534
+ fdir@6.4.4(picomatch@4.0.2):
535
535
  optionalDependencies:
536
536
  picomatch: 4.0.2
537
537
  optional: true
@@ -698,7 +698,7 @@ snapshots:
698
698
  proc-log: 5.0.0
699
699
  semver: 7.7.1
700
700
  tar: 7.4.3
701
- tinyglobby: 0.2.12
701
+ tinyglobby: 0.2.13
702
702
  which: 5.0.0
703
703
  transitivePeerDependencies:
704
704
  - supports-color
@@ -816,9 +816,9 @@ snapshots:
816
816
  yallist: 5.0.0
817
817
  optional: true
818
818
 
819
- tinyglobby@0.2.12:
819
+ tinyglobby@0.2.13:
820
820
  dependencies:
821
- fdir: 6.4.3(picomatch@4.0.2)
821
+ fdir: 6.4.4(picomatch@4.0.2)
822
822
  picomatch: 4.0.2
823
823
  optional: true
824
824
 
@@ -1,5 +1,5 @@
1
1
  {
2
- "lastValidatedTimestamp": 1744629199685,
2
+ "lastValidatedTimestamp": 1745224587337,
3
3
  "projects": {},
4
4
  "pnpmfileExists": false,
5
5
  "settings": {
@@ -53,7 +53,7 @@ class Walker {
53
53
  this.callbackInvoker = invokeCallback.build(options, this.isSynchronous);
54
54
  this.root = (0, utils_1.normalizePath)(root, options);
55
55
  this.state = {
56
- root: this.root.slice(0, -1),
56
+ root: (0, utils_1.isRootDirectory)(this.root) ? this.root : this.root.slice(0, -1),
57
57
  // Perf: we explicitly tell the compiler to optimize for String arrays
58
58
  paths: [""].slice(0, 0),
59
59
  groups: [],
@@ -104,7 +104,8 @@ class Walker {
104
104
  this.resolveSymlink(path, this.state, (stat, resolvedPath) => {
105
105
  if (stat.isDirectory()) {
106
106
  resolvedPath = (0, utils_1.normalizePath)(resolvedPath, this.state.options);
107
- if (exclude && exclude(entry.name, useRealPaths ? resolvedPath : path + pathSeparator))
107
+ if (exclude &&
108
+ exclude(entry.name, useRealPaths ? resolvedPath : path + pathSeparator))
108
109
  return;
109
110
  this.walkDirectory(this.state, resolvedPath, useRealPaths ? resolvedPath : path + pathSeparator, depth - 1, this.walk);
110
111
  }
@@ -122,7 +122,7 @@ class Builder {
122
122
  const globFn = (this.globFunction || pm);
123
123
  /* c8 ignore next 5 */
124
124
  if (!globFn) {
125
- throw new Error('Please specify a glob function to use glob matching.');
125
+ throw new Error("Please specify a glob function to use glob matching.");
126
126
  }
127
127
  var isMatch = this.globCache[patterns.join("\0")];
128
128
  if (!isMatch) {
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.normalizePath = exports.convertSlashes = exports.cleanPath = void 0;
3
+ exports.normalizePath = exports.isRootDirectory = exports.convertSlashes = exports.cleanPath = void 0;
4
4
  const path_1 = require("path");
5
5
  function cleanPath(path) {
6
6
  let normalized = (0, path_1.normalize)(path);
@@ -16,6 +16,10 @@ function convertSlashes(path, separator) {
16
16
  return path.replace(SLASHES_REGEX, separator);
17
17
  }
18
18
  exports.convertSlashes = convertSlashes;
19
+ function isRootDirectory(path) {
20
+ return path === "/" || /^[a-z]:\\$/i.test(path);
21
+ }
22
+ exports.isRootDirectory = isRootDirectory;
19
23
  function normalizePath(path, options) {
20
24
  const { resolvePaths, normalizePath, pathSeparator } = options;
21
25
  const pathNeedsCleaning = (process.platform === "win32" && path.includes("/")) ||
@@ -1,12 +1,13 @@
1
1
  {
2
2
  "name": "fdir",
3
- "version": "6.4.3",
3
+ "version": "6.4.4",
4
4
  "description": "The fastest directory crawler & globbing alternative to glob, fast-glob, & tiny-glob. Crawls 1m files in < 1s",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
7
7
  "scripts": {
8
8
  "prepublishOnly": "npm run test && npm run build",
9
9
  "build": "tsc",
10
+ "format": "prettier --write src __tests__ benchmarks",
10
11
  "test": "vitest run __tests__/",
11
12
  "test:coverage": "vitest run --coverage __tests__/",
12
13
  "test:watch": "vitest __tests__/",
@@ -65,6 +66,7 @@
65
66
  "klaw-sync": "^6.0.0",
66
67
  "mock-fs": "^5.2.0",
67
68
  "picomatch": "^4.0.2",
69
+ "prettier": "^3.5.3",
68
70
  "recur-readdir": "0.0.1",
69
71
  "recursive-files": "^1.0.2",
70
72
  "recursive-fs": "^2.1.0",
@@ -0,0 +1,29 @@
1
+ {
2
+ "name": "yallist",
3
+ "version": "4.0.0",
4
+ "description": "Yet Another Linked List",
5
+ "main": "yallist.js",
6
+ "directories": {
7
+ "test": "test"
8
+ },
9
+ "files": [
10
+ "yallist.js",
11
+ "iterator.js"
12
+ ],
13
+ "dependencies": {},
14
+ "devDependencies": {
15
+ "tap": "^12.1.0"
16
+ },
17
+ "scripts": {
18
+ "test": "tap test/*.js --100",
19
+ "preversion": "npm test",
20
+ "postversion": "npm publish",
21
+ "postpublish": "git push origin --all; git push origin --tags"
22
+ },
23
+ "repository": {
24
+ "type": "git",
25
+ "url": "git+https://github.com/isaacs/yallist.git"
26
+ },
27
+ "author": "Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me/)",
28
+ "license": "ISC"
29
+ }
@@ -0,0 +1,15 @@
1
+ The ISC License
2
+
3
+ Copyright (c) Isaac Z. Schlueter and Contributors
4
+
5
+ Permission to use, copy, modify, and/or distribute this software for any
6
+ purpose with or without fee is hereby granted, provided that the above
7
+ copyright notice and this permission notice appear in all copies.
8
+
9
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10
+ WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11
+ MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12
+ ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13
+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14
+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
15
+ IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
@@ -0,0 +1,8 @@
1
+ 'use strict'
2
+ module.exports = function (Yallist) {
3
+ Yallist.prototype[Symbol.iterator] = function* () {
4
+ for (let walker = this.head; walker; walker = walker.next) {
5
+ yield walker.value
6
+ }
7
+ }
8
+ }
@@ -0,0 +1,29 @@
1
+ {
2
+ "name": "yallist",
3
+ "version": "4.0.0",
4
+ "description": "Yet Another Linked List",
5
+ "main": "yallist.js",
6
+ "directories": {
7
+ "test": "test"
8
+ },
9
+ "files": [
10
+ "yallist.js",
11
+ "iterator.js"
12
+ ],
13
+ "dependencies": {},
14
+ "devDependencies": {
15
+ "tap": "^12.1.0"
16
+ },
17
+ "scripts": {
18
+ "test": "tap test/*.js --100",
19
+ "preversion": "npm test",
20
+ "postversion": "npm publish",
21
+ "postpublish": "git push origin --all; git push origin --tags"
22
+ },
23
+ "repository": {
24
+ "type": "git",
25
+ "url": "git+https://github.com/isaacs/yallist.git"
26
+ },
27
+ "author": "Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me/)",
28
+ "license": "ISC"
29
+ }
@@ -0,0 +1,426 @@
1
+ 'use strict'
2
+ module.exports = Yallist
3
+
4
+ Yallist.Node = Node
5
+ Yallist.create = Yallist
6
+
7
+ function Yallist (list) {
8
+ var self = this
9
+ if (!(self instanceof Yallist)) {
10
+ self = new Yallist()
11
+ }
12
+
13
+ self.tail = null
14
+ self.head = null
15
+ self.length = 0
16
+
17
+ if (list && typeof list.forEach === 'function') {
18
+ list.forEach(function (item) {
19
+ self.push(item)
20
+ })
21
+ } else if (arguments.length > 0) {
22
+ for (var i = 0, l = arguments.length; i < l; i++) {
23
+ self.push(arguments[i])
24
+ }
25
+ }
26
+
27
+ return self
28
+ }
29
+
30
+ Yallist.prototype.removeNode = function (node) {
31
+ if (node.list !== this) {
32
+ throw new Error('removing node which does not belong to this list')
33
+ }
34
+
35
+ var next = node.next
36
+ var prev = node.prev
37
+
38
+ if (next) {
39
+ next.prev = prev
40
+ }
41
+
42
+ if (prev) {
43
+ prev.next = next
44
+ }
45
+
46
+ if (node === this.head) {
47
+ this.head = next
48
+ }
49
+ if (node === this.tail) {
50
+ this.tail = prev
51
+ }
52
+
53
+ node.list.length--
54
+ node.next = null
55
+ node.prev = null
56
+ node.list = null
57
+
58
+ return next
59
+ }
60
+
61
+ Yallist.prototype.unshiftNode = function (node) {
62
+ if (node === this.head) {
63
+ return
64
+ }
65
+
66
+ if (node.list) {
67
+ node.list.removeNode(node)
68
+ }
69
+
70
+ var head = this.head
71
+ node.list = this
72
+ node.next = head
73
+ if (head) {
74
+ head.prev = node
75
+ }
76
+
77
+ this.head = node
78
+ if (!this.tail) {
79
+ this.tail = node
80
+ }
81
+ this.length++
82
+ }
83
+
84
+ Yallist.prototype.pushNode = function (node) {
85
+ if (node === this.tail) {
86
+ return
87
+ }
88
+
89
+ if (node.list) {
90
+ node.list.removeNode(node)
91
+ }
92
+
93
+ var tail = this.tail
94
+ node.list = this
95
+ node.prev = tail
96
+ if (tail) {
97
+ tail.next = node
98
+ }
99
+
100
+ this.tail = node
101
+ if (!this.head) {
102
+ this.head = node
103
+ }
104
+ this.length++
105
+ }
106
+
107
+ Yallist.prototype.push = function () {
108
+ for (var i = 0, l = arguments.length; i < l; i++) {
109
+ push(this, arguments[i])
110
+ }
111
+ return this.length
112
+ }
113
+
114
+ Yallist.prototype.unshift = function () {
115
+ for (var i = 0, l = arguments.length; i < l; i++) {
116
+ unshift(this, arguments[i])
117
+ }
118
+ return this.length
119
+ }
120
+
121
+ Yallist.prototype.pop = function () {
122
+ if (!this.tail) {
123
+ return undefined
124
+ }
125
+
126
+ var res = this.tail.value
127
+ this.tail = this.tail.prev
128
+ if (this.tail) {
129
+ this.tail.next = null
130
+ } else {
131
+ this.head = null
132
+ }
133
+ this.length--
134
+ return res
135
+ }
136
+
137
+ Yallist.prototype.shift = function () {
138
+ if (!this.head) {
139
+ return undefined
140
+ }
141
+
142
+ var res = this.head.value
143
+ this.head = this.head.next
144
+ if (this.head) {
145
+ this.head.prev = null
146
+ } else {
147
+ this.tail = null
148
+ }
149
+ this.length--
150
+ return res
151
+ }
152
+
153
+ Yallist.prototype.forEach = function (fn, thisp) {
154
+ thisp = thisp || this
155
+ for (var walker = this.head, i = 0; walker !== null; i++) {
156
+ fn.call(thisp, walker.value, i, this)
157
+ walker = walker.next
158
+ }
159
+ }
160
+
161
+ Yallist.prototype.forEachReverse = function (fn, thisp) {
162
+ thisp = thisp || this
163
+ for (var walker = this.tail, i = this.length - 1; walker !== null; i--) {
164
+ fn.call(thisp, walker.value, i, this)
165
+ walker = walker.prev
166
+ }
167
+ }
168
+
169
+ Yallist.prototype.get = function (n) {
170
+ for (var i = 0, walker = this.head; walker !== null && i < n; i++) {
171
+ // abort out of the list early if we hit a cycle
172
+ walker = walker.next
173
+ }
174
+ if (i === n && walker !== null) {
175
+ return walker.value
176
+ }
177
+ }
178
+
179
+ Yallist.prototype.getReverse = function (n) {
180
+ for (var i = 0, walker = this.tail; walker !== null && i < n; i++) {
181
+ // abort out of the list early if we hit a cycle
182
+ walker = walker.prev
183
+ }
184
+ if (i === n && walker !== null) {
185
+ return walker.value
186
+ }
187
+ }
188
+
189
+ Yallist.prototype.map = function (fn, thisp) {
190
+ thisp = thisp || this
191
+ var res = new Yallist()
192
+ for (var walker = this.head; walker !== null;) {
193
+ res.push(fn.call(thisp, walker.value, this))
194
+ walker = walker.next
195
+ }
196
+ return res
197
+ }
198
+
199
+ Yallist.prototype.mapReverse = function (fn, thisp) {
200
+ thisp = thisp || this
201
+ var res = new Yallist()
202
+ for (var walker = this.tail; walker !== null;) {
203
+ res.push(fn.call(thisp, walker.value, this))
204
+ walker = walker.prev
205
+ }
206
+ return res
207
+ }
208
+
209
+ Yallist.prototype.reduce = function (fn, initial) {
210
+ var acc
211
+ var walker = this.head
212
+ if (arguments.length > 1) {
213
+ acc = initial
214
+ } else if (this.head) {
215
+ walker = this.head.next
216
+ acc = this.head.value
217
+ } else {
218
+ throw new TypeError('Reduce of empty list with no initial value')
219
+ }
220
+
221
+ for (var i = 0; walker !== null; i++) {
222
+ acc = fn(acc, walker.value, i)
223
+ walker = walker.next
224
+ }
225
+
226
+ return acc
227
+ }
228
+
229
+ Yallist.prototype.reduceReverse = function (fn, initial) {
230
+ var acc
231
+ var walker = this.tail
232
+ if (arguments.length > 1) {
233
+ acc = initial
234
+ } else if (this.tail) {
235
+ walker = this.tail.prev
236
+ acc = this.tail.value
237
+ } else {
238
+ throw new TypeError('Reduce of empty list with no initial value')
239
+ }
240
+
241
+ for (var i = this.length - 1; walker !== null; i--) {
242
+ acc = fn(acc, walker.value, i)
243
+ walker = walker.prev
244
+ }
245
+
246
+ return acc
247
+ }
248
+
249
+ Yallist.prototype.toArray = function () {
250
+ var arr = new Array(this.length)
251
+ for (var i = 0, walker = this.head; walker !== null; i++) {
252
+ arr[i] = walker.value
253
+ walker = walker.next
254
+ }
255
+ return arr
256
+ }
257
+
258
+ Yallist.prototype.toArrayReverse = function () {
259
+ var arr = new Array(this.length)
260
+ for (var i = 0, walker = this.tail; walker !== null; i++) {
261
+ arr[i] = walker.value
262
+ walker = walker.prev
263
+ }
264
+ return arr
265
+ }
266
+
267
+ Yallist.prototype.slice = function (from, to) {
268
+ to = to || this.length
269
+ if (to < 0) {
270
+ to += this.length
271
+ }
272
+ from = from || 0
273
+ if (from < 0) {
274
+ from += this.length
275
+ }
276
+ var ret = new Yallist()
277
+ if (to < from || to < 0) {
278
+ return ret
279
+ }
280
+ if (from < 0) {
281
+ from = 0
282
+ }
283
+ if (to > this.length) {
284
+ to = this.length
285
+ }
286
+ for (var i = 0, walker = this.head; walker !== null && i < from; i++) {
287
+ walker = walker.next
288
+ }
289
+ for (; walker !== null && i < to; i++, walker = walker.next) {
290
+ ret.push(walker.value)
291
+ }
292
+ return ret
293
+ }
294
+
295
+ Yallist.prototype.sliceReverse = function (from, to) {
296
+ to = to || this.length
297
+ if (to < 0) {
298
+ to += this.length
299
+ }
300
+ from = from || 0
301
+ if (from < 0) {
302
+ from += this.length
303
+ }
304
+ var ret = new Yallist()
305
+ if (to < from || to < 0) {
306
+ return ret
307
+ }
308
+ if (from < 0) {
309
+ from = 0
310
+ }
311
+ if (to > this.length) {
312
+ to = this.length
313
+ }
314
+ for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) {
315
+ walker = walker.prev
316
+ }
317
+ for (; walker !== null && i > from; i--, walker = walker.prev) {
318
+ ret.push(walker.value)
319
+ }
320
+ return ret
321
+ }
322
+
323
+ Yallist.prototype.splice = function (start, deleteCount, ...nodes) {
324
+ if (start > this.length) {
325
+ start = this.length - 1
326
+ }
327
+ if (start < 0) {
328
+ start = this.length + start;
329
+ }
330
+
331
+ for (var i = 0, walker = this.head; walker !== null && i < start; i++) {
332
+ walker = walker.next
333
+ }
334
+
335
+ var ret = []
336
+ for (var i = 0; walker && i < deleteCount; i++) {
337
+ ret.push(walker.value)
338
+ walker = this.removeNode(walker)
339
+ }
340
+ if (walker === null) {
341
+ walker = this.tail
342
+ }
343
+
344
+ if (walker !== this.head && walker !== this.tail) {
345
+ walker = walker.prev
346
+ }
347
+
348
+ for (var i = 0; i < nodes.length; i++) {
349
+ walker = insert(this, walker, nodes[i])
350
+ }
351
+ return ret;
352
+ }
353
+
354
+ Yallist.prototype.reverse = function () {
355
+ var head = this.head
356
+ var tail = this.tail
357
+ for (var walker = head; walker !== null; walker = walker.prev) {
358
+ var p = walker.prev
359
+ walker.prev = walker.next
360
+ walker.next = p
361
+ }
362
+ this.head = tail
363
+ this.tail = head
364
+ return this
365
+ }
366
+
367
+ function insert (self, node, value) {
368
+ var inserted = node === self.head ?
369
+ new Node(value, null, node, self) :
370
+ new Node(value, node, node.next, self)
371
+
372
+ if (inserted.next === null) {
373
+ self.tail = inserted
374
+ }
375
+ if (inserted.prev === null) {
376
+ self.head = inserted
377
+ }
378
+
379
+ self.length++
380
+
381
+ return inserted
382
+ }
383
+
384
+ function push (self, item) {
385
+ self.tail = new Node(item, self.tail, null, self)
386
+ if (!self.head) {
387
+ self.head = self.tail
388
+ }
389
+ self.length++
390
+ }
391
+
392
+ function unshift (self, item) {
393
+ self.head = new Node(item, null, self.head, self)
394
+ if (!self.tail) {
395
+ self.tail = self.head
396
+ }
397
+ self.length++
398
+ }
399
+
400
+ function Node (value, prev, next, list) {
401
+ if (!(this instanceof Node)) {
402
+ return new Node(value, prev, next, list)
403
+ }
404
+
405
+ this.list = list
406
+ this.value = value
407
+
408
+ if (prev) {
409
+ prev.next = this
410
+ this.prev = prev
411
+ } else {
412
+ this.prev = null
413
+ }
414
+
415
+ if (next) {
416
+ next.prev = this
417
+ this.next = next
418
+ } else {
419
+ this.next = null
420
+ }
421
+ }
422
+
423
+ try {
424
+ // add if support for Symbol.iterator is present
425
+ require('./iterator.js')(Yallist)
426
+ } catch (er) {}