@blackglory/structures 0.5.1 → 0.6.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.
@@ -1,9 +1,9 @@
1
- declare type Handler<Args extends unknown[]> = (...args: Args) => void;
1
+ declare type Listener<Args extends unknown[]> = (...args: Args) => void;
2
2
  export declare class Emitter<EventToArgs extends Record<string, unknown[]>> {
3
3
  private map;
4
4
  get [Symbol.toStringTag](): string;
5
- on<T extends keyof EventToArgs>(event: T, handler: Handler<EventToArgs[T]>): void;
6
- off<T extends keyof EventToArgs>(event: T, handler: Handler<EventToArgs[T]>): void;
5
+ on<T extends keyof EventToArgs>(event: T, listener: Listener<EventToArgs[T]>): () => void;
6
+ once<T extends keyof EventToArgs>(event: T, listener: Listener<EventToArgs[T]>): () => void;
7
7
  emit<T extends keyof EventToArgs>(event: T, ...args: EventToArgs[T]): void;
8
8
  }
9
9
  export {};
@@ -8,22 +8,32 @@ class Emitter {
8
8
  get [Symbol.toStringTag]() {
9
9
  return this.constructor.name;
10
10
  }
11
- on(event, handler) {
11
+ on(event, listener) {
12
12
  if (!this.map.has(event)) {
13
13
  this.map.set(event, new Set());
14
14
  }
15
15
  const set = this.map.get(event);
16
16
  set.add(handler);
17
- }
18
- off(event, handler) {
19
- if (!this.map.has(event))
20
- return;
21
- const handlers = this.map.get(event);
22
- handlers.delete(handler);
23
- if (handlers.size === 0) {
24
- this.map.delete(event);
17
+ return () => {
18
+ if (!this.map.has(event))
19
+ return;
20
+ const handlers = this.map.get(event);
21
+ handlers.delete(handler);
22
+ if (handlers.size === 0) {
23
+ this.map.delete(event);
24
+ }
25
+ };
26
+ function handler(...args) {
27
+ listener(...args);
25
28
  }
26
29
  }
30
+ once(event, listener) {
31
+ const removeListener = this.on(event, (...args) => {
32
+ listener(...args);
33
+ removeListener();
34
+ });
35
+ return removeListener;
36
+ }
27
37
  emit(event, ...args) {
28
38
  if (!this.map.has(event))
29
39
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"emitter.js","sourceRoot":"","sources":["../../src/emitter.ts"],"names":[],"mappings":";;;AAEA,MAAa,OAAO;IAApB;QACU,QAAG,GAAG,IAAI,GAAG,EAAmE,CAAA;IAiC1F,CAAC;IA/BC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;QACtB,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAA;IAC9B,CAAC;IAKD,EAAE,CAA8B,KAAQ,EAAE,OAAgC;QACxE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;YACxB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,GAAG,EAAE,CAAC,CAAA;SAC/B;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAE,CAAA;QAChC,GAAG,CAAC,GAAG,CAAC,OAAkD,CAAC,CAAA;IAC7D,CAAC;IAED,GAAG,CAA8B,KAAQ,EAAE,OAAgC;QACzE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC;YAAE,OAAM;QAEhC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAE,CAAA;QACrC,QAAQ,CAAC,MAAM,CAAC,OAAkD,CAAC,CAAA;QACnE,IAAI,QAAQ,CAAC,IAAI,KAAK,CAAC,EAAE;YACvB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;SACvB;IACH,CAAC;IAED,IAAI,CAA8B,KAAQ,EAAE,GAAG,IAAoB;QACjE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC;YAAE,OAAM;QAEhC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAA;IACjD,CAAC;CACF;AAlCD,0BAkCC"}
1
+ {"version":3,"file":"emitter.js","sourceRoot":"","sources":["../../src/emitter.ts"],"names":[],"mappings":";;;AAEA,MAAa,OAAO;IAApB;QACU,QAAG,GAAG,IAAI,GAAG,EAGlB,CAAA;IAoDL,CAAC;IAlDC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;QACtB,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAA;IAC9B,CAAC;IAED,EAAE,CACA,KAAQ,EACR,QAAkC;QAElC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;YACxB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,GAAG,EAAE,CAAC,CAAA;SAC/B;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAE,CAAA;QAChC,GAAG,CAAC,GAAG,CAAC,OAAmD,CAAC,CAAA;QAE5D,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC;gBAAE,OAAM;YAEhC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAE,CAAA;YACrC,QAAQ,CAAC,MAAM,CAAC,OAAmD,CAAC,CAAA;YACpE,IAAI,QAAQ,CAAC,IAAI,KAAK,CAAC,EAAE;gBACvB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;aACvB;QACH,CAAC,CAAA;QAED,SAAS,OAAO,CAAC,GAAG,IAA0C;YAC5D,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAA;QACnB,CAAC;IACH,CAAC;IAED,IAAI,CACF,KAAQ,EACR,QAAkC;QAElC,MAAM,cAAc,GAAG,IAAI,CAAC,EAAE,CAC5B,KAAK,EACL,CAAC,GAAG,IAA0C,EAAE,EAAE;YAChD,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAA;YACjB,cAAc,EAAE,CAAA;QAClB,CAAC,CACF,CAAA;QAED,OAAO,cAAc,CAAA;IACvB,CAAC;IAED,IAAI,CAA8B,KAAQ,EAAE,GAAG,IAAoB;QACjE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC;YAAE,OAAM;QAEhC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAA;IACjD,CAAC;CACF;AAxDD,0BAwDC"}
@@ -1,9 +1,9 @@
1
- declare type Handler<Args extends unknown[]> = (...args: Args) => void;
1
+ declare type Listener<Args extends unknown[]> = (...args: Args) => void;
2
2
  export declare class Emitter<EventToArgs extends Record<string, unknown[]>> {
3
3
  private map;
4
4
  get [Symbol.toStringTag](): string;
5
- on<T extends keyof EventToArgs>(event: T, handler: Handler<EventToArgs[T]>): void;
6
- off<T extends keyof EventToArgs>(event: T, handler: Handler<EventToArgs[T]>): void;
5
+ on<T extends keyof EventToArgs>(event: T, listener: Listener<EventToArgs[T]>): () => void;
6
+ once<T extends keyof EventToArgs>(event: T, listener: Listener<EventToArgs[T]>): () => void;
7
7
  emit<T extends keyof EventToArgs>(event: T, ...args: EventToArgs[T]): void;
8
8
  }
9
9
  export {};
@@ -8,22 +8,32 @@ class Emitter {
8
8
  get [Symbol.toStringTag]() {
9
9
  return this.constructor.name;
10
10
  }
11
- on(event, handler) {
11
+ on(event, listener) {
12
12
  if (!this.map.has(event)) {
13
13
  this.map.set(event, new Set());
14
14
  }
15
15
  const set = this.map.get(event);
16
16
  set.add(handler);
17
- }
18
- off(event, handler) {
19
- if (!this.map.has(event))
20
- return;
21
- const handlers = this.map.get(event);
22
- handlers.delete(handler);
23
- if (handlers.size === 0) {
24
- this.map.delete(event);
17
+ return () => {
18
+ if (!this.map.has(event))
19
+ return;
20
+ const handlers = this.map.get(event);
21
+ handlers.delete(handler);
22
+ if (handlers.size === 0) {
23
+ this.map.delete(event);
24
+ }
25
+ };
26
+ function handler(...args) {
27
+ listener(...args);
25
28
  }
26
29
  }
30
+ once(event, listener) {
31
+ const removeListener = this.on(event, (...args) => {
32
+ listener(...args);
33
+ removeListener();
34
+ });
35
+ return removeListener;
36
+ }
27
37
  emit(event, ...args) {
28
38
  if (!this.map.has(event))
29
39
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"emitter.js","sourceRoot":"","sources":["../../src/emitter.ts"],"names":[],"mappings":";;;AAEA,MAAa,OAAO;IAApB;QACU,QAAG,GAAG,IAAI,GAAG,EAAmE,CAAA;IAiC1F,CAAC;IA/BC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;QACtB,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAA;IAC9B,CAAC;IAKD,EAAE,CAA8B,KAAQ,EAAE,OAAgC;QACxE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;YACxB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,GAAG,EAAE,CAAC,CAAA;SAC/B;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAE,CAAA;QAChC,GAAG,CAAC,GAAG,CAAC,OAAkD,CAAC,CAAA;IAC7D,CAAC;IAED,GAAG,CAA8B,KAAQ,EAAE,OAAgC;QACzE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC;YAAE,OAAM;QAEhC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAE,CAAA;QACrC,QAAQ,CAAC,MAAM,CAAC,OAAkD,CAAC,CAAA;QACnE,IAAI,QAAQ,CAAC,IAAI,KAAK,CAAC,EAAE;YACvB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;SACvB;IACH,CAAC;IAED,IAAI,CAA8B,KAAQ,EAAE,GAAG,IAAoB;QACjE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC;YAAE,OAAM;QAEhC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAA;IACjD,CAAC;CACF;AAlCD,0BAkCC"}
1
+ {"version":3,"file":"emitter.js","sourceRoot":"","sources":["../../src/emitter.ts"],"names":[],"mappings":";;;AAEA,MAAa,OAAO;IAApB;QACU,QAAG,GAAG,IAAI,GAAG,EAGlB,CAAA;IAoDL,CAAC;IAlDC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;QACtB,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAA;IAC9B,CAAC;IAED,EAAE,CACA,KAAQ,EACR,QAAkC;QAElC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;YACxB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,GAAG,EAAE,CAAC,CAAA;SAC/B;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAE,CAAA;QAChC,GAAG,CAAC,GAAG,CAAC,OAAmD,CAAC,CAAA;QAE5D,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC;gBAAE,OAAM;YAEhC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAE,CAAA;YACrC,QAAQ,CAAC,MAAM,CAAC,OAAmD,CAAC,CAAA;YACpE,IAAI,QAAQ,CAAC,IAAI,KAAK,CAAC,EAAE;gBACvB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;aACvB;QACH,CAAC,CAAA;QAED,SAAS,OAAO,CAAC,GAAG,IAA0C;YAC5D,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAA;QACnB,CAAC;IACH,CAAC;IAED,IAAI,CACF,KAAQ,EACR,QAAkC;QAElC,MAAM,cAAc,GAAG,IAAI,CAAC,EAAE,CAC5B,KAAK,EACL,CAAC,GAAG,IAA0C,EAAE,EAAE;YAChD,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAA;YACjB,cAAc,EAAE,CAAA;QAClB,CAAC,CACF,CAAA;QAED,OAAO,cAAc,CAAA;IACvB,CAAC;IAED,IAAI,CAA8B,KAAQ,EAAE,GAAG,IAAoB;QACjE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC;YAAE,OAAM;QAEhC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAA;IACjD,CAAC;CACF;AAxDD,0BAwDC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@blackglory/structures",
3
- "version": "0.5.1",
3
+ "version": "0.6.0",
4
4
  "description": "",
5
5
  "files": [
6
6
  "lib",
@@ -41,32 +41,32 @@
41
41
  "node": ">=12"
42
42
  },
43
43
  "devDependencies": {
44
- "@blackglory/jest-matchers": "^0.3.1",
45
- "@commitlint/cli": "^16.3.0",
46
- "@commitlint/config-conventional": "^16.2.4",
44
+ "@blackglory/jest-matchers": "^0.4.1",
45
+ "@commitlint/cli": "^17.0.2",
46
+ "@commitlint/config-conventional": "^17.0.2",
47
47
  "@rollup/plugin-commonjs": "^22.0.0",
48
48
  "@rollup/plugin-json": "^4.1.0",
49
49
  "@rollup/plugin-node-resolve": "^13.3.0",
50
50
  "@rollup/plugin-replace": "^4.0.0",
51
51
  "@rollup/plugin-typescript": "^8.3.2",
52
- "@types/jest": "^27.5.1",
52
+ "@types/jest": "^28.1.1",
53
53
  "@types/node": "14",
54
- "@typescript-eslint/eslint-plugin": "^5.23.0",
55
- "@typescript-eslint/parser": "^5.23.0",
56
- "eslint": "^8.15.0",
54
+ "@typescript-eslint/eslint-plugin": "^5.27.1",
55
+ "@typescript-eslint/parser": "^5.27.1",
56
+ "eslint": "^8.17.0",
57
57
  "husky": "^4.3.8",
58
- "jest": "^27.5.1",
58
+ "jest": "^28.1.1",
59
59
  "npm-run-all": "^4.1.5",
60
60
  "return-style": "^1.0.0",
61
61
  "rimraf": "^3.0.2",
62
- "rollup": "^2.73.0",
62
+ "rollup": "^2.75.6",
63
63
  "rollup-plugin-analyzer": "^4.0.0",
64
64
  "rollup-plugin-terser": "^7.0.2",
65
- "standard-version": "^9.3.2",
66
- "ts-jest": "^27.1.3",
65
+ "standard-version": "^9.5.0",
66
+ "ts-jest": "^28.0.4",
67
67
  "tscpaths": "^0.0.9",
68
68
  "tslib": "^2.4.0",
69
- "typescript": "^4.6.4"
69
+ "typescript": "^4.7.3"
70
70
  },
71
71
  "dependencies": {
72
72
  "@blackglory/errors": "^2.2.1",