@nwire/hooks 0.7.0 → 0.7.1
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 +0 -41
- package/dist/hook.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +4 -2
package/README.md
CHANGED
|
@@ -12,40 +12,6 @@ Every middleware, lifecycle phase, event subscription, and plugin attachment in
|
|
|
12
12
|
pnpm add @nwire/hooks
|
|
13
13
|
```
|
|
14
14
|
|
|
15
|
-
## Standalone use
|
|
16
|
-
|
|
17
|
-
For developers building a framework, a lifecycle host, or any system that needs both wrappers (tracing, auth, retry) AND observers (analytics, metrics) on the same signal.
|
|
18
|
-
|
|
19
|
-
```ts
|
|
20
|
-
import { hook } from "@nwire/hooks";
|
|
21
|
-
|
|
22
|
-
interface RequestCtx {
|
|
23
|
-
url: string;
|
|
24
|
-
startTime?: number;
|
|
25
|
-
duration?: number;
|
|
26
|
-
error?: unknown;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
const request = hook<RequestCtx>("http.request");
|
|
30
|
-
|
|
31
|
-
// MIDDLEWARE — sequential, can wrap, can short-circuit
|
|
32
|
-
request.use(async (ctx, next) => {
|
|
33
|
-
ctx.startTime = Date.now();
|
|
34
|
-
await next();
|
|
35
|
-
ctx.duration = Date.now() - ctx.startTime;
|
|
36
|
-
});
|
|
37
|
-
|
|
38
|
-
// LISTENER — parallel observer, fires after the chain
|
|
39
|
-
request.on(async (ctx) => {
|
|
40
|
-
await analytics.track(ctx);
|
|
41
|
-
});
|
|
42
|
-
|
|
43
|
-
await request.run({ url: "/hello" });
|
|
44
|
-
// 1. .use() chain in insertion order (each can next() or short-circuit)
|
|
45
|
-
// 2. .on() listeners in parallel via Promise.allSettled
|
|
46
|
-
// 3. If chain throws, ctx.error is set BEFORE listeners fire
|
|
47
|
-
```
|
|
48
|
-
|
|
49
15
|
## Within nwire-app
|
|
50
16
|
|
|
51
17
|
For developers using this package as part of the Nwire stack. You usually never call `hook()` yourself — `@nwire/app` lifecycle, `@nwire/forge` events, and every plugin's middleware all build on it. Touch this package when authoring a plugin that needs custom hooks.
|
|
@@ -89,10 +55,3 @@ Escape hatch: `hook(name, { strictListeners: true })` re-throws the first listen
|
|
|
89
55
|
- `Hook<Ctx>.use(fn)` / `.on(fn)` / `.off(fn)` / `.run(ctx)`.
|
|
90
56
|
- `createHooks(record)` — typed bundle with `.hooks` + `.use(plugin)`.
|
|
91
57
|
- `compose(fns)` / `pipe(...fns)` / `withTimeout(ms, fn)` / `withRetry(opts, fn)` — composition helpers.
|
|
92
|
-
|
|
93
|
-
## See also
|
|
94
|
-
|
|
95
|
-
- [Architecture sketch §06 — Hooks, the universal dispatch primitive](../../architecture-sketch.html#hooks)
|
|
96
|
-
- [Architecture sketch §07 — Hook contract matrix](../../architecture-sketch.html#hook-contract)
|
|
97
|
-
- Built on [`emittery`](https://github.com/sindresorhus/emittery)
|
|
98
|
-
- Sibling packages: [@nwire/endpoint](../nwire-endpoint), [@nwire/container](../nwire-container), [@nwire/app](../nwire-app)
|
package/dist/hook.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hook.js","sourceRoot":"","sources":["../src/hook.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"hook.js","sourceRoot":"","sources":["../src/hook.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* fire in parallel via Promise.allSettled. See architecture-sketch.html §06–§07.
|
|
7
7
|
*/
|
|
8
8
|
export { hook, type Hook } from "./hook.js";
|
|
9
|
-
export { createHooks, type Host, type HookMap, type Plugin, type PluginEntry } from "./create-hooks.js";
|
|
9
|
+
export { createHooks, type Host, type HookMap, type Plugin, type PluginEntry, } from "./create-hooks.js";
|
|
10
10
|
export { compose } from "./compose.js";
|
|
11
11
|
export { pipe, withTimeout, withRetry } from "./pipe.js";
|
|
12
12
|
export type { ChainFn, HookOptions, ListenerFn, RetryOpts } from "./types.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,IAAI,EAAE,KAAK,IAAI,EAAE,MAAM,QAAQ,CAAC;AACzC,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,IAAI,EAAE,KAAK,IAAI,EAAE,MAAM,QAAQ,CAAC;AACzC,OAAO,EACL,WAAW,EACX,KAAK,IAAI,EACT,KAAK,OAAO,EACZ,KAAK,MAAM,EACX,KAAK,WAAW,GACjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACtD,YAAY,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* fire in parallel via Promise.allSettled. See architecture-sketch.html §06–§07.
|
|
7
7
|
*/
|
|
8
8
|
export { hook } from "./hook.js";
|
|
9
|
-
export { createHooks } from "./create-hooks.js";
|
|
9
|
+
export { createHooks, } from "./create-hooks.js";
|
|
10
10
|
export { compose } from "./compose.js";
|
|
11
11
|
export { pipe, withTimeout, withRetry } from "./pipe.js";
|
|
12
12
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,IAAI,EAAa,MAAM,QAAQ,CAAC;AACzC,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,IAAI,EAAa,MAAM,QAAQ,CAAC;AACzC,OAAO,EACL,WAAW,GAKZ,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nwire/hooks",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.1",
|
|
4
4
|
"description": "Nwire — the universal dispatch primitive. One hook() accepts both .use() (sequential koa-compose chain) and .on() (parallel listener) attachments. Built on emittery + a ~30 LOC composer. Standalone, in-process only, ~100 LOC of surface.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"dispatch",
|
|
@@ -11,9 +11,11 @@
|
|
|
11
11
|
"middleware",
|
|
12
12
|
"nwire"
|
|
13
13
|
],
|
|
14
|
+
"license": "MIT",
|
|
14
15
|
"files": [
|
|
15
16
|
"dist",
|
|
16
|
-
"README.md"
|
|
17
|
+
"README.md",
|
|
18
|
+
"LICENSE"
|
|
17
19
|
],
|
|
18
20
|
"type": "module",
|
|
19
21
|
"main": "./dist/index.js",
|