loudo-ds-map-interfaces 0.0.12 → 0.0.16
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/index.d.ts +6 -4
- package/dist/index.js +16 -2
- package/package.json +3 -3
package/dist/index.d.ts
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
import { Loud,
|
1
|
+
import { Loud, Sized } from "loudo-ds-core";
|
2
2
|
export interface Entry<K extends {}, V extends {}> {
|
3
3
|
key: K;
|
4
4
|
value: V;
|
@@ -9,10 +9,11 @@ export declare abstract class BaseMap<K extends {}, V extends {}> {
|
|
9
9
|
abstract get valueEq(): (v1: V, v2: V) => boolean;
|
10
10
|
get eq(): (e1: Entry<K, V>, e2: Entry<K, V>) => boolean;
|
11
11
|
hasKey(key: K): boolean;
|
12
|
-
|
13
|
-
get
|
12
|
+
hasAllKeys(keys: Iterable<K>): boolean;
|
13
|
+
get keys(): Sized<K>;
|
14
|
+
get values(): Sized<V>;
|
14
15
|
}
|
15
|
-
export interface BaseMap<K extends {}, V extends {}> extends
|
16
|
+
export interface BaseMap<K extends {}, V extends {}> extends Sized<Entry<K, V>> {
|
16
17
|
}
|
17
18
|
export declare abstract class MapChange<K extends {}, V extends {}> {
|
18
19
|
abstract put(key: K, value: V): V | undefined;
|
@@ -23,6 +24,7 @@ export interface MapChange<K extends {}, V extends {}> extends BaseMap<K, V>, Lo
|
|
23
24
|
export declare abstract class MapRemove<K extends {}, V extends {}> {
|
24
25
|
abstract removeKey(key: K): V | undefined;
|
25
26
|
abstract clear(): void;
|
27
|
+
drop(f: (k: K, v: V) => boolean): number;
|
26
28
|
}
|
27
29
|
export interface MapRemove<K extends {}, V extends {}> extends BaseMap<K, V>, Loud<Entry<K, V>> {
|
28
30
|
}
|
package/dist/index.js
CHANGED
@@ -1,4 +1,5 @@
|
|
1
|
-
import { Loud,
|
1
|
+
import { Loud, Sized } from "loudo-ds-core";
|
2
|
+
import { mixin } from "loudo-mixin";
|
2
3
|
export class BaseMap {
|
3
4
|
get eq() {
|
4
5
|
const me = this;
|
@@ -9,10 +10,16 @@ export class BaseMap {
|
|
9
10
|
};
|
10
11
|
}
|
11
12
|
hasKey(key) { return this.get(key) !== undefined; }
|
13
|
+
hasAllKeys(keys) {
|
14
|
+
for (const k of keys)
|
15
|
+
if (!this.hasKey(k))
|
16
|
+
return false;
|
17
|
+
return true;
|
18
|
+
}
|
12
19
|
get keys() { return this.map(x => x.key); }
|
13
20
|
get values() { return this.map(x => x.value); }
|
14
21
|
}
|
15
|
-
mixin(BaseMap, [
|
22
|
+
mixin(BaseMap, [Sized]);
|
16
23
|
export class MapChange {
|
17
24
|
putAll(input) {
|
18
25
|
const me = this;
|
@@ -21,6 +28,13 @@ export class MapChange {
|
|
21
28
|
}
|
22
29
|
mixin(MapChange, [BaseMap, Loud]);
|
23
30
|
export class MapRemove {
|
31
|
+
drop(f) {
|
32
|
+
const set = new Set(this.filter(x => f(x.key, x.value)).map(x => x.key));
|
33
|
+
for (const x of set) {
|
34
|
+
this.removeKey(x);
|
35
|
+
}
|
36
|
+
return set.size;
|
37
|
+
}
|
24
38
|
}
|
25
39
|
mixin(MapRemove, [BaseMap, Loud]);
|
26
40
|
export function forEach(input, f) {
|
package/package.json
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
{
|
2
2
|
"name": "loudo-ds-map-interfaces",
|
3
3
|
"type": "module",
|
4
|
-
"version": "0.0.
|
4
|
+
"version": "0.0.16",
|
5
5
|
"description": "Core interfaces for loud maps (dictionaries.)",
|
6
6
|
"main": "dist/index.js",
|
7
7
|
"types": "dist/index.d.ts",
|
@@ -27,10 +27,10 @@
|
|
27
27
|
"homepage": "https://github.com/p-jack/loudo-ds-core#readme",
|
28
28
|
"devDependencies": {
|
29
29
|
"@vitest/coverage-v8": "^1.2.2",
|
30
|
-
"typescript": "^5.
|
30
|
+
"typescript": "^5.7",
|
31
31
|
"vitest": "^1.2.2"
|
32
32
|
},
|
33
33
|
"dependencies": {
|
34
|
-
"loudo-ds-core": "^0.0.
|
34
|
+
"loudo-ds-core": "^0.0.38"
|
35
35
|
}
|
36
36
|
}
|