@hardlydifficult/queue 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.
package/dist/PriorityQueue.d.ts
CHANGED
|
@@ -70,6 +70,24 @@ export interface PriorityQueue<T> {
|
|
|
70
70
|
toArray(): readonly QueueItem<T>[];
|
|
71
71
|
/** Clear all items from the queue. */
|
|
72
72
|
clear(): void;
|
|
73
|
+
/**
|
|
74
|
+
* Change the priority of an existing item.
|
|
75
|
+
* Removes it from its current bucket and appends to the new bucket.
|
|
76
|
+
* Preserves data and enqueuedAt; updates priority.
|
|
77
|
+
* @returns true if the item was found and updated
|
|
78
|
+
*/
|
|
79
|
+
updatePriority(id: string, newPriority: Priority): boolean;
|
|
80
|
+
/**
|
|
81
|
+
* Move an item before another item within the same priority bucket.
|
|
82
|
+
* Both items must exist and share the same priority.
|
|
83
|
+
* @returns true if the move succeeded
|
|
84
|
+
*/
|
|
85
|
+
moveBefore(itemId: string, beforeItemId: string): boolean;
|
|
86
|
+
/**
|
|
87
|
+
* Move an item to the end of its priority bucket.
|
|
88
|
+
* @returns true if the item was found and moved
|
|
89
|
+
*/
|
|
90
|
+
moveToEnd(itemId: string): boolean;
|
|
73
91
|
}
|
|
74
92
|
/**
|
|
75
93
|
* Create a new priority queue.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PriorityQueue.d.ts","sourceRoot":"","sources":["../src/PriorityQueue.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;;GAGG;AACH,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;AAKjD;;GAEG;AACH,MAAM,WAAW,SAAS,CAAC,CAAC;IAC1B,sBAAsB;IACtB,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IACjB,qBAAqB;IACrB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,4CAA4C;IAC5C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;CACrB;AAED;;;;;GAKG;AACH,MAAM,WAAW,aAAa,CAAC,CAAC;IAC9B;;;;;OAKG;IACH,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;IAEpD;;;OAGG;IACH,OAAO,IAAI,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;IAEpC;;;OAGG;IACH,IAAI,IAAI,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;IAEjC;;;OAGG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;IAE5B,8CAA8C;IAC9C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,kCAAkC;IAClC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAE1B;;;OAGG;IACH,SAAS,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;IAE9D;;;OAGG;IACH,OAAO,IAAI,SAAS,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;IAEnC,sCAAsC;IACtC,KAAK,IAAI,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"PriorityQueue.d.ts","sourceRoot":"","sources":["../src/PriorityQueue.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;;GAGG;AACH,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;AAKjD;;GAEG;AACH,MAAM,WAAW,SAAS,CAAC,CAAC;IAC1B,sBAAsB;IACtB,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IACjB,qBAAqB;IACrB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,4CAA4C;IAC5C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;CACrB;AAED;;;;;GAKG;AACH,MAAM,WAAW,aAAa,CAAC,CAAC;IAC9B;;;;;OAKG;IACH,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;IAEpD;;;OAGG;IACH,OAAO,IAAI,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;IAEpC;;;OAGG;IACH,IAAI,IAAI,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;IAEjC;;;OAGG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;IAE5B,8CAA8C;IAC9C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,kCAAkC;IAClC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAE1B;;;OAGG;IACH,SAAS,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;IAE9D;;;OAGG;IACH,OAAO,IAAI,SAAS,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;IAEnC,sCAAsC;IACtC,KAAK,IAAI,IAAI,CAAC;IAEd;;;;;OAKG;IACH,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,GAAG,OAAO,CAAC;IAE3D;;;;OAIG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC;IAE1D;;;OAGG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;CACpC;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,KAAK,aAAa,CAAC,CAAC,CAAC,CAsIzD"}
|
package/dist/PriorityQueue.js
CHANGED
|
@@ -86,6 +86,55 @@ function createPriorityQueue() {
|
|
|
86
86
|
buckets.medium.length = 0;
|
|
87
87
|
buckets.low.length = 0;
|
|
88
88
|
},
|
|
89
|
+
updatePriority(id, newPriority) {
|
|
90
|
+
for (const p of PRIORITY_ORDER) {
|
|
91
|
+
const idx = buckets[p].findIndex((item) => item.id === id);
|
|
92
|
+
if (idx !== -1) {
|
|
93
|
+
const [item] = buckets[p].splice(idx, 1);
|
|
94
|
+
// Create new item with updated priority (preserves data + enqueuedAt)
|
|
95
|
+
const updated = {
|
|
96
|
+
data: item.data,
|
|
97
|
+
priority: newPriority,
|
|
98
|
+
enqueuedAt: item.enqueuedAt,
|
|
99
|
+
id: item.id,
|
|
100
|
+
};
|
|
101
|
+
buckets[newPriority].push(updated);
|
|
102
|
+
return true;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
return false;
|
|
106
|
+
},
|
|
107
|
+
moveBefore(itemId, beforeItemId) {
|
|
108
|
+
// Find both items - they must be in the same priority bucket
|
|
109
|
+
for (const p of PRIORITY_ORDER) {
|
|
110
|
+
const bucket = buckets[p];
|
|
111
|
+
const itemIdx = bucket.findIndex((i) => i.id === itemId);
|
|
112
|
+
const beforeIdx = bucket.findIndex((i) => i.id === beforeItemId);
|
|
113
|
+
if (itemIdx !== -1 && beforeIdx !== -1 && itemIdx !== beforeIdx) {
|
|
114
|
+
const [item] = bucket.splice(itemIdx, 1);
|
|
115
|
+
// Recalculate target index after removal
|
|
116
|
+
const newBeforeIdx = bucket.findIndex((i) => i.id === beforeItemId);
|
|
117
|
+
bucket.splice(newBeforeIdx, 0, item);
|
|
118
|
+
return true;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
return false;
|
|
122
|
+
},
|
|
123
|
+
moveToEnd(itemId) {
|
|
124
|
+
for (const p of PRIORITY_ORDER) {
|
|
125
|
+
const bucket = buckets[p];
|
|
126
|
+
const idx = bucket.findIndex((i) => i.id === itemId);
|
|
127
|
+
if (idx !== -1 && idx < bucket.length - 1) {
|
|
128
|
+
const [item] = bucket.splice(idx, 1);
|
|
129
|
+
bucket.push(item);
|
|
130
|
+
return true;
|
|
131
|
+
}
|
|
132
|
+
if (idx === bucket.length - 1) {
|
|
133
|
+
return true; // Already at end
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
return false;
|
|
137
|
+
},
|
|
89
138
|
};
|
|
90
139
|
}
|
|
91
140
|
//# sourceMappingURL=PriorityQueue.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PriorityQueue.js","sourceRoot":"","sources":["../src/PriorityQueue.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;
|
|
1
|
+
{"version":3,"file":"PriorityQueue.js","sourceRoot":"","sources":["../src/PriorityQueue.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hardlydifficult/queue",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"main": "./dist/index.js",
|
|
5
5
|
"types": "./dist/index.d.ts",
|
|
6
6
|
"files": [
|
|
@@ -15,9 +15,9 @@
|
|
|
15
15
|
"clean": "rm -rf dist"
|
|
16
16
|
},
|
|
17
17
|
"devDependencies": {
|
|
18
|
-
"@types/node": "
|
|
19
|
-
"typescript": "5.
|
|
20
|
-
"vitest": "
|
|
18
|
+
"@types/node": "25.2.3",
|
|
19
|
+
"typescript": "5.9.3",
|
|
20
|
+
"vitest": "4.0.18"
|
|
21
21
|
},
|
|
22
22
|
"engines": {
|
|
23
23
|
"node": ">=18.0.0"
|