bard-legends-framework 0.7.42 → 0.7.43

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.
@@ -15,4 +15,9 @@ export declare class Queue<T> {
15
15
  * @returns The value of the first element in the queue without removing it
16
16
  */
17
17
  peek(): T | undefined;
18
+ /**
19
+ * @param deepCopyItem An optional function that takes an item and returns a deep copy of it
20
+ * @returns The duplicated queue
21
+ */
22
+ duplicate(deepCopyItem?: (item: T) => T): Queue<T>;
18
23
  }
@@ -56,6 +56,20 @@ class Queue {
56
56
  peek() {
57
57
  return this.start?.value;
58
58
  }
59
+ /**
60
+ * @param deepCopyItem An optional function that takes an item and returns a deep copy of it
61
+ * @returns The duplicated queue
62
+ */
63
+ duplicate(deepCopyItem) {
64
+ let newQueue = new Queue();
65
+ let current = this.start;
66
+ while (current) {
67
+ let value = deepCopyItem ? deepCopyItem(current.value) : current.value;
68
+ newQueue.add(value);
69
+ current = current.next;
70
+ }
71
+ return newQueue;
72
+ }
59
73
  }
60
74
  exports.Queue = Queue;
61
75
  //# sourceMappingURL=queue.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"queue.js","sourceRoot":"","sources":["../../../../../src/utilities/libraries/data-structures/queue/queue.ts"],"names":[],"mappings":";;;AAAA,MAAM,oBAAoB;IAKxB,YAAY,KAAQ;QAClB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;CACF;AAED,MAAa,KAAK;IAIhB,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC;IAClC,CAAC;IAED,YAAY,SAAyB;QACnC,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,iBAAiB,GAAG,IAAI,oBAAoB,CAAC,SAAS,CAAC,CAAC;YAC5D,IAAI,CAAC,KAAK,GAAG,iBAAiB,CAAC;YAC/B,IAAI,CAAC,GAAG,GAAG,iBAAiB,CAAC;QAC/B,CAAC;IACH,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,GAAG,IAAS;QACd,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACnB,IAAI,OAAO,GAAG,IAAI,oBAAoB,CAAC,KAAK,CAAC,CAAC;YAC9C,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC;gBAC5B,IAAI,CAAC,GAAI,CAAC,IAAI,GAAG,OAAO,CAAC;gBACzB,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC;YACrB,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC;gBACrB,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC;YACrB,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,GAAG;QACD,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;YAC7B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;YAC7B,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,SAAS,CAAC;YAClC,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,GAAG,GAAG,SAAS,CAAC;YACvB,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;OAEG;IACH,IAAI;QACF,OAAO,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC;IAC3B,CAAC;CACF;AAvDD,sBAuDC"}
