linked-list-typed 1.53.5 → 1.53.6

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.
@@ -121,34 +121,17 @@ export class SinglyLinkedList<E = any, R = any> extends IterableElementBase<E, R
121
121
  return this._size;
122
122
  }
123
123
 
124
- /**
125
- * Time Complexity: O(n)
126
- * Space Complexity: O(n)
127
- *
128
- * The `fromArray` function creates a new SinglyLinkedList instance and populates it with the elements from the given
129
- * array.
130
- * @param {E[]} data - The `data` parameter is an array of elements of type `E`.
131
- * @returns The `fromArray` function returns a `SinglyLinkedList` object.
132
- */
133
- static fromArray<E>(data: E[]) {
134
- const singlyLinkedList = new SinglyLinkedList<E>();
135
- for (const item of data) {
136
- singlyLinkedList.push(item);
137
- }
138
- return singlyLinkedList;
139
- }
140
-
141
124
  /**
142
125
  * Time Complexity: O(1)
143
126
  * Space Complexity: O(1)
144
127
  *
145
- * The push function adds a new element to the end of a singly linked list.
146
- * @param {E} element - The "element" parameter represents the value of the element that you want to
147
- * add to the linked list.
148
- * @returns The `push` method is returning a boolean value, `true`.
128
+ * The `push` function adds a new element or node to the end of a singly linked list.
129
+ * @param {E | SinglyLinkedListNode<E>} elementOrNode - The `elementOrNode` parameter in the `push`
130
+ * method can accept either an element of type `E` or a `SinglyLinkedListNode<E>` object.
131
+ * @returns The `push` method is returning a boolean value, specifically `true`.
149
132
  */
