@nwire/handler 0.8.0 → 0.9.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.
@@ -53,14 +53,15 @@ export function pipe(...args) {
53
53
  else
54
54
  flattened.push(s);
55
55
  }
56
- const hookName = name ??
57
- ($source ? `pipe@${$source.file}:${$source.line}` : "pipe@<unknown>");
56
+ const hookName = name ?? ($source ? `pipe@${$source.file}:${$source.line}` : "pipe@<unknown>");
58
57
  const $hook = hook(hookName);
59
58
  for (const step of flattened) {
60
59
  if (step.$kind !== "middleware")
61
60
  continue;
62
61
  const stepName = step.name ?? "anonymous";
63
- $hook.use(async (ctx, next) => { await step.fn(ctx, next); }, { name: stepName });
62
+ $hook.use(async (ctx, next) => {
63
+ await step.fn(ctx, next);
64
+ }, { name: stepName });
64
65
  }
65
66
  return { $kind: "pipe", steps: flattened, name, $hook, $source };
66
67
  }
@@ -1 +1 @@
1
- {"version":3,"file":"define-middleware.js","sourceRoot":"","sources":["../src/define-middleware.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"define-middleware.js","sourceRoot":"","sources":["../src/define-middleware.ts"],"names":[],"mappings":"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"}
@@ -1,27 +1,20 @@
1
1
  /**
2
2
  * `@nwire/handler` — the operation primitive.
3
3
  *
4
- * Per the sealed architecture (§05), every transport (HTTP, queue,
5
- * MCP, CLI, …) speaks the same handler shape. This package ships that
6
- * shape the operation as value without dragging in forge's action /
7
- * actor / event machinery. A NestJS team can import `defineHandler`
8
- * from here, mount it on Express, and never touch `@nwire/forge`.
9
- *
10
- * `@nwire/forge` re-exports the same names so existing call sites keep
11
- * compiling unchanged. Forge layers `defineAction = defineHandler +
12
- * { flavor: "action", emits }` on top — same primitive, additional
13
- * semantics for the event-driven path.
4
+ * A handler is a typed, callable, hookable value built on `@nwire/hooks`.
5
+ * One value, every transport (HTTP, queue, MCP, CLI, direct test)
6
+ * standalone, no DI, no events, no logger, no transport opinions. Ctx is
7
+ * generic; the app pins `TExtras` via `defineHandlerWith<TExtras>()` once
8
+ * at the boot site and every handler reads `ctx` as the bound shape with
9
+ * full autocomplete, zero per-call annotations.
14
10
  *
15
11
  * Public surface:
16
12
  *
17
13
  * Primitives
18
- * defineHandler(name, config) — the operation primitive
19
- * execute(handler, input) direct invocation
20
- * defineError(meta) — typed throwable
21
- * defineResource(name, opts) — interface/response shape
22
- * defineMiddleware — chain step
23
- * defineHook — before/after-only step
24
- * pipe(...steps) — compose chain
14
+ * defineHandler(name, config) — the operation primitive
15
+ * defineHandlerWith<TExtras>() app-boundary factory binding
16
+ * defineError(meta) — typed throwable
17
+ * defineResource(name, opts) — interface/response shape
25
18
  *
26
19
  * Response factories
27
20
  * ok / ok.list / created / accepted / noContent / notModified / gone
@@ -30,12 +23,14 @@
30
23
  * Unauthorized / Forbidden / NotFound / Conflict / Gone / BadRequest
31
24
  *
32
25
  * Types
33
- * HandlerDefinition / HandlerConfig / HandlerContext / HandlerLike
34
- * ResponseInstance / ResponseSpec / ChainFn / NwireError
26
+ * HandlerDefinition / HandlerConfig / Ctx / HandlerBaseCtx
27
+ * HandlerRunCtx / PreparedOp / HandlerLike
28
+ * HandlerMeta / HandlerSettings (empty bags — extend via declaration merging)
29
+ * HandlerInput<H> / HandlerOutput<H> / HandlerExtras<H>
30
+ * ResponseInstance / ResponseSpec / NwireError
35
31
  */
36
- export { defineHandler, execute, isHandlerDefinition, type HandlerDefinition, type HandlerConfig, type HandlerContext, type HandlerMeta, type HandlerSettings, type HandlerReturnsSpec, type HandlerPolicy, type HandlerLike, type ExecuteOptions, } from "./define-handler.js";
32
+ export { defineHandler, defineHandlerWith, isHandlerDefinition, type HandlerDefinition, type HandlerConfig, type HandlerBaseCtx, type Ctx, type HandlerMeta, type HandlerSettings, type HandlerReturnsSpec, type HandlerRunCtx, type HandlerLike, type PreparedOp, type PreparedOpRunOptions, type HandlerInput, type HandlerOutput, type HandlerExtras, type InferInput, type ResponseInstance, } from "./define-handler.js";
37
33
  export { defineError, isNwireError, NwireError, Unauthorized, Forbidden, NotFound, Gone, BadRequest, Conflict, type ErrorDefinition, type ErrorMeta, } from "./define-error.js";
38
34
  export { defineResource, isResourceDefinition, type ResourceDefinition, type DefineResourceOptions, } from "./define-resource.js";
39
- export { defineMiddleware, defineHook, pipe, unwindPipe, isMiddleware, isHook, isPipe, type MiddlewareDefinition, type HookDefinition, type MiddlewarePipe, type PipeStep, type ChainFn, type ResolverCtx, type Next, } from "./define-middleware.js";
40
- export { response, isResponseSpec, isResponseInstance, ok, created, accepted, noContent, notModified, gone, type ResponseSpec, type ListResponseSpec, type ResponseInstance, type ResponseSpecBase, type ResponseKind, } from "./response.js";
35
+ export { response, isResponseSpec, isResponseInstance, ok, created, accepted, noContent, notModified, gone, type ResponseSpec, type ListResponseSpec, type ResponseSpecBase, type ResponseKind, } from "./response.js";
41
36
  //# sourceMappingURL=handler-index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"handler-index.d.ts","sourceRoot":"","sources":["../src/handler-index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,OAAO,EACL,aAAa,EACb,OAAO,EACP,mBAAmB,EACnB,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,cAAc,GACpB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,WAAW,EACX,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,SAAS,EACT,QAAQ,EACR,IAAI,EACJ,UAAU,EACV,QAAQ,EACR,KAAK,eAAe,EACpB,KAAK,SAAS,GACf,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,GAC3B,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,gBAAgB,EAChB,UAAU,EACV,IAAI,EACJ,UAAU,EACV,YAAY,EACZ,MAAM,EACN,MAAM,EACN,KAAK,oBAAoB,EACzB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,QAAQ,EACb,KAAK,OAAO,EACZ,KAAK,WAAW,EAChB,KAAK,IAAI,GACV,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,QAAQ,EACR,cAAc,EACd,kBAAkB,EAClB,EAAE,EACF,OAAO,EACP,QAAQ,EACR,SAAS,EACT,WAAW,EACX,IAAI,EACJ,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,YAAY,GAClB,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"handler-index.d.ts","sourceRoot":"","sources":["../src/handler-index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,mBAAmB,EACnB,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,GAAG,EACR,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,oBAAoB,EACzB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,gBAAgB,GACtB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,WAAW,EACX,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,SAAS,EACT,QAAQ,EACR,IAAI,EACJ,UAAU,EACV,QAAQ,EACR,KAAK,eAAe,EACpB,KAAK,SAAS,GACf,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,GAC3B,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,QAAQ,EACR,cAAc,EACd,kBAAkB,EAClB,EAAE,EACF,OAAO,EACP,QAAQ,EACR,SAAS,EACT,WAAW,EACX,IAAI,EACJ,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,YAAY,GAClB,MAAM,eAAe,CAAC"}
@@ -1,27 +1,20 @@
1
1
  /**
2
2
  * `@nwire/handler` — the operation primitive.
3
3
  *
4
- * Per the sealed architecture (§05), every transport (HTTP, queue,
5
- * MCP, CLI, …) speaks the same handler shape. This package ships that
6
- * shape the operation as value without dragging in forge's action /
7
- * actor / event machinery. A NestJS team can import `defineHandler`
8
- * from here, mount it on Express, and never touch `@nwire/forge`.
9
- *
10
- * `@nwire/forge` re-exports the same names so existing call sites keep
11
- * compiling unchanged. Forge layers `defineAction = defineHandler +
12
- * { flavor: "action", emits }` on top — same primitive, additional
13
- * semantics for the event-driven path.
4
+ * A handler is a typed, callable, hookable value built on `@nwire/hooks`.
5
+ * One value, every transport (HTTP, queue, MCP, CLI, direct test)
6
+ * standalone, no DI, no events, no logger, no transport opinions. Ctx is
7
+ * generic; the app pins `TExtras` via `defineHandlerWith<TExtras>()` once
8
+ * at the boot site and every handler reads `ctx` as the bound shape with
9
+ * full autocomplete, zero per-call annotations.
14
10
  *
15
11
  * Public surface:
16
12
  *
17
13
  * Primitives
18
- * defineHandler(name, config) — the operation primitive
19
- * execute(handler, input) direct invocation
20
- * defineError(meta) — typed throwable
21
- * defineResource(name, opts) — interface/response shape
22
- * defineMiddleware — chain step
23
- * defineHook — before/after-only step
24
- * pipe(...steps) — compose chain
14
+ * defineHandler(name, config) — the operation primitive
15
+ * defineHandlerWith<TExtras>() app-boundary factory binding
16
+ * defineError(meta) — typed throwable
17
+ * defineResource(name, opts) — interface/response shape
25
18
  *
26
19
  * Response factories
27
20
  * ok / ok.list / created / accepted / noContent / notModified / gone
@@ -30,12 +23,14 @@
30
23
  * Unauthorized / Forbidden / NotFound / Conflict / Gone / BadRequest
31
24
  *
32
25
  * Types
33
- * HandlerDefinition / HandlerConfig / HandlerContext / HandlerLike
34
- * ResponseInstance / ResponseSpec / ChainFn / NwireError
26
+ * HandlerDefinition / HandlerConfig / Ctx / HandlerBaseCtx
27
+ * HandlerRunCtx / PreparedOp / HandlerLike
28
+ * HandlerMeta / HandlerSettings (empty bags — extend via declaration merging)
29
+ * HandlerInput<H> / HandlerOutput<H> / HandlerExtras<H>
30
+ * ResponseInstance / ResponseSpec / NwireError
35
31
  */
36
- export { defineHandler, execute, isHandlerDefinition, } from "./define-handler.js";
32
+ export { defineHandler, defineHandlerWith, isHandlerDefinition, } from "./define-handler.js";
37
33
  export { defineError, isNwireError, NwireError, Unauthorized, Forbidden, NotFound, Gone, BadRequest, Conflict, } from "./define-error.js";
38
34
  export { defineResource, isResourceDefinition, } from "./define-resource.js";
39
- export { defineMiddleware, defineHook, pipe, unwindPipe, isMiddleware, isHook, isPipe, } from "./define-middleware.js";
40
35
  export { response, isResponseSpec, isResponseInstance, ok, created, accepted, noContent, notModified, gone, } from "./response.js";
41
36
  //# sourceMappingURL=handler-index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"handler-index.js","sourceRoot":"","sources":["../src/handler-index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,OAAO,EACL,aAAa,EACb,OAAO,EACP,mBAAmB,GAUpB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,WAAW,EACX,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,SAAS,EACT,QAAQ,EACR,IAAI,EACJ,UAAU,EACV,QAAQ,GAGT,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,cAAc,EACd,oBAAoB,GAGrB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,gBAAgB,EAChB,UAAU,EACV,IAAI,EACJ,UAAU,EACV,YAAY,EACZ,MAAM,EACN,MAAM,GAQP,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,QAAQ,EACR,cAAc,EACd,kBAAkB,EAClB,EAAE,EACF,OAAO,EACP,QAAQ,EACR,SAAS,EACT,WAAW,EACX,IAAI,GAML,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"handler-index.js","sourceRoot":"","sources":["../src/handler-index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,mBAAmB,GAiBpB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,WAAW,EACX,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,SAAS,EACT,QAAQ,EACR,IAAI,EACJ,UAAU,EACV,QAAQ,GAGT,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,cAAc,EACd,oBAAoB,GAGrB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,QAAQ,EACR,cAAc,EACd,kBAAkB,EAClB,EAAE,EACF,OAAO,EACP,QAAQ,EACR,SAAS,EACT,WAAW,EACX,IAAI,GAKL,MAAM,eAAe,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@nwire/handler",
3
- "version": "0.8.0",
4
- "description": "Nwire — the operation primitive. defineHandler / defineError / defineResource / defineMiddleware / pipe / response factories / typed framework errors. Standalone depend on this without pulling forge. Every transport (HTTP, queue, MCP, ) speaks the same handler shape.",
3
+ "version": "0.9.1",
4
+ "description": "Nwire — the operation primitive. Typed, callable, hookable value built on @nwire/hooks. defineHandler / defineError / defineResource / response factories / framework errors. Standalone; every transport (HTTP, queue, MCP, CLI) speaks the same handler shape.",
5
5
  "keywords": [
6
6
  "execute",
7
7
  "handler",
@@ -28,11 +28,8 @@
28
28
  },
29
29
  "dependencies": {
30
30
  "zod": "^4.0.0",
31
- "@nwire/container": "0.8.0",
32
- "@nwire/hooks": "0.8.0",
33
- "@nwire/envelope": "0.8.0",
34
- "@nwire/messages": "0.8.0",
35
- "@nwire/logger": "0.8.0"
31
+ "@nwire/messages": "0.9.1",
32
+ "@nwire/hooks": "0.9.1"
36
33
  },
37
34
  "devDependencies": {
38
35
  "@types/node": "^22.19.9",