collect-your-stuff 1.0.0 → 1.1.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 (91) hide show
  1. package/README.md +1487 -1672
  2. package/browser/collect-your-stuff.js +19152 -18871
  3. package/browser/collect-your-stuff.min.js +1 -1
  4. package/dist/collections/arrayable/ArrayElement.d.ts +37 -0
  5. package/dist/collections/arrayable/ArrayElement.js +62 -86
  6. package/dist/collections/arrayable/ArrayElement.min.js +1 -1
  7. package/dist/collections/arrayable/Arrayable.d.ts +108 -0
  8. package/dist/collections/arrayable/Arrayable.js +150 -208
  9. package/dist/collections/arrayable/Arrayable.min.js +1 -1
  10. package/dist/collections/doubly-linked-list/DoubleLinker.d.ts +47 -0
  11. package/dist/collections/doubly-linked-list/DoubleLinker.js +77 -0
  12. package/dist/collections/doubly-linked-list/DoubleLinker.min.js +1 -0
  13. package/dist/collections/doubly-linked-list/DoublyLinkedList.d.ts +113 -0
  14. package/dist/collections/{doubly-linked-llist → doubly-linked-list}/DoublyLinkedList.js +221 -198
  15. package/dist/collections/doubly-linked-list/DoublyLinkedList.min.js +1 -0
  16. package/dist/collections/linked-list/LinkedList.d.ts +109 -0
  17. package/dist/collections/linked-list/LinkedList.js +192 -216
  18. package/dist/collections/linked-list/LinkedList.min.js +1 -1
  19. package/dist/collections/linked-list/Linker.d.ts +44 -0
  20. package/dist/collections/linked-list/Linker.js +76 -89
  21. package/dist/collections/linked-list/Linker.min.js +1 -1
  22. package/dist/collections/linked-tree-list/LinkedTreeList.d.ts +135 -0
  23. package/dist/collections/linked-tree-list/LinkedTreeList.js +237 -77
  24. package/dist/collections/linked-tree-list/LinkedTreeList.min.js +1 -1
  25. package/dist/collections/linked-tree-list/TreeLinker.d.ts +62 -0
  26. package/dist/collections/linked-tree-list/TreeLinker.js +74 -101
  27. package/dist/collections/linked-tree-list/TreeLinker.min.js +1 -1
  28. package/dist/collections/queue/Queue.d.ts +60 -0
  29. package/dist/collections/queue/Queue.js +125 -163
  30. package/dist/collections/queue/Queue.min.js +1 -1
  31. package/dist/collections/queue/Queueable.d.ts +78 -0
  32. package/dist/collections/queue/Queueable.js +146 -177
  33. package/dist/collections/queue/Queueable.min.js +1 -1
  34. package/dist/collections/stack/Stack.d.ts +60 -0
  35. package/dist/collections/stack/Stack.js +103 -141
  36. package/dist/collections/stack/Stack.min.js +1 -1
  37. package/dist/collections/stack/Stackable.d.ts +57 -0
  38. package/dist/collections/stack/Stackable.js +90 -85
  39. package/dist/collections/stack/Stackable.min.js +1 -1
  40. package/dist/main.d.ts +40 -0
  41. package/dist/main.js +43 -36
  42. package/dist/main.min.js +1 -1
  43. package/dist/recipes/ArrayIterator.d.ts +11 -0
  44. package/dist/recipes/ArrayIterator.js +30 -0
  45. package/dist/recipes/ArrayIterator.min.js +1 -0
  46. package/dist/recipes/DoubleLinkerIterator.d.ts +10 -0
  47. package/dist/recipes/DoubleLinkerIterator.js +24 -0
  48. package/dist/recipes/DoubleLinkerIterator.min.js +1 -0
  49. package/dist/recipes/IsArrayable.d.ts +105 -0
  50. package/dist/recipes/IsArrayable.js +5 -0
  51. package/dist/recipes/IsArrayable.min.js +1 -0
  52. package/dist/recipes/IsDoubleLinker.d.ts +14 -0
  53. package/dist/recipes/IsDoubleLinker.js +5 -0
  54. package/dist/recipes/IsDoubleLinker.min.js +1 -0
  55. package/dist/recipes/IsElement.d.ts +14 -0
  56. package/dist/recipes/IsElement.js +5 -0
  57. package/dist/recipes/IsElement.min.js +1 -0
  58. package/dist/recipes/IsLinker.d.ts +10 -0
  59. package/dist/recipes/IsLinker.js +5 -0
  60. package/dist/recipes/IsLinker.min.js +1 -0
  61. package/dist/recipes/IsTree.d.ts +11 -0
  62. package/dist/recipes/IsTree.js +5 -0
  63. package/dist/recipes/IsTree.min.js +1 -0
  64. package/dist/recipes/IsTreeNode.d.ts +29 -0
  65. package/dist/recipes/IsTreeNode.js +5 -0
  66. package/dist/recipes/IsTreeNode.min.js +1 -0
  67. package/dist/recipes/LinkerIterator.d.ts +10 -0
  68. package/dist/recipes/LinkerIterator.js +24 -0
  69. package/dist/recipes/LinkerIterator.min.js +1 -0
  70. package/dist/recipes/Runnable.d.ts +54 -0
  71. package/dist/recipes/Runnable.js +69 -67
  72. package/dist/recipes/Runnable.min.js +1 -1
  73. package/dist/recipes/TreeLinkerIterator.d.ts +10 -0
  74. package/dist/recipes/TreeLinkerIterator.js +26 -0
  75. package/dist/recipes/TreeLinkerIterator.min.js +1 -0
  76. package/dist/recipes/recipes.d.ts +16 -0
  77. package/dist/recipes/recipes.js +24 -23
  78. package/dist/recipes/recipes.min.js +1 -1
  79. package/dist/services/parseTree.d.ts +10 -0
  80. package/dist/services/parseTree.js +25 -0
  81. package/dist/services/parseTree.min.js +1 -0
  82. package/dist/services/parseTreeNext.d.ts +15 -0
  83. package/dist/services/parseTreeNext.js +47 -0
  84. package/dist/services/parseTreeNext.min.js +1 -0
  85. package/dist/services/services.d.ts +14 -0
  86. package/dist/services/services.js +24 -0
  87. package/dist/services/services.min.js +1 -0
  88. package/package.json +2 -2
  89. package/dist/collections/doubly-linked-llist/DoubleLinker.js +0 -90
  90. package/dist/collections/doubly-linked-llist/DoubleLinker.min.js +0 -1
  91. package/dist/collections/doubly-linked-llist/DoublyLinkedList.min.js +0 -1
package/README.md CHANGED
@@ -2,1675 +2,1490 @@
2
2
 
3
3
  Data allocation and manipulation.
4
4
 
