hookified 0.7.1 → 1.0.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/README.md CHANGED
@@ -11,7 +11,7 @@
11
11
  ## Features
12
12
  - Emit Events via [Emittery](https://npmjs.com/package/emittery)
13
13
  - Async Middleware Hooks for Your Methods
14
- - ESM and Nodejs 20+
14
+ - ESM / CJS and Nodejs 20+
15
15
  - Maintained on a regular basis!
16
16
 
17
17
  Special thanks to [@sindresorhus](https://github.com/sindresorhus) for the [Emittery](https://npmjs.com/package/emittery) library. 🍻
package/dist/index.cjs ADDED
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+
30
+ // src/index.ts
31
+ var src_exports = {};
32
+ __export(src_exports, {
33
+ Hookified: () => Hookified
34
+ });
35
+ module.exports = __toCommonJS(src_exports);
36
+ var import_emittery = __toESM(require("emittery"), 1);
37
+ var Hookified = class extends import_emittery.default {
38
+ _hooks;
39
+ constructor() {
40
+ super();
41
+ this._hooks = /* @__PURE__ */ new Map();
42
+ }
43
+ // Adds a handler function for a specific event
44
+ onHook(event, handler) {
45
+ const eventHandlers = this._hooks.get(event);
46
+ if (eventHandlers) {
47
+ eventHandlers.push(handler);
48
+ } else {
49
+ this._hooks.set(event, [handler]);
50
+ }
51
+ }
52
+ // Removes a specific handler function for a specific event
53
+ removeHook(event, handler) {
54
+ const eventHandlers = this._hooks.get(event);
55
+ if (eventHandlers) {
56
+ const index = eventHandlers.indexOf(handler);
57
+ if (index !== -1) {
58
+ eventHandlers.splice(index, 1);
59
+ }
60
+ }
61
+ }
62
+ // Triggers all handlers for a specific event with provided data
63
+ async hook(event, ...arguments_) {
64
+ const eventHandlers = this._hooks.get(event);
65
+ if (eventHandlers) {
66
+ for (const handler of eventHandlers) {
67
+ try {
68
+ await handler(...arguments_);
69
+ } catch (error) {
70
+ await this.emit("error", new Error(`Error in hook handler for event "${event}": ${error.message}`));
71
+ }
72
+ }
73
+ }
74
+ }
75
+ // Provides read-only access to the current handlers
76
+ get hooks() {
77
+ return this._hooks;
78
+ }
79
+ getHooks(event) {
80
+ return this._hooks.get(event);
81
+ }
82
+ clearHooks() {
83
+ this._hooks.clear();
84
+ }
85
+ };
86
+ // Annotate the CommonJS export names for ESM import in node:
87
+ 0 && (module.exports = {
88
+ Hookified
89
+ });
@@ -0,0 +1,15 @@
1
+ import Emittery from 'emittery';
2
+
3
+ type Hook = (...arguments_: any[]) => Promise<void> | void;
4
+ declare class Hookified extends Emittery {
5
+ _hooks: Map<string, Hook[]>;
6
+ constructor();
7
+ onHook(event: string, handler: Hook): void;
8
+ removeHook(event: string, handler: Hook): void;
9
+ hook<T>(event: string, ...arguments_: T[]): Promise<void>;
10
+ get hooks(): Map<string, Hook[]>;
11
+ getHooks(event: string): Hook[] | undefined;
12
+ clearHooks(): void;
13
+ }
14
+
15
+ export { type Hook, Hookified };
package/dist/index.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import Emittery from 'emittery';
2
- export type Hook = (...arguments_: any[]) => Promise<void> | void;
3
- export declare class Hookified extends Emittery {
2
+
3
+ type Hook = (...arguments_: any[]) => Promise<void> | void;
4
+ declare class Hookified extends Emittery {
4
5
  _hooks: Map<string, Hook[]>;
5
6
  constructor();
6
7
  onHook(event: string, handler: Hook): void;
@@ -10,3 +11,5 @@ export declare class Hookified extends Emittery {
10
11
  getHooks(event: string): Hook[] | undefined;
11
12
  clearHooks(): void;
12
13
  }
14
+
15
+ export { type Hook, Hookified };
package/dist/index.js CHANGED
@@ -1,56 +1,54 @@
1
- import Emittery from 'emittery';
2
- export class Hookified extends Emittery {
3
- _hooks;
4
- constructor() {
5
- super();
6
- this._hooks = new Map();
1
+ // src/index.ts
2
+ import Emittery from "emittery";
3
+ var Hookified = class extends Emittery {
4
+ _hooks;
5
+ constructor() {
6
+ super();
7
+ this._hooks = /* @__PURE__ */ new Map();
8
+ }
9
+ // Adds a handler function for a specific event
10
+ onHook(event, handler) {
11
+ const eventHandlers = this._hooks.get(event);
12
+ if (eventHandlers) {
13
+ eventHandlers.push(handler);
14
+ } else {
15
+ this._hooks.set(event, [handler]);
7
16
  }
8
- // Adds a handler function for a specific event
9
- onHook(event, handler) {
10
- const eventHandlers = this._hooks.get(event);
11
- if (eventHandlers) {
12
- eventHandlers.push(handler);
13
- }
14
- else {
15
- this._hooks.set(event, [handler]);
16
- }
17
- }
18
- // Removes a specific handler function for a specific event
19
- removeHook(event, handler) {
20
- const eventHandlers = this._hooks.get(event);
21
- if (eventHandlers) {
22
- const index = eventHandlers.indexOf(handler);
23
- if (index !== -1) {
24
- eventHandlers.splice(index, 1);
25
- }
26
- }
17
+ }
18
+ // Removes a specific handler function for a specific event
19
+ removeHook(event, handler) {
20
+ const eventHandlers = this._hooks.get(event);
21
+ if (eventHandlers) {
22
+ const index = eventHandlers.indexOf(handler);
23
+ if (index !== -1) {
24
+ eventHandlers.splice(index, 1);
25
+ }
27
26
  }
28
- // Triggers all handlers for a specific event with provided data
29
- async hook(event, ...arguments_) {
30
- const eventHandlers = this._hooks.get(event);
31
- if (eventHandlers) {
32
- for (const handler of eventHandlers) {
33
- try {
34
- // eslint-disable-next-line no-await-in-loop
35
- await handler(...arguments_);
36
- }
37
- catch (error) {
38
- // eslint-disable-next-line no-await-in-loop
39
- await this.emit('error', new Error(`Error in hook handler for event "${event}": ${error.message}`));
40
- }
41
- }
27
+ }
28
+ // Triggers all handlers for a specific event with provided data
29
+ async hook(event, ...arguments_) {
30
+ const eventHandlers = this._hooks.get(event);
31
+ if (eventHandlers) {
32
+ for (const handler of eventHandlers) {
33
+ try {
34
+ await handler(...arguments_);
35
+ } catch (error) {
36
+ await this.emit("error", new Error(`Error in hook handler for event "${event}": ${error.message}`));
42
37
  }
38
+ }
43
39
  }
44
- // Provides read-only access to the current handlers
45
- get hooks() {
46
- // Creating a new map to prevent external modifications to the original map
47
- return this._hooks;
48
- }
49
- getHooks(event) {
50
- return this._hooks.get(event);
51
- }
52
- clearHooks() {
53
- this._hooks.clear();
54
- }
55
- }
56
- //# sourceMappingURL=index.js.map
40
+ }
41
+ // Provides read-only access to the current handlers
42
+ get hooks() {
43
+ return this._hooks;
44
+ }
45
+ getHooks(event) {
46
+ return this._hooks.get(event);
47
+ }
48
+ clearHooks() {
49
+ this._hooks.clear();
50
+ }
51
+ };
52
+ export {
53
+ Hookified
54
+ };
package/package.json CHANGED
@@ -1,11 +1,17 @@
1
1
  {
2
2
  "name": "hookified",
3
- "version": "0.7.1",
3
+ "version": "1.0.0",
4
4
  "description": "Event and Middleware Hooks",
5
5
  "type": "module",
6
- "main": "./dist/index.js",
7
- "exports": "./dist/index.js",
6
+ "main": "./dist/index.cjs",
7
+ "module": "./dist/index.js",
8
8
  "types": "./dist/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "require": "./dist/index.cjs",
12
+ "import": "./dist/index.js"
13
+ }
14
+ },
9
15
  "engines": {
10
16
  "node": ">=20"
11
17
  },
@@ -13,7 +19,7 @@
13
19
  "test": "xo --fix && vitest run --coverage",
14
20
  "test:ci": "xo && vitest run --coverage",
15
21
  "clean": "rimraf ./dist ./coverage ./site/dist",
16
- "build": "rimraf ./dist && tsc",
22
+ "build": "rimraf ./dist && tsup src/index.ts --format cjs,esm --dts --clean",
17
23
  "website:build": "docula build",
18
24
  "website:serve": "docula serve",
19
25
  "prepare": "npm run build"
@@ -55,11 +61,12 @@
55
61
  "emittery": "^1.0.3"
56
62
  },
57
63
  "devDependencies": {
58
- "@vitest/coverage-v8": "^2.0.5",
64
+ "@vitest/coverage-v8": "^2.1.1",
59
65
  "docula": "^0.9.0",
60
66
  "rimraf": "^6.0.1",
61
- "typescript": "^5.5.4",
62
- "vitest": "^2.0.5",
67
+ "tsup": "^8.3.0",
68
+ "typescript": "^5.6.2",
69
+ "vitest": "^2.1.1",
63
70
  "xo": "^0.59.3"
64
71
  },
65
72
  "files": [
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAIhC,MAAM,OAAO,SAAU,SAAQ,QAAQ;IACtC,MAAM,CAAsB;IAE5B;QACC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;IACzB,CAAC;IAED,+CAA+C;IAC/C,MAAM,CAAC,KAAa,EAAE,OAAa;QAClC,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC7C,IAAI,aAAa,EAAE,CAAC;YACnB,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC7B,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;QACnC,CAAC;IACF,CAAC;IAED,2DAA2D;IAC3D,UAAU,CAAC,KAAa,EAAE,OAAa;QACtC,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC7C,IAAI,aAAa,EAAE,CAAC;YACnB,MAAM,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAC7C,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;gBAClB,aAAa,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAChC,CAAC;QACF,CAAC;IACF,CAAC;IAED,gEAAgE;IAChE,KAAK,CAAC,IAAI,CAAI,KAAa,EAAE,GAAG,UAAe;QAC9C,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC7C,IAAI,aAAa,EAAE,CAAC;YACnB,KAAK,MAAM,OAAO,IAAI,aAAa,EAAE,CAAC;gBACrC,IAAI,CAAC;oBACJ,4CAA4C;oBAC5C,MAAM,OAAO,CAAC,GAAG,UAAU,CAAC,CAAC;gBAC9B,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBAChB,4CAA4C;oBAC5C,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,KAAK,CAAC,oCAAoC,KAAK,MAAO,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;gBAChH,CAAC;YACF,CAAC;QACF,CAAC;IACF,CAAC;IAED,oDAAoD;IACpD,IAAI,KAAK;QACR,2EAA2E;QAC3E,OAAO,IAAI,CAAC,MAAM,CAAC;IACpB,CAAC;IAED,QAAQ,CAAC,KAAa;QACrB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IAED,UAAU;QACT,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;CACD"}