1
+ {"version":3,"file":"queue.js","sourceRoot":"","sources":["../../../../../src/utilities/libraries/data-structures/queue/queue.ts"],"names":[],"mappings":";;;AAAA,MAAM,oBAAoB;IAKxB,YAAY,KAAQ;QAClB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;CACF;AAED,MAAa,KAAK;IAIhB,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC;IAClC,CAAC;IAED,YAAY,SAAyB;QACnC,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,iBAAiB,GAAG,IAAI,oBAAoB,CAAC,SAAS,CAAC,CAAC;YAC5D,IAAI,CAAC,KAAK,GAAG,iBAAiB,CAAC;YAC/B,IAAI,CAAC,GAAG,GAAG,iBAAiB,CAAC;QAC/B,CAAC;IACH,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,GAAG,IAAS;QACd,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACnB,IAAI,OAAO,GAAG,IAAI,oBAAoB,CAAC,KAAK,CAAC,CAAC;YAC9C,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC;gBAC5B,IAAI,CAAC,GAAI,CAAC,IAAI,GAAG,OAAO,CAAC;gBACzB,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC;YACrB,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC;gBACrB,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC;YACrB,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,GAAG;QACD,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;YAC7B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;YAC7B,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,SAAS,CAAC;YAClC,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,GAAG,GAAG,SAAS,CAAC;YACvB,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;OAEG;IACH,IAAI;QACF,OAAO,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC;IAC3B,CAAC;IAED;;;OAGG;IACH,SAAS,CAAC,YAA6B;QACrC,IAAI,QAAQ,GAAG,IAAI,KAAK,EAAK,CAAC;QAC9B,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,OAAO,OAAO,EAAE,CAAC;YACf,IAAI,KAAK,GAAG,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;YACvE,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACpB,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;QACzB,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF;AAtED,sBAsEC"}
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const vitest_1 = require("vitest");
4
+ const queue_1 = require("./queue");
5
+ (0, vitest_1.describe)('Queue', () => {
6
+ (0, vitest_1.describe)('Basic', () => {
7
+ (0, vitest_1.test)('should return undefined when queue is empty', () => {
8
+ let queue = new queue_1.Queue();
9
+ (0, vitest_1.expect)(queue.pop()).toBe(undefined);
10
+ });
11
+ (0, vitest_1.test)('should return false when queue is not empty', () => {
12
+ let queue = new queue_1.Queue(1);
13
+ (0, vitest_1.expect)(queue.isEmpty).toBe(false);
14
+ });
15
+ (0, vitest_1.test)('should add elements to the queue', () => {
16
+ let queue = new queue_1.Queue();
17
+ queue.add(1, 2, 3);
18
+ (0, vitest_1.expect)(queue.pop()).toBe(1);
19
+ (0, vitest_1.expect)(queue.pop()).toBe(2);
20
+ (0, vitest_1.expect)(queue.pop()).toBe(3);
21
+ });
22
+ (0, vitest_1.test)('should add elements to the queue with first element', () => {
23
+ let queue = new queue_1.Queue(1);
24
+ queue.add(2, 3);
25
+ (0, vitest_1.expect)(queue.pop()).toBe(1);
26
+ (0, vitest_1.expect)(queue.pop()).toBe(2);
27
+ (0, vitest_1.expect)(queue.pop()).toBe(3);
28
+ });
29
+ (0, vitest_1.test)('peek should return the first element in the queue without removing it', () => {
30
+ let queue = new queue_1.Queue(1);
31
+ (0, vitest_1.expect)(queue.peek()).toBe(1);
32
+ (0, vitest_1.expect)(queue.pop()).toBe(1);
33
+ });
34
+ });
35
+ (0, vitest_1.describe)('Duplicate', () => {
36
+ (0, vitest_1.test)('empty queue', () => {
37
+ let queue = new queue_1.Queue();
38
+ let duplicate = queue.duplicate();
39
+ (0, vitest_1.expect)(duplicate.pop()).toBe(undefined);
40
+ });
41
+ (0, vitest_1.test)('queue with elements', () => {
42
+ let queue = new queue_1.Queue(1);
43
+ queue.add(2, 3);
44
+ let duplicate = queue.duplicate();
45
+ (0, vitest_1.expect)(duplicate.pop()).toBe(1);
46
+ (0, vitest_1.expect)(duplicate.pop()).toBe(2);
47
+ (0, vitest_1.expect)(duplicate.pop()).toBe(3);
48
+ });
49
+ (0, vitest_1.test)('duplicate with deep copy', () => {
50
+ let queue = new queue_1.Queue({ value: 1 });
51
+ let duplicate = queue.duplicate(item => ({ value: item.value }));
52
+ (0, vitest_1.expect)(duplicate.peek()).toStrictEqual({ value: 1 });
53
+ (0, vitest_1.expect)(queue.peek()).toStrictEqual({ value: 1 });
54
+ (0, vitest_1.expect)(duplicate.peek() !== queue.peek()).toBeTruthy();
55
+ });
56
+ });
57
+ });
58
+ //# sourceMappingURL=queue.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queue.test.js","sourceRoot":"","sources":["../../../../../src/utilities/libraries/data-structures/queue/queue.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bard-legends-framework",
3
- "version": "0.7.42",
3
+ "version": "0.7.43",
4
4
  "description": "Bard Legends Framework",
5
5
  "main": "dist/index.js",
6
6
  "publishConfig": {
package/package.json.bak CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bard-legends-framework",
3
- "version": "0.7.42",
3
+ "version": "0.7.43",
4
4
  "description": "Bard Legends Framework",
5
5
  "main": "src/index.ts",
6
6
  "publishConfig": {