5
- ## Modules
6
-
7
- <dl>
8
- <dt><a href="#module_collect-your-stuff">collect-your-stuff</a></dt>
9
- <dd><p>All of the collections available.</p>
10
- </dd>
11
- </dl>
12
-
13
- ## Classes
14
-
15
- <dl>
16
- <dt><a href="#Runnable">Runnable</a></dt>
17
- <dd><p>Identify a class that can be run.</p>
18
- </dd>
19
- <dt><a href="#Stackable">Stackable</a> ⇐ <code><a href="#ArrayElement">ArrayElement</a></code></dt>
20
- <dd><p>Stackable represents a runnable entry in stack.</p>
21
- </dd>
22
- <dt><a href="#Stack">Stack</a></dt>
23
- <dd><p>Store a collection of items which can only be inserted and removed from the top.</p>
24
- </dd>
25
- <dt><a href="#Queueable">Queueable</a> ⇐ <code><a href="#Linker">Linker</a></code></dt>
26
- <dd><p>Queueable represents a runnable entry in a queue.</p>
27
- </dd>
28
- <dt><a href="#Queue">Queue</a></dt>
29
- <dd><p>Maintain a series of queued items.</p>
30
- </dd>
31
- <dt><a href="#TreeLinker">TreeLinker</a> ⇐ <code><a href="#DoubleLinker">DoubleLinker</a></code></dt>
32
- <dd><p>TreeLinker represents a node in a LinkedTreeList.</p>
33
- </dd>
34
- <dt><a href="#LinkedTreeList">LinkedTreeList</a> ⇐ <code><a href="#DoublyLinkedList">DoublyLinkedList</a></code></dt>
35
- <dd><p>LinkedTreeList represents a collection stored with a root and spreading in branching (tree) formation..</p>
36
- </dd>
37
- <dt><a href="#Linker">Linker</a> ⇐ <code><a href="#ArrayElement">ArrayElement</a></code></dt>
38
- <dd><p>Linker represents a node in a LinkedList.</p>
39
- </dd>
40
- <dt><a href="#LinkedList">LinkedList</a> ⇐ <code><a href="#Arrayable">Arrayable</a></code></dt>
41
- <dd><p>LinkedList represents a collection stored as a LinkedList with next references.</p>
42
- </dd>
43
- <dt><a href="#DoublyLinkedList">DoublyLinkedList</a> ⇐ <code><a href="#LinkedList">LinkedList</a></code></dt>
44
- <dd><p>DoublyLinkedList represents a collection stored as a LinkedList with prev and next references.</p>
45
- </dd>
46
- <dt><a href="#DoubleLinker">DoubleLinker</a> ⇐ <code><a href="#Linker">Linker</a></code></dt>
47
- <dd><p>DoubleLinker represents a node in a DoublyLinkedList.</p>
48
- </dd>
49
- <dt><a href="#Arrayable">Arrayable</a></dt>
50
- <dd><p>DoublyLinkedList represents a collection stored as a LinkedList with prev and next references.</p>
51
- </dd>
52
- <dt><a href="#ArrayElement">ArrayElement</a></dt>
53
- <dd><p>Element represents a node in an Arrayable.</p>
54
- </dd>
55
- </dl>
56
-
57
- ## Constants
58
-
59
- <dl>
60
- <dt><a href="#recipes">recipes</a> : <code>Object</code></dt>
61
- <dd><p>List of class declarations that can be used to specify attributes for a style of object / class.</p>
62
- </dd>
63
- </dl>
64
-
65
- ## Typedefs
66
-
67
- <dl>
68
- <dt><a href="#completeResponse">completeResponse</a> : <code>Object</code></dt>
69
- <dd><p>Return results of the task.</p>
70
- </dd>
71
- <dt><a href="#forEachCallback">forEachCallback</a> ⇒</dt>
72
- <dd><p>Run this function for each element in this arrayable.</p>
73
- </dd>
74
- </dl>
75
-
76
- <a name="module_collect-your-stuff"></a>
77
-
78
- ## collect-your-stuff
79
- All of the collections available.
80
-
81
- **Version**: 1.0.0
82
- **Author**: Joshua Heagle <joshuaheagle@gmail.com>
83
- <a name="module_collect-your-stuff..collectYourStuff"></a>
84
-
85
- ### collect-your-stuff~collectYourStuff : [<code>collect-your-stuff</code>](#module_collect-your-stuff)
86
- All methods exported from this module are encapsulated within collect-your-stuff.
87
-
88
- **Kind**: inner typedef of [<code>collect-your-stuff</code>](#module_collect-your-stuff)
89
- <a name="Runnable"></a>
90
-
91
- ## Runnable
92
- Identify a class that can be run.
93
-
94
- **Kind**: global class
95
-
96
- * [Runnable](#Runnable)
97
- * _instance_
98
- * [.task](#Runnable+task) ⇒ <code>function</code>
99
- * [.run()](#Runnable+run) ⇒ <code>\*</code>
100
- * _static_
101
- * [.isRunnable(thing)](#Runnable.isRunnable) ⇒ <code>boolean</code>
102
-
103
- <a name="Runnable+task"></a>
104
-
105
- ### runnable.task ⇒ <code>function</code>
106
- Retrieve the data which should be formed as a task.
107
-
108
- **Kind**: instance property of [<code>Runnable</code>](#Runnable)
109
- <a name="Runnable+run"></a>
110
-
111
- ### runnable.run() ⇒ <code>\*</code>
112
- Run the runnable task.
113
-
114
- **Kind**: instance method of [<code>Runnable</code>](#Runnable)
115
- <a name="Runnable.isRunnable"></a>
116
-
117
- ### Runnable.isRunnable(thing) ⇒ <code>boolean</code>
118
- Check if a given thing is Runnable
119
-
120
- **Kind**: static method of [<code>Runnable</code>](#Runnable)
121
-
122
- | Param | Type |
123
- | --- | --- |
124
- | thing | <code>\*</code> |
125
-
126
- <a name="Stackable"></a>
127
-
128
- ## Stackable ⇐ [<code>ArrayElement</code>](#ArrayElement)
129
- Stackable represents a runnable entry in stack.
130
-
131
- **Kind**: global class
132
- **Extends**: [<code>ArrayElement</code>](#ArrayElement), [<code>Runnable</code>](#Runnable)
133
-
134
- * [Stackable](#Stackable) ⇐ [<code>ArrayElement</code>](#ArrayElement)
135
- * [new Stackable([stack], stackableClass)](#new_Stackable_new)
136
- * _instance_
137
- * [.task](#Stackable+task) <code>\*</code>
138
- * [.classType](#ArrayElement+classType) ⇒ [<code>ArrayElement</code>](#ArrayElement)
139
- * [.run()](#Stackable+run) ⇒ <code>\*</code>
140
- * _static_
141
- * [.make(stackable, [stackableClass])](#Stackable.make) [<code>Stackable</code>](#Stackable)
142
- * [.fromArray([values], [stackableClass])](#Stackable.fromArray) <code>Object</code>
143
-
144
- <a name="new_Stackable_new"></a>
145
-
146
- ### new Stackable([stack], stackableClass)
147
- Instantiate the Stackable which is used in a stack.
148
-
149
-
150
- | Param | Type | Default |
151
- | --- | --- | --- |
152
- | [stack] | <code>\*</code> | <code></code> |
153
- | stackableClass | | |
154
-
155
- <a name="Stackable+task"></a>
156
-
157
- ### stackable.task ⇒ <code>\*</code>
158
- Retrieve the data which should be formed as a task.
159
-
160
- **Kind**: instance property of [<code>Stackable</code>](#Stackable)
161
- **Overrides**: [<code>task</code>](#Runnable+task)
162
- <a name="ArrayElement+classType"></a>
163
-
164
- ### stackable.classType [<code>ArrayElement</code>](#ArrayElement)
165
- Return the type of class used for Element.
166
-
167
- **Kind**: instance property of [<code>Stackable</code>](#Stackable)
168
- **Overrides**: [<code>classType</code>](#ArrayElement+classType)
169
- <a name="Stackable+run"></a>
170
-
171
- ### stackable.run() ⇒ <code>\*</code>
172
- Run the stacked task.
173
-
174
- **Kind**: instance method of [<code>Stackable</code>](#Stackable)
175
- **Overrides**: [<code>run</code>](#Runnable+run)
176
- <a name="Stackable.make"></a>
177
-
178
- ### Stackable.make(stackable, [stackableClass]) ⇒ [<code>Stackable</code>](#Stackable)
179
- Make a new Stackable from the data given if it is not already a valid Stackable.
180
-
181
- **Kind**: static method of [<code>Stackable</code>](#Stackable)
182
- **Methodof**: Stackable
183
-
184
- | Param | Type | Default |
185
- | --- | --- | --- |
186
- | stackable | [<code>Stackable</code>](#Stackable) \| <code>\*</code> | |
187
- | [stackableClass] | [<code>Stackable</code>](#Stackable) | <code>Stackable</code> |
188
-
189
- <a name="Stackable.fromArray"></a>
190
-
191
- ### Stackable.fromArray([values], [stackableClass]) ⇒ <code>Object</code>
192
- Convert an array into Stackable instances, return the head and tail Stackables.
193
-
194
- **Kind**: static method of [<code>Stackable</code>](#Stackable)
195
-
196
- | Param | Type | Default |
197
- | --- | --- | --- |
198
- | [values] | <code>Array</code> | <code>[]</code> |
199
- | [stackableClass] | [<code>Stackable</code>](#Stackable) | <code>Stackable</code> |
200
-
201
- <a name="Stack"></a>
202
-
203
- ## Stack
204
- Store a collection of items which can only be inserted and removed from the top.
205
-
206
- **Kind**: global class
207
- **See**: [Java Stack Interface](http://www.cs.williams.edu/~freund/cs136-073/javadoc/structure5/structure5/Stack.html)
208
-
209
- * [Stack](#Stack)
210
- * [new Stack(stackedList)](#new_Stack_new)
211
- * _instance_
212
- * [.stackedList](#Stack+stackedList) <code>Iterable</code> \| [<code>LinkedList</code>](#LinkedList)
213
- * [.add(stackable)](#Stack+add)
214
- * [.empty()](#Stack+empty) ⇒ <code>boolean</code>
215
- * [.get()](#Stack+get) ⇒ [<code>Stackable</code>](#Stackable)
216
- * [.getFirst()](#Stack+getFirst) ⇒ [<code>Stackable</code>](#Stackable)
217
- * [.peek()](#Stack+peek)[<code>Stackable</code>](#Stackable)
218
- * [.pop()](#Stack+pop) [<code>Stackable</code>](#Stackable) \| <code>null</code>
219
- * [.push(stackable)](#Stack+push)
220
- * [.remove()](#Stack+remove) [<code>Stackable</code>](#Stackable) \| <code>null</code>
221
- * [.size()](#Stack+size) ⇒ <code>number</code>
222
- * _static_
223
- * [.fromArray(values, stackableClass, listClass)](#Stack.fromArray)[<code>Stack</code>](#Stack)
224
-
225
- <a name="new_Stack_new"></a>
226
-
227
- ### new Stack(stackedList)
228
- Instantiate the state with the starter stacked list.
229
-
230
-
231
- | Param | Type |
232
- | --- | --- |
233
- | stackedList | <code>Iterable</code> \| [<code>Arrayable</code>](#Arrayable) |
234
-
235
- <a name="Stack+stackedList"></a>
236
-
237
- ### stack.stackedList <code>Iterable</code> \| [<code>LinkedList</code>](#LinkedList)
238
- Return the internal stacked list.
239
-
240
- **Kind**: instance property of [<code>Stack</code>](#Stack)
241
- <a name="Stack+add"></a>
242
-
243
- ### stack.add(stackable)
244
- Add a stackable task to the top of the stack.
245
-
246
- **Kind**: instance method of [<code>Stack</code>](#Stack)
247
-
248
- | Param | Type |
249
- | --- | --- |
250
- | stackable | [<code>Stackable</code>](#Stackable) \| <code>\*</code> |
251
-
252
- <a name="Stack+empty"></a>
253
-
254
- ### stack.empty() <code>boolean</code>
255
- Return true if the stack is empty (there are no tasks in the stacked list)
256
-
257
- **Kind**: instance method of [<code>Stack</code>](#Stack)
258
- <a name="Stack+get"></a>
259
-
260
- ### stack.get() ⇒ [<code>Stackable</code>](#Stackable)
261
- Return a reference to the next stacked task.
262
-
263
- **Kind**: instance method of [<code>Stack</code>](#Stack)
264
- <a name="Stack+getFirst"></a>
265
-
266
- ### stack.getFirst() ⇒ [<code>Stackable</code>](#Stackable)
267
- Return a reference to the next stacked / first stacked task (alias for 'get()')
268
-
269
- **Kind**: instance method of [<code>Stack</code>](#Stack)
270
- <a name="Stack+peek"></a>
271
-
272
- ### stack.peek() ⇒ [<code>Stackable</code>](#Stackable)
273
- Take a look at the next stacked task (alias for 'get()')
274
-
275
- **Kind**: instance method of [<code>Stack</code>](#Stack)
276
- <a name="Stack+pop"></a>
277
-
278
- ### stack.pop() [<code>Stackable</code>](#Stackable) \| <code>null</code>
279
- Remove the next stacked task and return it.
280
-
281
- **Kind**: instance method of [<code>Stack</code>](#Stack)
282
- <a name="Stack+push"></a>
283
-
284
- ### stack.push(stackable)
285
- Push a stackable task to the top of the stack.
286
-
287
- **Kind**: instance method of [<code>Stack</code>](#Stack)
288
-
289
- | Param | Type |
290
- | --- | --- |
291
- | stackable | [<code>Stackable</code>](#Stackable) \| <code>\*</code> |
292
-
293
- <a name="Stack+remove"></a>
294
-
295
- ### stack.remove() [<code>Stackable</code>](#Stackable) \| <code>null</code>
296
- Remove the next stacked task and return it.
297
-
298
- **Kind**: instance method of [<code>Stack</code>](#Stack)
299
- <a name="Stack+size"></a>
300
-
301
- ### stack.size() ⇒ <code>number</code>
302
- Get the size of the current stack.
303
-
304
- **Kind**: instance method of [<code>Stack</code>](#Stack)
305
- <a name="Stack.fromArray"></a>
306
-
307
- ### Stack.fromArray(values, stackableClass, listClass) ⇒ [<code>Stack</code>](#Stack)
308
- Convert an array to a Stack.
309
-
310
- **Kind**: static method of [<code>Stack</code>](#Stack)
311
- **Methodof**: Stack
312
-
313
- | Param | Type |
314
- | --- | --- |
315
- | values | <code>Array</code> |
316
- | stackableClass | [<code>Stackable</code>](#Stackable) |
317
- | listClass | [<code>Stack</code>](#Stack) \| <code>Iterable</code> |
318
-
319
- <a name="Queueable"></a>
320
-
321
- ## Queueable ⇐ [<code>Linker</code>](#Linker)
322
- Queueable represents a runnable entry in a queue.
323
-
324
- **Kind**: global class
325
- **Extends**: [<code>Linker</code>](#Linker), [<code>Runnable</code>](#Runnable)
326
-
327
- * [Queueable](#Queueable) ⇐ [<code>Linker</code>](#Linker)
328
- * [new Queueable([queueableData], [queueableClass])](#new_Queueable_new)
329
- * _instance_
330
- * [.complete](#Queueable+complete) <code>boolean</code>
331
- * [.isReady](#Queueable+isReady) <code>boolean</code>
332
- * [.running](#Queueable+running) <code>boolean</code>
333
- * [.task](#Queueable+task) ⇒ <code>\*</code>
334
- * [.classType](#ArrayElement+classType) ⇒ [<code>ArrayElement</code>](#ArrayElement)
335
- * [.markCompleted(completeResponse)](#Queueable+markCompleted) ⇒ [<code>completeResponse</code>](#completeResponse)
336
- * [.run()](#Queueable+run) [<code>completeResponse</code>](#completeResponse)
337
- * _static_
338
- * [.make(queueable, [queueableClass])](#Queueable.make) ⇒ [<code>Queueable</code>](#Queueable)
339
- * [.fromArray(values, queueableClass)](#Queueable.fromArray) ⇒ <code>Object</code>
340
-
341
- <a name="new_Queueable_new"></a>
342
-
343
- ### new Queueable([queueableData], [queueableClass])
344
- Create a queueable item that can be used in a queue.
345
-
346
-
347
- | Param | Type | Default |
348
- | --- | --- | --- |
349
- | [queueableData] | <code>Object</code> | <code>{}</code> |
350
- | [queueableData.task] | <code>\*</code> | <code></code> |
351
- | [queueableData.ready] | <code>boolean</code> \| <code>function</code> | <code>false</code> |
352
- | [queueableClass] | [<code>Queueable</code>](#Queueable) | <code>Queueable</code> |
353
-
354
- <a name="Queueable+complete"></a>
355
-
356
- ### queueable.complete <code>boolean</code>
357
- Check complete state.
358
-
359
- **Kind**: instance property of [<code>Queueable</code>](#Queueable)
360
- <a name="Queueable+isReady"></a>
361
-
362
- ### queueable.isReady <code>boolean</code>
363
- Check ready state.
364
-
365
- **Kind**: instance property of [<code>Queueable</code>](#Queueable)
366
- <a name="Queueable+running"></a>
367
-
368
- ### queueable.running ⇒ <code>boolean</code>
369
- Check running state.
370
-
371
- **Kind**: instance property of [<code>Queueable</code>](#Queueable)
372
- <a name="Queueable+task"></a>
373
-
374
- ### queueable.task ⇒ <code>\*</code>
375
- Retrieve the data which should be formed as a task.
376
-
377
- **Kind**: instance property of [<code>Queueable</code>](#Queueable)
378
- **Overrides**: [<code>task</code>](#Runnable+task)
379
- <a name="ArrayElement+classType"></a>
380
-
381
- ### queueable.classType [<code>ArrayElement</code>](#ArrayElement)
382
- Return the type of class used for Element.
383
-
384
- **Kind**: instance property of [<code>Queueable</code>](#Queueable)
385
- **Overrides**: [<code>classType</code>](#ArrayElement+classType)
386
- <a name="Queueable+markCompleted"></a>
387
-
388
- ### queueable.markCompleted(completeResponse) [<code>completeResponse</code>](#completeResponse)
389
- Set this queueable as completed.
390
-
391
- **Kind**: instance method of [<code>Queueable</code>](#Queueable)
392
-
393
- | Param | Type | Default |
394
- | --- | --- | --- |
395
- | completeResponse | <code>Object</code> | |
396
- | [completeResponse.success] | <code>\*</code> | <code>true</code> |
397
- | [completeResponse.error] | <code>\*</code> | <code>false</code> |
398
- | [completeResponse.context] | <code>\*</code> | <code></code> |
399
-
400
- <a name="Queueable+run"></a>
401
-
402
- ### queueable.run() ⇒ [<code>completeResponse</code>](#completeResponse)
403
- Intend to run the queued task when it is ready. If ready, mark this task as running and run the task.
404
-
405
- **Kind**: instance method of [<code>Queueable</code>](#Queueable)
406
- **Overrides**: [<code>run</code>](#Runnable+run)
407
- <a name="Queueable.make"></a>
408
-
409
- ### Queueable.make(queueable, [queueableClass]) ⇒ [<code>Queueable</code>](#Queueable)
410
- Make a new Queueable from the data given if it is not already a valid Queueable.
411
-
412
- **Kind**: static method of [<code>Queueable</code>](#Queueable)
413
- **Methodof**: Queueable
414
-
415
- | Param | Type | Default |
416
- | --- | --- | --- |
417
- | queueable | [<code>Queueable</code>](#Queueable) \| <code>\*</code> | |
418
- | [queueableClass] | [<code>Queueable</code>](#Queueable) | <code>Queueable</code> |
419
-
420
- <a name="Queueable.fromArray"></a>
421
-
422
- ### Queueable.fromArray(values, queueableClass) ⇒ <code>Object</code>
423
- Convert an array into Queueable instances, return the head and tail Queueables.
424
-
425
- **Kind**: static method of [<code>Queueable</code>](#Queueable)
426
-
427
- | Param | Type |
428
- | --- | --- |
429
- | values | <code>Array</code> |
430
- | queueableClass | [<code>Queueable</code>](#Queueable) |
431
-
432
- <a name="Queue"></a>
433
-
434
- ## Queue
435
- Maintain a series of queued items.
436
-
437
- **Kind**: global class
438
- **See**: [Java Queue Interface](http://www.cs.williams.edu/~freund/cs136-073/javadoc/structure5/structure5/Queue.html)
439
-
440
- * [Queue](#Queue)
441
- * [new Queue(queuedList)](#new_Queue_new)
442
- * _instance_
443
- * [.queuedList](#Queue+queuedList) ⇒ <code>Iterable</code> \| [<code>LinkedList</code>](#LinkedList)
444
- * [.add(queueable)](#Queue+add)
445
- * [.dequeue()](#Queue+dequeue) ⇒ [<code>completeResponse</code>](#completeResponse) \| <code>\*</code>
446
- * [.empty()](#Queue+empty) ⇒ <code>boolean</code>
447
- * [.enqueue(queueable)](#Queue+enqueue)
448
- * [.get()](#Queue+get) [<code>Queueable</code>](#Queueable)
449
- * [.getFirst()](#Queue+getFirst) [<code>Queueable</code>](#Queueable)
450
- * [.peek()](#Queue+peek) ⇒ [<code>Queueable</code>](#Queueable)
451
- * [.remove()](#Queue+remove) ⇒ [<code>Queueable</code>](#Queueable) \| <code>null</code>
452
- * [.size()](#Queue+size) ⇒ <code>number</code>
453
- * _static_
454
- * [.fromArray(values, queueableClass, listClass)](#Queue.fromArray) [<code>Queue</code>](#Queue)
455
-
456
- <a name="new_Queue_new"></a>
457
-
458
- ### new Queue(queuedList)
459
- Instantiate the queue with the given queue list.
460
-
461
-
462
- | Param | Type |
463
- | --- | --- |
464
- | queuedList | <code>Iterable</code> \| [<code>LinkedList</code>](#LinkedList) |
465
-
466
- <a name="Queue+queuedList"></a>
467
-
468
- ### queue.queuedList <code>Iterable</code> \| [<code>LinkedList</code>](#LinkedList)
469
- Return the internal queued list.
470
-
471
- **Kind**: instance property of [<code>Queue</code>](#Queue)
472
- <a name="Queue+add"></a>
473
-
474
- ### queue.add(queueable)
475
- Add a queued task to the end of the queue
476
-
477
- **Kind**: instance method of [<code>Queue</code>](#Queue)
478
-
479
- | Param | Type |
480
- | --- | --- |
481
- | queueable | [<code>Queueable</code>](#Queueable) \| <code>\*</code> |
482
-
483
- <a name="Queue+dequeue"></a>
484
-
485
- ### queue.dequeue() [<code>completeResponse</code>](#completeResponse) \| <code>\*</code>
486
- Take a queued task from the front of the queue and run it if ready.
487
-
488
- **Kind**: instance method of [<code>Queue</code>](#Queue)
489
- <a name="Queue+empty"></a>
490
-
491
- ### queue.empty() <code>boolean</code>
492
- Return true if the queue is empty (there are no tasks in the queue list)
493
-
494
- **Kind**: instance method of [<code>Queue</code>](#Queue)
495
- <a name="Queue+enqueue"></a>
496
-
497
- ### queue.enqueue(queueable)
498
- Add a queued task to the end of the queue (alias for 'add()')
499
-
500
- **Kind**: instance method of [<code>Queue</code>](#Queue)
501
-
502
- | Param | Type |
503
- | --- | --- |
504
- | queueable | [<code>Queueable</code>](#Queueable) |
505
-
506
- <a name="Queue+get"></a>
507
-
508
- ### queue.get() [<code>Queueable</code>](#Queueable)
509
- Return a reference to the next queued task.
510
-
511
- **Kind**: instance method of [<code>Queue</code>](#Queue)
512
- <a name="Queue+getFirst"></a>
513
-
514
- ### queue.getFirst() ⇒ [<code>Queueable</code>](#Queueable)
515
- Return a reference to the next queued / first queued task (alias for 'get()')
516
-
517
- **Kind**: instance method of [<code>Queue</code>](#Queue)
518
- <a name="Queue+peek"></a>
519
-
520
- ### queue.peek() ⇒ [<code>Queueable</code>](#Queueable)
521
- Take a look at the next queued task (alias for 'get()')
522
-
523
- **Kind**: instance method of [<code>Queue</code>](#Queue)
524
- <a name="Queue+remove"></a>
525
-
526
- ### queue.remove() ⇒ [<code>Queueable</code>](#Queueable) \| <code>null</code>
527
- Remove the next queued item and return it.
528
-
529
- **Kind**: instance method of [<code>Queue</code>](#Queue)
530
- <a name="Queue+size"></a>
531
-
532
- ### queue.size() <code>number</code>
533
- Get the length of the current queue.
534
-
535
- **Kind**: instance method of [<code>Queue</code>](#Queue)
536
- <a name="Queue.fromArray"></a>
537
-
538
- ### Queue.fromArray(values, queueableClass, listClass) ⇒ [<code>Queue</code>](#Queue)
539
- Convert an array to a Queue.
540
-
541
- **Kind**: static method of [<code>Queue</code>](#Queue)
542
- **Methodof**: Queue
543
-
544
- | Param | Type |
545
- | --- | --- |
546
- | values | <code>Array</code> |
547
- | queueableClass | [<code>Queueable</code>](#Queueable) |
548
- | listClass | [<code>Queue</code>](#Queue) \| <code>Iterable</code> |
549
-
550
- <a name="TreeLinker"></a>
551
-
552
- ## TreeLinker ⇐ [<code>DoubleLinker</code>](#DoubleLinker)
553
- TreeLinker represents a node in a LinkedTreeList.
554
-
555
- **Kind**: global class
556
- **Extends**: [<code>DoubleLinker</code>](#DoubleLinker)
557
-
558
- * [TreeLinker](#TreeLinker) [<code>DoubleLinker</code>](#DoubleLinker)
559
- * [new TreeLinker([settings], [linkerClass])](#new_TreeLinker_new)
560
- * _instance_
561
- * [.parent](#TreeLinker+parent) ⇒ [<code>TreeLinker</code>](#TreeLinker) \| <code>null</code>
562
- * [.children](#TreeLinker+children) [<code>LinkedTreeList</code>](#LinkedTreeList) \| <code>null</code>
563
- * [.classType](#ArrayElement+classType) [<code>ArrayElement</code>](#ArrayElement)
564
- * [.childrenFromArray(children, linkerClass)](#TreeLinker+childrenFromArray) ⇒ [<code>DoubleLinker</code>](#DoubleLinker) \| <code>null</code>
565
- * _static_
566
- * [.make(linker, [linkerClass])](#TreeLinker.make) ⇒ [<code>Linker</code>](#Linker)
567
- * [.fromArray([values], [linkerClass])](#TreeLinker.fromArray) <code>Object</code>
568
-
569
- <a name="new_TreeLinker_new"></a>
570
-
571
- ### new TreeLinker([settings], [linkerClass])
572
- Create the new TreeLinker instance, provide the data and optionally configure the type of Linker.
573
-
574
-
575
- | Param | Type | Default |
576
- | --- | --- | --- |
577
- | [settings] | <code>Object</code> | <code>{}</code> |
578
- | [settings.data] | <code>\*</code> | <code></code> |
579
- | [settings.prev] | [<code>TreeLinker</code>](#TreeLinker) | <code></code> |
580
- | [settings.next] | [<code>TreeLinker</code>](#TreeLinker) | <code></code> |
581
- | [settings.children] | [<code>LinkedTreeList</code>](#LinkedTreeList) | <code></code> |
582
- | [settings.parent] | [<code>TreeLinker</code>](#TreeLinker) | <code></code> |
583
- | [linkerClass] | [<code>TreeLinker</code>](#TreeLinker) | <code>TreeLinker</code> |
584
-
585
- <a name="TreeLinker+parent"></a>
586
-
587
- ### treeLinker.parent ⇒ [<code>TreeLinker</code>](#TreeLinker) \| <code>null</code>
588
- Return the parent of this Tree Linker.
589
-
590
- **Kind**: instance property of [<code>TreeLinker</code>](#TreeLinker)
591
- <a name="TreeLinker+children"></a>
592
-
593
- ### treeLinker.children ⇒ [<code>LinkedTreeList</code>](#LinkedTreeList) \| <code>null</code>
594
- Return the children of this Tree Linker.
595
-
596
- **Kind**: instance property of [<code>TreeLinker</code>](#TreeLinker)
597
- <a name="ArrayElement+classType"></a>
598
-
599
- ### treeLinker.classType ⇒ [<code>ArrayElement</code>](#ArrayElement)
600
- Return the type of class used for Element.
601
-
602
- **Kind**: instance property of [<code>TreeLinker</code>](#TreeLinker)
603
- **Overrides**: [<code>classType</code>](#ArrayElement+classType)
604
- <a name="TreeLinker+childrenFromArray"></a>
605
-
606
- ### treeLinker.childrenFromArray(children, linkerClass) [<code>DoubleLinker</code>](#DoubleLinker) \| <code>null</code>
607
- Create the children for this tree from an array.
608
-
609
- **Kind**: instance method of [<code>TreeLinker</code>](#TreeLinker)
610
-
611
- | Param | Type | Default |
612
- | --- | --- | --- |
613
- | children | <code>Array</code> \| <code>null</code> | <code></code> |
614
- | linkerClass | [<code>TreeLinker</code>](#TreeLinker) | |
615
-
616
- <a name="TreeLinker.make"></a>
617
-
618
- ### TreeLinker.make(linker, [linkerClass]) [<code>Linker</code>](#Linker)
619
- Make a new DoubleLinker from the data given if it is not already a valid Linker.
620
-
621
- **Kind**: static method of [<code>TreeLinker</code>](#TreeLinker)
622
- **Methodof**: TreeLinker
623
-
624
- | Param | Type | Default |
625
- | --- | --- | --- |
626
- | linker | [<code>TreeLinker</code>](#TreeLinker) \| <code>\*</code> | |
627
- | [linkerClass] | [<code>TreeLinker</code>](#TreeLinker) | <code>TreeLinker</code> |
628
-
629
- <a name="TreeLinker.fromArray"></a>
630
-
631
- ### TreeLinker.fromArray([values], [linkerClass]) ⇒ <code>Object</code>
632
- Convert an array into DoubleLinker instances, return the head and tail DoubleLinkers.
633
-
634
- **Kind**: static method of [<code>TreeLinker</code>](#TreeLinker)
635
- **Methodof**: TreeLinker
636
-
637
- | Param | Type | Default |
638
- | --- | --- | --- |
639
- | [values] | <code>Array</code> | <code>[]</code> |
640
- | [linkerClass] | [<code>TreeLinker</code>](#TreeLinker) | <code>TreeLinker</code> |
641
-
642
- <a name="LinkedTreeList"></a>
643
-
644
- ## LinkedTreeList ⇐ [<code>DoublyLinkedList</code>](#DoublyLinkedList)
645
- LinkedTreeList represents a collection stored with a root and spreading in branching (tree) formation..
646
-
647
- **Kind**: global class
648
- **Extends**: [<code>DoublyLinkedList</code>](#DoublyLinkedList)
649
-
650
- * [LinkedTreeList](#LinkedTreeList) [<code>DoublyLinkedList</code>](#DoublyLinkedList)
651
- * [new LinkedTreeList([listClass])](#new_LinkedTreeList_new)
652
- * _instance_
653
- * [.parent](#LinkedTreeList+parent) ⇒ [<code>TreeLinker</code>](#TreeLinker)
654
- * [.parent](#LinkedTreeList+parent)
655
- * [.rootParent](#LinkedTreeList+rootParent) ⇒ [<code>TreeLinker</code>](#TreeLinker)
656
- * [.first](#DoublyLinkedList+first) [<code>DoubleLinker</code>](#DoubleLinker)
657
- * [.last](#DoublyLinkedList+last) ⇒ [<code>DoubleLinker</code>](#DoubleLinker)
658
- * [.length](#DoublyLinkedList+length) <code>number</code>
659
- * [.classType](#Arrayable+classType) ⇒ [<code>Arrayable</code>](#Arrayable)
660
- * [.initialized](#Arrayable+initialized) ⇒ <code>boolean</code>
661
- * [.innerList](#Arrayable+innerList) ⇒ <code>Array</code>
662
- * [.setChildren(item, children)](#LinkedTreeList+setChildren)
663
- * [.insertAfter(node, newNode)](#DoublyLinkedList+insertAfter) ⇒ [<code>DoublyLinkedList</code>](#DoublyLinkedList)
664
- * [.insertBefore(node, newNode)](#DoublyLinkedList+insertBefore) [<code>DoublyLinkedList</code>](#DoublyLinkedList)
665
- * [.remove(node)](#DoublyLinkedList+remove) ⇒ [<code>DoubleLinker</code>](#DoubleLinker)
666
- * [.reset()](#DoublyLinkedList+reset) ⇒ [<code>DoubleLinker</code>](#DoubleLinker)
667
- * [.item(index)](#DoublyLinkedList+item) [<code>DoubleLinker</code>](#DoubleLinker) \| <code>null</code>
668
- * [.forEach(callback, thisArg)](#DoublyLinkedList+forEach)
669
- * [.initialize(initialList)](#LinkedList+initialize) [<code>LinkedList</code>](#LinkedList)
670
- * [.append(node, after)](#LinkedList+append) ⇒ [<code>Linker</code>](#Linker)
671
- * [.prepend(node, before)](#LinkedList+prepend) ⇒ [<code>Linker</code>](#Linker)
672
- * _static_
673
- * [.fromArray([values], [linkerClass], [listClass])](#LinkedTreeList.fromArray) ⇒ [<code>DoublyLinkedList</code>](#DoublyLinkedList)
674
-
675
- <a name="new_LinkedTreeList_new"></a>
676
-
677
- ### new LinkedTreeList([listClass])
678
- Create the new LinkedTreeList instance, configure the list class.
679
-
680
-
681
- | Param | Type | Default |
682
- | --- | --- | --- |
683
- | [listClass] | [<code>LinkedTreeList</code>](#LinkedTreeList) \| <code>Iterable</code> | <code>LinkedTreeList</code> |
684
-
685
- <a name="LinkedTreeList+parent"></a>
686
-
687
- ### linkedTreeList.parent ⇒ [<code>TreeLinker</code>](#TreeLinker)
688
- Get the parent of this tree list.
689
-
690
- **Kind**: instance property of [<code>LinkedTreeList</code>](#LinkedTreeList)
691
- <a name="LinkedTreeList+parent"></a>
692
-
693
- ### linkedTreeList.parent
694
- Set the parent of this tree list
695
-
696
- **Kind**: instance property of [<code>LinkedTreeList</code>](#LinkedTreeList)
697
-
698
- | Param | Type |
699
- | --- | --- |
700
- | parent | [<code>TreeLinker</code>](#TreeLinker) |
701
-
702
- <a name="LinkedTreeList+rootParent"></a>
703
-
704
- ### linkedTreeList.rootParent [<code>TreeLinker</code>](#TreeLinker)
705
- Return the root parent of the entire tree.
706
-
707
- **Kind**: instance property of [<code>LinkedTreeList</code>](#LinkedTreeList)
708
- <a name="DoublyLinkedList+first"></a>
709
-
710
- ### linkedTreeList.first ⇒ [<code>DoubleLinker</code>](#DoubleLinker)
711
- Retrieve the first DoubleLinker in the list.
712
-
713
- **Kind**: instance property of [<code>LinkedTreeList</code>](#LinkedTreeList)
714
- **Overrides**: [<code>first</code>](#DoublyLinkedList+first)
715
- <a name="DoublyLinkedList+last"></a>
716
-
717
- ### linkedTreeList.last [<code>DoubleLinker</code>](#DoubleLinker)
718
- Retrieve the last DoubleLinker in the list.
719
-
720
- **Kind**: instance property of [<code>LinkedTreeList</code>](#LinkedTreeList)
721
- **Overrides**: [<code>last</code>](#DoublyLinkedList+last)
722
- <a name="DoublyLinkedList+length"></a>
723
-
724
- ### linkedTreeList.length ⇒ <code>number</code>
725
- Return the length of the list.
726
-
727
- **Kind**: instance property of [<code>LinkedTreeList</code>](#LinkedTreeList)
728
- **Overrides**: [<code>length</code>](#DoublyLinkedList+length)
729
- <a name="Arrayable+classType"></a>
730
-
731
- ### linkedTreeList.classType [<code>Arrayable</code>](#Arrayable)
732
- Return the type of class used for Arrayable.
733
-
734
- **Kind**: instance property of [<code>LinkedTreeList</code>](#LinkedTreeList)
735
- **Overrides**: [<code>classType</code>](#Arrayable+classType)
736
- <a name="Arrayable+initialized"></a>
737
-
738
- ### linkedTreeList.initialized <code>boolean</code>
739
- Detect if the inner list has been initialized.
740
-
741
- **Kind**: instance property of [<code>LinkedTreeList</code>](#LinkedTreeList)
742
- **Overrides**: [<code>initialized</code>](#Arrayable+initialized)
743
- <a name="Arrayable+innerList"></a>
744
-
745
- ### linkedTreeList.innerList <code>Array</code>
746
- Retrieve a copy of the innerList used.
747
-
748
- **Kind**: instance property of [<code>LinkedTreeList</code>](#LinkedTreeList)
749
- **Overrides**: [<code>innerList</code>](#Arrayable+innerList)
750
- <a name="LinkedTreeList+setChildren"></a>
751
-
752
- ### linkedTreeList.setChildren(item, children)
753
- Set the children on a parent item.
754
-
755
- **Kind**: instance method of [<code>LinkedTreeList</code>](#LinkedTreeList)
756
-
757
- | Param | Type | Default |
758
- | --- | --- | --- |
759
- | item | [<code>TreeLinker</code>](#TreeLinker) | |
760
- | children | [<code>LinkedTreeList</code>](#LinkedTreeList) | <code></code> |
761
-
762
- <a name="DoublyLinkedList+insertAfter"></a>
763
-
764
- ### linkedTreeList.insertAfter(node, newNode) ⇒ [<code>DoublyLinkedList</code>](#DoublyLinkedList)
765
- Insert a new node (or data) after a node.
766
-
767
- **Kind**: instance method of [<code>LinkedTreeList</code>](#LinkedTreeList)
768
- **Overrides**: [<code>insertAfter</code>](#DoublyLinkedList+insertAfter)
769
-
770
- | Param | Type |
771
- | --- | --- |
772
- | node | [<code>DoubleLinker</code>](#DoubleLinker) \| <code>\*</code> |
773
- | newNode | [<code>DoubleLinker</code>](#DoubleLinker) \| <code>\*</code> |
774
-
775
- <a name="DoublyLinkedList+insertBefore"></a>
776
-
777
- ### linkedTreeList.insertBefore(node, newNode) [<code>DoublyLinkedList</code>](#DoublyLinkedList)
778
- Insert a new node (or data) before a node.
779
-
780
- **Kind**: instance method of [<code>LinkedTreeList</code>](#LinkedTreeList)
781
- **Overrides**: [<code>insertBefore</code>](#DoublyLinkedList+insertBefore)
782
-
783
- | Param | Type |
784
- | --- | --- |
785
- | node | [<code>DoubleLinker</code>](#DoubleLinker) \| <code>\*</code> |
786
- | newNode | [<code>DoubleLinker</code>](#DoubleLinker) \| <code>\*</code> |
787
-
788
- <a name="DoublyLinkedList+remove"></a>
789
-
790
- ### linkedTreeList.remove(node) [<code>DoubleLinker</code>](#DoubleLinker)
791
- Remove a linker from this linked list.
792
-
793
- **Kind**: instance method of [<code>LinkedTreeList</code>](#LinkedTreeList)
794
- **Overrides**: [<code>remove</code>](#DoublyLinkedList+remove)
795
-
796
- | Param | Type |
797
- | --- | --- |
798
- | node | [<code>DoubleLinker</code>](#DoubleLinker) |
799
-
800
- <a name="DoublyLinkedList+reset"></a>
801
-
802
- ### linkedTreeList.reset() ⇒ [<code>DoubleLinker</code>](#DoubleLinker)
803
- Refresh all references and return head reference.
804
-
805
- **Kind**: instance method of [<code>LinkedTreeList</code>](#LinkedTreeList)
806
- **Overrides**: [<code>reset</code>](#DoublyLinkedList+reset)
807
- <a name="DoublyLinkedList+item"></a>
808
-
809
- ### linkedTreeList.item(index) ⇒ [<code>DoubleLinker</code>](#DoubleLinker) \| <code>null</code>
810
- Retrieve a DoubleLinker item from this list by numeric index, otherwise return null.
811
-
812
- **Kind**: instance method of [<code>LinkedTreeList</code>](#LinkedTreeList)
813
- **Overrides**: [<code>item</code>](#DoublyLinkedList+item)
814
-
815
- | Param | Type |
816
- | --- | --- |
817
- | index | <code>number</code> |
818
-
819
- <a name="DoublyLinkedList+forEach"></a>
820
-
821
- ### linkedTreeList.forEach(callback, thisArg)
822
- Be able to run forEach on this DoublyLinkedList ot iterate over the DoubleLinker Items.
823
-
824
- **Kind**: instance method of [<code>LinkedTreeList</code>](#LinkedTreeList)
825
- **Overrides**: [<code>forEach</code>](#DoublyLinkedList+forEach)
826
-
827
- | Param | Type |
828
- | --- | --- |
829
- | callback | [<code>forEachCallback</code>](#forEachCallback) |
830
- | thisArg | [<code>DoublyLinkedList</code>](#DoublyLinkedList) |
831
-
832
- <a name="LinkedList+initialize"></a>
833
-
834
- ### linkedTreeList.initialize(initialList) [<code>LinkedList</code>](#LinkedList)
835
- Initialize the inner list, should only run once.
836
-
837
- **Kind**: instance method of [<code>LinkedTreeList</code>](#LinkedTreeList)
838
- **Overrides**: [<code>initialize</code>](#LinkedList+initialize)
839
-
840
- | Param | Type |
841
- | --- | --- |
842
- | initialList | [<code>Linker</code>](#Linker) \| <code>Array</code> |
843
-
844
- <a name="LinkedList+append"></a>
845
-
846
- ### linkedTreeList.append(node, after) ⇒ [<code>Linker</code>](#Linker)
847
- Add a node (or data) after the given (or last) node in the list.
848
-
849
- **Kind**: instance method of [<code>LinkedTreeList</code>](#LinkedTreeList)
850
- **Overrides**: [<code>append</code>](#LinkedList+append)
851
-
852
- | Param | Type |
853
- | --- | --- |
854
- | node | [<code>Linker</code>](#Linker) \| <code>\*</code> |
855
- | after | [<code>Linker</code>](#Linker) |
856
-
857
- <a name="LinkedList+prepend"></a>
858
-
859
- ### linkedTreeList.prepend(node, before) ⇒ [<code>Linker</code>](#Linker)
860
- Add a node (or data) before the given (or first) node in the list.
861
-
862
- **Kind**: instance method of [<code>LinkedTreeList</code>](#LinkedTreeList)
863
- **Overrides**: [<code>prepend</code>](#LinkedList+prepend)
864
-
865
- | Param | Type |
866
- | --- | --- |
867
- | node | [<code>Linker</code>](#Linker) \| <code>\*</code> |
868
- | before | [<code>Linker</code>](#Linker) |
869
-
870
- <a name="LinkedTreeList.fromArray"></a>
871
-
872
- ### LinkedTreeList.fromArray([values], [linkerClass], [listClass]) ⇒ [<code>DoublyLinkedList</code>](#DoublyLinkedList)
873
- Create an instance of LinkedTreeList from an array
874
-
875
- **Kind**: static method of [<code>LinkedTreeList</code>](#LinkedTreeList)
876
-
877
- | Param | Type | Default |
878
- | --- | --- | --- |
879
- | [values] | <code>Array</code> | <code>[]</code> |
880
- | [linkerClass] | [<code>TreeLinker</code>](#TreeLinker) | <code>TreeLinker</code> |
881
- | [listClass] | [<code>LinkedTreeList</code>](#LinkedTreeList) | <code>LinkedTreeList</code> |
882
-
883
- <a name="Linker"></a>
884
-
885
- ## Linker ⇐ [<code>ArrayElement</code>](#ArrayElement)
886
- Linker represents a node in a LinkedList.
887
-
888
- **Kind**: global class
889
- **Extends**: [<code>ArrayElement</code>](#ArrayElement)
890
-
891
- * [Linker](#Linker) [<code>ArrayElement</code>](#ArrayElement)
892
- * [new Linker([nodeData], [linkerClass])](#new_Linker_new)
893
- * _instance_
894
- * [.classType](#ArrayElement+classType) ⇒ [<code>ArrayElement</code>](#ArrayElement)
895
- * _static_
896
- * [.make(linker, [linkerClass])](#Linker.make) [<code>Linker</code>](#Linker)
897
- * [.fromArray([values], [linkerClass])](#Linker.fromArray) ⇒ <code>Object</code>
898
-
899
- <a name="new_Linker_new"></a>
900
-
901
- ### new Linker([nodeData], [linkerClass])
902
- Create the new Linker instance, provide the data and optionally configure the type of Linker.
903
-
904
-
905
- | Param | Type | Default |
906
- | --- | --- | --- |
907
- | [nodeData] | <code>Object</code> | <code>{}</code> |
908
- | [nodeData.data] | <code>\*</code> | <code></code> |
909
- | [nodeData.next] | [<code>Linker</code>](#Linker) \| <code>null</code> | <code></code> |
910
- | [linkerClass] | [<code>Linker</code>](#Linker) | <code>Linker</code> |
911
-
912
- <a name="ArrayElement+classType"></a>
913
-
914
- ### linker.classType ⇒ [<code>ArrayElement</code>](#ArrayElement)
915
- Return the type of class used for Element.
916
-
917
- **Kind**: instance property of [<code>Linker</code>](#Linker)
918
- **Overrides**: [<code>classType</code>](#ArrayElement+classType)
919
- <a name="Linker.make"></a>
920
-
921
- ### Linker.make(linker, [linkerClass]) [<code>Linker</code>](#Linker)
922
- Make a new Linker from the data given if it is not already a valid Linker.
923
-
924
- **Kind**: static method of [<code>Linker</code>](#Linker)
925
- **Methodof**: Linker
926
-
927
- | Param | Type | Default |
928
- | --- | --- | --- |
929
- | linker | [<code>Linker</code>](#Linker) \| <code>\*</code> | |
930
- | [linkerClass] | [<code>Linker</code>](#Linker) | <code>Linker</code> |
931
-
932
- <a name="Linker.fromArray"></a>
933
-
934
- ### Linker.fromArray([values], [linkerClass]) <code>Object</code>
935
- Convert an array into Linker instances, return the head and tail Linkers.
936
-
937
- **Kind**: static method of [<code>Linker</code>](#Linker)
938
- **Methodof**: Linker
939
-
940
- | Param | Type | Default |
941
- | --- | --- | --- |
942
- | [values] | <code>Array</code> | <code>[]</code> |
943
- | [linkerClass] | [<code>Linker</code>](#Linker) | <code>Linker</code> |
944
-
945
- <a name="LinkedList"></a>
946
-
947
- ## LinkedList [<code>Arrayable</code>](#Arrayable)
948
- LinkedList represents a collection stored as a LinkedList with next references.
949
-
950
- **Kind**: global class
951
- **Extends**: [<code>Arrayable</code>](#Arrayable)
952
-
953
- * [LinkedList](#LinkedList) [<code>Arrayable</code>](#Arrayable)
954
- * [new LinkedList(listClass)](#new_LinkedList_new)
955
- * _instance_
956
- * [.first](#LinkedList+first) [<code>Linker</code>](#Linker)
957
- * [.last](#LinkedList+last) ⇒ [<code>Linker</code>](#Linker)
958
- * [.length](#LinkedList+length) ⇒ <code>number</code>
959
- * [.classType](#Arrayable+classType) [<code>Arrayable</code>](#Arrayable)
960
- * [.initialized](#Arrayable+initialized) <code>boolean</code>
961
- * [.innerList](#Arrayable+innerList) <code>Array</code>
962
- * [.initialize(initialList)](#LinkedList+initialize) [<code>LinkedList</code>](#LinkedList)
963
- * [.insertAfter(node, newNode)](#LinkedList+insertAfter) ⇒ [<code>LinkedList</code>](#LinkedList)
964
- * [.insertBefore(node, newNode)](#LinkedList+insertBefore) ⇒ [<code>LinkedList</code>](#LinkedList)
965
- * [.append(node, after)](#LinkedList+append) ⇒ [<code>Linker</code>](#Linker)
966
- * [.prepend(node, before)](#LinkedList+prepend) ⇒ [<code>Linker</code>](#Linker)
967
- * [.remove(node)](#LinkedList+remove) [<code>Linker</code>](#Linker)
968
- * [.item(index)](#LinkedList+item) ⇒ [<code>Linker</code>](#Linker) \| <code>null</code>
969
- * [.forEach(callback, thisArg)](#LinkedList+forEach) [<code>LinkedList</code>](#LinkedList)
970
- * _static_
971
- * [.fromArray(values, linkerClass, listClass)](#LinkedList.fromArray) ⇒ [<code>LinkedList</code>](#LinkedList)
972
-
973
- <a name="new_LinkedList_new"></a>
974
-
975
- ### new LinkedList(listClass)
976
- Create the new LinkedList instance, configure the Linker and List classes.
977
-
978
-
979
- | Param | Type |
980
- | --- | --- |
981
- | listClass | [<code>LinkedList</code>](#LinkedList) \| <code>Iterable</code> |
982
-
983
- <a name="LinkedList+first"></a>
984
-
985
- ### linkedList.first [<code>Linker</code>](#Linker)
986
- Retrieve the first Linker in the list.
987
-
988
- **Kind**: instance property of [<code>LinkedList</code>](#LinkedList)
989
- **Overrides**: [<code>first</code>](#Arrayable+first)
990
- <a name="LinkedList+last"></a>
991
-
992
- ### linkedList.last ⇒ [<code>Linker</code>](#Linker)
993
- Retrieve the last Linker in the list.
994
-
995
- **Kind**: instance property of [<code>LinkedList</code>](#LinkedList)
996
- **Overrides**: [<code>last</code>](#Arrayable+last)
997
- <a name="LinkedList+length"></a>
998
-
999
- ### linkedList.length <code>number</code>
1000
- Return the length of the list.
1001
-
1002
- **Kind**: instance property of [<code>LinkedList</code>](#LinkedList)
1003
- **Overrides**: [<code>length</code>](#Arrayable+length)
1004
- <a name="Arrayable+classType"></a>
1005
-
1006
- ### linkedList.classType [<code>Arrayable</code>](#Arrayable)
1007
- Return the type of class used for Arrayable.
1008
-
1009
- **Kind**: instance property of [<code>LinkedList</code>](#LinkedList)
1010
- **Overrides**: [<code>classType</code>](#Arrayable+classType)
1011
- <a name="Arrayable+initialized"></a>
1012
-
1013
- ### linkedList.initialized ⇒ <code>boolean</code>
1014
- Detect if the inner list has been initialized.
1015
-
1016
- **Kind**: instance property of [<code>LinkedList</code>](#LinkedList)
1017
- **Overrides**: [<code>initialized</code>](#Arrayable+initialized)
1018
- <a name="Arrayable+innerList"></a>
1019
-
1020
- ### linkedList.innerList ⇒ <code>Array</code>
1021
- Retrieve a copy of the innerList used.
1022
-
1023
- **Kind**: instance property of [<code>LinkedList</code>](#LinkedList)
1024
- **Overrides**: [<code>innerList</code>](#Arrayable+innerList)
1025
- <a name="LinkedList+initialize"></a>
1026
-
1027
- ### linkedList.initialize(initialList) ⇒ [<code>LinkedList</code>](#LinkedList)
1028
- Initialize the inner list, should only run once.
1029
-
1030
- **Kind**: instance method of [<code>LinkedList</code>](#LinkedList)
1031
- **Overrides**: [<code>initialize</code>](#Arrayable+initialize)
1032
-
1033
- | Param | Type |
1034
- | --- | --- |
1035
- | initialList | [<code>Linker</code>](#Linker) \| <code>Array</code> |
1036
-
1037
- <a name="LinkedList+insertAfter"></a>
1038
-
1039
- ### linkedList.insertAfter(node, newNode) ⇒ [<code>LinkedList</code>](#LinkedList)
1040
- Insert a new node (or data) after a node.
1041
-
1042
- **Kind**: instance method of [<code>LinkedList</code>](#LinkedList)
1043
- **Overrides**: [<code>insertAfter</code>](#Arrayable+insertAfter)
1044
-
1045
- | Param | Type |
1046
- | --- | --- |
1047
- | node | [<code>Linker</code>](#Linker) \| <code>\*</code> |
1048
- | newNode | [<code>Linker</code>](#Linker) \| <code>\*</code> |
1049
-
1050
- <a name="LinkedList+insertBefore"></a>
1051
-
1052
- ### linkedList.insertBefore(node, newNode) ⇒ [<code>LinkedList</code>](#LinkedList)
1053
- Insert a new node (or data) before a node.
1054
-
1055
- **Kind**: instance method of [<code>LinkedList</code>](#LinkedList)
1056
- **Overrides**: [<code>insertBefore</code>](#Arrayable+insertBefore)
1057
-
1058
- | Param | Type |
1059
- | --- | --- |
1060
- | node | [<code>Linker</code>](#Linker) \| <code>\*</code> |
1061
- | newNode | [<code>Linker</code>](#Linker) \| <code>\*</code> |
1062
-
1063
- <a name="LinkedList+append"></a>
1064
-
1065
- ### linkedList.append(node, after) [<code>Linker</code>](#Linker)
1066
- Add a node (or data) after the given (or last) node in the list.
1067
-
1068
- **Kind**: instance method of [<code>LinkedList</code>](#LinkedList)
1069
- **Overrides**: [<code>append</code>](#Arrayable+append)
1070
-
1071
- | Param | Type |
1072
- | --- | --- |
1073
- | node | [<code>Linker</code>](#Linker) \| <code>\*</code> |
1074
- | after | [<code>Linker</code>](#Linker) |
1075
-
1076
- <a name="LinkedList+prepend"></a>
1077
-
1078
- ### linkedList.prepend(node, before) ⇒ [<code>Linker</code>](#Linker)
1079
- Add a node (or data) before the given (or first) node in the list.
1080
-
1081
- **Kind**: instance method of [<code>LinkedList</code>](#LinkedList)
1082
- **Overrides**: [<code>prepend</code>](#Arrayable+prepend)
1083
-
1084
- | Param | Type |
1085
- | --- | --- |
1086
- | node | [<code>Linker</code>](#Linker) \| <code>\*</code> |
1087
- | before | [<code>Linker</code>](#Linker) |
1088
-
1089
- <a name="LinkedList+remove"></a>
1090
-
1091
- ### linkedList.remove(node) [<code>Linker</code>](#Linker)
1092
- Remove a linker from this linked list.
1093
-
1094
- **Kind**: instance method of [<code>LinkedList</code>](#LinkedList)
1095
- **Overrides**: [<code>remove</code>](#Arrayable+remove)
1096
-
1097
- | Param | Type |
1098
- | --- | --- |
1099
- | node | [<code>Linker</code>](#Linker) |
1100
-
1101
- <a name="LinkedList+item"></a>
1102
-
1103
- ### linkedList.item(index) ⇒ [<code>Linker</code>](#Linker) \| <code>null</code>
1104
- Retrieve a Linker item from this list by numeric index, otherwise return null.
1105
-
1106
- **Kind**: instance method of [<code>LinkedList</code>](#LinkedList)
1107
- **Overrides**: [<code>item</code>](#Arrayable+item)
1108
-
1109
- | Param | Type |
1110
- | --- | --- |
1111
- | index | <code>number</code> |
1112
-
1113
- <a name="LinkedList+forEach"></a>
1114
-
1115
- ### linkedList.forEach(callback, thisArg) [<code>LinkedList</code>](#LinkedList)
1116
- Be able to run forEach on this LinkedList to iterate over the linkers.
1117
-
1118
- **Kind**: instance method of [<code>LinkedList</code>](#LinkedList)
1119
- **Overrides**: [<code>forEach</code>](#Arrayable+forEach)
1120
-
1121
- | Param | Type |
1122
- | --- | --- |
1123
- | callback | [<code>forEachCallback</code>](#forEachCallback) |
1124
- | thisArg | [<code>LinkedList</code>](#LinkedList) \| [<code>Arrayable</code>](#Arrayable) |
1125
-
1126
- <a name="LinkedList.fromArray"></a>
1127
-
1128
- ### LinkedList.fromArray(values, linkerClass, listClass) [<code>LinkedList</code>](#LinkedList)
1129
- Convert an array to a LinkedList.
1130
-
1131
- **Kind**: static method of [<code>LinkedList</code>](#LinkedList)
1132
- **Methodof**: LinkedList
1133
-
1134
- | Param | Type |
1135
- | --- | --- |
1136
- | values | <code>Array</code> |
1137
- | linkerClass | [<code>Linker</code>](#Linker) |
1138
- | listClass | [<code>LinkedList</code>](#LinkedList) \| <code>Iterable</code> |
1139
-
1140
- <a name="DoublyLinkedList"></a>
1141
-
1142
- ## DoublyLinkedList ⇐ [<code>LinkedList</code>](#LinkedList)
1143
- DoublyLinkedList represents a collection stored as a LinkedList with prev and next references.
1144
-
1145
- **Kind**: global class
1146
- **Extends**: [<code>LinkedList</code>](#LinkedList)
1147
-
1148
- * [DoublyLinkedList](#DoublyLinkedList) [<code>LinkedList</code>](#LinkedList)
1149
- * [new DoublyLinkedList([listClass])](#new_DoublyLinkedList_new)
1150
- * _instance_
1151
- * [.first](#DoublyLinkedList+first) ⇒ [<code>DoubleLinker</code>](#DoubleLinker)
1152
- * [.last](#DoublyLinkedList+last) ⇒ [<code>DoubleLinker</code>](#DoubleLinker)
1153
- * [.length](#DoublyLinkedList+length) <code>number</code>
1154
- * [.classType](#Arrayable+classType) ⇒ [<code>Arrayable</code>](#Arrayable)
1155
- * [.initialized](#Arrayable+initialized) <code>boolean</code>
1156
- * [.innerList](#Arrayable+innerList) ⇒ <code>Array</code>
1157
- * [.insertAfter(node, newNode)](#DoublyLinkedList+insertAfter) ⇒ [<code>DoublyLinkedList</code>](#DoublyLinkedList)
1158
- * [.insertBefore(node, newNode)](#DoublyLinkedList+insertBefore) ⇒ [<code>DoublyLinkedList</code>](#DoublyLinkedList)
1159
- * [.remove(node)](#DoublyLinkedList+remove) [<code>DoubleLinker</code>](#DoubleLinker)
1160
- * [.reset()](#DoublyLinkedList+reset) ⇒ [<code>DoubleLinker</code>](#DoubleLinker)
1161
- * [.item(index)](#DoublyLinkedList+item) [<code>DoubleLinker</code>](#DoubleLinker) \| <code>null</code>
1162
- * [.forEach(callback, thisArg)](#DoublyLinkedList+forEach)
1163
- * [.initialize(initialList)](#LinkedList+initialize) ⇒ [<code>LinkedList</code>](#LinkedList)
1164
- * [.append(node, after)](#LinkedList+append) [<code>Linker</code>](#Linker)
1165
- * [.prepend(node, before)](#LinkedList+prepend) [<code>Linker</code>](#Linker)
1166
- * _static_
1167
- * [.fromArray([values], [linkerClass], [listClass])](#DoublyLinkedList.fromArray) ⇒ [<code>DoublyLinkedList</code>](#DoublyLinkedList)
1168
-
1169
- <a name="new_DoublyLinkedList_new"></a>
1170
-
1171
- ### new DoublyLinkedList([listClass])
1172
- Create the new DoublyLinkedList instance, configure the Linker and List classes.
1173
-
1174
-
1175
- | Param | Type | Default |
1176
- | --- | --- | --- |
1177
- | [listClass] | [<code>DoublyLinkedList</code>](#DoublyLinkedList) \| <code>Iterable</code> | <code>DoublyLinkedList</code> |
1178
-
1179
- <a name="DoublyLinkedList+first"></a>
1180
-
1181
- ### doublyLinkedList.first ⇒ [<code>DoubleLinker</code>](#DoubleLinker)
1182
- Retrieve the first DoubleLinker in the list.
1183
-
1184
- **Kind**: instance property of [<code>DoublyLinkedList</code>](#DoublyLinkedList)
1185
- **Overrides**: [<code>first</code>](#LinkedList+first)
1186
- <a name="DoublyLinkedList+last"></a>
1187
-
1188
- ### doublyLinkedList.last [<code>DoubleLinker</code>](#DoubleLinker)
1189
- Retrieve the last DoubleLinker in the list.
1190
-
1191
- **Kind**: instance property of [<code>DoublyLinkedList</code>](#DoublyLinkedList)
1192
- **Overrides**: [<code>last</code>](#LinkedList+last)
1193
- <a name="DoublyLinkedList+length"></a>
1194
-
1195
- ### doublyLinkedList.length ⇒ <code>number</code>
1196
- Return the length of the list.
1197
-
1198
- **Kind**: instance property of [<code>DoublyLinkedList</code>](#DoublyLinkedList)
1199
- **Overrides**: [<code>length</code>](#LinkedList+length)
1200
- <a name="Arrayable+classType"></a>
1201
-
1202
- ### doublyLinkedList.classType [<code>Arrayable</code>](#Arrayable)
1203
- Return the type of class used for Arrayable.
1204
-
1205
- **Kind**: instance property of [<code>DoublyLinkedList</code>](#DoublyLinkedList)
1206
- **Overrides**: [<code>classType</code>](#Arrayable+classType)
1207
- <a name="Arrayable+initialized"></a>
1208
-
1209
- ### doublyLinkedList.initialized ⇒ <code>boolean</code>
1210
- Detect if the inner list has been initialized.
1211
-
1212
- **Kind**: instance property of [<code>DoublyLinkedList</code>](#DoublyLinkedList)
1213
- **Overrides**: [<code>initialized</code>](#Arrayable+initialized)
1214
- <a name="Arrayable+innerList"></a>
1215
-
1216
- ### doublyLinkedList.innerList <code>Array</code>
1217
- Retrieve a copy of the innerList used.
1218
-
1219
- **Kind**: instance property of [<code>DoublyLinkedList</code>](#DoublyLinkedList)
1220
- **Overrides**: [<code>innerList</code>](#Arrayable+innerList)
1221
- <a name="DoublyLinkedList+insertAfter"></a>
1222
-
1223
- ### doublyLinkedList.insertAfter(node, newNode) [<code>DoublyLinkedList</code>](#DoublyLinkedList)
1224
- Insert a new node (or data) after a node.
1225
-
1226
- **Kind**: instance method of [<code>DoublyLinkedList</code>](#DoublyLinkedList)
1227
- **Overrides**: [<code>insertAfter</code>](#LinkedList+insertAfter)
1228
-
1229
- | Param | Type |
1230
- | --- | --- |
1231
- | node | [<code>DoubleLinker</code>](#DoubleLinker) \| <code>\*</code> |
1232
- | newNode | [<code>DoubleLinker</code>](#DoubleLinker) \| <code>\*</code> |
1233
-
1234
- <a name="DoublyLinkedList+insertBefore"></a>
1235
-
1236
- ### doublyLinkedList.insertBefore(node, newNode) ⇒ [<code>DoublyLinkedList</code>](#DoublyLinkedList)
1237
- Insert a new node (or data) before a node.
1238
-
1239
- **Kind**: instance method of [<code>DoublyLinkedList</code>](#DoublyLinkedList)
1240
- **Overrides**: [<code>insertBefore</code>](#LinkedList+insertBefore)
1241
-
1242
- | Param | Type |
1243
- | --- | --- |
1244
- | node | [<code>DoubleLinker</code>](#DoubleLinker) \| <code>\*</code> |
1245
- | newNode | [<code>DoubleLinker</code>](#DoubleLinker) \| <code>\*</code> |
1246
-
1247
- <a name="DoublyLinkedList+remove"></a>
1248
-
1249
- ### doublyLinkedList.remove(node) ⇒ [<code>DoubleLinker</code>](#DoubleLinker)
1250
- Remove a linker from this linked list.
1251
-
1252
- **Kind**: instance method of [<code>DoublyLinkedList</code>](#DoublyLinkedList)
1253
- **Overrides**: [<code>remove</code>](#LinkedList+remove)
1254
-
1255
- | Param | Type |
1256
- | --- | --- |
1257
- | node | [<code>DoubleLinker</code>](#DoubleLinker) |
1258
-
1259
- <a name="DoublyLinkedList+reset"></a>
1260
-
1261
- ### doublyLinkedList.reset() ⇒ [<code>DoubleLinker</code>](#DoubleLinker)
1262
- Refresh all references and return head reference.
1263
-
1264
- **Kind**: instance method of [<code>DoublyLinkedList</code>](#DoublyLinkedList)
1265
- <a name="DoublyLinkedList+item"></a>
1266
-
1267
- ### doublyLinkedList.item(index) ⇒ [<code>DoubleLinker</code>](#DoubleLinker) \| <code>null</code>
1268
- Retrieve a DoubleLinker item from this list by numeric index, otherwise return null.
1269
-
1270
- **Kind**: instance method of [<code>DoublyLinkedList</code>](#DoublyLinkedList)
1271
- **Overrides**: [<code>item</code>](#LinkedList+item)
1272
-
1273
- | Param | Type |
1274
- | --- | --- |
1275
- | index | <code>number</code> |
1276
-
1277
- <a name="DoublyLinkedList+forEach"></a>
1278
-
1279
- ### doublyLinkedList.forEach(callback, thisArg)
1280
- Be able to run forEach on this DoublyLinkedList ot iterate over the DoubleLinker Items.
1281
-
1282
- **Kind**: instance method of [<code>DoublyLinkedList</code>](#DoublyLinkedList)
1283
- **Overrides**: [<code>forEach</code>](#LinkedList+forEach)
1284
-
1285
- | Param | Type |
1286
- | --- | --- |
1287
- | callback | [<code>forEachCallback</code>](#forEachCallback) |
1288
- | thisArg | [<code>DoublyLinkedList</code>](#DoublyLinkedList) |
1289
-
1290
- <a name="LinkedList+initialize"></a>
1291
-
1292
- ### doublyLinkedList.initialize(initialList) ⇒ [<code>LinkedList</code>](#LinkedList)
1293
- Initialize the inner list, should only run once.
1294
-
1295
- **Kind**: instance method of [<code>DoublyLinkedList</code>](#DoublyLinkedList)
1296
- **Overrides**: [<code>initialize</code>](#LinkedList+initialize)
1297
-
1298
- | Param | Type |
1299
- | --- | --- |
1300
- | initialList | [<code>Linker</code>](#Linker) \| <code>Array</code> |
1301
-
1302
- <a name="LinkedList+append"></a>
1303
-
1304
- ### doublyLinkedList.append(node, after) ⇒ [<code>Linker</code>](#Linker)
1305
- Add a node (or data) after the given (or last) node in the list.
1306
-
1307
- **Kind**: instance method of [<code>DoublyLinkedList</code>](#DoublyLinkedList)
1308
- **Overrides**: [<code>append</code>](#LinkedList+append)
1309
-
1310
- | Param | Type |
1311
- | --- | --- |
1312
- | node | [<code>Linker</code>](#Linker) \| <code>\*</code> |
1313
- | after | [<code>Linker</code>](#Linker) |
1314
-
1315
- <a name="LinkedList+prepend"></a>
1316
-
1317
- ### doublyLinkedList.prepend(node, before) [<code>Linker</code>](#Linker)
1318
- Add a node (or data) before the given (or first) node in the list.
1319
-
1320
- **Kind**: instance method of [<code>DoublyLinkedList</code>](#DoublyLinkedList)
1321
- **Overrides**: [<code>prepend</code>](#LinkedList+prepend)
1322
-
1323
- | Param | Type |
1324
- | --- | --- |
1325
- | node | [<code>Linker</code>](#Linker) \| <code>\*</code> |
1326
- | before | [<code>Linker</code>](#Linker) |
1327
-
1328
- <a name="DoublyLinkedList.fromArray"></a>
1329
-
1330
- ### DoublyLinkedList.fromArray([values], [linkerClass], [listClass]) ⇒ [<code>DoublyLinkedList</code>](#DoublyLinkedList)
1331
- Convert an array into a DoublyLinkedList instance, return the new instance.
1332
-
1333
- **Kind**: static method of [<code>DoublyLinkedList</code>](#DoublyLinkedList)
1334
- **Methodof**: DoublyLinkedList
1335
-
1336
- | Param | Type | Default |
1337
- | --- | --- | --- |
1338
- | [values] | <code>Array</code> | <code>[]</code> |
1339
- | [linkerClass] | [<code>DoubleLinker</code>](#DoubleLinker) | <code>DoubleLinker</code> |
1340
- | [listClass] | [<code>DoublyLinkedList</code>](#DoublyLinkedList) | <code>DoublyLinkedList</code> |
1341
-
1342
- <a name="DoubleLinker"></a>
1343
-
1344
- ## DoubleLinker ⇐ [<code>Linker</code>](#Linker)
1345
- DoubleLinker represents a node in a DoublyLinkedList.
1346
-
1347
- **Kind**: global class
1348
- **Extends**: [<code>Linker</code>](#Linker)
1349
-
1350
- * [DoubleLinker](#DoubleLinker) [<code>Linker</code>](#Linker)
1351
- * [new DoubleLinker([nodeData], [linkerClass])](#new_DoubleLinker_new)
1352
- * _instance_
1353
- * [.classType](#ArrayElement+classType) [<code>ArrayElement</code>](#ArrayElement)
1354
- * _static_
1355
- * [.make(linker, [linkerClass])](#DoubleLinker.make) [<code>Linker</code>](#Linker)
1356
- * [.fromArray([values], [linkerClass])](#DoubleLinker.fromArray) ⇒ <code>Object</code>
1357
-
1358
- <a name="new_DoubleLinker_new"></a>
1359
-
1360
- ### new DoubleLinker([nodeData], [linkerClass])
1361
- Create the new DoubleLinker instance, provide the data and optionally configure the type of Linker.
1362
-
1363
-
1364
- | Param | Type | Default |
1365
- | --- | --- | --- |
1366
- | [nodeData] | <code>Object</code> | <code>{}</code> |
1367
- | [nodeData.data] | <code>\*</code> | <code></code> |
1368
- | [nodeData.prev] | [<code>DoubleLinker</code>](#DoubleLinker) \| <code>null</code> | <code></code> |
1369
- | [nodeData.next] | [<code>DoubleLinker</code>](#DoubleLinker) \| <code>null</code> | <code></code> |
1370
- | [linkerClass] | [<code>DoubleLinker</code>](#DoubleLinker) | <code>DoubleLinker</code> |
1371
-
1372
- <a name="ArrayElement+classType"></a>
1373
-
1374
- ### doubleLinker.classType ⇒ [<code>ArrayElement</code>](#ArrayElement)
1375
- Return the type of class used for Element.
1376
-
1377
- **Kind**: instance property of [<code>DoubleLinker</code>](#DoubleLinker)
1378
- **Overrides**: [<code>classType</code>](#ArrayElement+classType)
1379
- <a name="DoubleLinker.make"></a>
1380
-
1381
- ### DoubleLinker.make(linker, [linkerClass]) ⇒ [<code>Linker</code>](#Linker)
1382
- Make a new DoubleLinker from the data given if it is not already a valid Linker.
1383
-
1384
- **Kind**: static method of [<code>DoubleLinker</code>](#DoubleLinker)
1385
- **Methodof**: DoubleLinker
1386
-
1387
- | Param | Type | Default |
1388
- | --- | --- | --- |
1389
- | linker | [<code>DoubleLinker</code>](#DoubleLinker) \| <code>\*</code> | |
1390
- | [linkerClass] | [<code>DoubleLinker</code>](#DoubleLinker) | <code>DoubleLinker</code> |
1391
-
1392
- <a name="DoubleLinker.fromArray"></a>
1393
-
1394
- ### DoubleLinker.fromArray([values], [linkerClass]) <code>Object</code>
1395
- Convert an array into DoubleLinker instances, return the head and tail DoubleLinkers.
1396
-
1397
- **Kind**: static method of [<code>DoubleLinker</code>](#DoubleLinker)
1398
- **Methodof**: DoubleLinker
1399
-
1400
- | Param | Type | Default |
1401
- | --- | --- | --- |
1402
- | [values] | <code>Array</code> | <code>[]</code> |
1403
- | [linkerClass] | [<code>DoubleLinker</code>](#DoubleLinker) | <code>DoubleLinker</code> |
1404
-
1405
- <a name="Arrayable"></a>
1406
-
1407
- ## Arrayable
1408
- DoublyLinkedList represents a collection stored as a LinkedList with prev and next references.
1409
-
1410
- **Kind**: global class
1411
-
1412
- * [Arrayable](#Arrayable)
1413
- * [new Arrayable(classType)](#new_Arrayable_new)
1414
- * _instance_
1415
- * [.classType](#Arrayable+classType) ⇒ [<code>Arrayable</code>](#Arrayable)
1416
- * [.initialized](#Arrayable+initialized) ⇒ <code>boolean</code>
1417
- * [.innerList](#Arrayable+innerList) ⇒ <code>Array</code>
1418
- * [.first](#Arrayable+first) ⇒ [<code>ArrayElement</code>](#ArrayElement)
1419
- * [.last](#Arrayable+last) [<code>ArrayElement</code>](#ArrayElement)
1420
- * [.length](#Arrayable+length) ⇒ <code>number</code>
1421
- * [.initialize(initialList)](#Arrayable+initialize) ⇒ [<code>Arrayable</code>](#Arrayable)
1422
- * [.insertAfter(node, newNode)](#Arrayable+insertAfter) [<code>Arrayable</code>](#Arrayable)
1423
- * [.insertBefore(node, newNode)](#Arrayable+insertBefore) [<code>Arrayable</code>](#Arrayable)
1424
- * [.append(node, after)](#Arrayable+append) [<code>Arrayable</code>](#Arrayable)
1425
- * [.prepend(node, before)](#Arrayable+prepend) ⇒ [<code>Arrayable</code>](#Arrayable)
1426
- * [.remove(node)](#Arrayable+remove) ⇒ [<code>ArrayElement</code>](#ArrayElement)
1427
- * [.item(index)](#Arrayable+item) ⇒ [<code>ArrayElement</code>](#ArrayElement) \| <code>null</code>
1428
- * [.forEach(callback, thisArg)](#Arrayable+forEach) ⇒ [<code>Arrayable</code>](#Arrayable)
1429
- * _static_
1430
- * [.fromArray(values, elementClass, classType)](#Arrayable.fromArray) ⇒ [<code>Arrayable</code>](#Arrayable)
1431
-
1432
- <a name="new_Arrayable_new"></a>
1433
-
1434
- ### new Arrayable(classType)
1435
- Create the new Arrayable instance, configure the Arrayable class.
1436
-
1437
-
1438
- | Param | Type |
1439
- | --- | --- |
1440
- | classType | [<code>Arrayable</code>](#Arrayable) \| <code>Iterable</code> |
1441
-
1442
- <a name="Arrayable+classType"></a>
1443
-
1444
- ### arrayable.classType ⇒ [<code>Arrayable</code>](#Arrayable)
1445
- Return the type of class used for Arrayable.
1446
-
1447
- **Kind**: instance property of [<code>Arrayable</code>](#Arrayable)
1448
- <a name="Arrayable+initialized"></a>
1449
-
1450
- ### arrayable.initialized ⇒ <code>boolean</code>
1451
- Detect if the inner list has been initialized.
1452
-
1453
- **Kind**: instance property of [<code>Arrayable</code>](#Arrayable)
1454
- <a name="Arrayable+innerList"></a>
1455
-
1456
- ### arrayable.innerList ⇒ <code>Array</code>
1457
- Retrieve a copy of the innerList used.
1458
-
1459
- **Kind**: instance property of [<code>Arrayable</code>](#Arrayable)
1460
- <a name="Arrayable+first"></a>
1461
-
1462
- ### arrayable.first ⇒ [<code>ArrayElement</code>](#ArrayElement)
1463
- Retrieve the first Element from the Arrayable
1464
-
1465
- **Kind**: instance property of [<code>Arrayable</code>](#Arrayable)
1466
- <a name="Arrayable+last"></a>
1467
-
1468
- ### arrayable.last [<code>ArrayElement</code>](#ArrayElement)
1469
- Retrieve the last Element from the Arrayable
1470
-
1471
- **Kind**: instance property of [<code>Arrayable</code>](#Arrayable)
1472
- <a name="Arrayable+length"></a>
1473
-
1474
- ### arrayable.length ⇒ <code>number</code>
1475
- Return the length of the list.
1476
-
1477
- **Kind**: instance property of [<code>Arrayable</code>](#Arrayable)
1478
- <a name="Arrayable+initialize"></a>
1479
-
1480
- ### arrayable.initialize(initialList) ⇒ [<code>Arrayable</code>](#Arrayable)
1481
- Initialize the inner list, should only run once.
1482
-
1483
- **Kind**: instance method of [<code>Arrayable</code>](#Arrayable)
1484
-
1485
- | Param | Type |
1486
- | --- | --- |
1487
- | initialList | [<code>ArrayElement</code>](#ArrayElement) \| <code>Array</code> |
1488
-
1489
- <a name="Arrayable+insertAfter"></a>
1490
-
1491
- ### arrayable.insertAfter(node, newNode) ⇒ [<code>Arrayable</code>](#Arrayable)
1492
- Insert a new node (or data) after a node.
1493
-
1494
- **Kind**: instance method of [<code>Arrayable</code>](#Arrayable)
1495
-
1496
- | Param | Type |
1497
- | --- | --- |
1498
- | node | [<code>ArrayElement</code>](#ArrayElement) \| <code>\*</code> |
1499
- | newNode | [<code>ArrayElement</code>](#ArrayElement) \| <code>\*</code> |
1500
-
1501
- <a name="Arrayable+insertBefore"></a>
1502
-
1503
- ### arrayable.insertBefore(node, newNode) ⇒ [<code>Arrayable</code>](#Arrayable)
1504
- Insert a new node (or data) before a node.
1505
-
1506
- **Kind**: instance method of [<code>Arrayable</code>](#Arrayable)
1507
-
1508
- | Param | Type |
1509
- | --- | --- |
1510
- | node | [<code>ArrayElement</code>](#ArrayElement) \| <code>\*</code> |
1511
- | newNode | [<code>ArrayElement</code>](#ArrayElement) \| <code>\*</code> |
1512
-
1513
- <a name="Arrayable+append"></a>
1514
-
1515
- ### arrayable.append(node, after) ⇒ [<code>Arrayable</code>](#Arrayable)
1516
- Add a node (or data) after the given (or last) node in the list.
1517
-
1518
- **Kind**: instance method of [<code>Arrayable</code>](#Arrayable)
1519
-
1520
- | Param | Type |
1521
- | --- | --- |
1522
- | node | [<code>ArrayElement</code>](#ArrayElement) \| <code>\*</code> |
1523
- | after | [<code>ArrayElement</code>](#ArrayElement) |
1524
-
1525
- <a name="Arrayable+prepend"></a>
1526
-
1527
- ### arrayable.prepend(node, before) ⇒ [<code>Arrayable</code>](#Arrayable)
1528
- Add a node (or data) before the given (or first) node in the list.
1529
-
1530
- **Kind**: instance method of [<code>Arrayable</code>](#Arrayable)
1531
-
1532
- | Param | Type |
1533
- | --- | --- |
1534
- | node | [<code>ArrayElement</code>](#ArrayElement) \| <code>\*</code> |
1535
- | before | [<code>ArrayElement</code>](#ArrayElement) |
1536
-
1537
- <a name="Arrayable+remove"></a>
1538
-
1539
- ### arrayable.remove(node) ⇒ [<code>ArrayElement</code>](#ArrayElement)
1540
- Remove an element from this arrayable.
1541
-
1542
- **Kind**: instance method of [<code>Arrayable</code>](#Arrayable)
1543
-
1544
- | Param | Type |
1545
- | --- | --- |
1546
- | node | [<code>ArrayElement</code>](#ArrayElement) |
1547
-
1548
- <a name="Arrayable+item"></a>
1549
-
1550
- ### arrayable.item(index) ⇒ [<code>ArrayElement</code>](#ArrayElement) \| <code>null</code>
1551
- Retrieve a DoubleLinker item from this list by numeric index, otherwise return null.
1552
-
1553
- **Kind**: instance method of [<code>Arrayable</code>](#Arrayable)
1554
-
1555
- | Param | Type |
1556
- | --- | --- |
1557
- | index | <code>number</code> |
1558
-
1559
- <a name="Arrayable+forEach"></a>
1560
-
1561
- ### arrayable.forEach(callback, thisArg) ⇒ [<code>Arrayable</code>](#Arrayable)
1562
- Be able to run forEach on this Arrayable to iterate over the elements.
1563
-
1564
- **Kind**: instance method of [<code>Arrayable</code>](#Arrayable)
1565
-
1566
- | Param | Type |
1567
- | --- | --- |
1568
- | callback | [<code>forEachCallback</code>](#forEachCallback) |
1569
- | thisArg | [<code>Arrayable</code>](#Arrayable) |
1570
-
1571
- <a name="Arrayable.fromArray"></a>
1572
-
1573
- ### Arrayable.fromArray(values, elementClass, classType) ⇒ [<code>Arrayable</code>](#Arrayable)
1574
- Convert an array to an Arrayable.
1575
-
1576
- **Kind**: static method of [<code>Arrayable</code>](#Arrayable)
1577
- **Methodof**: Arrayable
1578
-
1579
- | Param | Type |
1580
- | --- | --- |
1581
- | values | <code>Array</code> |
1582
- | elementClass | [<code>ArrayElement</code>](#ArrayElement) |
1583
- | classType | [<code>Arrayable</code>](#Arrayable) \| <code>Iterable</code> |
1584
-
1585
- <a name="ArrayElement"></a>
1586
-
1587
- ## ArrayElement
1588
- Element represents a node in an Arrayable.
1589
-
1590
- **Kind**: global class
1591
-
1592
- * [ArrayElement](#ArrayElement)
1593
- * [new ArrayElement([data], [elementClass])](#new_ArrayElement_new)
1594
- * _instance_
1595
- * [.classType](#ArrayElement+classType) ⇒ [<code>ArrayElement</code>](#ArrayElement)
1596
- * _static_
1597
- * [.make(element, [elementClass])](#ArrayElement.make) ⇒ [<code>ArrayElement</code>](#ArrayElement)
1598
- * [.fromArray([values], [elementClass])](#ArrayElement.fromArray) ⇒ <code>Object</code>
1599
-
1600
- <a name="new_ArrayElement_new"></a>
1601
-
1602
- ### new ArrayElement([data], [elementClass])
1603
- Create the new Element instance, provide the data and optionally configure the type of Element.
1604
-
1605
-
1606
- | Param | Type | Default |
1607
- | --- | --- | --- |
1608
- | [data] | <code>\*</code> | <code></code> |
1609
- | [elementClass] | [<code>ArrayElement</code>](#ArrayElement) | <code>Element</code> |
1610
-
1611
- <a name="ArrayElement+classType"></a>
1612
-
1613
- ### arrayElement.classType ⇒ [<code>ArrayElement</code>](#ArrayElement)
1614
- Return the type of class used for Element.
1615
-
1616
- **Kind**: instance property of [<code>ArrayElement</code>](#ArrayElement)
1617
- <a name="ArrayElement.make"></a>
1618
-
1619
- ### ArrayElement.make(element, [elementClass]) ⇒ [<code>ArrayElement</code>](#ArrayElement)
1620
- Make a new Element from the data given if it is not already a valid Element.
1621
-
1622
- **Kind**: static method of [<code>ArrayElement</code>](#ArrayElement)
1623
- **Methodof**: ArrayElement
1624
-
1625
- | Param | Type | Default |
1626
- | --- | --- | --- |
1627
- | element | [<code>ArrayElement</code>](#ArrayElement) \| <code>\*</code> | |
1628
- | [elementClass] | [<code>ArrayElement</code>](#ArrayElement) | <code>Element</code> |
1629
-
1630
- <a name="ArrayElement.fromArray"></a>
1631
-
1632
- ### ArrayElement.fromArray([values], [elementClass]) ⇒ <code>Object</code>
1633
- Convert an array into Element instances, return the head and tail Elements.
1634
-
1635
- **Kind**: static method of [<code>ArrayElement</code>](#ArrayElement)
1636
- **Methodof**: ArrayElement
1637
-
1638
- | Param | Type | Default |
1639
- | --- | --- | --- |
1640
- | [values] | <code>Array</code> | <code>[]</code> |
1641
- | [elementClass] | [<code>ArrayElement</code>](#ArrayElement) | <code>Element</code> |
1642
-
1643
- <a name="recipes"></a>
1644
-
1645
- ## recipes : <code>Object</code>
1646
- List of class declarations that can be used to specify attributes for a style of object / class.
1647
-
1648
- **Kind**: global constant
1649
- <a name="completeResponse"></a>
1650
-
1651
- ## completeResponse : <code>Object</code>
1652
- Return results of the task.
1653
-
1654
- **Kind**: global typedef
1655
- **Properties**
1656
-
1657
- | Name | Type |
1658
- | --- | --- |
1659
- | success | <code>\*</code> |
1660
- | error | <code>\*</code> |
1661
- | context | <code>\*</code> |
1662
-
1663
- <a name="forEachCallback"></a>
1664
-
1665
- ## forEachCallback ⇒
1666
- Run this function for each element in this arrayable.
1667
-
1668
- **Kind**: global typedef
1669
- **Returns**: void
1670
-
1671
- | Param | Type |
1672
- | --- | --- |
1673
- | element | [<code>ArrayElement</code>](#ArrayElement) |
1674
- | index | <code>number</code> |
1675
- | thisArg | [<code>Arrayable</code>](#Arrayable) |
1676
-
5
+ ## Modules
6
+
7
+ <dl>
8
+ <dt><a href="#module_collect-your-stuff">collect-your-stuff</a></dt>
9
+ <dd><p>All of the collections available.</p>
10
+ </dd>
11
+ </dl>
12
+
13
+ ## Classes
14
+
15
+ <dl>
16
+ <dt><a href="#TreeLinkerIterator">TreeLinkerIterator</a></dt>
17
+ <dd><p>Class TreeLinkerIterator returns the next value taking a left-first approach down a tree.</p>
18
+ </dd>
19
+ <dt><a href="#Runnable">Runnable</a></dt>
20
+ <dd><p>Identify a class that can be run.</p>
21
+ </dd>
22
+ <dt><a href="#LinkerIterator">LinkerIterator</a></dt>
23
+ <dd><p>Class LinkerIterator returns the next value when using linkers of linked type lists.</p>
24
+ </dd>
25
+ <dt><a href="#DoubleLinkerIterator">DoubleLinkerIterator</a></dt>
26
+ <dd><p>Class DoubleLinkerIterator returns the next value when using linkers of linked type lists.</p>
27
+ </dd>
28
+ <dt><a href="#ArrayIterator">ArrayIterator</a></dt>
29
+ <dd><p>Class ArrayIterator returns the next value when using elements of array type list.</p>
30
+ </dd>
31
+ <dt><a href="#Stackable">Stackable</a> ⇐ <code><a href="#Linker">Linker</a></code></dt>
32
+ <dd><p>Stackable represents a runnable entry in stack.</p>
33
+ </dd>
34
+ <dt><a href="#Stack">Stack</a></dt>
35
+ <dd><p>Store a collection of items which can only be inserted and removed from the top.</p>
36
+ </dd>
37
+ <dt><a href="#Queueable">Queueable</a> ⇐ <code><a href="#Linker">Linker</a></code></dt>
38
+ <dd><p>Queueable represents a runnable entry in a queue.</p>
39
+ </dd>
40
+ <dt><a href="#Queue">Queue</a></dt>
41
+ <dd><p>Maintain a series of queued items.</p>
42
+ </dd>
43
+ <dt><a href="#TreeLinker">TreeLinker</a> ⇐ <code><a href="#DoubleLinker">DoubleLinker</a></code></dt>
44
+ <dd><p>TreeLinker represents a node in a LinkedTreeList having a parent (or root) and child nodes.</p>
45
+ </dd>
46
+ <dt><a href="#LinkedTreeList">LinkedTreeList</a> ⇐ <code><a href="#DoublyLinkedList">DoublyLinkedList</a></code></dt>
47
+ <dd><p>LinkedTreeList represents a collection stored with a root and spreading in branching (tree) formation.</p>
48
+ </dd>
49
+ <dt><a href="#Linker">Linker</a> ⇐ <code><a href="#ArrayElement">ArrayElement</a></code></dt>
50
+ <dd><p>Linker represents a node in a LinkedList.</p>
51
+ </dd>
52
+ <dt><a href="#LinkedList">LinkedList</a> ⇐ <code><a href="#Arrayable">Arrayable</a></code></dt>
53
+ <dd><p>LinkedList represents a collection stored as a LinkedList with next references.</p>
54
+ </dd>
55
+ <dt><a href="#DoublyLinkedList">DoublyLinkedList</a> ⇐ <code><a href="#LinkedList">LinkedList</a></code></dt>
56
+ <dd><p>DoublyLinkedList represents a collection stored as a LinkedList with prev and next references.</p>
57
+ </dd>
58
+ <dt><a href="#DoubleLinker">DoubleLinker</a> ⇐ <code><a href="#Linker">Linker</a></code></dt>
59
+ <dd><p>DoubleLinker represents a node in a DoublyLinkedList which is chained by next and prev.</p>
60
+ </dd>
61
+ <dt><a href="#Arrayable">Arrayable</a></dt>
62
+ <dd><p>Arrayable represents a collection stored as an array.</p>
63
+ </dd>
64
+ <dt><a href="#ArrayElement">ArrayElement</a></dt>
65
+ <dd><p>Element represents a node in an Arrayable.</p>
66
+ </dd>
67
+ </dl>
68
+
69
+ ## Constants
70
+
71
+ <dl>
72
+ <dt><a href="#services">services</a></dt>
73
+ <dd><p>List helpful functions when dealing with collections.</p>
74
+ </dd>
75
+ <dt><a href="#recipes">recipes</a></dt>
76
+ <dd><p>List of class declarations that can be used to specify attributes for a style of object / class.</p>
77
+ </dd>
78
+ </dl>
79
+
80
+ ## Functions
81
+
82
+ <dl>
83
+ <dt><a href="#parseTreeNext">parseTreeNext(treeNode)</a> ⇒ <code>IsTreeNode</code> | <code>null</code></dt>
84
+ <dd><p>Be able to parse over every node in a tree.</p>
85
+ <ol>
86
+ <li>Start at root (get root parent)</li>
87
+ <li>Get first child (repeat until no children)</li>
88
+ <li>Check next child</li>
89
+ <li>Repeat 2</li>
90
+ <li>Repeat 3</li>
91
+ <li>If no next child, return to parent and repeat 3</li>
92
+ <li>Stop at root (next is null and parent is null</li>
93
+ </ol>
94
+ </dd>
95
+ <dt><a href="#parseTree">parseTree(tree, callback)</a> ⇒ <code>IsArrayable.&lt;IsTreeNode&gt;</code></dt>
96
+ <dd><p>Loop over all the nodes in a tree starting from left and apply a callback for each</p>
97
+ </dd>
98
+ </dl>
99
+
100
+ <a name="module_collect-your-stuff"></a>
101
+
102
+ ## collect-your-stuff
103
+ All of the collections available.
104
+
105
+ **Version**: 1.0.0
106
+ **Author**: Joshua Heagle <joshuaheagle@gmail.com>
107
+ <a name="module_collect-your-stuff..collectYourStuff"></a>
108
+
109
+ ### collect-your-stuff~collectYourStuff
110
+ All methods exported from this module are encapsulated within collect-your-stuff.
111
+
112
+ **Kind**: inner constant of [<code>collect-your-stuff</code>](#module_collect-your-stuff)
113
+ <a name="TreeLinkerIterator"></a>
114
+
115
+ ## TreeLinkerIterator
116
+ Class TreeLinkerIterator returns the next value taking a left-first approach down a tree.
117
+
118
+ **Kind**: global class
119
+ <a name="Runnable"></a>
120
+
121
+ ## Runnable
122
+ Identify a class that can be run.
123
+
124
+ **Kind**: global class
125
+
126
+ * [Runnable](#Runnable)
127
+ * [new Runnable(data)](#new_Runnable_new)
128
+ * _instance_
129
+ * [.task](#Runnable+task) <code>function</code>
130
+ * [.run()](#Runnable+run) ⇒ <code>\*</code>
131
+ * _static_
132
+ * [.isRunnable(thing)](#Runnable.isRunnable) <code>boolean</code>
133
+
134
+ <a name="new_Runnable_new"></a>
135
+
136
+ ### new Runnable(data)
137
+ Instantiate a Runnable class.
138
+
139
+
140
+ | Param | Type |
141
+ | --- | --- |
142
+ | data | <code>\*</code> |
143
+
144
+ <a name="Runnable+task"></a>
145
+
146
+ ### runnable.task <code>function</code>
147
+ Retrieve the data which should be formed as a task.
148
+
149
+ **Kind**: instance property of [<code>Runnable</code>](#Runnable)
150
+ <a name="Runnable+run"></a>
151
+
152
+ ### runnable.run() <code>\*</code>
153
+ Run the runnable task.
154
+
155
+ **Kind**: instance method of [<code>Runnable</code>](#Runnable)
156
+ <a name="Runnable.isRunnable"></a>
157
+
158
+ ### Runnable.isRunnable(thing) <code>boolean</code>
159
+ Check if a given thing is Runnable
160
+
161
+ **Kind**: static method of [<code>Runnable</code>](#Runnable)
162
+
163
+ | Param | Type |
164
+ | --- | --- |
165
+ | thing | <code>\*</code> |
166
+
167
+ <a name="LinkerIterator"></a>
168
+
169
+ ## LinkerIterator
170
+ Class LinkerIterator returns the next value when using linkers of linked type lists.
171
+
172
+ **Kind**: global class
173
+ <a name="DoubleLinkerIterator"></a>
174
+
175
+ ## DoubleLinkerIterator
176
+ Class DoubleLinkerIterator returns the next value when using linkers of linked type lists.
177
+
178
+ **Kind**: global class
179
+ <a name="ArrayIterator"></a>
180
+
181
+ ## ArrayIterator
182
+ Class ArrayIterator returns the next value when using elements of array type list.
183
+
184
+ **Kind**: global class
185
+ <a name="Stackable"></a>
186
+
187
+ ## Stackable [<code>Linker</code>](#Linker)
188
+ Stackable represents a runnable entry in stack.
189
+
190
+ **Kind**: global class
191
+ **Extends**: [<code>Linker</code>](#Linker)
192
+
193
+ * [Stackable](#Stackable) ⇐ [<code>Linker</code>](#Linker)
194
+ * [new Stackable([stackData])](#new_Stackable_new)
195
+ * _instance_
196
+ * [.task](#Stackable+task) <code>\*</code>
197
+ * [.run()](#Stackable+run) <code>\*</code>
198
+ * _static_
199
+ * [.make(stackable, [classType])](#Stackable.make) [<code>Stackable</code>](#Stackable)
200
+ * [.fromArray([values], [classType])](#Stackable.fromArray) ⇒ <code>Object</code>
201
+
202
+ <a name="new_Stackable_new"></a>
203
+
204
+ ### new Stackable([stackData])
205
+ Create a stackable item that can be used in a stack.
206
+
207
+
208
+ | Param | Type | Default | Description |
209
+ | --- | --- | --- | --- |
210
+ | [stackData] | <code>Object</code> | <code>{}</code> | |
211
+ | [stackData.task] | <code>\*</code> | <code></code> | The data to be stored in this stackable |
212
+ | [stackData.next] | [<code>Stackable</code>](#Stackable) \| <code>null</code> | <code></code> | The reference to the next stackable if any |
213
+ | [stackData.ready] | <code>boolean</code> \| <code>function</code> | <code>false</code> | Indicate if the stackable is ready to run |
214
+
215
+ <a name="Stackable+task"></a>
216
+
217
+ ### stackable.task ⇒ <code>\*</code>
218
+ Retrieve the data which should be formed as a task.
219
+
220
+ **Kind**: instance property of [<code>Stackable</code>](#Stackable)
221
+ <a name="Stackable+run"></a>
222
+
223
+ ### stackable.run() ⇒ <code>\*</code>
224
+ Run the stacked task.
225
+
226
+ **Kind**: instance method of [<code>Stackable</code>](#Stackable)
227
+ <a name="Stackable.make"></a>
228
+
229
+ ### Stackable.make(stackable, [classType]) ⇒ [<code>Stackable</code>](#Stackable)
230
+ Make a new Stackable from the data given if it is not already a valid Stackable.
231
+
232
+ **Kind**: static method of [<code>Stackable</code>](#Stackable)
233
+
234
+ | Param | Type | Default | Description |
235
+ | --- | --- | --- | --- |
236
+ | stackable | [<code>Stackable</code>](#Stackable) \| <code>\*</code> | | Return a valid Stackable instance from given data, or even an already valid one. |
237
+ | [classType] | <code>IsLinker</code> | <code>Stackable</code> | Provide the type of IsLinker to use. |
238
+
239
+ <a name="Stackable.fromArray"></a>
240
+
241
+ ### Stackable.fromArray([values], [classType]) ⇒ <code>Object</code>
242
+ Convert an array into Stackable instances, return the head and tail Stackables.
243
+
244
+ **Kind**: static method of [<code>Stackable</code>](#Stackable)
245
+
246
+ | Param | Type | Default | Description |
247
+ | --- | --- | --- | --- |
248
+ | [values] | <code>Array</code> | <code>[]</code> | Provide an array of data that will be converted to a chain of stackable linkers. |
249
+ | [classType] | <code>IsLinker</code> | <code>Stackable</code> | Provide the type of IsLinker to use. |
250
+
251
+ <a name="Stack"></a>
252
+
253
+ ## Stack
254
+ Store a collection of items which can only be inserted and removed from the top.
255
+
256
+ **Kind**: global class
257
+
258
+ * [Stack](#Stack)
259
+ * [new Stack(stackedList)](#new_Stack_new)
260
+ * _instance_
261
+ * [.empty()](#Stack+empty) <code>boolean</code>
262
+ * [.top()](#Stack+top) ⇒ [<code>Stackable</code>](#Stackable)
263
+ * [.pop()](#Stack+pop) [<code>Stackable</code>](#Stackable) \| <code>null</code>
264
+ * [.push(stackable)](#Stack+push)
265
+ * [.remove()](#Stack+remove) ⇒ [<code>Stackable</code>](#Stackable) \| <code>null</code>
266
+ * [.size()](#Stack+size) ⇒ <code>number</code>
267
+ * _static_
268
+ * [.fromArray(values, stackableClass, listClass)](#Stack.fromArray) ⇒ [<code>Stack</code>](#Stack)
269
+
270
+ <a name="new_Stack_new"></a>
271
+
272
+ ### new Stack(stackedList)
273
+ Instantiate the state with the starter stacked list.
274
+
275
+
276
+ | Param | Type |
277
+ | --- | --- |
278
+ | stackedList | <code>Iterable</code> \| [<code>LinkedList</code>](#LinkedList) |
279
+
280
+ <a name="Stack+empty"></a>
281
+
282
+ ### stack.empty() ⇒ <code>boolean</code>
283
+ Return true if the stack is empty (there are no tasks in the stacked list)
284
+
285
+ **Kind**: instance method of [<code>Stack</code>](#Stack)
286
+ <a name="Stack+top"></a>
287
+
288
+ ### stack.top() ⇒ [<code>Stackable</code>](#Stackable)
289
+ Take a look at the next stacked task
290
+
291
+ **Kind**: instance method of [<code>Stack</code>](#Stack)
292
+ <a name="Stack+pop"></a>
293
+
294
+ ### stack.pop() ⇒ [<code>Stackable</code>](#Stackable) \| <code>null</code>
295
+ Remove the next stacked task and return it.
296
+
297
+ **Kind**: instance method of [<code>Stack</code>](#Stack)
298
+ <a name="Stack+push"></a>
299
+
300
+ ### stack.push(stackable)
301
+ Push a stackable task to the top of the stack.
302
+
303
+ **Kind**: instance method of [<code>Stack</code>](#Stack)
304
+
305
+ | Param | Type | Description |
306
+ | --- | --- | --- |
307
+ | stackable | [<code>Stackable</code>](#Stackable) \| <code>\*</code> | Add a new stackable to the top of the stack |
308
+
309
+ <a name="Stack+remove"></a>
310
+
311
+ ### stack.remove() ⇒ [<code>Stackable</code>](#Stackable) \| <code>null</code>
312
+ Remove the next stacked task and return it.
313
+
314
+ **Kind**: instance method of [<code>Stack</code>](#Stack)
315
+ <a name="Stack+size"></a>
316
+
317
+ ### stack.size() <code>number</code>
318
+ Get the size of the current stack.
319
+
320
+ **Kind**: instance method of [<code>Stack</code>](#Stack)
321
+ <a name="Stack.fromArray"></a>
322
+
323
+ ### Stack.fromArray(values, stackableClass, listClass) ⇒ [<code>Stack</code>](#Stack)
324
+ Convert an array to a Stack.
325
+
326
+ **Kind**: static method of [<code>Stack</code>](#Stack)
327
+
328
+ | Param | Type | Description |
329
+ | --- | --- | --- |
330
+ | values | <code>Array</code> | An array of values which will be converted to stackables in this queue |
331
+ | stackableClass | [<code>Stackable</code>](#Stackable) | The class to use for each stackable |
332
+ | listClass | [<code>Stack</code>](#Stack) \| <code>Iterable</code> | The class to use to manage the stackables |
333
+
334
+ <a name="Queueable"></a>
335
+
336
+ ## Queueable [<code>Linker</code>](#Linker)
337
+ Queueable represents a runnable entry in a queue.
338
+
339
+ **Kind**: global class
340
+ **Extends**: [<code>Linker</code>](#Linker)
341
+
342
+ * [Queueable](#Queueable) ⇐ [<code>Linker</code>](#Linker)
343
+ * [new Queueable([queueableData])](#new_Queueable_new)
344
+ * _instance_
345
+ * [.isReady](#Queueable+isReady) ⇒ <code>boolean</code>
346
+ * [.task](#Queueable+task) ⇒ <code>\*</code>
347
+ * [.markCompleted(completeResponse)](#Queueable+markCompleted) <code>completeResponse</code>
348
+ * [.run()](#Queueable+run) <code>completeResponse</code>
349
+ * _static_
350
+ * [.make(queueable, [classType])](#Queueable.make) [<code>Queueable</code>](#Queueable)
351
+ * [.fromArray(values, [classType])](#Queueable.fromArray) <code>Object</code>
352
+
353
+ <a name="new_Queueable_new"></a>
354
+
355
+ ### new Queueable([queueableData])
356
+ Create a queueable item that can be used in a queue.
357
+
358
+
359
+ | Param | Type | Default | Description |
360
+ | --- | --- | --- | --- |
361
+ | [queueableData] | <code>Object</code> | <code>{}</code> | |
362
+ | [queueableData.task] | <code>\*</code> | <code></code> | The data to be stored in this queueable |
363
+ | [queueableData.next] | [<code>Queueable</code>](#Queueable) \| <code>null</code> | <code></code> | The reference to the next queueable if any |
364
+ | [queueableData.ready] | <code>boolean</code> \| <code>function</code> | <code>false</code> | Indicate if the queueable is ready to run |
365
+
366
+ <a name="Queueable+isReady"></a>
367
+
368
+ ### queueable.isReady ⇒ <code>boolean</code>
369
+ Check ready state.
370
+
371
+ **Kind**: instance property of [<code>Queueable</code>](#Queueable)
372
+ <a name="Queueable+task"></a>
373
+
374
+ ### queueable.task ⇒ <code>\*</code>
375
+ Retrieve the data which should be formed as a task.
376
+
377
+ **Kind**: instance property of [<code>Queueable</code>](#Queueable)
378
+ <a name="Queueable+markCompleted"></a>
379
+
380
+ ### queueable.markCompleted(completeResponse) ⇒ <code>completeResponse</code>
381
+ Set this queueable as completed.
382
+
383
+ **Kind**: instance method of [<code>Queueable</code>](#Queueable)
384
+
385
+ | Param | Type | Default | Description |
386
+ | --- | --- | --- | --- |
387
+ | completeResponse | <code>Object</code> | | |
388
+ | [completeResponse.success] | <code>\*</code> | <code>true</code> | Indicate when the task failed (use false) or give a success message |
389
+ | [completeResponse.error] | <code>\*</code> | <code>false</code> | Indicate a task was error-free (use false) or give an error message |
390
+ | [completeResponse.context] | <code>\*</code> | <code></code> | Provide additional data in the response |
391
+
392
+ <a name="Queueable+run"></a>
393
+
394
+ ### queueable.run() <code>completeResponse</code>
395
+ Intend to run the queued task when it is ready. If ready, mark this task as running and run the task.
396
+
397
+ **Kind**: instance method of [<code>Queueable</code>](#Queueable)
398
+ <a name="Queueable.make"></a>
399
+
400
+ ### Queueable.make(queueable, [classType]) ⇒ [<code>Queueable</code>](#Queueable)
401
+ Make a new Queueable from the data given if it is not already a valid Queueable.
402
+
403
+ **Kind**: static method of [<code>Queueable</code>](#Queueable)
404
+
405
+ | Param | Type | Default | Description |
406
+ | --- | --- | --- | --- |
407
+ | queueable | [<code>Queueable</code>](#Queueable) \| <code>\*</code> | | Return a valid Queueable instance from given data, or even an already valid one. |
408
+ | [classType] | <code>IsLinker</code> | <code>Queueable</code> | Provide the type of IsLinker to use. |
409
+
410
+ <a name="Queueable.fromArray"></a>
411
+
412
+ ### Queueable.fromArray(values, [classType]) <code>Object</code>
413
+ Convert an array into Queueable instances, return the head and tail Queueables.
414
+
415
+ **Kind**: static method of [<code>Queueable</code>](#Queueable)
416
+
417
+ | Param | Type | Default | Description |
418
+ | --- | --- | --- | --- |
419
+ | values | <code>Array</code> | | Provide an array of data that will be converted to a chain of queueable linkers. |
420
+ | [classType] | <code>IsLinker</code> | <code>Queueable</code> | Provide the type of IsLinker to use. |
421
+
422
+ <a name="Queue"></a>
423
+
424
+ ## Queue
425
+ Maintain a series of queued items.
426
+
427
+ **Kind**: global class
428
+
429
+ * [Queue](#Queue)
430
+ * [new Queue(queuedList)](#new_Queue_new)
431
+ * _instance_
432
+ * [.dequeue()](#Queue+dequeue) ⇒ <code>completeResponse</code> \| <code>\*</code>
433
+ * [.empty()](#Queue+empty) ⇒ <code>boolean</code>
434
+ * [.enqueue(queueable)](#Queue+enqueue)
435
+ * [.peek()](#Queue+peek) [<code>Queueable</code>](#Queueable)
436
+ * [.remove()](#Queue+remove) ⇒ [<code>Queueable</code>](#Queueable) \| <code>null</code>
437
+ * [.size()](#Queue+size) ⇒ <code>number</code>
438
+ * _static_
439
+ * [.fromArray(values, queueableClass, listClass)](#Queue.fromArray) ⇒ [<code>Queue</code>](#Queue)
440
+
441
+ <a name="new_Queue_new"></a>
442
+
443
+ ### new Queue(queuedList)
444
+ Instantiate the queue with the given queue list.
445
+
446
+
447
+ | Param | Type | Description |
448
+ | --- | --- | --- |
449
+ | queuedList | <code>Iterable</code> \| [<code>LinkedList</code>](#LinkedList) | Give the list of queueables to start in this queue. |
450
+
451
+ <a name="Queue+dequeue"></a>
452
+
453
+ ### queue.dequeue() ⇒ <code>completeResponse</code> \| <code>\*</code>
454
+ Take a queued task from the front of the queue and run it if ready.
455
+
456
+ **Kind**: instance method of [<code>Queue</code>](#Queue)
457
+ <a name="Queue+empty"></a>
458
+
459
+ ### queue.empty() <code>boolean</code>
460
+ Return true if the queue is empty (there are no tasks in the queue list)
461
+
462
+ **Kind**: instance method of [<code>Queue</code>](#Queue)
463
+ <a name="Queue+enqueue"></a>
464
+
465
+ ### queue.enqueue(queueable)
466
+ Add a queued task to the end of the queue
467
+
468
+ **Kind**: instance method of [<code>Queue</code>](#Queue)
469
+
470
+ | Param | Type | Description |
471
+ | --- | --- | --- |
472
+ | queueable | [<code>Queueable</code>](#Queueable) | Add a new queueable to the end of the queue |
473
+
474
+ <a name="Queue+peek"></a>
475
+
476
+ ### queue.peek() ⇒ [<code>Queueable</code>](#Queueable)
477
+ Take a look at the next queued task
478
+
479
+ **Kind**: instance method of [<code>Queue</code>](#Queue)
480
+ <a name="Queue+remove"></a>
481
+
482
+ ### queue.remove() ⇒ [<code>Queueable</code>](#Queueable) \| <code>null</code>
483
+ Remove the next queued item and return it.
484
+
485
+ **Kind**: instance method of [<code>Queue</code>](#Queue)
486
+ <a name="Queue+size"></a>
487
+
488
+ ### queue.size() <code>number</code>
489
+ Get the length of the current queue.
490
+
491
+ **Kind**: instance method of [<code>Queue</code>](#Queue)
492
+ <a name="Queue.fromArray"></a>
493
+
494
+ ### Queue.fromArray(values, queueableClass, listClass) [<code>Queue</code>](#Queue)
495
+ Convert an array to a Queue.
496
+
497
+ **Kind**: static method of [<code>Queue</code>](#Queue)
498
+
499
+ | Param | Type | Description |
500
+ | --- | --- | --- |
501
+ | values | <code>Array</code> | An array of values which will be converted to queueables in this queue |
502
+ | queueableClass | [<code>Queueable</code>](#Queueable) | The class to use for each queueable |
503
+ | listClass | [<code>Queue</code>](#Queue) \| <code>Iterable</code> | The class to use to manage the queueables |
504
+
505
+ <a name="TreeLinker"></a>
506
+
507
+ ## TreeLinker ⇐ [<code>DoubleLinker</code>](#DoubleLinker)
508
+ TreeLinker represents a node in a LinkedTreeList having a parent (or root) and child nodes.
509
+
510
+ **Kind**: global class
511
+ **Extends**: [<code>DoubleLinker</code>](#DoubleLinker)
512
+
513
+ * [TreeLinker](#TreeLinker) ⇐ [<code>DoubleLinker</code>](#DoubleLinker)
514
+ * [new TreeLinker([settings])](#new_TreeLinker_new)
515
+ * _instance_
516
+ * [.childrenFromArray(children, classType)](#TreeLinker+childrenFromArray) ⇒ [<code>LinkedTreeList</code>](#LinkedTreeList) \| <code>null</code>
517
+ * _static_
518
+ * [.make(linker, [classType])](#TreeLinker.make) ⇒ [<code>TreeLinker</code>](#TreeLinker)
519
+ * [.fromArray([values], [classType])](#TreeLinker.fromArray) ⇒ <code>Object</code>
520
+
521
+ <a name="new_TreeLinker_new"></a>
522
+
523
+ ### new TreeLinker([settings])
524
+ Create the new TreeLinker instance, provide the data and optionally set references for next, prev, parent, or children.
525
+
526
+
527
+ | Param | Type | Default | Description |
528
+ | --- | --- | --- | --- |
529
+ | [settings] | <code>Object</code> | <code>{}</code> | |
530
+ | [settings.data] | <code>\*</code> | <code></code> | The data to be stored in this tree node |
531
+ | [settings.next] | [<code>TreeLinker</code>](#TreeLinker) | <code></code> | The reference to the next linker if any |
532
+ | [settings.prev] | [<code>TreeLinker</code>](#TreeLinker) | <code></code> | The reference to the previous linker if any |
533
+ | [settings.children] | [<code>LinkedTreeList</code>](#LinkedTreeList) | <code></code> | The references to child linkers if any |
534
+ | [settings.parent] | [<code>TreeLinker</code>](#TreeLinker) | <code></code> | The reference to a parent linker if any |
535
+
536
+ <a name="TreeLinker+childrenFromArray"></a>
537
+
538
+ ### treeLinker.childrenFromArray(children, classType) ⇒ [<code>LinkedTreeList</code>](#LinkedTreeList) \| <code>null</code>
539
+ Create the children for this tree from an array.
540
+
541
+ **Kind**: instance method of [<code>TreeLinker</code>](#TreeLinker)
542
+
543
+ | Param | Type | Description |
544
+ | --- | --- | --- |
545
+ | children | <code>Array</code> \| <code>null</code> | Provide an array of data / linker references to be children of this tree node. |
546
+ | classType | <code>IsTree</code> | Provide the type of IsElement to use. |
547
+
548
+ <a name="TreeLinker.make"></a>
549
+
550
+ ### TreeLinker.make(linker, [classType]) ⇒ [<code>TreeLinker</code>](#TreeLinker)
551
+ Make a new DoubleLinker from the data given if it is not already a valid Linker.
552
+
553
+ **Kind**: static method of [<code>TreeLinker</code>](#TreeLinker)
554
+
555
+ | Param | Type | Default | Description |
556
+ | --- | --- | --- | --- |
557
+ | linker | [<code>TreeLinker</code>](#TreeLinker) \| <code>\*</code> | | Return a valid TreeLinker instance from given data, or even an already valid one. |
558
+ | [classType] | <code>IsTreeNode</code> | <code>TreeLinker</code> | Provide the type of IsTreeNode to use. |
559
+
560
+ <a name="TreeLinker.fromArray"></a>
561
+
562
+ ### TreeLinker.fromArray([values], [classType]) <code>Object</code>
563
+ Convert an array into DoubleLinker instances, return the head and tail DoubleLinkers.
564
+
565
+ **Kind**: static method of [<code>TreeLinker</code>](#TreeLinker)
566
+
567
+ | Param | Type | Default | Description |
568
+ | --- | --- | --- | --- |
569
+ | [values] | <code>Array</code> | <code>[]</code> | Provide an array of data that will be converted to a chain of tree-linkers. |
570
+ | [classType] | <code>IsTreeNode</code> | <code>TreeLinker</code> | Provide the type of IsTreeNode to use. |
571
+
572
+ <a name="LinkedTreeList"></a>
573
+
574
+ ## LinkedTreeList ⇐ [<code>DoublyLinkedList</code>](#DoublyLinkedList)
575
+ LinkedTreeList represents a collection stored with a root and spreading in branching (tree) formation.
576
+
577
+ **Kind**: global class
578
+ **Extends**: [<code>DoublyLinkedList</code>](#DoublyLinkedList)
579
+
580
+ * [LinkedTreeList](#LinkedTreeList) [<code>DoublyLinkedList</code>](#DoublyLinkedList)
581
+ * [new LinkedTreeList()](#new_LinkedTreeList_new)
582
+ * _instance_
583
+ * [.list](#LinkedTreeList+list) [<code>TreeLinker</code>](#TreeLinker)
584
+ * [.first](#LinkedTreeList+first) ⇒ [<code>TreeLinker</code>](#TreeLinker)
585
+ * [.last](#LinkedTreeList+last) ⇒ [<code>TreeLinker</code>](#TreeLinker)
586
+ * [.length](#LinkedTreeList+length) ⇒ <code>number</code>
587
+ * [.parent](#LinkedTreeList+parent) ⇒ [<code>TreeLinker</code>](#TreeLinker)
588
+ * [.parent](#LinkedTreeList+parent)
589
+ * [.rootParent](#LinkedTreeList+rootParent) ⇒ [<code>TreeLinker</code>](#TreeLinker)
590
+ * [.initialize(initialList)](#LinkedTreeList+initialize) [<code>LinkedTreeList</code>](#LinkedTreeList)
591
+ * [.setChildren(item, children)](#LinkedTreeList+setChildren)
592
+ * [.insertAfter(node, newNode)](#LinkedTreeList+insertAfter) ⇒ [<code>LinkedTreeList</code>](#LinkedTreeList)
593
+ * [.insertBefore(node, newNode)](#LinkedTreeList+insertBefore) ⇒ [<code>LinkedTreeList</code>](#LinkedTreeList)
594
+ * [.append(node, after)](#LinkedTreeList+append) [<code>TreeLinker</code>](#TreeLinker)
595
+ * [.prepend(node, before)](#LinkedTreeList+prepend) ⇒ [<code>TreeLinker</code>](#TreeLinker)
596
+ * [.remove(node)](#LinkedTreeList+remove) [<code>TreeLinker</code>](#TreeLinker)
597
+ * [.reset()](#LinkedTreeList+reset) ⇒ [<code>TreeLinker</code>](#TreeLinker)
598
+ * [.item(index)](#LinkedTreeList+item) ⇒ [<code>TreeLinker</code>](#TreeLinker) \| <code>null</code>
599
+ * [.forEach(callback, thisArg)](#LinkedTreeList+forEach)
600
+ * _static_
601
+ * [.fromArray([values], [linkerClass], [classType])](#LinkedTreeList.fromArray) ⇒ [<code>LinkedTreeList</code>](#LinkedTreeList)
602
+
603
+ <a name="new_LinkedTreeList_new"></a>
604
+
605
+ ### new LinkedTreeList()
606
+ Create the new LinkedTreeList instance, configure the list class.
607
+
608
+ <a name="LinkedTreeList+list"></a>
609
+
610
+ ### linkedTreeList.list ⇒ [<code>TreeLinker</code>](#TreeLinker)
611
+ Retrieve a copy of the innerList used.
612
+
613
+ **Kind**: instance property of [<code>LinkedTreeList</code>](#LinkedTreeList)
614
+ **Overrides**: [<code>list</code>](#DoublyLinkedList+list)
615
+ <a name="LinkedTreeList+first"></a>
616
+
617
+ ### linkedTreeList.first ⇒ [<code>TreeLinker</code>](#TreeLinker)
618
+ Retrieve the first TreeLinker in the list.
619
+
620
+ **Kind**: instance property of [<code>LinkedTreeList</code>](#LinkedTreeList)
621
+ **Overrides**: [<code>first</code>](#DoublyLinkedList+first)
622
+ <a name="LinkedTreeList+last"></a>
623
+
624
+ ### linkedTreeList.last [<code>TreeLinker</code>](#TreeLinker)
625
+ Retrieve the last TreeLinker in the list.
626
+
627
+ **Kind**: instance property of [<code>LinkedTreeList</code>](#LinkedTreeList)
628
+ **Overrides**: [<code>last</code>](#DoublyLinkedList+last)
629
+ <a name="LinkedTreeList+length"></a>
630
+
631
+ ### linkedTreeList.length ⇒ <code>number</code>
632
+ Return the length of the list.
633
+
634
+ **Kind**: instance property of [<code>LinkedTreeList</code>](#LinkedTreeList)
635
+ **Overrides**: [<code>length</code>](#DoublyLinkedList+length)
636
+ <a name="LinkedTreeList+parent"></a>
637
+
638
+ ### linkedTreeList.parent [<code>TreeLinker</code>](#TreeLinker)
639
+ Get the parent of this tree list.
640
+
641
+ **Kind**: instance property of [<code>LinkedTreeList</code>](#LinkedTreeList)
642
+ <a name="LinkedTreeList+parent"></a>
643
+
644
+ ### linkedTreeList.parent
645
+ Set the parent of this tree list
646
+
647
+ **Kind**: instance property of [<code>LinkedTreeList</code>](#LinkedTreeList)
648
+
649
+ | Param | Type | Description |
650
+ | --- | --- | --- |
651
+ | parent | [<code>TreeLinker</code>](#TreeLinker) | The new node to use as the parent for this group of children |
652
+
653
+ <a name="LinkedTreeList+rootParent"></a>
654
+
655
+ ### linkedTreeList.rootParent ⇒ [<code>TreeLinker</code>](#TreeLinker)
656
+ Return the root parent of the entire tree.
657
+
658
+ **Kind**: instance property of [<code>LinkedTreeList</code>](#LinkedTreeList)
659
+ <a name="LinkedTreeList+initialize"></a>
660
+
661
+ ### linkedTreeList.initialize(initialList) ⇒ [<code>LinkedTreeList</code>](#LinkedTreeList)
662
+ Initialize the inner list, should only run once.
663
+
664
+ **Kind**: instance method of [<code>LinkedTreeList</code>](#LinkedTreeList)
665
+ **Overrides**: [<code>initialize</code>](#DoublyLinkedList+initialize)
666
+
667
+ | Param | Type | Description |
668
+ | --- | --- | --- |
669
+ | initialList | [<code>TreeLinker</code>](#TreeLinker) | Give the list of tree-linkers to start in this linked-tree-list. |
670
+
671
+ <a name="LinkedTreeList+setChildren"></a>
672
+
673
+ ### linkedTreeList.setChildren(item, children)
674
+ Set the children on a parent item.
675
+
676
+ **Kind**: instance method of [<code>LinkedTreeList</code>](#LinkedTreeList)
677
+
678
+ | Param | Type | Description |
679
+ | --- | --- | --- |
680
+ | item | [<code>TreeLinker</code>](#TreeLinker) | The TreeLinker node that will be the parent of the children |
681
+ | children | [<code>LinkedTreeList</code>](#LinkedTreeList) | The LinkedTreeList which has the child nodes to use |
682
+
683
+ <a name="LinkedTreeList+insertAfter"></a>
684
+
685
+ ### linkedTreeList.insertAfter(node, newNode) ⇒ [<code>LinkedTreeList</code>](#LinkedTreeList)
686
+ Insert a new node (or data) after a node.
687
+
688
+ **Kind**: instance method of [<code>LinkedTreeList</code>](#LinkedTreeList)
689
+ **Overrides**: [<code>insertAfter</code>](#DoublyLinkedList+insertAfter)
690
+
691
+ | Param | Type | Description |
692
+ | --- | --- | --- |
693
+ | node | [<code>TreeLinker</code>](#TreeLinker) \| <code>\*</code> | The existing node as reference |
694
+ | newNode | [<code>TreeLinker</code>](#TreeLinker) \| <code>\*</code> | The new node to go after the existing node |
695
+
696
+ <a name="LinkedTreeList+insertBefore"></a>
697
+
698
+ ### linkedTreeList.insertBefore(node, newNode) [<code>LinkedTreeList</code>](#LinkedTreeList)
699
+ Insert a new node (or data) before a node.
700
+
701
+ **Kind**: instance method of [<code>LinkedTreeList</code>](#LinkedTreeList)
702
+ **Overrides**: [<code>insertBefore</code>](#DoublyLinkedList+insertBefore)
703
+
704
+ | Param | Type | Description |
705
+ | --- | --- | --- |
706
+ | node | [<code>TreeLinker</code>](#TreeLinker) \| <code>\*</code> | The existing node as reference |
707
+ | newNode | [<code>TreeLinker</code>](#TreeLinker) \| <code>\*</code> | The new node to go before the existing node |
708
+
709
+ <a name="LinkedTreeList+append"></a>
710
+
711
+ ### linkedTreeList.append(node, after) [<code>TreeLinker</code>](#TreeLinker)
712
+ Add a node (or data) after the given (or last) node in the list.
713
+
714
+ **Kind**: instance method of [<code>LinkedTreeList</code>](#LinkedTreeList)
715
+ **Overrides**: [<code>append</code>](#DoublyLinkedList+append)
716
+
717
+ | Param | Type | Description |
718
+ | --- | --- | --- |
719
+ | node | [<code>TreeLinker</code>](#TreeLinker) \| <code>\*</code> | The new node to add to the end of the list |
720
+ | after | [<code>TreeLinker</code>](#TreeLinker) | The existing last node |
721
+
722
+ <a name="LinkedTreeList+prepend"></a>
723
+
724
+ ### linkedTreeList.prepend(node, before) [<code>TreeLinker</code>](#TreeLinker)
725
+ Add a node (or data) before the given (or first) node in the list.
726
+
727
+ **Kind**: instance method of [<code>LinkedTreeList</code>](#LinkedTreeList)
728
+ **Overrides**: [<code>prepend</code>](#DoublyLinkedList+prepend)
729
+
730
+ | Param | Type | Description |
731
+ | --- | --- | --- |
732
+ | node | [<code>TreeLinker</code>](#TreeLinker) \| <code>\*</code> | The new node to add to the start of the list |
733
+ | before | [<code>TreeLinker</code>](#TreeLinker) | The existing first node |
734
+
735
+ <a name="LinkedTreeList+remove"></a>
736
+
737
+ ### linkedTreeList.remove(node) ⇒ [<code>TreeLinker</code>](#TreeLinker)
738
+ Remove a linker from this linked list.
739
+
740
+ **Kind**: instance method of [<code>LinkedTreeList</code>](#LinkedTreeList)
741
+ **Overrides**: [<code>remove</code>](#DoublyLinkedList+remove)
742
+
743
+ | Param | Type | Description |
744
+ | --- | --- | --- |
745
+ | node | [<code>TreeLinker</code>](#TreeLinker) | The node we wish to remove (and it will be returned after removal) |
746
+
747
+ <a name="LinkedTreeList+reset"></a>
748
+
749
+ ### linkedTreeList.reset() ⇒ [<code>TreeLinker</code>](#TreeLinker)
750
+ Refresh all references and return head reference.
751
+
752
+ **Kind**: instance method of [<code>LinkedTreeList</code>](#LinkedTreeList)
753
+ **Overrides**: [<code>reset</code>](#DoublyLinkedList+reset)
754
+ <a name="LinkedTreeList+item"></a>
755
+
756
+ ### linkedTreeList.item(index) ⇒ [<code>TreeLinker</code>](#TreeLinker) \| <code>null</code>
757
+ Retrieve a TreeLinker item from this list by numeric index, otherwise return null.
758
+
759
+ **Kind**: instance method of [<code>LinkedTreeList</code>](#LinkedTreeList)
760
+ **Overrides**: [<code>item</code>](#DoublyLinkedList+item)
761
+
762
+ | Param | Type | Description |
763
+ | --- | --- | --- |
764
+ | index | <code>number</code> | The integer number for retrieving a node by position. |
765
+
766
+ <a name="LinkedTreeList+forEach"></a>
767
+
768
+ ### linkedTreeList.forEach(callback, thisArg)
769
+ Be able to run forEach on this LinkedTreeList to iterate over the TreeLinker Items.
770
+
771
+ **Kind**: instance method of [<code>LinkedTreeList</code>](#LinkedTreeList)
772
+ **Overrides**: [<code>forEach</code>](#DoublyLinkedList+forEach)
773
+
774
+ | Param | Type | Description |
775
+ | --- | --- | --- |
776
+ | callback | <code>forEachCallback</code> | The function to call for-each tree node |
777
+ | thisArg | [<code>LinkedTreeList</code>](#LinkedTreeList) | Optional, 'this' reference |
778
+
779
+ <a name="LinkedTreeList.fromArray"></a>
780
+
781
+ ### LinkedTreeList.fromArray([values], [linkerClass], [classType]) ⇒ [<code>LinkedTreeList</code>](#LinkedTreeList)
782
+ Convert an array into a LinkedTreeList instance, return the new instance.
783
+
784
+ **Kind**: static method of [<code>LinkedTreeList</code>](#LinkedTreeList)
785
+
786
+ | Param | Type | Default | Description |
787
+ | --- | --- | --- | --- |
788
+ | [values] | <code>Array</code> | <code>[]</code> | An array of values which will be converted to nodes in this tree-list |
789
+ | [linkerClass] | [<code>TreeLinker</code>](#TreeLinker) | <code>TreeLinker</code> | The class to use for each node |
790
+ | [classType] | [<code>IsArrayable.&lt;TreeLinker&gt;</code>](#TreeLinker) | <code>LinkedTreeList</code> | Provide the type of IsArrayable to use. |
791
+
792
+ <a name="Linker"></a>
793
+
794
+ ## Linker ⇐ [<code>ArrayElement</code>](#ArrayElement)
795
+ Linker represents a node in a LinkedList.
796
+
797
+ **Kind**: global class
798
+ **Extends**: [<code>ArrayElement</code>](#ArrayElement)
799
+
800
+ * [Linker](#Linker) ⇐ [<code>ArrayElement</code>](#ArrayElement)
801
+ * [new Linker([nodeData])](#new_Linker_new)
802
+ * [.make(linker, [classType])](#Linker.make) ⇒ [<code>Linker</code>](#Linker)
803
+ * [.fromArray([values], [classType])](#Linker.fromArray) <code>Object</code>
804
+
805
+ <a name="new_Linker_new"></a>
806
+
807
+ ### new Linker([nodeData])
808
+ Create the new Linker instance, provide the data and optionally give the next Linker.
809
+
810
+
811
+ | Param | Type | Default | Description |
812
+ | --- | --- | --- | --- |
813
+ | [nodeData] | <code>Object</code> | <code>{}</code> | |
814
+ | [nodeData.data] | <code>\*</code> | <code></code> | The data to be stored in this linker |
815
+ | [nodeData.next] | [<code>Linker</code>](#Linker) \| <code>null</code> | <code></code> | The reference to the next linker if any |
816
+
817
+ <a name="Linker.make"></a>
818
+
819
+ ### Linker.make(linker, [classType]) ⇒ [<code>Linker</code>](#Linker)
820
+ Make a new Linker from the data given if it is not already a valid Linker.
821
+
822
+ **Kind**: static method of [<code>Linker</code>](#Linker)
823
+
824
+ | Param | Type | Default | Description |
825
+ | --- | --- | --- | --- |
826
+ | linker | [<code>Linker</code>](#Linker) \| <code>\*</code> | | Return a valid Linker instance from given data, or even an already valid one. |
827
+ | [classType] | <code>IsLinker</code> | <code>Linker</code> | Provide the type of IsLinker to use. |
828
+
829
+ <a name="Linker.fromArray"></a>
830
+
831
+ ### Linker.fromArray([values], [classType]) ⇒ <code>Object</code>
832
+ Convert an array into Linker instances, return the head and tail Linkers.
833
+
834
+ **Kind**: static method of [<code>Linker</code>](#Linker)
835
+
836
+ | Param | Type | Default | Description |
837
+ | --- | --- | --- | --- |
838
+ | [values] | <code>Array</code> | <code>[]</code> | Provide an array of data that will be converted to a chain of linkers. |
839
+ | [classType] | <code>IsLinker</code> | <code>Linker</code> | Provide the type of IsLinker to use. |
840
+
841
+ <a name="LinkedList"></a>
842
+
843
+ ## LinkedList ⇐ [<code>Arrayable</code>](#Arrayable)
844
+ LinkedList represents a collection stored as a LinkedList with next references.
845
+
846
+ **Kind**: global class
847
+ **Extends**: [<code>Arrayable</code>](#Arrayable)
848
+
849
+ * [LinkedList](#LinkedList) [<code>Arrayable</code>](#Arrayable)
850
+ * [new LinkedList()](#new_LinkedList_new)
851
+ * _instance_
852
+ * [.list](#LinkedList+list) [<code>Linker</code>](#Linker)
853
+ * [.first](#LinkedList+first) [<code>Linker</code>](#Linker)
854
+ * [.last](#LinkedList+last) [<code>Linker</code>](#Linker)
855
+ * [.length](#LinkedList+length) <code>number</code>
856
+ * [.initialize(initialList)](#LinkedList+initialize) ⇒ [<code>LinkedList</code>](#LinkedList)
857
+ * [.insertAfter(node, newNode)](#LinkedList+insertAfter) ⇒ [<code>LinkedList</code>](#LinkedList)
858
+ * [.insertBefore(node, newNode)](#LinkedList+insertBefore) ⇒ [<code>LinkedList</code>](#LinkedList)
859
+ * [.append(node, after)](#LinkedList+append) ⇒ [<code>Linker</code>](#Linker)
860
+ * [.prepend(node, before)](#LinkedList+prepend) [<code>Linker</code>](#Linker)
861
+ * [.remove(node)](#LinkedList+remove) ⇒ [<code>Linker</code>](#Linker)
862
+ * [.item(index)](#LinkedList+item) [<code>Linker</code>](#Linker) \| <code>null</code>
863
+ * [.forEach(callback, thisArg)](#LinkedList+forEach) ⇒ [<code>LinkedList</code>](#LinkedList)
864
+ * _static_
865
+ * [.fromArray(values, linkerClass, [classType])](#LinkedList.fromArray) ⇒ [<code>LinkedList</code>](#LinkedList)
866
+
867
+ <a name="new_LinkedList_new"></a>
868
+
869
+ ### new LinkedList()
870
+ Create the new LinkedList instance.
871
+
872
+ <a name="LinkedList+list"></a>
873
+
874
+ ### linkedList.list ⇒ [<code>Linker</code>](#Linker)
875
+ Retrieve a copy of the innerList used.
876
+
877
+ **Kind**: instance property of [<code>LinkedList</code>](#LinkedList)
878
+ **Overrides**: [<code>list</code>](#Arrayable+list)
879
+ <a name="LinkedList+first"></a>
880
+
881
+ ### linkedList.first [<code>Linker</code>](#Linker)
882
+ Retrieve the first Linker in the list.
883
+
884
+ **Kind**: instance property of [<code>LinkedList</code>](#LinkedList)
885
+ **Overrides**: [<code>first</code>](#Arrayable+first)
886
+ <a name="LinkedList+last"></a>
887
+
888
+ ### linkedList.last ⇒ [<code>Linker</code>](#Linker)
889
+ Retrieve the last Linker in the list.
890
+
891
+ **Kind**: instance property of [<code>LinkedList</code>](#LinkedList)
892
+ **Overrides**: [<code>last</code>](#Arrayable+last)
893
+ <a name="LinkedList+length"></a>
894
+
895
+ ### linkedList.length ⇒ <code>number</code>
896
+ Return the length of the list.
897
+
898
+ **Kind**: instance property of [<code>LinkedList</code>](#LinkedList)
899
+ **Overrides**: [<code>length</code>](#Arrayable+length)
900
+ <a name="LinkedList+initialize"></a>
901
+
902
+ ### linkedList.initialize(initialList) [<code>LinkedList</code>](#LinkedList)
903
+ Initialize the inner list, should only run once.
904
+
905
+ **Kind**: instance method of [<code>LinkedList</code>](#LinkedList)
906
+ **Overrides**: [<code>initialize</code>](#Arrayable+initialize)
907
+
908
+ | Param | Type | Description |
909
+ | --- | --- | --- |
910
+ | initialList | [<code>Linker</code>](#Linker) \| <code>Array</code> | Give the list of linkers to start in this linked-list. |
911
+
912
+ <a name="LinkedList+insertAfter"></a>
913
+
914
+ ### linkedList.insertAfter(node, newNode) ⇒ [<code>LinkedList</code>](#LinkedList)
915
+ Insert a new node (or data) after a node.
916
+
917
+ **Kind**: instance method of [<code>LinkedList</code>](#LinkedList)
918
+ **Overrides**: [<code>insertAfter</code>](#Arrayable+insertAfter)
919
+
920
+ | Param | Type | Description |
921
+ | --- | --- | --- |
922
+ | node | [<code>Linker</code>](#Linker) \| <code>\*</code> | The existing node as reference |
923
+ | newNode | [<code>Linker</code>](#Linker) \| <code>\*</code> | The new node to go after the existing node |
924
+
925
+ <a name="LinkedList+insertBefore"></a>
926
+
927
+ ### linkedList.insertBefore(node, newNode) [<code>LinkedList</code>](#LinkedList)
928
+ Insert a new node (or data) before a node.
929
+
930
+ **Kind**: instance method of [<code>LinkedList</code>](#LinkedList)
931
+ **Overrides**: [<code>insertBefore</code>](#Arrayable+insertBefore)
932
+
933
+ | Param | Type | Description |
934
+ | --- | --- | --- |
935
+ | node | [<code>Linker</code>](#Linker) \| <code>\*</code> | The existing node as reference |
936
+ | newNode | [<code>Linker</code>](#Linker) \| <code>\*</code> | The new node to go before the existing node |
937
+
938
+ <a name="LinkedList+append"></a>
939
+
940
+ ### linkedList.append(node, after) [<code>Linker</code>](#Linker)
941
+ Add a node (or data) after the given (or last) node in the list.
942
+
943
+ **Kind**: instance method of [<code>LinkedList</code>](#LinkedList)
944
+ **Overrides**: [<code>append</code>](#Arrayable+append)
945
+
946
+ | Param | Type | Description |
947
+ | --- | --- | --- |
948
+ | node | [<code>Linker</code>](#Linker) \| <code>\*</code> | The new node to add to the end of the list |
949
+ | after | [<code>Linker</code>](#Linker) | The existing last node |
950
+
951
+ <a name="LinkedList+prepend"></a>
952
+
953
+ ### linkedList.prepend(node, before) [<code>Linker</code>](#Linker)
954
+ Add a node (or data) before the given (or first) node in the list.
955
+
956
+ **Kind**: instance method of [<code>LinkedList</code>](#LinkedList)
957
+ **Overrides**: [<code>prepend</code>](#Arrayable+prepend)
958
+
959
+ | Param | Type | Description |
960
+ | --- | --- | --- |
961
+ | node | [<code>Linker</code>](#Linker) \| <code>\*</code> | The new node to add to the start of the list |
962
+ | before | [<code>Linker</code>](#Linker) | The existing first node |
963
+
964
+ <a name="LinkedList+remove"></a>
965
+
966
+ ### linkedList.remove(node) ⇒ [<code>Linker</code>](#Linker)
967
+ Remove a linker from this linked list.
968
+
969
+ **Kind**: instance method of [<code>LinkedList</code>](#LinkedList)
970
+ **Overrides**: [<code>remove</code>](#Arrayable+remove)
971
+
972
+ | Param | Type | Description |
973
+ | --- | --- | --- |
974
+ | node | [<code>Linker</code>](#Linker) | The node we wish to remove (and it will be returned after removal) |
975
+
976
+ <a name="LinkedList+item"></a>
977
+
978
+ ### linkedList.item(index) ⇒ [<code>Linker</code>](#Linker) \| <code>null</code>
979
+ Retrieve a Linker item from this list by numeric index, otherwise return null.
980
+
981
+ **Kind**: instance method of [<code>LinkedList</code>](#LinkedList)
982
+ **Overrides**: [<code>item</code>](#Arrayable+item)
983
+
984
+ | Param | Type | Description |
985
+ | --- | --- | --- |
986
+ | index | <code>number</code> | The integer number for retrieving a node by position. |
987
+
988
+ <a name="LinkedList+forEach"></a>
989
+
990
+ ### linkedList.forEach(callback, thisArg) ⇒ [<code>LinkedList</code>](#LinkedList)
991
+ Be able to run forEach on this LinkedList to iterate over the linkers.
992
+
993
+ **Kind**: instance method of [<code>LinkedList</code>](#LinkedList)
994
+ **Overrides**: [<code>forEach</code>](#Arrayable+forEach)
995
+
996
+ | Param | Type | Description |
997
+ | --- | --- | --- |
998
+ | callback | <code>forEachCallback</code> | The function to call for-each linker |
999
+ | thisArg | [<code>LinkedList</code>](#LinkedList) | Optional, 'this' reference |
1000
+
1001
+ <a name="LinkedList.fromArray"></a>
1002
+
1003
+ ### LinkedList.fromArray(values, linkerClass, [classType]) ⇒ [<code>LinkedList</code>](#LinkedList)
1004
+ Convert an array to a LinkedList.
1005
+
1006
+ **Kind**: static method of [<code>LinkedList</code>](#LinkedList)
1007
+
1008
+ | Param | Type | Default | Description |
1009
+ | --- | --- | --- | --- |
1010
+ | values | <code>Array</code> | | An array of values which will be converted to linkers in this linked-list |
1011
+ | linkerClass | <code>IsLinker</code> | | The class to use for each linker |
1012
+ | [classType] | [<code>IsArrayable.&lt;Linker&gt;</code>](#Linker) | <code>LinkedList</code> | Provide the type of IsArrayable to use. |
1013
+
1014
+ <a name="DoublyLinkedList"></a>
1015
+
1016
+ ## DoublyLinkedList [<code>LinkedList</code>](#LinkedList)
1017
+ DoublyLinkedList represents a collection stored as a LinkedList with prev and next references.
1018
+
1019
+ **Kind**: global class
1020
+ **Extends**: [<code>LinkedList</code>](#LinkedList)
1021
+
1022
+ * [DoublyLinkedList](#DoublyLinkedList) ⇐ [<code>LinkedList</code>](#LinkedList)
1023
+ * [new DoublyLinkedList()](#new_DoublyLinkedList_new)
1024
+ * _instance_
1025
+ * [.list](#DoublyLinkedList+list) ⇒ [<code>DoubleLinker</code>](#DoubleLinker)
1026
+ * [.first](#DoublyLinkedList+first) ⇒ [<code>DoubleLinker</code>](#DoubleLinker)
1027
+ * [.last](#DoublyLinkedList+last) ⇒ [<code>DoubleLinker</code>](#DoubleLinker)
1028
+ * [.length](#DoublyLinkedList+length) <code>number</code>
1029
+ * [.initialize(initialList)](#DoublyLinkedList+initialize) ⇒ [<code>DoublyLinkedList</code>](#DoublyLinkedList)
1030
+ * [.insertAfter(node, newNode)](#DoublyLinkedList+insertAfter) [<code>DoublyLinkedList</code>](#DoublyLinkedList)
1031
+ * [.insertBefore(node, newNode)](#DoublyLinkedList+insertBefore) ⇒ [<code>DoublyLinkedList</code>](#DoublyLinkedList)
1032
+ * [.append(node, after)](#DoublyLinkedList+append) ⇒ [<code>DoubleLinker</code>](#DoubleLinker)
1033
+ * [.prepend(node, before)](#DoublyLinkedList+prepend) [<code>DoubleLinker</code>](#DoubleLinker)
1034
+ * [.remove(node)](#DoublyLinkedList+remove) [<code>DoubleLinker</code>](#DoubleLinker)
1035
+ * [.reset()](#DoublyLinkedList+reset) [<code>DoubleLinker</code>](#DoubleLinker)
1036
+ * [.item(index)](#DoublyLinkedList+item) ⇒ [<code>DoubleLinker</code>](#DoubleLinker) \| <code>null</code>
1037
+ * [.forEach(callback, thisArg)](#DoublyLinkedList+forEach)
1038
+ * _static_
1039
+ * [.fromArray([values], [linkerClass], [classType])](#DoublyLinkedList.fromArray) ⇒ [<code>DoublyLinkedList</code>](#DoublyLinkedList)
1040
+
1041
+ <a name="new_DoublyLinkedList_new"></a>
1042
+
1043
+ ### new DoublyLinkedList()
1044
+ Create the new DoublyLinkedList instance.
1045
+
1046
+ <a name="DoublyLinkedList+list"></a>
1047
+
1048
+ ### doublyLinkedList.list [<code>DoubleLinker</code>](#DoubleLinker)
1049
+ Retrieve a copy of the innerList used.
1050
+
1051
+ **Kind**: instance property of [<code>DoublyLinkedList</code>](#DoublyLinkedList)
1052
+ **Overrides**: [<code>list</code>](#LinkedList+list)
1053
+ <a name="DoublyLinkedList+first"></a>
1054
+
1055
+ ### doublyLinkedList.first [<code>DoubleLinker</code>](#DoubleLinker)
1056
+ Retrieve the first DoubleLinker in the list.
1057
+
1058
+ **Kind**: instance property of [<code>DoublyLinkedList</code>](#DoublyLinkedList)
1059
+ **Overrides**: [<code>first</code>](#LinkedList+first)
1060
+ <a name="DoublyLinkedList+last"></a>
1061
+
1062
+ ### doublyLinkedList.last ⇒ [<code>DoubleLinker</code>](#DoubleLinker)
1063
+ Retrieve the last DoubleLinker in the list.
1064
+
1065
+ **Kind**: instance property of [<code>DoublyLinkedList</code>](#DoublyLinkedList)
1066
+ **Overrides**: [<code>last</code>](#LinkedList+last)
1067
+ <a name="DoublyLinkedList+length"></a>
1068
+
1069
+ ### doublyLinkedList.length ⇒ <code>number</code>
1070
+ Return the length of the list.
1071
+
1072
+ **Kind**: instance property of [<code>DoublyLinkedList</code>](#DoublyLinkedList)
1073
+ **Overrides**: [<code>length</code>](#LinkedList+length)
1074
+ <a name="DoublyLinkedList+initialize"></a>
1075
+
1076
+ ### doublyLinkedList.initialize(initialList) ⇒ [<code>DoublyLinkedList</code>](#DoublyLinkedList)
1077
+ Initialize the inner list, should only run once.
1078
+
1079
+ **Kind**: instance method of [<code>DoublyLinkedList</code>](#DoublyLinkedList)
1080
+ **Overrides**: [<code>initialize</code>](#LinkedList+initialize)
1081
+
1082
+ | Param | Type | Description |
1083
+ | --- | --- | --- |
1084
+ | initialList | [<code>DoubleLinker</code>](#DoubleLinker) | Give the list of double-linkers to start in this doubly linked-list. |
1085
+
1086
+ <a name="DoublyLinkedList+insertAfter"></a>
1087
+
1088
+ ### doublyLinkedList.insertAfter(node, newNode) ⇒ [<code>DoublyLinkedList</code>](#DoublyLinkedList)
1089
+ Insert a new node (or data) after a node.
1090
+
1091
+ **Kind**: instance method of [<code>DoublyLinkedList</code>](#DoublyLinkedList)
1092
+ **Overrides**: [<code>insertAfter</code>](#LinkedList+insertAfter)
1093
+
1094
+ | Param | Type | Description |
1095
+ | --- | --- | --- |
1096
+ | node | [<code>DoubleLinker</code>](#DoubleLinker) \| <code>\*</code> | The existing node as reference |
1097
+ | newNode | [<code>DoubleLinker</code>](#DoubleLinker) \| <code>\*</code> | The new node to go after the existing node |
1098
+
1099
+ <a name="DoublyLinkedList+insertBefore"></a>
1100
+
1101
+ ### doublyLinkedList.insertBefore(node, newNode) ⇒ [<code>DoublyLinkedList</code>](#DoublyLinkedList)
1102
+ Insert a new node (or data) before a node.
1103
+
1104
+ **Kind**: instance method of [<code>DoublyLinkedList</code>](#DoublyLinkedList)
1105
+ **Overrides**: [<code>insertBefore</code>](#LinkedList+insertBefore)
1106
+
1107
+ | Param | Type | Description |
1108
+ | --- | --- | --- |
1109
+ | node | [<code>DoubleLinker</code>](#DoubleLinker) \| <code>\*</code> | The existing node as reference |
1110
+ | newNode | [<code>DoubleLinker</code>](#DoubleLinker) \| <code>\*</code> | The new node to go before the existing node |
1111
+
1112
+ <a name="DoublyLinkedList+append"></a>
1113
+
1114
+ ### doublyLinkedList.append(node, after) ⇒ [<code>DoubleLinker</code>](#DoubleLinker)
1115
+ Add a node (or data) after the given (or last) node in the list.
1116
+
1117
+ **Kind**: instance method of [<code>DoublyLinkedList</code>](#DoublyLinkedList)
1118
+ **Overrides**: [<code>append</code>](#LinkedList+append)
1119
+
1120
+ | Param | Type | Description |
1121
+ | --- | --- | --- |
1122
+ | node | [<code>DoubleLinker</code>](#DoubleLinker) \| <code>\*</code> | The new node to add to the end of the list |
1123
+ | after | [<code>DoubleLinker</code>](#DoubleLinker) | The existing last node |
1124
+
1125
+ <a name="DoublyLinkedList+prepend"></a>
1126
+
1127
+ ### doublyLinkedList.prepend(node, before) ⇒ [<code>DoubleLinker</code>](#DoubleLinker)
1128
+ Add a node (or data) before the given (or first) node in the list.
1129
+
1130
+ **Kind**: instance method of [<code>DoublyLinkedList</code>](#DoublyLinkedList)
1131
+ **Overrides**: [<code>prepend</code>](#LinkedList+prepend)
1132
+
1133
+ | Param | Type | Description |
1134
+ | --- | --- | --- |
1135
+ | node | [<code>DoubleLinker</code>](#DoubleLinker) \| <code>\*</code> | The new node to add to the start of the list |
1136
+ | before | [<code>DoubleLinker</code>](#DoubleLinker) | The existing first node |
1137
+
1138
+ <a name="DoublyLinkedList+remove"></a>
1139
+
1140
+ ### doublyLinkedList.remove(node) ⇒ [<code>DoubleLinker</code>](#DoubleLinker)
1141
+ Remove a linker from this linked list.
1142
+
1143
+ **Kind**: instance method of [<code>DoublyLinkedList</code>](#DoublyLinkedList)
1144
+ **Overrides**: [<code>remove</code>](#LinkedList+remove)
1145
+
1146
+ | Param | Type | Description |
1147
+ | --- | --- | --- |
1148
+ | node | [<code>DoubleLinker</code>](#DoubleLinker) | The node we wish to remove (and it will be returned after removal) |
1149
+
1150
+ <a name="DoublyLinkedList+reset"></a>
1151
+
1152
+ ### doublyLinkedList.reset() ⇒ [<code>DoubleLinker</code>](#DoubleLinker)
1153
+ Refresh all references and return head reference.
1154
+
1155
+ **Kind**: instance method of [<code>DoublyLinkedList</code>](#DoublyLinkedList)
1156
+ <a name="DoublyLinkedList+item"></a>
1157
+
1158
+ ### doublyLinkedList.item(index) ⇒ [<code>DoubleLinker</code>](#DoubleLinker) \| <code>null</code>
1159
+ Retrieve a DoubleLinker item from this list by numeric index, otherwise return null.
1160
+
1161
+ **Kind**: instance method of [<code>DoublyLinkedList</code>](#DoublyLinkedList)
1162
+ **Overrides**: [<code>item</code>](#LinkedList+item)
1163
+
1164
+ | Param | Type | Description |
1165
+ | --- | --- | --- |
1166
+ | index | <code>number</code> | The integer number for retrieving a node by position. |
1167
+
1168
+ <a name="DoublyLinkedList+forEach"></a>
1169
+
1170
+ ### doublyLinkedList.forEach(callback, thisArg)
1171
+ Be able to run forEach on this DoublyLinkedList to iterate over the DoubleLinker Items.
1172
+
1173
+ **Kind**: instance method of [<code>DoublyLinkedList</code>](#DoublyLinkedList)
1174
+ **Overrides**: [<code>forEach</code>](#LinkedList+forEach)
1175
+
1176
+ | Param | Type | Description |
1177
+ | --- | --- | --- |
1178
+ | callback | <code>forEachCallback</code> | The function to call for-each double linker |
1179
+ | thisArg | [<code>DoublyLinkedList</code>](#DoublyLinkedList) | Optional, 'this' reference |
1180
+
1181
+ <a name="DoublyLinkedList.fromArray"></a>
1182
+
1183
+ ### DoublyLinkedList.fromArray([values], [linkerClass], [classType]) ⇒ [<code>DoublyLinkedList</code>](#DoublyLinkedList)
1184
+ Convert an array into a DoublyLinkedList instance, return the new instance.
1185
+
1186
+ **Kind**: static method of [<code>DoublyLinkedList</code>](#DoublyLinkedList)
1187
+
1188
+ | Param | Type | Default | Description |
1189
+ | --- | --- | --- | --- |
1190
+ | [values] | <code>Array</code> | <code>[]</code> | An array of values which will be converted to linkers in this doubly-linked-list |
1191
+ | [linkerClass] | <code>IsDoubleLinker</code> | <code>DoubleLinker</code> | The class to use for each linker |
1192
+ | [classType] | <code>IsArrayable.&lt;IsDoubleLinker&gt;</code> | <code>LinkedList</code> | Provide the type of IsArrayable to use. |
1193
+
1194
+ <a name="DoubleLinker"></a>
1195
+
1196
+ ## DoubleLinker [<code>Linker</code>](#Linker)
1197
+ DoubleLinker represents a node in a DoublyLinkedList which is chained by next and prev.
1198
+
1199
+ **Kind**: global class
1200
+ **Extends**: [<code>Linker</code>](#Linker)
1201
+
1202
+ * [DoubleLinker](#DoubleLinker) [<code>Linker</code>](#Linker)
1203
+ * [new DoubleLinker([nodeData])](#new_DoubleLinker_new)
1204
+ * [.make(linker, [classType])](#DoubleLinker.make) ⇒ [<code>DoubleLinker</code>](#DoubleLinker)
1205
+ * [.fromArray([values], [classType])](#DoubleLinker.fromArray) <code>Object</code>
1206
+
1207
+ <a name="new_DoubleLinker_new"></a>
1208
+
1209
+ ### new DoubleLinker([nodeData])
1210
+ Create the new DoubleLinker instance, provide the data and optionally the next and prev references.
1211
+
1212
+
1213
+ | Param | Type | Default | Description |
1214
+ | --- | --- | --- | --- |
1215
+ | [nodeData] | <code>Object</code> | <code>{}</code> | |
1216
+ | [nodeData.data] | <code>\*</code> | <code></code> | The data to be stored in this linker |
1217
+ | [nodeData.next] | [<code>DoubleLinker</code>](#DoubleLinker) \| <code>null</code> | <code></code> | The reference to the next linker if any |
1218
+ | [nodeData.prev] | [<code>DoubleLinker</code>](#DoubleLinker) \| <code>null</code> | <code></code> | The reference to the previous linker if any |
1219
+
1220
+ <a name="DoubleLinker.make"></a>
1221
+
1222
+ ### DoubleLinker.make(linker, [classType]) ⇒ [<code>DoubleLinker</code>](#DoubleLinker)
1223
+ Make a new DoubleLinker from the data given if it is not already a valid Linker.
1224
+
1225
+ **Kind**: static method of [<code>DoubleLinker</code>](#DoubleLinker)
1226
+
1227
+ | Param | Type | Default | Description |
1228
+ | --- | --- | --- | --- |
1229
+ | linker | [<code>DoubleLinker</code>](#DoubleLinker) \| <code>\*</code> | | Return a valid Linker instance from given data, or even an already valid one. |
1230
+ | [classType] | <code>IsDoubleLinker</code> | <code>DoubleLinker</code> | Provide the type of IsDoubleLinker to use. |
1231
+
1232
+ <a name="DoubleLinker.fromArray"></a>
1233
+
1234
+ ### DoubleLinker.fromArray([values], [classType]) ⇒ <code>Object</code>
1235
+ Convert an array into DoubleLinker instances, return the head and tail DoubleLinkers.
1236
+
1237
+ **Kind**: static method of [<code>DoubleLinker</code>](#DoubleLinker)
1238
+
1239
+ | Param | Type | Default | Description |
1240
+ | --- | --- | --- | --- |
1241
+ | [values] | <code>Array</code> | <code>[]</code> | Provide an array of data that will be converted to a chain of linkers. |
1242
+ | [classType] | <code>IsDoubleLinker</code> | <code>DoubleLinker</code> | Provide the type of IsDoubleLinker to use. |
1243
+
1244
+ <a name="Arrayable"></a>
1245
+
1246
+ ## Arrayable
1247
+ Arrayable represents a collection stored as an array.
1248
+
1249
+ **Kind**: global class
1250
+
1251
+ * [Arrayable](#Arrayable)
1252
+ * [new Arrayable()](#new_Arrayable_new)
1253
+ * _instance_
1254
+ * [.list](#Arrayable+list) ⇒ [<code>Array.&lt;ArrayElement&gt;</code>](#ArrayElement)
1255
+ * [.first](#Arrayable+first) [<code>ArrayElement</code>](#ArrayElement)
1256
+ * [.last](#Arrayable+last) [<code>ArrayElement</code>](#ArrayElement)
1257
+ * [.length](#Arrayable+length) <code>number</code>
1258
+ * [.initialize(initialList)](#Arrayable+initialize) ⇒ [<code>Arrayable</code>](#Arrayable)
1259
+ * [.insertAfter(node, newNode)](#Arrayable+insertAfter) ⇒ [<code>Arrayable</code>](#Arrayable)
1260
+ * [.insertBefore(node, newNode)](#Arrayable+insertBefore) ⇒ [<code>Arrayable</code>](#Arrayable)
1261
+ * [.append(node, after)](#Arrayable+append) ⇒ [<code>Arrayable</code>](#Arrayable)
1262
+ * [.prepend(node, before)](#Arrayable+prepend) [<code>Arrayable</code>](#Arrayable)
1263
+ * [.remove(node)](#Arrayable+remove) ⇒ [<code>ArrayElement</code>](#ArrayElement)
1264
+ * [.item(index)](#Arrayable+item) [<code>ArrayElement</code>](#ArrayElement) \| <code>null</code>
1265
+ * [.forEach(callback, thisArg)](#Arrayable+forEach) ⇒ [<code>Arrayable</code>](#Arrayable)
1266
+ * _static_
1267
+ * [.fromArray(values, [elementClass], [classType])](#Arrayable.fromArray) ⇒ [<code>Arrayable</code>](#Arrayable)
1268
+
1269
+ <a name="new_Arrayable_new"></a>
1270
+
1271
+ ### new Arrayable()
1272
+ Create the new Arrayable instance, configure the Arrayable class.
1273
+
1274
+ <a name="Arrayable+list"></a>
1275
+
1276
+ ### arrayable.list ⇒ [<code>Array.&lt;ArrayElement&gt;</code>](#ArrayElement)
1277
+ Retrieve a copy of the innerList used.
1278
+
1279
+ **Kind**: instance property of [<code>Arrayable</code>](#Arrayable)
1280
+ <a name="Arrayable+first"></a>
1281
+
1282
+ ### arrayable.first [<code>ArrayElement</code>](#ArrayElement)
1283
+ Retrieve the first Element from the Arrayable
1284
+
1285
+ **Kind**: instance property of [<code>Arrayable</code>](#Arrayable)
1286
+ <a name="Arrayable+last"></a>
1287
+
1288
+ ### arrayable.last [<code>ArrayElement</code>](#ArrayElement)
1289
+ Retrieve the last Element from the Arrayable
1290
+
1291
+ **Kind**: instance property of [<code>Arrayable</code>](#Arrayable)
1292
+ <a name="Arrayable+length"></a>
1293
+
1294
+ ### arrayable.length ⇒ <code>number</code>
1295
+ Return the length of the list.
1296
+
1297
+ **Kind**: instance property of [<code>Arrayable</code>](#Arrayable)
1298
+ <a name="Arrayable+initialize"></a>
1299
+
1300
+ ### arrayable.initialize(initialList) [<code>Arrayable</code>](#Arrayable)
1301
+ Initialize the inner list, should only run once.
1302
+
1303
+ **Kind**: instance method of [<code>Arrayable</code>](#Arrayable)
1304
+
1305
+ | Param | Type | Description |
1306
+ | --- | --- | --- |
1307
+ | initialList | [<code>Array.&lt;ArrayElement&gt;</code>](#ArrayElement) | Give the array of elements to start in this Arrayable. |
1308
+
1309
+ <a name="Arrayable+insertAfter"></a>
1310
+
1311
+ ### arrayable.insertAfter(node, newNode) [<code>Arrayable</code>](#Arrayable)
1312
+ Insert a new node (or data) after a node.
1313
+
1314
+ **Kind**: instance method of [<code>Arrayable</code>](#Arrayable)
1315
+
1316
+ | Param | Type | Description |
1317
+ | --- | --- | --- |
1318
+ | node | [<code>ArrayElement</code>](#ArrayElement) \| <code>\*</code> | The existing node as reference |
1319
+ | newNode | [<code>ArrayElement</code>](#ArrayElement) \| <code>\*</code> | The new node to go after the existing node |
1320
+
1321
+ <a name="Arrayable+insertBefore"></a>
1322
+
1323
+ ### arrayable.insertBefore(node, newNode) [<code>Arrayable</code>](#Arrayable)
1324
+ Insert a new node (or data) before a node.
1325
+
1326
+ **Kind**: instance method of [<code>Arrayable</code>](#Arrayable)
1327
+
1328
+ | Param | Type | Description |
1329
+ | --- | --- | --- |
1330
+ | node | [<code>ArrayElement</code>](#ArrayElement) \| <code>\*</code> | The existing node as reference |
1331
+ | newNode | [<code>ArrayElement</code>](#ArrayElement) \| <code>\*</code> | The new node to go before the existing node |
1332
+
1333
+ <a name="Arrayable+append"></a>
1334
+
1335
+ ### arrayable.append(node, after) ⇒ [<code>Arrayable</code>](#Arrayable)
1336
+ Add a node (or data) after the given (or last) node in the list.
1337
+
1338
+ **Kind**: instance method of [<code>Arrayable</code>](#Arrayable)
1339
+
1340
+ | Param | Type | Description |
1341
+ | --- | --- | --- |
1342
+ | node | [<code>ArrayElement</code>](#ArrayElement) \| <code>\*</code> | The new node to add to the end of the list |
1343
+ | after | [<code>ArrayElement</code>](#ArrayElement) | The existing last node |
1344
+
1345
+ <a name="Arrayable+prepend"></a>
1346
+
1347
+ ### arrayable.prepend(node, before) ⇒ [<code>Arrayable</code>](#Arrayable)
1348
+ Add a node (or data) before the given (or first) node in the list.
1349
+
1350
+ **Kind**: instance method of [<code>Arrayable</code>](#Arrayable)
1351
+
1352
+ | Param | Type | Description |
1353
+ | --- | --- | --- |
1354
+ | node | [<code>ArrayElement</code>](#ArrayElement) \| <code>\*</code> | The new node to add to the start of the list |
1355
+ | before | [<code>ArrayElement</code>](#ArrayElement) | The existing first node |
1356
+
1357
+ <a name="Arrayable+remove"></a>
1358
+
1359
+ ### arrayable.remove(node) ⇒ [<code>ArrayElement</code>](#ArrayElement)
1360
+ Remove an element from this arrayable.
1361
+
1362
+ **Kind**: instance method of [<code>Arrayable</code>](#Arrayable)
1363
+
1364
+ | Param | Type | Description |
1365
+ | --- | --- | --- |
1366
+ | node | [<code>ArrayElement</code>](#ArrayElement) | The node we wish to remove (and it will be returned after removal) |
1367
+
1368
+ <a name="Arrayable+item"></a>
1369
+
1370
+ ### arrayable.item(index) [<code>ArrayElement</code>](#ArrayElement) \| <code>null</code>
1371
+ Retrieve an ArrayElement item from this list by numeric index, otherwise return null.
1372
+
1373
+ **Kind**: instance method of [<code>Arrayable</code>](#Arrayable)
1374
+
1375
+ | Param | Type | Description |
1376
+ | --- | --- | --- |
1377
+ | index | <code>number</code> | The integer number for retrieving a node by position. |
1378
+
1379
+ <a name="Arrayable+forEach"></a>
1380
+
1381
+ ### arrayable.forEach(callback, thisArg) ⇒ [<code>Arrayable</code>](#Arrayable)
1382
+ Be able to run forEach on this Arrayable to iterate over the elements.
1383
+
1384
+ **Kind**: instance method of [<code>Arrayable</code>](#Arrayable)
1385
+
1386
+ | Param | Type | Description |
1387
+ | --- | --- | --- |
1388
+ | callback | <code>forEachCallback</code> | The function to call for-each element |
1389
+ | thisArg | [<code>Arrayable</code>](#Arrayable) | Optional, 'this' reference |
1390
+
1391
+ <a name="Arrayable.fromArray"></a>
1392
+
1393
+ ### Arrayable.fromArray(values, [elementClass], [classType]) ⇒ [<code>Arrayable</code>](#Arrayable)
1394
+ Convert an array to an Arrayable.
1395
+
1396
+ **Kind**: static method of [<code>Arrayable</code>](#Arrayable)
1397
+
1398
+ | Param | Type | Default | Description |
1399
+ | --- | --- | --- | --- |
1400
+ | values | <code>Array</code> | | An array of values which will be converted to elements in this arrayable |
1401
+ | [elementClass] | <code>IsElement</code> | <code>ArrayElement</code> | The class to use for each element |
1402
+ | [classType] | [<code>IsArrayable.&lt;ArrayElement&gt;</code>](#ArrayElement) | <code>Arrayable</code> | Provide the type of IsArrayable to use. |
1403
+
1404
+ <a name="ArrayElement"></a>
1405
+
1406
+ ## ArrayElement
1407
+ Element represents a node in an Arrayable.
1408
+
1409
+ **Kind**: global class
1410
+
1411
+ * [ArrayElement](#ArrayElement)
1412
+ * [new ArrayElement([data])](#new_ArrayElement_new)
1413
+ * [.make(element, [classType])](#ArrayElement.make) ⇒ [<code>ArrayElement</code>](#ArrayElement)
1414
+ * [.fromArray([values], [classType])](#ArrayElement.fromArray) ⇒ <code>Object</code>
1415
+
1416
+ <a name="new_ArrayElement_new"></a>
1417
+
1418
+ ### new ArrayElement([data])
1419
+ Create the new Element instance, provide the data and optionally configure the type of Element.
1420
+
1421
+
1422
+ | Param | Type | Default | Description |
1423
+ | --- | --- | --- | --- |
1424
+ | [data] | <code>\*</code> | <code></code> | The data to be stored in this element. |
1425
+
1426
+ <a name="ArrayElement.make"></a>
1427
+
1428
+ ### ArrayElement.make(element, [classType]) ⇒ [<code>ArrayElement</code>](#ArrayElement)
1429
+ Make a new Element from the data given if it is not already a valid Element.
1430
+
1431
+ **Kind**: static method of [<code>ArrayElement</code>](#ArrayElement)
1432
+
1433
+ | Param | Type | Default | Description |
1434
+ | --- | --- | --- | --- |
1435
+ | element | [<code>ArrayElement</code>](#ArrayElement) \| <code>\*</code> | | Return a valid ArrayElement instance from given data, or even an already valid one. |
1436
+ | [classType] | <code>IsElement</code> | <code>ArrayElement</code> | Provide the type of IsElement to use. |
1437
+
1438
+ <a name="ArrayElement.fromArray"></a>
1439
+
1440
+ ### ArrayElement.fromArray([values], [classType]) <code>Object</code>
1441
+ Convert an array into Element instances, return the head and tail Elements.
1442
+
1443
+ **Kind**: static method of [<code>ArrayElement</code>](#ArrayElement)
1444
+
1445
+ | Param | Type | Default | Description |
1446
+ | --- | --- | --- | --- |
1447
+ | [values] | <code>Array.&lt;IsElement&gt;</code> | <code>[]</code> | Provide an array of data that will be converted to array of elements. |
1448
+ | [classType] | <code>IsElement</code> | <code>ArrayElement</code> | Provide the type of IsElement to use. |
1449
+
1450
+ <a name="services"></a>
1451
+
1452
+ ## services
1453
+ List helpful functions when dealing with collections.
1454
+
1455
+ **Kind**: global constant
1456
+ <a name="recipes"></a>
1457
+
1458
+ ## recipes
1459
+ List of class declarations that can be used to specify attributes for a style of object / class.
1460
+
1461
+ **Kind**: global constant
1462
+ <a name="parseTreeNext"></a>
1463
+
1464
+ ## parseTreeNext(treeNode) ⇒ <code>IsTreeNode</code> \| <code>null</code>
1465
+ Be able to parse over every node in a tree.
1466
+ 1. Start at root (get root parent)
1467
+ 2. Get first child (repeat until no children)
1468
+ 3. Check next child
1469
+ 4. Repeat 2
1470
+ 5. Repeat 3
1471
+ 6. If no next child, return to parent and repeat 3
1472
+ 7. Stop at root (next is null and parent is null
1473
+
1474
+ **Kind**: global function
1475
+
1476
+ | Param | Type | Description |
1477
+ | --- | --- | --- |
1478
+ | treeNode | <code>IsTreeNode</code> | Provide a node in a tree and get the next node (left-first approach) |
1479
+
1480
+ <a name="parseTree"></a>
1481
+
1482
+ ## parseTree(tree, callback) ⇒ <code>IsArrayable.&lt;IsTreeNode&gt;</code>
1483
+ Loop over all the nodes in a tree starting from left and apply a callback for each
1484
+
1485
+ **Kind**: global function
1486
+
1487
+ | Param | Type |
1488
+ | --- | --- |
1489
+ | tree | <code>IsArrayable.&lt;IsTreeNode&gt;</code> |
1490
+ | callback | <code>forEachCallback</code> |
1491
+