150
- push(element: E): boolean {
151
- const newNode = new SinglyLinkedListNode(element);
133
+ push(elementOrNode: E | SinglyLinkedListNode<E>): boolean {
134
+ const newNode = this._ensureNode(elementOrNode);
152
135
  if (!this.head) {
153
136
  this._head = newNode;
154
137
  this._tail = newNode;
@@ -208,13 +191,15 @@ export class SinglyLinkedList<E = any, R = any> extends IterableElementBase<E, R
208
191
  * Time Complexity: O(1)
209
192
  * Space Complexity: O(1)
210
193
  *
211
- * The unshift function adds a new element to the beginning of a singly linked list.
212
- * @param {E} element - The "element" parameter represents the value of the element that you want to
213
- * add to the beginning of the singly linked list.
214
- * @returns The `unshift` method is returning a boolean value, `true`.
215
- */
216
- unshift(element: E): boolean {
217
- const newNode = new SinglyLinkedListNode(element);
194
+ * The unshift function adds a new element or node to the beginning of a singly linked list in
195
+ * TypeScript.
196
+ * @param {E | SinglyLinkedListNode<E>} elementOrNode - The `elementOrNode` parameter in the
197
+ * `unshift` method can be either an element of type `E` or a `SinglyLinkedListNode` containing an
198
+ * element of type `E`.
199
+ * @returns The `unshift` method is returning a boolean value, specifically `true`.
200
+ */
201
+ unshift(elementOrNode: E | SinglyLinkedListNode<E>): boolean {
202
+ const newNode = this._ensureNode(elementOrNode);
218
203
  if (!this.head) {
219
204
  this._head = newNode;
220
205
  this._tail = newNode;
@@ -226,6 +211,30 @@ export class SinglyLinkedList<E = any, R = any> extends IterableElementBase<E, R
226
211
  return true;
227
212
  }
228
213
 
214
+ /**
215
+ * Time Complexity: O(n)
216
+ * Space Complexity: O(1)
217
+ *
218
+ * This function searches for a specific element in a singly linked list based on a given node or
219
+ * predicate.
220
+ * @param {E | SinglyLinkedListNode<E> | ((node: SinglyLinkedListNode<E>) => boolean)} elementNodeOrPredicate
221
+ * elementNodeOrPredicate - The `elementNodeOrPredicate` parameter in the `get` method can be one of
222
+ * the following types:
223
+ * @returns The `get` method returns the value of the first node in the singly linked list that
224
+ * satisfies the provided predicate function. If no such node is found, it returns `undefined`.
225
+ */
226
+ get(
227
+ elementNodeOrPredicate: E | SinglyLinkedListNode<E> | ((node: SinglyLinkedListNode<E>) => boolean)
228
+ ): E | undefined {
229
+ const predicate = this._ensurePredicate(elementNodeOrPredicate);
230
+ let current = this.head;
231
+ while (current) {
232
+ if (predicate(current)) return current.value;
233
+ current = current.next;
234
+ }
235
+ return undefined;
236
+ }
237
+
229
238
  /**
230
239
  * Time Complexity: O(n)
231
240
  * Space Complexity: O(1)
@@ -245,6 +254,25 @@ export class SinglyLinkedList<E = any, R = any> extends IterableElementBase<E, R
245
254
  return current!.value;
246
255
  }
247
256
 
257
+ /**
258
+ * Time Complexity: O(1)
259
+ * Space Complexity: O(1)
260
+ *
261
+ * The function `isNode` in TypeScript checks if the input is an instance of `SinglyLinkedListNode`.
262
+ * @param {E | SinglyLinkedListNode<E> | ((node: SinglyLinkedListNode<E>) => boolean)} elementNodeOrPredicate
263
+ * elementNodeOrPredicate - The `elementNodeOrPredicate` parameter in the `isNode` function can be
264
+ * one of the following types:
265
+ * @returns The `isNode` function is checking if the `elementNodeOrPredicate` parameter is an
266
+ * instance of `SinglyLinkedListNode<E>`. If it is, the function returns `true`, indicating that the
267
+ * parameter is a `SinglyLinkedListNode<E>`. If it is not an instance of `SinglyLinkedListNode<E>`,
268
+ * the function returns `false`.
269
+ */
270
+ isNode(
271
+ elementNodeOrPredicate: E | SinglyLinkedListNode<E> | ((node: SinglyLinkedListNode<E>) => boolean)
272
+ ): elementNodeOrPredicate is SinglyLinkedListNode<E> {
273
+ return elementNodeOrPredicate instanceof SinglyLinkedListNode;
274
+ }
275
+
248
276
  /**
249
277
  * Time Complexity: O(n)
250
278
  * Space Complexity: O(1)
@@ -296,18 +324,18 @@ export class SinglyLinkedList<E = any, R = any> extends IterableElementBase<E, R
296
324
  * Space Complexity: O(1)
297
325
  *
298
326
  * The delete function removes a node with a specific value from a singly linked list.
299
- * @param {E | SinglyLinkedListNode<E>} valueOrNode - The `valueOrNode` parameter can accept either a value of type `E`
327
+ * @param {E | SinglyLinkedListNode<E>} elementOrNode - The `elementOrNode` parameter can accept either a value of type `E`
300
328
  * or a `SinglyLinkedListNode<E>` object.
301
329
  * @returns The `delete` method returns a boolean value. It returns `true` if the value or node is found and
302
330
  * successfully deleted from the linked list, and `false` if the value or node is not found in the linked list.
303
331
  */
304
- delete(valueOrNode: E | SinglyLinkedListNode<E> | undefined): boolean {
305
- if (valueOrNode === undefined) return false;
332
+ delete(elementOrNode: E | SinglyLinkedListNode<E> | undefined): boolean {
333
+ if (elementOrNode === undefined) return false;
306
334
  let value: E;
307
- if (valueOrNode instanceof SinglyLinkedListNode) {
308
- value = valueOrNode.value;
335
+ if (elementOrNode instanceof SinglyLinkedListNode) {
336
+ value = elementOrNode.value;
309
337
  } else {
310
- value = valueOrNode;
338
+ value = elementOrNode;
311
339
  }
312
340
  let current = this.head,
313
341
  prev = undefined;
@@ -339,26 +367,30 @@ export class SinglyLinkedList<E = any, R = any> extends IterableElementBase<E, R
339
367
  * Time Complexity: O(n)
340
368
  * Space Complexity: O(1)
341
369
  *
342
- * The `addAt` function inserts a value at a specified index in a singly linked list.
343
- * @param {number} index - The index parameter represents the position at which the new value should be inserted in the
344
- * linked list. It is of type number.
345
- * @param {E} value - The `value` parameter represents the value that you want to insert into the linked list at the
346
- * specified index.
347
- * @returns The `insert` method returns a boolean value. It returns `true` if the insertion is successful, and `false`
348
- * if the index is out of bounds.
349
- */
350
- addAt(index: number, value: E): boolean {
370
+ * The `addAt` function inserts a new element or node at a specified index in a singly linked list.
371
+ * @param {number} index - The `index` parameter represents the position at which you want to add a
372
+ * new element or node in the linked list. It is a number that indicates the index where the new
373
+ * element or node should be inserted.
374
+ * @param {E | SinglyLinkedListNode<E>} newElementOrNode - The `newElementOrNode` parameter in the
375
+ * `addAt` method can be either a value of type `E` or a `SinglyLinkedListNode<E>` object. This
376
+ * parameter represents the element or node that you want to add to the linked list at the specified
377
+ * index.
378
+ * @returns The `addAt` method returns a boolean value - `true` if the element or node was
379
+ * successfully added at the specified index, and `false` if the index is out of bounds.
380
+ */
381
+ addAt(index: number, newElementOrNode: E | SinglyLinkedListNode<E>): boolean {
351
382
  if (index < 0 || index > this._size) return false;
383
+
352
384
  if (index === 0) {
353
- this.unshift(value);
385
+ this.unshift(newElementOrNode);
354
386
  return true;
355
387
  }
356
388
  if (index === this._size) {
357
- this.push(value);
389
+ this.push(newElementOrNode);
358
390
  return true;
359
391
  }
360
392
 
361
- const newNode = new SinglyLinkedListNode(value);
393
+ const newNode = this._ensureNode(newElementOrNode);
362
394
  const prevNode = this.getNodeAt(index - 1);
363
395
  newNode.next = prevNode!.next;
364
396
  prevNode!.next = newNode;
@@ -430,17 +462,22 @@ export class SinglyLinkedList<E = any, R = any> extends IterableElementBase<E, R
430
462
  * Time Complexity: O(n)
431
463
  * Space Complexity: O(1)
432
464
  *
433
- * The `indexOf` function returns the index of the first occurrence of a given value in a linked list.
434
- * @param {E} value - The value parameter is the value that you want to find the index of in the linked list.
435
- * @returns The method is returning the index of the first occurrence of the specified value in the linked list. If the
436
- * value is not found, it returns -1.
437
- */
438
- indexOf(value: E): number {
465
+ * The `indexOf` function in TypeScript searches for a specific element or node in a singly linked
466
+ * list and returns its index if found.
467
+ * @param {E | SinglyLinkedListNode<E> | ((node: SinglyLinkedListNode<E>) => boolean)} elementNodeOrPredicate
468
+ * elementNodeOrPredicate - The `elementNodeOrPredicate` parameter in the `indexOf` method can be one
469
+ * of the following types:
470
+ * @returns The `indexOf` method returns the index of the first occurrence of the element that
471
+ * matches the provided predicate in the singly linked list. If no matching element is found, it
472
+ * returns -1.
473
+ */
474
+ indexOf(elementNodeOrPredicate: E | SinglyLinkedListNode<E> | ((node: SinglyLinkedListNode<E>) => boolean)): number {
475
+ const predicate = this._ensurePredicate(elementNodeOrPredicate);
439
476
  let index = 0;
440
477
  let current = this.head;
441
478
 
442
479
  while (current) {
443
- if (current.value === value) {
480
+ if (predicate(current)) {
444
481
  return index;
445
482
  }
446
483
  index++;
@@ -454,17 +491,24 @@ export class SinglyLinkedList<E = any, R = any> extends IterableElementBase<E, R
454
491
  * Time Complexity: O(n)
455
492
  * Space Complexity: O(1)
456
493
  *
457
- * The function finds a node in a singly linked list by its value and returns the node if found, otherwise returns
458
- * undefined.
459
- * @param {E} value - The value parameter is the value that we want to search for in the linked list.
460
- * @returns a `SinglyLinkedListNode<E>` if a node with the specified value is found in the linked list. If no node with
461
- * the specified value is found, the function returns `undefined`.
462
- */
463
- getNode(value: E): SinglyLinkedListNode<E> | undefined {
494
+ * The function `getNode` in TypeScript searches for a node in a singly linked list based on a given
495
+ * element, node, or predicate.
496
+ * @param {E | SinglyLinkedListNode<E> | ((node: SinglyLinkedListNode<E>) => boolean) | undefined} elementNodeOrPredicate
497
+ * elementNodeOrPredicate - The `elementNodeOrPredicate` parameter in the `getNode` method can be one
498
+ * of the following types:
499
+ * @returns The `getNode` method returns either a `SinglyLinkedListNode<E>` if a matching node is
500
+ * found based on the provided predicate, or it returns `undefined` if no matching node is found or
501
+ * if the input parameter is `undefined`.
502
+ */
503
+ getNode(
504
+ elementNodeOrPredicate: E | SinglyLinkedListNode<E> | ((node: SinglyLinkedListNode<E>) => boolean) | undefined
505
+ ): SinglyLinkedListNode<E> | undefined {
506
+ if (elementNodeOrPredicate === undefined) return;
507
+ const predicate = this._ensurePredicate(elementNodeOrPredicate);
464
508
  let current = this.head;
465
509
 
466
510
  while (current) {
467
- if (current.value === value) {
511
+ if (predicate(current)) {
468
512
  return current;
469
513
  }
470
514
  current = current.next;
@@ -477,31 +521,39 @@ export class SinglyLinkedList<E = any, R = any> extends IterableElementBase<E, R
477
521
  * Time Complexity: O(n)
478
522
  * Space Complexity: O(1)
479
523
  *
480
- * The `addBefore` function inserts a new value before an existing value in a singly linked list.
481
- * @param {E | SinglyLinkedListNode<E>} existingValueOrNode - The existing value or node that you want to insert the
482
- * new value before. It can be either the value itself or a node containing the value in the linked list.
483
- * @param {E} newValue - The `newValue` parameter represents the value that you want to insert into the linked list.
484
- * @returns The method `addBefore` returns a boolean value. It returns `true` if the new value was successfully
485
- * inserted before the existing value, and `false` otherwise.
486
- */
487
- addBefore(existingValueOrNode: E | SinglyLinkedListNode<E>, newValue: E): boolean {
524
+ * The function `addBefore` in TypeScript adds a new element or node before an existing element or
525
+ * node in a singly linked list.
526
+ * @param {E | SinglyLinkedListNode<E>} existingElementOrNode - existingElementOrNode represents the
527
+ * element or node in the linked list before which you want to add a new element or node.
528
+ * @param {E | SinglyLinkedListNode<E>} newElementOrNode - The `newElementOrNode` parameter in the
529
+ * `addBefore` method represents the element or node that you want to insert before the existing
530
+ * element or node in the linked list. This new element can be of type `E` or a
531
+ * `SinglyLinkedListNode<E>`.
532
+ * @returns The `addBefore` method returns a boolean value - `true` if the new element or node was
533
+ * successfully added before the existing element or node, and `false` if the operation was
534
+ * unsuccessful.
535
+ */
536
+ addBefore(
537
+ existingElementOrNode: E | SinglyLinkedListNode<E>,
538
+ newElementOrNode: E | SinglyLinkedListNode<E>
539
+ ): boolean {
488
540
  if (!this.head) return false;
489
541
 
490
542
  let existingValue: E;
491
- if (existingValueOrNode instanceof SinglyLinkedListNode) {
492
- existingValue = existingValueOrNode.value;
543
+ if (this.isNode(existingElementOrNode)) {
544
+ existingValue = existingElementOrNode.value;
493
545
  } else {
494
- existingValue = existingValueOrNode;
546
+ existingValue = existingElementOrNode;
495
547
  }
496
548
  if (this.head.value === existingValue) {
497
- this.unshift(newValue);
549
+ this.unshift(newElementOrNode);
498
550
  return true;
499
551
  }
500
552
 
501
553
  let current = this.head;
502
554
  while (current.next) {
503
555
  if (current.next.value === existingValue) {
504
- const newNode = new SinglyLinkedListNode(newValue);
556
+ const newNode = this._ensureNode(newElementOrNode);
505
557
  newNode.next = current.next;
506
558
  current.next = newNode;
507
559
  this._size++;
@@ -517,24 +569,23 @@ export class SinglyLinkedList<E = any, R = any> extends IterableElementBase<E, R
517
569
  * Time Complexity: O(n)
518
570
  * Space Complexity: O(1)
519
571
  *
520
- * The `addAfter` function inserts a new node with a given value after an existing node in a singly linked list.
521
- * @param {E | SinglyLinkedListNode<E>} existingValueOrNode - The existing value or node in the linked list after which
522
- * the new value will be inserted. It can be either the value of the existing node or the existing node itself.
523
- * @param {E} newValue - The value that you want to insert into the linked list after the existing value or node.
524
- * @returns The method returns a boolean value. It returns true if the new value was successfully inserted after the
525
- * existing value or node, and false if the existing value or node was not found in the linked list.
526
- */
527
- addAfter(existingValueOrNode: E | SinglyLinkedListNode<E>, newValue: E): boolean {
528
- let existingNode: E | SinglyLinkedListNode<E> | undefined;
529
-
530
- if (existingValueOrNode instanceof SinglyLinkedListNode) {
531
- existingNode = existingValueOrNode;
532
- } else {
533
- existingNode = this.getNode(existingValueOrNode);
534
- }
572
+ * The `addAfter` function in TypeScript adds a new element or node after an existing element or node
573
+ * in a singly linked list.
574
+ * @param {E | SinglyLinkedListNode<E>} existingElementOrNode - existingElementOrNode can be either
575
+ * an element of type E or a SinglyLinkedListNode of type E.
576
+ * @param {E | SinglyLinkedListNode<E>} newElementOrNode - The `newElementOrNode` parameter in the
577
+ * `addAfter` method represents the element or node that you want to add after the existing element
578
+ * or node in a singly linked list. This parameter can be either the value of the new element or a
579
+ * reference to a `SinglyLinkedListNode` containing
580
+ * @returns The `addAfter` method returns a boolean value - `true` if the new element or node was
581
+ * successfully added after the existing element or node, and `false` if the existing element or node
582
+ * was not found.
583
+ */
584
+ addAfter(existingElementOrNode: E | SinglyLinkedListNode<E>, newElementOrNode: E | SinglyLinkedListNode<E>): boolean {
585
+ const existingNode: SinglyLinkedListNode<E> | undefined = this.getNode(existingElementOrNode);
535
586
 
536
587
  if (existingNode) {
537
- const newNode = new SinglyLinkedListNode(newValue);
588
+ const newNode = this._ensureNode(newElementOrNode);
538
589
  newNode.next = existingNode.next;
539
590
  existingNode.next = newNode;
540
591
  if (existingNode === this.tail) {
@@ -551,16 +602,20 @@ export class SinglyLinkedList<E = any, R = any> extends IterableElementBase<E, R
551
602
  * Time Complexity: O(n)
552
603
  * Space Complexity: O(1)
553
604
  *
554
- * The function counts the number of occurrences of a given value in a linked list.
555
- * @param {E} value - The value parameter is the value that you want to count the occurrences of in the linked list.
556
- * @returns The count of occurrences of the given value in the linked list.
557
- */
558
- countOccurrences(value: E): number {
605
+ * The function `countOccurrences` iterates through a singly linked list and counts the occurrences
606
+ * of a specified element or nodes that satisfy a given predicate.
607
+ * @param {E | SinglyLinkedListNode<E> | ((node: SinglyLinkedListNode<E>) => boolean)} elementOrNode
608
+ * - The `elementOrNode` parameter in the `countOccurrences` method can accept three types of values:
609
+ * @returns The `countOccurrences` method returns the number of occurrences of the specified element,
610
+ * node, or predicate function in the singly linked list.
611
+ */
612
+ countOccurrences(elementOrNode: E | SinglyLinkedListNode<E> | ((node: SinglyLinkedListNode<E>) => boolean)): number {
613
+ const predicate = this._ensurePredicate(elementOrNode);
559
614
  let count = 0;
560
615
  let current = this.head;
561
616
 
562
617
  while (current) {
563
- if (current.value === value) {
618
+ if (predicate(current)) {
564
619
  count++;
565
620
  }
566
621
  current = current.next;
@@ -657,4 +712,70 @@ export class SinglyLinkedList<E = any, R = any> extends IterableElementBase<E, R
657
712
  current = current.next;
658
713
  }
659
714
  }
715
+
716
+ /**
717
+ * Time Complexity: O(n)
718
+ * Space Complexity: O(n)
719
+ *
720
+ * The `fromArray` function creates a new SinglyLinkedList instance and populates it with the elements from the given
721
+ * array.
722
+ * @param {E[]} data - The `data` parameter is an array of elements of type `E`.
723
+ * @returns The `fromArray` function returns a `SinglyLinkedList` object.
724
+ */
725
+ static fromArray<E>(data: E[]) {
726
+ const singlyLinkedList = new SinglyLinkedList<E>();
727
+ for (const item of data) {
728
+ singlyLinkedList.push(item);
729
+ }
730
+ return singlyLinkedList;
731
+ }
732
+
733
+ /**
734
+ * The _isPredicate function in TypeScript checks if the input is a function that takes a
735
+ * SinglyLinkedListNode as an argument and returns a boolean.
736
+ * @param {E | SinglyLinkedListNode<E> | ((node: SinglyLinkedListNode<E>) => boolean)} elementNodeOrPredicate
737
+ * elementNodeOrPredicate - The `elementNodeOrPredicate` parameter can be one of the following types:
738
+ * @returns The _isPredicate method is returning a boolean value based on whether the
739
+ * elementNodeOrPredicate parameter is a function or not. If the elementNodeOrPredicate is a
740
+ * function, the method will return true, indicating that it is a predicate function. If it is not a
741
+ * function, the method will return false.
742
+ */
743
+ protected _isPredicate(
744
+ elementNodeOrPredicate: E | SinglyLinkedListNode<E> | ((node: SinglyLinkedListNode<E>) => boolean)
745
+ ): elementNodeOrPredicate is (node: SinglyLinkedListNode<E>) => boolean {
746
+ return typeof elementNodeOrPredicate === 'function';
747
+ }
748
+
749
+ /**
750
+ * The function `_ensureNode` ensures that the input is a valid node and returns it, creating a new
751
+ * node if necessary.
752
+ * @param {E | SinglyLinkedListNode<E>} elementOrNode - The `elementOrNode` parameter can be either
753
+ * an element of type `E` or a `SinglyLinkedListNode` containing an element of type `E`.
754
+ * @returns A SinglyLinkedListNode<E> object is being returned.
755
+ */
756
+ protected _ensureNode(elementOrNode: E | SinglyLinkedListNode<E>) {
757
+ if (this.isNode(elementOrNode)) return elementOrNode;
758
+
759
+ return new SinglyLinkedListNode<E>(elementOrNode);
760
+ }
761
+
762
+ /**
763
+ * The function `_ensurePredicate` in TypeScript ensures that the input is either a node, a predicate
764
+ * function, or a value to compare with the node's value.
765
+ * @param {E | SinglyLinkedListNode<E> | ((node: SinglyLinkedListNode<E>) => boolean)} elementNodeOrPredicate
766
+ * elementNodeOrPredicate - The `elementNodeOrPredicate` parameter can be one of the following types:
767
+ * @returns A function is being returned. If the input `elementNodeOrPredicate` is already a node, a
768
+ * function is returned that checks if a given node is equal to the input node. If the input is a
769
+ * predicate function, it is returned as is. If the input is neither a node nor a predicate function,
770
+ * a function is returned that checks if a given node's value is equal to the input
771
+ */
772
+ protected _ensurePredicate(
773
+ elementNodeOrPredicate: E | SinglyLinkedListNode<E> | ((node: SinglyLinkedListNode<E>) => boolean)
774
+ ) {
775
+ if (this.isNode(elementNodeOrPredicate)) return (node: SinglyLinkedListNode<E>) => node === elementNodeOrPredicate;
776
+
777
+ if (this._isPredicate(elementNodeOrPredicate)) return elementNodeOrPredicate;
778
+
779
+ return (node: SinglyLinkedListNode<E>) => node.value === elementNodeOrPredicate;
780
+ }
660
781
  }
package/src/index.ts CHANGED
@@ -5,7 +5,6 @@
5
5
  * @copyright Copyright (c) 2022 Tyler Zeng <zrwusa@gmail.com>
6
6
  * @license MIT License
7
7
  */
8
- // export { DoublyLinkedListNode, DoublyLinkedList, SinglyLinkedListNode, SinglyLinkedList } from 'data-structure-typed';
9
8
  export * from './data-structures/linked-list';
10
9
  export * from './types/data-structures/linked-list';
11
10
  export * from './types/common';