@graphrefly/ts 0.0.1 → 0.0.2
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/actions-types-CSC3NMDl.d.ts +657 -0
- package/dist/actions-types-wl9Mgkmr.d.cts +657 -0
- package/dist/adapters/index.cjs +5157 -2951
- package/dist/adapters/index.cjs.map +1 -1
- package/dist/adapters/index.d.cts +207 -70
- package/dist/adapters/index.d.ts +207 -70
- package/dist/adapters/index.js +3738 -1688
- package/dist/adapters/index.js.map +1 -1
- package/dist/adapters/nestjs/microservices.cjs +841 -0
- package/dist/adapters/nestjs/microservices.cjs.map +1 -0
- package/dist/adapters/nestjs/microservices.d.cts +45 -0
- package/dist/adapters/nestjs/microservices.d.ts +45 -0
- package/dist/adapters/nestjs/microservices.js +206 -0
- package/dist/adapters/nestjs/microservices.js.map +1 -0
- package/dist/adapters/nestjs/native.cjs +1391 -0
- package/dist/adapters/nestjs/native.cjs.map +1 -0
- package/dist/adapters/nestjs/native.d.cts +111 -0
- package/dist/adapters/nestjs/native.d.ts +111 -0
- package/dist/adapters/nestjs/native.js +577 -0
- package/dist/adapters/nestjs/native.js.map +1 -0
- package/dist/adapters/nestjs/websockets.cjs +924 -0
- package/dist/adapters/nestjs/websockets.cjs.map +1 -0
- package/dist/adapters/nestjs/websockets.d.cts +47 -0
- package/dist/adapters/nestjs/websockets.d.ts +47 -0
- package/dist/adapters/nestjs/websockets.js +286 -0
- package/dist/adapters/nestjs/websockets.js.map +1 -0
- package/dist/adapters/nestjs.cjs +1085 -0
- package/dist/adapters/nestjs.cjs.map +1 -0
- package/dist/adapters/nestjs.d.cts +385 -0
- package/dist/adapters/nestjs.d.ts +385 -0
- package/dist/adapters/nestjs.js +112 -0
- package/dist/adapters/nestjs.js.map +1 -0
- package/dist/adapters/observe-storage.d.cts +3 -3
- package/dist/adapters/observe-storage.d.ts +3 -3
- package/dist/adapters/observe-storage.js +4 -4
- package/dist/adapters/react.cjs.map +1 -1
- package/dist/adapters/react.d.cts +2 -2
- package/dist/adapters/react.d.ts +2 -2
- package/dist/adapters/react.js +1 -1
- package/dist/adapters/solid.cjs.map +1 -1
- package/dist/adapters/solid.d.cts +2 -2
- package/dist/adapters/solid.d.ts +2 -2
- package/dist/adapters/solid.js +1 -1
- package/dist/adapters/svelte.cjs.map +1 -1
- package/dist/adapters/svelte.d.cts +2 -2
- package/dist/adapters/svelte.d.ts +2 -2
- package/dist/adapters/svelte.js +1 -1
- package/dist/adapters/vue.cjs.map +1 -1
- package/dist/adapters/vue.d.cts +2 -2
- package/dist/adapters/vue.d.ts +2 -2
- package/dist/adapters/vue.js +1 -1
- package/dist/{agent-runtime-DZTJ3C-p.d.cts → agent-runtime-types-core-CaXfKNtY.d.cts} +171 -320
- package/dist/{agent-runtime-BesGDZcB.d.ts → agent-runtime-types-core-hU299uIC.d.ts} +171 -320
- package/dist/agent-runtime-types-tool-BEpSINol.d.ts +695 -0
- package/dist/agent-runtime-types-tool-DninPEzk.d.cts +695 -0
- package/dist/agentic-memory-retention-BmGX368S.d.ts +14 -0
- package/dist/agentic-memory-retention-Ih1qhX9Z.d.cts +14 -0
- package/dist/{agentic-memory-BmRCvh0d.d.ts → agentic-memory-types-CVSUS6XR.d.ts} +13 -57
- package/dist/{agentic-memory-DfuVZ-lY.d.cts → agentic-memory-types-FnnYlVUs.d.cts} +13 -57
- package/dist/{capability-admission-g0mn9hpq.d.ts → capability-admission-BW2CziT6.d.ts} +3 -3
- package/dist/{capability-admission-B0BzqAm5.d.cts → capability-admission-lwSecxXs.d.cts} +3 -3
- package/dist/chunk-2KUAG2GZ.js +9693 -0
- package/dist/chunk-2KUAG2GZ.js.map +1 -0
- package/dist/chunk-2NJP6GO4.js +1320 -0
- package/dist/chunk-2NJP6GO4.js.map +1 -0
- package/dist/{chunk-YDSIVHRR.js → chunk-4NWSNI4K.js} +1598 -1584
- package/dist/chunk-4NWSNI4K.js.map +1 -0
- package/dist/{chunk-Z2ANQ6JW.js → chunk-4Q77MMJY.js} +2 -2
- package/dist/chunk-6E76H4OU.js +132 -0
- package/dist/chunk-6E76H4OU.js.map +1 -0
- package/dist/chunk-7GOTIIQ7.js +819 -0
- package/dist/chunk-7GOTIIQ7.js.map +1 -0
- package/dist/{chunk-IXZBUWSP.js → chunk-7HZRJMN6.js} +2 -2
- package/dist/{chunk-SS2A464I.js → chunk-CJIFGJQG.js} +3 -3
- package/dist/{chunk-V7CIJE4B.js → chunk-CX6B6PO2.js} +92 -9
- package/dist/chunk-CX6B6PO2.js.map +1 -0
- package/dist/{chunk-FBUU43PM.js → chunk-E4QCH32M.js} +448 -446
- package/dist/chunk-E4QCH32M.js.map +1 -0
- package/dist/{chunk-HKK2JD7Z.js → chunk-ECURQ3HD.js} +12 -125
- package/dist/chunk-ECURQ3HD.js.map +1 -0
- package/dist/{chunk-3JR3EDB2.js → chunk-EOKT4QFF.js} +121 -115
- package/dist/chunk-EOKT4QFF.js.map +1 -0
- package/dist/{chunk-K3FXTC3I.js → chunk-HJACH5PU.js} +3 -3
- package/dist/{chunk-GTPCOEOZ.js → chunk-IDMLXLLG.js} +3 -3
- package/dist/{chunk-DKP56CSW.js → chunk-JKAYLDQV.js} +2 -2
- package/dist/{chunk-4VLAQHZI.js → chunk-K7FB3JTD.js} +17 -1
- package/dist/chunk-K7FB3JTD.js.map +1 -0
- package/dist/{chunk-H75VXTGT.js → chunk-L6LDXRWE.js} +3 -3
- package/dist/{chunk-H75VXTGT.js.map → chunk-L6LDXRWE.js.map} +1 -1
- package/dist/{chunk-YXMZ2N6J.js → chunk-M7J6Z4IJ.js} +1071 -1025
- package/dist/chunk-M7J6Z4IJ.js.map +1 -0
- package/dist/chunk-MQEQMS7B.js +1009 -0
- package/dist/chunk-MQEQMS7B.js.map +1 -0
- package/dist/chunk-MTELVIYR.js +1421 -0
- package/dist/chunk-MTELVIYR.js.map +1 -0
- package/dist/{chunk-QFY4AFY4.js → chunk-PVC7WDKI.js} +58 -52
- package/dist/chunk-PVC7WDKI.js.map +1 -0
- package/dist/{chunk-VTHLCFN4.js → chunk-RAHNUYA5.js} +2 -2
- package/dist/{chunk-XKXWK2KP.js → chunk-SHZDP2MQ.js} +1157 -1021
- package/dist/chunk-SHZDP2MQ.js.map +1 -0
- package/dist/{chunk-CZNV3VXM.js → chunk-SIDJO2T4.js} +11 -11
- package/dist/chunk-STXRMPW4.js +4131 -0
- package/dist/chunk-STXRMPW4.js.map +1 -0
- package/dist/{chunk-2747WN4Y.js → chunk-TPND5MJS.js} +3 -3
- package/dist/chunk-TQPCAIQI.js +612 -0
- package/dist/chunk-TQPCAIQI.js.map +1 -0
- package/dist/{chunk-43BKLFZU.js → chunk-YDWBXXQZ.js} +10 -10
- package/dist/{chunk-6PHB5CJS.js → chunk-ZLFRB6FI.js} +2 -2
- package/dist/composition/index.cjs +1228 -1076
- package/dist/composition/index.cjs.map +1 -1
- package/dist/composition/index.d.cts +3 -3
- package/dist/composition/index.d.ts +3 -3
- package/dist/composition/index.js +4 -4
- package/dist/core/index.cjs +1198 -1046
- package/dist/core/index.cjs.map +1 -1
- package/dist/core/index.d.cts +1 -1
- package/dist/core/index.d.ts +1 -1
- package/dist/core/index.js +2 -2
- package/dist/cqrs/index.d.cts +3 -3
- package/dist/cqrs/index.d.ts +3 -3
- package/dist/cqrs/messaging.d.cts +4 -4
- package/dist/cqrs/messaging.d.ts +4 -4
- package/dist/cqrs/work-queue.d.cts +5 -5
- package/dist/cqrs/work-queue.d.ts +5 -5
- package/dist/data-structures/index.cjs +1226 -1074
- package/dist/data-structures/index.cjs.map +1 -1
- package/dist/data-structures/index.d.cts +8 -7
- package/dist/data-structures/index.d.ts +8 -7
- package/dist/data-structures/index.js +6 -5
- package/dist/{describe-BpyJuWkw.d.ts → describe-B_A5fbXH.d.ts} +1 -1
- package/dist/{describe-DYMw_l1C.d.cts → describe-CQRrkv-Q.d.cts} +1 -1
- package/dist/executors/tool-provider-adapters.cjs +3091 -0
- package/dist/executors/tool-provider-adapters.cjs.map +1 -0
- package/dist/executors/tool-provider-adapters.d.cts +174 -0
- package/dist/executors/tool-provider-adapters.d.ts +174 -0
- package/dist/executors/tool-provider-adapters.js +1336 -0
- package/dist/executors/tool-provider-adapters.js.map +1 -0
- package/dist/executors/tool-provider-runtime.cjs +5178 -0
- package/dist/executors/tool-provider-runtime.cjs.map +1 -0
- package/dist/executors/tool-provider-runtime.d.cts +17 -0
- package/dist/executors/tool-provider-runtime.d.ts +17 -0
- package/dist/executors/tool-provider-runtime.js +15 -0
- package/dist/executors/tool-provider-runtime.js.map +1 -0
- package/dist/executors/tool-provider.cjs +6392 -0
- package/dist/executors/tool-provider.cjs.map +1 -0
- package/dist/executors/tool-provider.d.cts +60 -0
- package/dist/executors/tool-provider.d.ts +60 -0
- package/dist/executors/tool-provider.js +89 -0
- package/dist/executors/tool-provider.js.map +1 -0
- package/dist/executors/work-queue.d.cts +6 -6
- package/dist/executors/work-queue.d.ts +6 -6
- package/dist/graph/index.cjs +1499 -1341
- package/dist/graph/index.cjs.map +1 -1
- package/dist/graph/index.d.cts +9 -8
- package/dist/graph/index.d.ts +9 -8
- package/dist/graph/index.js +23 -22
- package/dist/{graph-DCEWh4T2.d.cts → graph-CWK3HLPB.d.cts} +133 -131
- package/dist/{graph-D-1-SQeC.d.ts → graph-ho5sotHP.d.ts} +133 -131
- package/dist/{index-Bmxeu0nK.d.ts → index-CQWcE0Dw.d.ts} +18 -4
- package/dist/{index-72VZC0-E.d.cts → index-DHA1i67c.d.cts} +18 -4
- package/dist/index.cjs +3397 -3140
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +12 -9
- package/dist/index.d.ts +12 -9
- package/dist/index.js +110 -109
- package/dist/inspection/boundary.d.cts +4 -4
- package/dist/inspection/boundary.d.ts +4 -4
- package/dist/measurements-C0mAvWU1.d.cts +164 -0
- package/dist/measurements-OMpCeBwh.d.ts +164 -0
- package/dist/messaging/index.cjs +57 -51
- package/dist/messaging/index.cjs.map +1 -1
- package/dist/messaging/index.d.cts +11 -276
- package/dist/messaging/index.d.ts +11 -276
- package/dist/messaging/index.js +1 -1
- package/dist/operators/index.cjs +1228 -1076
- package/dist/operators/index.cjs.map +1 -1
- package/dist/operators/index.d.cts +5 -5
- package/dist/operators/index.d.ts +5 -5
- package/dist/operators/index.js +5 -5
- package/dist/orchestration/index.cjs +8844 -6071
- package/dist/orchestration/index.cjs.map +1 -1
- package/dist/orchestration/index.d.cts +171 -224
- package/dist/orchestration/index.d.ts +171 -224
- package/dist/orchestration/index.js +42 -991
- package/dist/orchestration/index.js.map +1 -1
- package/dist/orchestration/messaging.d.cts +5 -8
- package/dist/orchestration/messaging.d.ts +5 -8
- package/dist/orchestration/work-queue.cjs +1243 -5
- package/dist/orchestration/work-queue.cjs.map +1 -1
- package/dist/orchestration/work-queue.d.cts +121 -10
- package/dist/orchestration/work-queue.d.ts +121 -10
- package/dist/orchestration/work-queue.js +1067 -4
- package/dist/orchestration/work-queue.js.map +1 -1
- package/dist/patterns/event-flow.cjs +6 -20
- package/dist/patterns/event-flow.cjs.map +1 -1
- package/dist/patterns/event-flow.d.cts +4 -4
- package/dist/patterns/event-flow.d.ts +4 -4
- package/dist/patterns/event-flow.js +2 -2
- package/dist/patterns/index.cjs +453 -465
- package/dist/patterns/index.cjs.map +1 -1
- package/dist/patterns/index.d.cts +6 -5
- package/dist/patterns/index.d.ts +6 -5
- package/dist/patterns/index.js +3 -3
- package/dist/process-types-C9uMYz3i.d.ts +200 -0
- package/dist/process-types-h3uRlzDc.d.cts +200 -0
- package/dist/{reactive-collection-DNV0-gFi.d.cts → reactive-collection-B9R0Bl1P.d.cts} +4 -34
- package/dist/{reactive-collection-BAmfrGjd.d.ts → reactive-collection-BXFrH0U2.d.ts} +4 -34
- package/dist/{reactive-collection-storage-BNEldDyi.d.cts → reactive-collection-storage-BLGv8Xp8.d.cts} +5 -5
- package/dist/{reactive-collection-storage-YZsAQsWK.d.ts → reactive-collection-storage-a4zD3665.d.ts} +5 -5
- package/dist/{reactive-map-DRD1LJ2H.d.cts → reactive-map-C_8sOfdS.d.cts} +3 -2
- package/dist/{reactive-map-EsDiCmJk.d.ts → reactive-map-jle5dnok.d.ts} +3 -2
- package/dist/render/index.d.cts +2 -2
- package/dist/render/index.d.ts +2 -2
- package/dist/scheduled-readiness-5rwQlyjV.d.ts +91 -0
- package/dist/scheduled-readiness-DpRY8jI0.d.cts +91 -0
- package/dist/semantic-memory-graph-C2ZUwIlq.d.ts +30 -0
- package/dist/semantic-memory-graph-DlZBD_Eu.d.cts +30 -0
- package/dist/{semantic-memory-graph-DKuNzuWw.d.cts → semantic-memory-graph-types-BvzdqmkY.d.cts} +2 -28
- package/dist/{semantic-memory-graph-uwbwJdhe.d.ts → semantic-memory-graph-types-Ci-OtahO.d.ts} +2 -28
- package/dist/solutions/index.cjs +6353 -6169
- package/dist/solutions/index.cjs.map +1 -1
- package/dist/solutions/index.d.cts +12 -10
- package/dist/solutions/index.d.ts +12 -10
- package/dist/solutions/index.js +5 -5
- package/dist/solutions/reactive-layout/browser/index.cjs +116 -108
- package/dist/solutions/reactive-layout/browser/index.cjs.map +1 -1
- package/dist/solutions/reactive-layout/browser/index.d.cts +4 -4
- package/dist/solutions/reactive-layout/browser/index.d.ts +4 -4
- package/dist/solutions/reactive-layout/browser/index.js +3 -3
- package/dist/solutions/reactive-layout/index.cjs +3578 -3350
- package/dist/solutions/reactive-layout/index.cjs.map +1 -1
- package/dist/solutions/reactive-layout/index.d.cts +32 -576
- package/dist/solutions/reactive-layout/index.d.ts +32 -576
- package/dist/solutions/reactive-layout/index.js +65 -5
- package/dist/solutions/reactive-layout/node-canvas/index.cjs +127 -117
- package/dist/solutions/reactive-layout/node-canvas/index.cjs.map +1 -1
- package/dist/solutions/reactive-layout/node-canvas/index.d.cts +4 -4
- package/dist/solutions/reactive-layout/node-canvas/index.d.ts +4 -4
- package/dist/solutions/reactive-layout/node-canvas/index.js +3 -3
- package/dist/solutions/reactive-layout/react-native/index.cjs +127 -117
- package/dist/solutions/reactive-layout/react-native/index.cjs.map +1 -1
- package/dist/solutions/reactive-layout/react-native/index.d.cts +4 -4
- package/dist/solutions/reactive-layout/react-native/index.d.ts +4 -4
- package/dist/solutions/reactive-layout/react-native/index.js +3 -3
- package/dist/solutions/reactive-layout/skia/index.cjs +127 -117
- package/dist/solutions/reactive-layout/skia/index.cjs.map +1 -1
- package/dist/solutions/reactive-layout/skia/index.d.cts +4 -4
- package/dist/solutions/reactive-layout/skia/index.d.ts +4 -4
- package/dist/solutions/reactive-layout/skia/index.js +3 -3
- package/dist/solutions/work-item/actions.cjs +1609 -1428
- package/dist/solutions/work-item/actions.cjs.map +1 -1
- package/dist/solutions/work-item/actions.d.cts +23 -184
- package/dist/solutions/work-item/actions.d.ts +23 -184
- package/dist/solutions/work-item/actions.js +1558 -934
- package/dist/solutions/work-item/actions.js.map +1 -1
- package/dist/solutions/work-item/scheduling.cjs +9181 -1838
- package/dist/solutions/work-item/scheduling.cjs.map +1 -1
- package/dist/solutions/work-item/scheduling.d.cts +1763 -328
- package/dist/solutions/work-item/scheduling.d.ts +1763 -328
- package/dist/solutions/work-item/scheduling.js +117 -3
- package/dist/solutions/work-item/work-queue.d.cts +7 -7
- package/dist/solutions/work-item/work-queue.d.ts +7 -7
- package/dist/sources/browser.cjs +1318 -1083
- package/dist/sources/browser.cjs.map +1 -1
- package/dist/sources/browser.d.cts +4 -4
- package/dist/sources/browser.d.ts +4 -4
- package/dist/sources/browser.js +4 -4
- package/dist/sources/index.cjs +1318 -1083
- package/dist/sources/index.cjs.map +1 -1
- package/dist/sources/index.d.cts +4 -4
- package/dist/sources/index.d.ts +4 -4
- package/dist/sources/index.js +4 -4
- package/dist/sources/node.d.cts +3 -3
- package/dist/sources/node.d.ts +3 -3
- package/dist/storage/browser.cjs +16 -0
- package/dist/storage/browser.cjs.map +1 -1
- package/dist/storage/browser.js +3 -3
- package/dist/storage/index.cjs +16 -0
- package/dist/storage/index.cjs.map +1 -1
- package/dist/storage/index.d.cts +5 -4
- package/dist/storage/index.d.ts +5 -4
- package/dist/storage/index.js +6 -6
- package/dist/storage/node.cjs +16 -0
- package/dist/storage/node.cjs.map +1 -1
- package/dist/storage/node.js +3 -3
- package/dist/{store-C-joM4gh.d.ts → store-BmtEs9mG.d.ts} +1 -1
- package/dist/{store-CNJwmT-h.d.cts → store-PAAsYvML.d.cts} +1 -1
- package/dist/types-BRNKoFHj.d.ts +357 -0
- package/dist/{types-CcPIn7sy.d.cts → types-BS6CyR-x.d.cts} +27 -108
- package/dist/types-BWK2ay3e.d.cts +457 -0
- package/dist/types-BXKSAoE1.d.cts +357 -0
- package/dist/types-BaPpZItj.d.ts +457 -0
- package/dist/types-BhveCMg5.d.cts +274 -0
- package/dist/{types-BsJvElYZ.d.ts → types-C9NOgNJw.d.ts} +27 -108
- package/dist/types-CTsQ8Ww4.d.ts +274 -0
- package/dist/types-DL_05n2M.d.ts +34 -0
- package/dist/types-XDoqxYO9.d.cts +34 -0
- package/dist/{work-item-runtime-C3M79vE9.d.ts → work-item-runtime-types-BqtWnSCS.d.ts} +3 -93
- package/dist/{work-item-runtime-qaVgsL0T.d.cts → work-item-runtime-types-CHO03AKh.d.cts} +3 -93
- package/dist/work-queue/index.cjs +957 -953
- package/dist/work-queue/index.cjs.map +1 -1
- package/dist/work-queue/index.d.cts +9 -357
- package/dist/work-queue/index.d.ts +9 -357
- package/dist/work-queue/index.js +957 -953
- package/dist/work-queue/index.js.map +1 -1
- package/package.json +603 -513
- package/dist/chunk-3JR3EDB2.js.map +0 -1
- package/dist/chunk-4VLAQHZI.js.map +0 -1
- package/dist/chunk-6XAIOL3X.js +0 -2407
- package/dist/chunk-6XAIOL3X.js.map +0 -1
- package/dist/chunk-FBUU43PM.js.map +0 -1
- package/dist/chunk-HKK2JD7Z.js.map +0 -1
- package/dist/chunk-PC3BTTBE.js +0 -3217
- package/dist/chunk-PC3BTTBE.js.map +0 -1
- package/dist/chunk-QFY4AFY4.js.map +0 -1
- package/dist/chunk-V7CIJE4B.js.map +0 -1
- package/dist/chunk-XKXWK2KP.js.map +0 -1
- package/dist/chunk-YDSIVHRR.js.map +0 -1
- package/dist/chunk-YXMZ2N6J.js.map +0 -1
- /package/dist/{chunk-Z2ANQ6JW.js.map → chunk-4Q77MMJY.js.map} +0 -0
- /package/dist/{chunk-IXZBUWSP.js.map → chunk-7HZRJMN6.js.map} +0 -0
- /package/dist/{chunk-SS2A464I.js.map → chunk-CJIFGJQG.js.map} +0 -0
- /package/dist/{chunk-K3FXTC3I.js.map → chunk-HJACH5PU.js.map} +0 -0
- /package/dist/{chunk-GTPCOEOZ.js.map → chunk-IDMLXLLG.js.map} +0 -0
- /package/dist/{chunk-DKP56CSW.js.map → chunk-JKAYLDQV.js.map} +0 -0
- /package/dist/{chunk-VTHLCFN4.js.map → chunk-RAHNUYA5.js.map} +0 -0
- /package/dist/{chunk-CZNV3VXM.js.map → chunk-SIDJO2T4.js.map} +0 -0
- /package/dist/{chunk-2747WN4Y.js.map → chunk-TPND5MJS.js.map} +0 -0
- /package/dist/{chunk-43BKLFZU.js.map → chunk-YDWBXXQZ.js.map} +0 -0
- /package/dist/{chunk-6PHB5CJS.js.map → chunk-ZLFRB6FI.js.map} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/adapters/nestjs.ts"],"sourcesContent":["/**\n * Focused NestJS boundary bindings for GraphReFly (D474/D478).\n *\n * This subpath stays dependency-light: it exposes graph boundary primitives,\n * token/provider shapes, and decorator metadata without importing Nest itself.\n * User-land Nest modules/controllers bind these helpers to real decorators and\n * host lifecycle objects at the framework edge.\n */\n\nimport type { DataIssue } from \"../data/index.js\";\nimport type { Graph } from \"../graph/graph.js\";\nimport type { Node } from \"../node/node.js\";\nimport type { Message } from \"../protocol/messages.js\";\n\nexport const NEST_BOUNDARY_ENVELOPE_VERSION = 1;\nexport const NEST_BOUNDARY_PAYLOAD_MAX_BYTES = 64 * 1024;\nexport const NEST_HTTP_DIAGNOSTICS_MAX_RETAINED = 100;\n\n/** D478 minimal graph-visible transport envelope. Payload must be data-only. */\nexport interface NestBoundaryEnvelope<T = unknown> {\n\treadonly bindingId: string;\n\treadonly version: number;\n\treadonly payload: T;\n\treadonly requestId?: string;\n}\n\n/** Reply-capable egress must carry host-private request correlation (D478). */\nexport type NestReplyEnvelope<T = unknown> = NestBoundaryEnvelope<T> & {\n\treadonly requestId: string;\n};\n\nexport type NestBoundaryKind =\n\t| \"request\"\n\t| \"guard\"\n\t| \"interceptor\"\n\t| \"error\"\n\t| \"lifecycle\"\n\t| \"cron\"\n\t| \"diagnostics\"\n\t| \"ws\"\n\t| \"message\";\n\nexport type NestEgressKind = \"http\" | \"guard-decision\" | \"ws-ack\" | \"ws-reply\" | \"message-reply\";\nexport type NestFilterMode = \"handle\" | \"observe\";\nexport type NestDiagnosticPhase =\n\t| \"adapter\"\n\t| \"http\"\n\t| \"guard\"\n\t| \"filter\"\n\t| \"cron\"\n\t| \"lifecycle\"\n\t| \"ws\"\n\t| \"message\"\n\t| NestBoundaryKind\n\t| NestEgressKind;\n\nexport interface NestHttpResponsePayload<TBody = unknown> {\n\treadonly status: number;\n\treadonly body?: TBody;\n\treadonly headers?: Record<string, string>;\n}\n\nexport interface HttpDataIssue extends DataIssue {\n\treadonly status: number;\n\treadonly body?: unknown;\n\treadonly headers?: Record<string, string>;\n}\n\nexport type NestIssueResponse<THost = unknown> = (\n\tissue: DataIssue,\n\thost: THost,\n) => NestHttpResponsePayload;\n\nexport type NestProtocolErrorResponse<THost = unknown> = (\n\terrorPayload: unknown,\n\thost: THost,\n) => NestHttpResponsePayload;\n\nexport type GraphGuardDecision =\n\t| {\n\t\t\treadonly kind: \"allow\";\n\t\t\treadonly reason?: string;\n\t\t\treadonly metadata?: Record<string, unknown>;\n\t }\n\t| {\n\t\t\treadonly kind: \"deny\";\n\t\t\treadonly reason?: string;\n\t\t\treadonly status?: number;\n\t\t\treadonly body?: unknown;\n\t\t\treadonly headers?: Record<string, string>;\n\t\t\treadonly issue?: DataIssue | HttpDataIssue;\n\t\t\treadonly metadata?: Record<string, unknown>;\n\t };\n\nexport interface NestBoundaryDiagnostic {\n\treadonly kind:\n\t\t| \"binding-mismatch\"\n\t\t| \"dispose-pending\"\n\t\t| \"malformed-egress\"\n\t\t| \"stale-egress\"\n\t\t| \"terminal-egress\"\n\t\t| \"timeout\"\n\t\t| \"resolve-threw\"\n\t\t| \"reject-threw\";\n\treadonly phase?: NestDiagnosticPhase;\n\treadonly requestId?: string;\n\treadonly bindingId?: string;\n\treadonly expectedBindingId?: string;\n\treadonly message: string;\n\treadonly error?: unknown;\n}\n\nexport interface NestDiagnosticErrorPayload {\n\treadonly name?: string;\n\treadonly message: string;\n}\n\nexport interface NestDiagnosticPayload {\n\treadonly kind: NestBoundaryDiagnostic[\"kind\"];\n\treadonly phase: NestDiagnosticPhase;\n\treadonly requestId?: string;\n\treadonly bindingId?: string;\n\treadonly expectedBindingId?: string;\n\treadonly message: string;\n\treadonly error?: NestDiagnosticErrorPayload;\n}\n\nexport interface NestDiagnosticInput extends NestBoundaryDiagnostic {\n\treadonly phase?: NestDiagnosticPhase;\n}\n\nexport interface NestDiagnosticsOptions\n\textends Omit<NestIngressOptions<NestDiagnosticInput, NestDiagnosticPayload>, \"payload\"> {\n\treadonly phase?: NestDiagnosticPhase;\n}\n\nexport type NestDiagnosticIngressBoundary = NestIngressBoundary<\n\tNestDiagnosticInput,\n\tNestDiagnosticPayload\n>;\n\nexport interface NestIngressBoundary<THost = unknown, TPayload = THost> {\n\treadonly kind: NestBoundaryKind;\n\treadonly bindingId: string;\n\treadonly version: number;\n\treadonly node: Node<NestBoundaryEnvelope<TPayload>>;\n\tenvelope(host: THost, opts?: NestIngressEmitOptions<TPayload>): NestBoundaryEnvelope<TPayload>;\n\temit(host: THost, opts?: NestIngressEmitOptions<TPayload>): NestBoundaryEnvelope<TPayload>;\n}\n\nexport interface NestIngressOptions<THost, TPayload> {\n\treadonly bindingId?: string;\n\treadonly name?: string;\n\treadonly version?: number;\n\treadonly maxPayloadBytes?: number;\n\treadonly requestId?: string | ((host: THost) => string | undefined);\n\treadonly requireRequestId?: boolean;\n\treadonly payload?: (host: THost) => TPayload;\n}\n\nexport interface NestIngressEmitOptions<TPayload> {\n\treadonly requestId?: string;\n\treadonly bindingId?: string;\n\treadonly version?: number;\n\treadonly payload?: TPayload;\n\treadonly requireRequestId?: boolean;\n}\n\nexport interface NestReplyResponseHandle<TPayload> {\n\tresolve(payload: TPayload, envelope: NestReplyEnvelope<TPayload>): void;\n\treject(error: unknown, envelope?: NestReplyEnvelope<TPayload>): void;\n}\n\nexport interface NestReplyPendingRegistration<TPayload> {\n\treadonly requestId: string;\n\treadonly handle: NestReplyResponseHandle<TPayload>;\n\treadonly bindingId?: string;\n}\n\nexport interface NestReplyBoundary<TPayload = unknown> {\n\treadonly kind: NestEgressKind;\n\treadonly bindingId: string;\n\tattach(registration: NestReplyPendingRegistration<TPayload>): () => boolean;\n\tpendingCount(): number;\n\tdiagnostics(): readonly NestBoundaryDiagnostic[];\n\tdispose(): void;\n}\n\nexport interface NestHttpResponseHandle<TPayload> extends NestReplyResponseHandle<TPayload> {}\n\nexport interface NestHttpPendingRegistration<TPayload>\n\textends NestReplyPendingRegistration<TPayload> {}\n\nexport interface NestHttpBoundary<TPayload = unknown> extends NestReplyBoundary<TPayload> {\n\treadonly kind: \"http\";\n}\n\nexport interface ToNestHttpOptions<TPayload> {\n\treadonly bindingId?: string;\n\treadonly diagnosticBoundary?: NestDiagnosticIngressBoundary;\n\treadonly diagnosticPhase?: NestDiagnosticPhase;\n\treadonly maxDiagnostics?: number;\n\treadonly maxPayloadBytes?: number;\n\treadonly name?: string;\n\treadonly transform?: (payload: TPayload, envelope: NestReplyEnvelope<TPayload>) => TPayload;\n\treadonly label?: string;\n}\n\ninterface NestReplyPendingEntry<TPayload> {\n\treadonly requestId: string;\n\treadonly bindingId?: string;\n\treadonly handle: NestReplyResponseHandle<TPayload>;\n}\n\ninterface NestHttpPendingEntry<TPayload> extends NestReplyPendingEntry<TPayload> {}\n\nexport interface NestBoundaryDecoratorOptions<THost = unknown, TPayload = unknown> {\n\treadonly bindingId?: string;\n\treadonly payload?: (host: THost) => TPayload;\n\treadonly requestId?: string | ((host: THost) => string | undefined);\n\treadonly order?: number;\n}\n\nexport interface NestFilterDecoratorOptions<THost = unknown, TPayload = unknown>\n\textends NestBoundaryDecoratorOptions<THost, TPayload> {\n\treadonly mode?: NestFilterMode;\n\treadonly issueResponse?: NestIssueResponse<THost>;\n\treadonly protocolError?: NestProtocolErrorResponse<THost>;\n}\n\nexport interface NestHttpReplyDecoratorOptions<THost = unknown> {\n\treadonly bindingId: string;\n\treadonly order?: number;\n\treadonly issueResponse?: NestIssueResponse<THost>;\n\treadonly protocolError?: NestProtocolErrorResponse<THost>;\n}\n\nexport interface NestGuardDecisionDecoratorOptions<THost = unknown> {\n\treadonly bindingId: string;\n\treadonly order?: number;\n\treadonly issueResponse?: NestIssueResponse<THost>;\n\treadonly protocolError?: NestProtocolErrorResponse<THost>;\n}\n\nexport interface NestGraphRunOptions<THost = unknown> {\n\treadonly requestId?: string | ((host: THost) => string | undefined);\n}\n\nexport interface NestGraphBoundaryRunnerOptions {\n\treadonly diagnosticBoundary?: NestDiagnosticIngressBoundary;\n\treadonly diagnosticPhase?: NestDiagnosticPhase;\n}\n\nexport interface NestGraphBoundaryRunner {\n\trun<THost = unknown>(\n\t\ttarget: DecoratorHostConstructor | object,\n\t\tmethodKey: string | symbol,\n\t\thost: THost,\n\t\topts?: NestGraphRunOptions<THost>,\n\t): Promise<unknown> | undefined;\n\tdispose(): void;\n}\n\nexport interface NestExecutionContextLike {\n\tgetClass(): DecoratorHostConstructor;\n\tgetHandler(): DecoratorBoundMethod;\n\tswitchToHttp?(): { getRequest<T = unknown>(): T };\n}\n\nexport interface NestCallHandlerLike {\n\thandle(): unknown;\n}\n\nexport interface NestGraphBoundaryInterceptorOptions<THost = unknown>\n\textends NestGraphRunOptions<THost>,\n\t\tNestGraphBoundaryRunnerOptions {\n\treadonly host?: (context: NestExecutionContextLike) => THost;\n\treadonly runner?: NestGraphBoundaryRunner;\n}\n\nexport interface NestGraphBoundaryInterceptor {\n\tintercept(\n\t\tcontext: NestExecutionContextLike,\n\t\tnext?: NestCallHandlerLike,\n\t): Promise<unknown> | unknown;\n\tdispose(): void;\n}\n\n/** Injection token for a root graph singleton. */\nexport const GRAPHREFLY_ROOT_GRAPH = Symbol.for(\"graphrefly:root-graph\");\n\n/** Injection token for adapter module options. */\nexport const GRAPHREFLY_MODULE_OPTIONS = Symbol.for(\"graphrefly:module-options\");\n\n/** Injection token for a request-scoped graph. */\nexport const GRAPHREFLY_REQUEST_GRAPH = Symbol.for(\"graphrefly:request-graph\");\n\nexport type DecoratorHostConstructor = abstract new (...args: unknown[]) => unknown;\nexport type DecoratorBoundMethod = (...args: unknown[]) => unknown;\n\nexport interface OnGraphEventMeta {\n\tnodeName: string;\n\tmethodKey: string | symbol;\n}\n\nexport interface GraphIntervalMeta {\n\tms: number;\n\tmethodKey: string | symbol;\n}\n\nexport interface GraphCronMeta {\n\texpr: string;\n\tmethodKey: string | symbol;\n}\n\nexport type NestBoundaryBindingDirection = \"ingress\" | \"egress\";\n\nexport interface NestIngressBindingMeta {\n\treadonly direction: \"ingress\";\n\tkind: NestBoundaryKind;\n\tbindingId: string;\n\tmethodKey: string | symbol;\n\treadonly boundary: NestIngressBoundary<unknown, unknown>;\n\treadonly payload?: (host: unknown) => unknown;\n\treadonly requestId?: string | ((host: unknown) => string | undefined);\n\treadonly order?: number;\n\treadonly mode?: NestFilterMode;\n\treadonly issueResponse?: NestIssueResponse<unknown>;\n\treadonly protocolError?: NestProtocolErrorResponse<unknown>;\n}\n\nexport interface NestHttpReplyBindingMeta {\n\treadonly direction: \"egress\";\n\treadonly kind: \"http\";\n\treadonly bindingId: string;\n\treadonly methodKey: string | symbol;\n\treadonly replyNode: Node<NestReplyEnvelope<unknown>>;\n\treadonly order?: number;\n\treadonly issueResponse?: NestIssueResponse<unknown>;\n\treadonly protocolError?: NestProtocolErrorResponse<unknown>;\n}\n\nexport interface NestGuardDecisionBindingMeta {\n\treadonly direction: \"egress\";\n\treadonly kind: \"guard-decision\";\n\treadonly bindingId: string;\n\treadonly methodKey: string | symbol;\n\treadonly decisionNode: Node<NestReplyEnvelope<GraphGuardDecision>>;\n\treadonly order?: number;\n\treadonly issueResponse?: NestIssueResponse<unknown>;\n\treadonly protocolError?: NestProtocolErrorResponse<unknown>;\n}\n\nexport interface NestWsAckBindingMeta {\n\treadonly direction: \"egress\";\n\treadonly kind: \"ws-ack\";\n\treadonly bindingId: string;\n\treadonly methodKey: string | symbol;\n\treadonly ackNode: Node<NestReplyEnvelope<unknown>>;\n\treadonly order?: number;\n}\n\nexport interface NestWsReplyBindingMeta {\n\treadonly direction: \"egress\";\n\treadonly kind: \"ws-reply\";\n\treadonly bindingId: string;\n\treadonly methodKey: string | symbol;\n\treadonly replyNode: Node<NestReplyEnvelope<unknown>>;\n\treadonly order?: number;\n}\n\nexport interface NestMessageReplyBindingMeta {\n\treadonly direction: \"egress\";\n\treadonly kind: \"message-reply\";\n\treadonly bindingId: string;\n\treadonly methodKey: string | symbol;\n\treadonly replyNode: Node<NestReplyEnvelope<unknown>>;\n\treadonly order?: number;\n}\n\nexport type NestBoundaryBindingMeta =\n\t| NestIngressBindingMeta\n\t| NestHttpReplyBindingMeta\n\t| NestGuardDecisionBindingMeta\n\t| NestWsAckBindingMeta\n\t| NestWsReplyBindingMeta\n\t| NestMessageReplyBindingMeta;\n\nexport const EVENT_HANDLERS = new WeakMap<DecoratorHostConstructor, OnGraphEventMeta[]>();\nexport const INTERVAL_HANDLERS = new WeakMap<DecoratorHostConstructor, GraphIntervalMeta[]>();\nexport const CRON_HANDLERS = new WeakMap<DecoratorHostConstructor, GraphCronMeta[]>();\nexport const NEST_BOUNDARY_BINDINGS = new WeakMap<\n\tDecoratorHostConstructor,\n\tNestBoundaryBindingMeta[]\n>();\n\nexport type GraphMethodDecorator = MethodDecorator &\n\t((value: DecoratorBoundMethod, context: ClassMethodDecoratorContext) => void);\n\n/** Minimal Nest provider object shape without importing @nestjs/common. */\nexport type NestProviderBinding<T = unknown> =\n\t| { readonly provide: string | symbol; readonly useValue: T }\n\t| { readonly provide: string | symbol; readonly useFactory: (...args: unknown[]) => T };\n\n/** Get the injection token for a named feature graph. */\nexport function getGraphToken(name: string): symbol {\n\tassertNonEmptyString(name, \"getGraphToken(name)\");\n\treturn Symbol.for(`graphrefly:graph:${name}`);\n}\n\n/** Get the injection token for a node at a qualified path. */\nexport function getNodeToken(path: string): symbol {\n\tassertNonEmptyString(path, \"getNodeToken(path)\");\n\treturn Symbol.for(`graphrefly:node:${path}`);\n}\n\n/** Get the injection token for a named Nest boundary binding. */\nexport function getNestBoundaryToken(bindingId: string): symbol {\n\tassertNonEmptyString(bindingId, \"getNestBoundaryToken(bindingId)\");\n\treturn Symbol.for(`graphrefly:nest-boundary:${bindingId}`);\n}\n\n/** Build a dependency-free provider binding shape for user-land Nest modules. */\nexport function nestProvider<T>(provide: string | symbol, useValue: T): NestProviderBinding<T> {\n\treturn { provide, useValue };\n}\n\n/** D474 P0 HTTP request ingress. */\nexport function fromNestReq<THost = unknown, TPayload = THost>(\n\tgraph: Graph,\n\topts: NestIngressOptions<THost, TPayload> = {},\n): NestIngressBoundary<THost, TPayload> {\n\treturn nestIngress(graph, \"request\", opts);\n}\n\n/** D474 P0 guard/admission ingress. */\nexport function fromNestGuard<THost = unknown, TPayload = THost>(\n\tgraph: Graph,\n\topts: NestIngressOptions<THost, TPayload> = {},\n): NestIngressBoundary<THost, TPayload> {\n\treturn nestIngress(graph, \"guard\", opts);\n}\n\n/** D474 P1 interceptor ingress. */\nexport function fromNestIntercept<THost = unknown, TPayload = THost>(\n\tgraph: Graph,\n\topts: NestIngressOptions<THost, TPayload> = {},\n): NestIngressBoundary<THost, TPayload> {\n\treturn nestIngress(graph, \"interceptor\", opts);\n}\n\n/** D474 P0 error/filter ingress. */\nexport function fromNestError<THost = unknown, TPayload = THost>(\n\tgraph: Graph,\n\topts: NestIngressOptions<THost, TPayload> = {},\n): NestIngressBoundary<THost, TPayload> {\n\treturn nestIngress(graph, \"error\", opts);\n}\n\n/** D474 P1 Nest lifecycle hook ingress. */\nexport function fromNestLifecycle<THost = unknown, TPayload = THost>(\n\tgraph: Graph,\n\topts: NestIngressOptions<THost, TPayload> = {},\n): NestIngressBoundary<THost, TPayload> {\n\treturn nestIngress(graph, \"lifecycle\", opts);\n}\n\n/** D474 P1 schedule/cron ingress. */\nexport function fromNestCron<THost = unknown, TPayload = THost>(\n\tgraph: Graph,\n\topts: NestIngressOptions<THost, TPayload> = {},\n): NestIngressBoundary<THost, TPayload> {\n\treturn nestIngress(graph, \"cron\", opts);\n}\n\n/** D494 explicit graph-visible diagnostics ingress. Emits sanitized data-only payloads. */\nexport function fromNestDiagnostics(\n\tgraph: Graph,\n\topts: NestDiagnosticsOptions = {},\n): NestDiagnosticIngressBoundary {\n\treturn nestIngress<NestDiagnosticInput, NestDiagnosticPayload>(graph, \"diagnostics\", {\n\t\t...opts,\n\t\tpayload: (diagnostic) => sanitizeNestDiagnostic(diagnostic, opts.phase),\n\t});\n}\n\n/** D474 later/optional WebSocket ingress. Kept thin for first-slice experiments. */\nexport function fromNestWs<THost = unknown, TPayload = THost>(\n\tgraph: Graph,\n\topts: NestIngressOptions<THost, TPayload> = {},\n): NestIngressBoundary<THost, TPayload> {\n\treturn nestIngress(graph, \"ws\", opts);\n}\n\n/** D474 later/optional microservice/message ingress. */\nexport function fromNestMessage<THost = unknown, TPayload = THost>(\n\tgraph: Graph,\n\topts: NestIngressOptions<THost, TPayload> = {},\n): NestIngressBoundary<THost, TPayload> {\n\treturn nestIngress(graph, \"message\", opts);\n}\n\n/**\n * D474 HTTP egress resolver.\n *\n * The returned boundary owns only a host-private pending map. It never stores\n * response/socket/ack handles in graph DATA and only resolves handles whose\n * requestId (and optional bindingId) match an egress envelope.\n */\nexport function toNestHttp<TPayload = unknown>(\n\tegress: Node<NestReplyEnvelope<TPayload>>,\n\topts: ToNestHttpOptions<TPayload> = {},\n): NestHttpBoundary<TPayload> {\n\tconst bindingId = stableBindingId(\"http\", opts);\n\tconst scopedBindingId = opts.bindingId;\n\tconst maxDiagnostics = diagnosticsRetainedLimit(opts.maxDiagnostics);\n\tconst maxPayloadBytes = payloadByteLimit(opts.maxPayloadBytes);\n\tconst pending = new Map<string, NestHttpPendingEntry<TPayload>>();\n\tconst diagnostics: NestBoundaryDiagnostic[] = [];\n\tlet active = true;\n\tlet terminal:\n\t\t| {\n\t\t\t\treadonly error: unknown;\n\t\t\t\treadonly message: string;\n\t\t }\n\t\t| undefined;\n\n\tconst report = (diagnostic: NestBoundaryDiagnostic) => {\n\t\tpushDiagnostic(diagnostics, diagnostic, maxDiagnostics);\n\t\ttry {\n\t\t\tconst phase = diagnostic.phase ?? opts.diagnosticPhase ?? \"http\";\n\t\t\tconst payload = sanitizeNestDiagnostic({ ...diagnostic, phase }, phase);\n\t\t\topts.diagnosticBoundary?.emit(payload, { payload });\n\t\t} catch {\n\t\t\t// Graph-visible diagnostics are optional and must not interrupt host cleanup.\n\t\t}\n\t};\n\tconst keyOf = (requestId: string, requestBindingId?: string) =>\n\t\trequestBindingId === undefined ? requestId : `${requestBindingId}\\u0000${requestId}`;\n\tconst rejectEntry = (\n\t\tentry: NestHttpPendingEntry<TPayload>,\n\t\terror: unknown,\n\t\tenvelope: NestReplyEnvelope<TPayload> | undefined,\n\t\tmessage: string,\n\t) => {\n\t\ttry {\n\t\t\tentry.handle.reject(error, envelope);\n\t\t} catch (rejectError) {\n\t\t\treport({\n\t\t\t\tkind: \"reject-threw\",\n\t\t\t\trequestId: entry.requestId,\n\t\t\t\tbindingId: entry.bindingId,\n\t\t\t\tmessage,\n\t\t\t\terror: rejectError,\n\t\t\t});\n\t\t}\n\t};\n\tconst rejectPending = (\n\t\tkind: \"dispose-pending\" | \"terminal-egress\",\n\t\terror: unknown,\n\t\tmessage: string,\n\t): number => {\n\t\tconst entries = [...pending.values()];\n\t\tpending.clear();\n\t\tif (entries.length === 0) return 0;\n\t\treport({ kind, bindingId: scopedBindingId, message, error });\n\t\tfor (const entry of entries) {\n\t\t\trejectEntry(entry, error, undefined, `toNestHttp(${bindingId}) pending reject threw`);\n\t\t}\n\t\treturn entries.length;\n\t};\n\n\tconst unsubscribe = egress.subscribe((msg: Message) => {\n\t\tif (!active) return;\n\t\tif (msg[0] === \"ERROR\" || msg[0] === \"COMPLETE\" || msg[0] === \"TEARDOWN\") {\n\t\t\tconst error =\n\t\t\t\tmsg[0] === \"ERROR\"\n\t\t\t\t\t? msg[1]\n\t\t\t\t\t: new Error(`toNestHttp(${bindingId}) egress received ${msg[0]}`);\n\t\t\tconst message = `toNestHttp(${bindingId}) rejected pending requests after ${msg[0]}`;\n\t\t\tterminal = { error, message };\n\t\t\tconst rejectedCount = rejectPending(\"terminal-egress\", error, message);\n\t\t\tif (rejectedCount === 0)\n\t\t\t\treport({ kind: \"terminal-egress\", bindingId: scopedBindingId, message, error });\n\t\t\treturn;\n\t\t}\n\t\tif (msg[0] !== \"DATA\") return;\n\t\tconst envelope = msg[1] as NestReplyEnvelope<TPayload>;\n\t\tconst malformed = validateEnvelope(envelope, maxPayloadBytes);\n\t\tif (malformed !== undefined) {\n\t\t\tconst correlated = malformedCorrelation(msg[1], scopedBindingId);\n\t\t\tif (correlated !== undefined) {\n\t\t\t\tconst pendingKey = keyOf(correlated.requestId, scopedBindingId);\n\t\t\t\tconst entry = pending.get(pendingKey);\n\t\t\t\tif (entry !== undefined) {\n\t\t\t\t\tpending.delete(pendingKey);\n\t\t\t\t\trejectEntry(\n\t\t\t\t\t\tentry,\n\t\t\t\t\t\tnew Error(malformed),\n\t\t\t\t\t\tundefined,\n\t\t\t\t\t\t`toNestHttp(${bindingId}) rejected malformed correlated egress`,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t\treport({\n\t\t\t\tkind: \"malformed-egress\",\n\t\t\t\trequestId: correlated?.requestId,\n\t\t\t\tbindingId: correlated?.bindingId,\n\t\t\t\tmessage: malformed,\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\tif (scopedBindingId !== undefined && envelope.bindingId !== scopedBindingId) {\n\t\t\treport({\n\t\t\t\tkind: \"binding-mismatch\",\n\t\t\t\trequestId: envelope.requestId,\n\t\t\t\tbindingId: envelope.bindingId,\n\t\t\t\texpectedBindingId: scopedBindingId,\n\t\t\t\tmessage: `toNestHttp(${bindingId}) ignored egress for binding ${envelope.bindingId}`,\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\tconst pendingKey = keyOf(envelope.requestId, scopedBindingId);\n\t\tconst entry = pending.get(pendingKey);\n\t\tif (entry === undefined) {\n\t\t\treport({\n\t\t\t\tkind: \"stale-egress\",\n\t\t\t\trequestId: envelope.requestId,\n\t\t\t\tbindingId: envelope.bindingId,\n\t\t\t\tmessage: `toNestHttp(${bindingId}) ignored stale requestId ${envelope.requestId}`,\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\tpending.delete(pendingKey);\n\t\ttry {\n\t\t\tentry.handle.resolve(\n\t\t\t\topts.transform?.(envelope.payload, envelope) ?? envelope.payload,\n\t\t\t\tenvelope,\n\t\t\t);\n\t\t} catch (error) {\n\t\t\treport({\n\t\t\t\tkind: \"resolve-threw\",\n\t\t\t\trequestId: envelope.requestId,\n\t\t\t\tbindingId: envelope.bindingId,\n\t\t\t\tmessage: `toNestHttp(${bindingId}) response handle threw while resolving`,\n\t\t\t\terror,\n\t\t\t});\n\t\t\trejectEntry(\n\t\t\t\tentry,\n\t\t\t\terror,\n\t\t\t\tenvelope,\n\t\t\t\t`toNestHttp(${bindingId}) response handle threw while rejecting`,\n\t\t\t);\n\t\t}\n\t});\n\n\treturn {\n\t\tkind: \"http\",\n\t\tbindingId,\n\t\tattach(registration) {\n\t\t\tif (!active) throw new Error(`toNestHttp(${bindingId}) is disposed`);\n\t\t\tassertNonEmptyString(registration.requestId, \"toNestHttp.attach(requestId)\");\n\t\t\tconst registrationBindingId = registration.bindingId ?? scopedBindingId;\n\t\t\tif (scopedBindingId !== undefined && registrationBindingId !== scopedBindingId) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`toNestHttp.attach expected bindingId ${scopedBindingId}, got ${registrationBindingId}`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (terminal !== undefined) {\n\t\t\t\tconst entry = {\n\t\t\t\t\trequestId: registration.requestId,\n\t\t\t\t\tbindingId: registrationBindingId,\n\t\t\t\t\thandle: registration.handle,\n\t\t\t\t};\n\t\t\t\treport({\n\t\t\t\t\tkind: \"terminal-egress\",\n\t\t\t\t\trequestId: registration.requestId,\n\t\t\t\t\tbindingId: registrationBindingId,\n\t\t\t\t\tmessage: terminal.message,\n\t\t\t\t\terror: terminal.error,\n\t\t\t\t});\n\t\t\t\trejectEntry(\n\t\t\t\t\tentry,\n\t\t\t\t\tterminal.error,\n\t\t\t\t\tundefined,\n\t\t\t\t\t`toNestHttp(${bindingId}) terminal response handle reject threw`,\n\t\t\t\t);\n\t\t\t\treturn () => false;\n\t\t\t}\n\t\t\tconst key = keyOf(registration.requestId, scopedBindingId);\n\t\t\tif (pending.has(key)) {\n\t\t\t\tthrow new Error(`toNestHttp.attach duplicate pending requestId ${registration.requestId}`);\n\t\t\t}\n\t\t\tconst entry = {\n\t\t\t\trequestId: registration.requestId,\n\t\t\t\tbindingId: registrationBindingId,\n\t\t\t\thandle: registration.handle,\n\t\t\t};\n\t\t\tpending.set(key, entry);\n\t\t\treturn () => {\n\t\t\t\tif (pending.get(key) !== entry) return false;\n\t\t\t\treturn pending.delete(key);\n\t\t\t};\n\t\t},\n\t\tpendingCount: () => pending.size,\n\t\tdiagnostics: () => diagnostics.slice(),\n\t\tdispose() {\n\t\t\tif (!active) return;\n\t\t\tactive = false;\n\t\t\trejectPending(\n\t\t\t\t\"dispose-pending\",\n\t\t\t\tnew Error(`toNestHttp(${bindingId}) disposed before response resolution`),\n\t\t\t\t`toNestHttp(${bindingId}) rejected pending requests during dispose`,\n\t\t\t);\n\t\t\tunsubscribe();\n\t\t},\n\t};\n}\n\n/** D478 route-request decorator over an existing ingress boundary. */\nexport function GraphReq<THost = unknown, TPayload = unknown>(\n\tboundary: NestIngressBoundary<THost, TPayload>,\n\topts: NestBoundaryDecoratorOptions<THost, TPayload> = {},\n): GraphMethodDecorator {\n\treturn graphIngressBinding(\"request\", boundary, opts);\n}\n\n/** D478 route-guard decorator over an existing ingress boundary. */\nexport function GraphGuard<THost = unknown, TPayload = unknown>(\n\tboundary: NestIngressBoundary<THost, TPayload>,\n\topts: NestBoundaryDecoratorOptions<THost, TPayload> = {},\n): GraphMethodDecorator {\n\treturn graphIngressBinding(\"guard\", boundary, opts);\n}\n\n/** D478 route-interceptor decorator over an existing ingress boundary. */\nexport function GraphIntercept<THost = unknown, TPayload = unknown>(\n\tboundary: NestIngressBoundary<THost, TPayload>,\n\topts: NestBoundaryDecoratorOptions<THost, TPayload> = {},\n): GraphMethodDecorator {\n\treturn graphIngressBinding(\"interceptor\", boundary, opts);\n}\n\n/** D484 generic filter decorator over an existing ingress boundary. */\nexport function GraphFilter<THost = unknown, TPayload = unknown>(\n\tboundary: NestIngressBoundary<THost, TPayload>,\n\topts: NestFilterDecoratorOptions<THost, TPayload> = {},\n): GraphMethodDecorator {\n\treturn graphIngressBinding(\"error\", boundary, opts);\n}\n\n/** D484 exception-oriented sugar over GraphFilter. */\nexport function GraphError<THost = unknown, TPayload = unknown>(\n\tboundary: NestIngressBoundary<THost, TPayload>,\n\topts: NestFilterDecoratorOptions<THost, TPayload> = {},\n): GraphMethodDecorator {\n\treturn GraphFilter(boundary, opts);\n}\n\n/** D478 lifecycle decorator over an existing ingress boundary. */\nexport function GraphLifecycle<THost = unknown, TPayload = unknown>(\n\tboundary: NestIngressBoundary<THost, TPayload>,\n\topts: NestBoundaryDecoratorOptions<THost, TPayload> = {},\n): GraphMethodDecorator {\n\treturn graphIngressBinding(\"lifecycle\", boundary, opts);\n}\n\n/** D478 cron/schedule decorator over an existing ingress boundary. */\nexport function GraphCron<THost = unknown, TPayload = unknown>(\n\tboundary: NestIngressBoundary<THost, TPayload>,\n\topts: NestBoundaryDecoratorOptions<THost, TPayload> = {},\n): GraphMethodDecorator {\n\treturn graphIngressBinding(\"cron\", boundary, opts);\n}\n\n/** D488 WebSocket message ingress decorator over an existing boundary. */\nexport function GraphWs<THost = unknown, TPayload = unknown>(\n\tboundary: NestIngressBoundary<THost, TPayload>,\n\topts: NestBoundaryDecoratorOptions<THost, TPayload> = {},\n): GraphMethodDecorator {\n\treturn graphIngressBinding(\"ws\", boundary, opts);\n}\n\n/** D488 microservice/message ingress decorator over an existing boundary. */\nexport function GraphMessage<THost = unknown, TPayload = unknown>(\n\tboundary: NestIngressBoundary<THost, TPayload>,\n\topts: NestBoundaryDecoratorOptions<THost, TPayload> = {},\n): GraphMethodDecorator {\n\treturn graphIngressBinding(\"message\", boundary, opts);\n}\n\n/** D478 HTTP reply decorator over an existing reply node. */\nexport function GraphHttpReply<THost = unknown, TPayload = unknown>(\n\treplyNode: Node<NestReplyEnvelope<TPayload>>,\n\topts: NestHttpReplyDecoratorOptions<THost>,\n): GraphMethodDecorator {\n\tconst bindingId = opts?.bindingId;\n\tif (typeof bindingId !== \"string\" || bindingId.length === 0) {\n\t\tthrow new Error(\"GraphHttpReply requires a non-empty bindingId\");\n\t}\n\treturn registerMeta(NEST_BOUNDARY_BINDINGS, (methodKey) => ({\n\t\tdirection: \"egress\" as const,\n\t\tkind: \"http\" as const,\n\t\tbindingId,\n\t\tmethodKey,\n\t\treplyNode: replyNode as Node<NestReplyEnvelope<unknown>>,\n\t\torder: opts.order,\n\t\tissueResponse: opts.issueResponse as NestIssueResponse<unknown> | undefined,\n\t\tprotocolError: opts.protocolError as NestProtocolErrorResponse<unknown> | undefined,\n\t}));\n}\n\n/** D484 guard decision egress decorator over an existing reply-correlated decision node. */\nexport function GraphGuardDecision<THost = unknown>(\n\tdecisionNode: Node<NestReplyEnvelope<GraphGuardDecision>>,\n\topts: NestGuardDecisionDecoratorOptions<THost>,\n): GraphMethodDecorator {\n\tconst bindingId = opts?.bindingId;\n\tif (typeof bindingId !== \"string\" || bindingId.length === 0) {\n\t\tthrow new Error(\"GraphGuardDecision requires a non-empty bindingId\");\n\t}\n\treturn registerMeta(NEST_BOUNDARY_BINDINGS, (methodKey) => ({\n\t\tdirection: \"egress\" as const,\n\t\tkind: \"guard-decision\" as const,\n\t\tbindingId,\n\t\tmethodKey,\n\t\tdecisionNode,\n\t\torder: opts.order,\n\t\tissueResponse: opts.issueResponse as NestIssueResponse<unknown> | undefined,\n\t\tprotocolError: opts.protocolError as NestProtocolErrorResponse<unknown> | undefined,\n\t}));\n}\n\n/** D488 WebSocket acknowledgement egress decorator over an existing reply-correlated node. */\nexport function GraphWsAck<TPayload = unknown>(\n\tackNode: Node<NestReplyEnvelope<TPayload>>,\n\topts: { readonly bindingId: string; readonly order?: number },\n): GraphMethodDecorator {\n\treturn graphReplyBinding(\"ws-ack\", ackNode, opts, \"GraphWsAck\");\n}\n\n/** D488 WebSocket reply egress decorator over an existing reply-correlated node. */\nexport function GraphWsReply<TPayload = unknown>(\n\treplyNode: Node<NestReplyEnvelope<TPayload>>,\n\topts: { readonly bindingId: string; readonly order?: number },\n): GraphMethodDecorator {\n\treturn graphReplyBinding(\"ws-reply\", replyNode, opts, \"GraphWsReply\");\n}\n\n/** D488 microservice/message reply egress decorator over an existing reply-correlated node. */\nexport function GraphMessageReply<TPayload = unknown>(\n\treplyNode: Node<NestReplyEnvelope<TPayload>>,\n\topts: { readonly bindingId: string; readonly order?: number },\n): GraphMethodDecorator {\n\treturn graphReplyBinding(\"message-reply\", replyNode, opts, \"GraphMessageReply\");\n}\n\nexport function createNestGraphBoundaryRunner(\n\topts: NestGraphBoundaryRunnerOptions = {},\n): NestGraphBoundaryRunner {\n\tconst httpBoundaries = new Map<\n\t\tNode<NestReplyEnvelope<unknown>>,\n\t\tMap<string, NestHttpBoundary<unknown>>\n\t>();\n\tconst httpBoundaryFor = (\n\t\tnode: Node<NestReplyEnvelope<unknown>>,\n\t\tbindingId: string,\n\t): NestHttpBoundary<unknown> => {\n\t\tlet byBinding = httpBoundaries.get(node);\n\t\tif (byBinding === undefined) {\n\t\t\tbyBinding = new Map();\n\t\t\thttpBoundaries.set(node, byBinding);\n\t\t}\n\t\tlet boundary = byBinding.get(bindingId);\n\t\tif (boundary === undefined) {\n\t\t\tboundary = toNestHttp(node, {\n\t\t\t\tbindingId,\n\t\t\t\tdiagnosticBoundary: opts.diagnosticBoundary,\n\t\t\t\tdiagnosticPhase: opts.diagnosticPhase ?? \"http\",\n\t\t\t});\n\t\t\tbyBinding.set(bindingId, boundary);\n\t\t}\n\t\treturn boundary;\n\t};\n\n\treturn {\n\t\trun(target, methodKey, host, opts = {}) {\n\t\t\tconst ctor = typeof target === \"function\" ? target : target.constructor;\n\t\t\tconst bindings = getNestBoundaryBindings(ctor as DecoratorHostConstructor, methodKey);\n\t\t\tif (bindings.length === 0) return undefined;\n\t\t\tconst requestId = requestIdFromRunOptions(host, opts);\n\t\t\tconst replies = bindings.filter(isHttpReplyBinding);\n\t\t\tconst ingress = bindings.filter(\n\t\t\t\t(binding): binding is NestIngressBindingMeta =>\n\t\t\t\t\tbinding.direction === \"ingress\" &&\n\t\t\t\t\t(binding.kind === \"request\" || binding.kind === \"interceptor\"),\n\t\t\t);\n\t\t\tif (replies.length > 0 && ingress.length === 0) {\n\t\t\t\tthrow new Error(\"Nest GraphHttpReply requires at least one ingress boundary\");\n\t\t\t}\n\t\t\tconst ingressEmits = ingress.map((binding) => ({\n\t\t\t\tbinding,\n\t\t\t\trequestId: requestIdFromBinding(host, binding) ?? requestId,\n\t\t\t}));\n\t\t\tconst replyRequestIds = uniqueDefinedStrings(ingressEmits.map((entry) => entry.requestId));\n\t\t\tif (replies.length > 0 && replyRequestIds.length === 0) {\n\t\t\t\tthrow new Error(\"Nest GraphHttpReply requires a stable requestId\");\n\t\t\t}\n\t\t\tconst cleanups: Array<() => boolean> = [];\n\t\t\tlet resolveReply: ((value: unknown) => void) | undefined;\n\t\t\tlet rejectReply: ((reason?: unknown) => void) | undefined;\n\t\t\tconst replyPromise =\n\t\t\t\treplies.length === 0\n\t\t\t\t\t? undefined\n\t\t\t\t\t: new Promise<unknown>((resolve, reject) => {\n\t\t\t\t\t\t\tresolveReply = resolve;\n\t\t\t\t\t\t\trejectReply = reject;\n\t\t\t\t\t\t});\n\t\t\ttry {\n\t\t\t\tfor (const reply of replies) {\n\t\t\t\t\tconst http = httpBoundaryFor(reply.replyNode, reply.bindingId);\n\t\t\t\t\tfor (const replyRequestId of replyRequestIds) {\n\t\t\t\t\t\tcleanups.push(\n\t\t\t\t\t\t\thttp.attach({\n\t\t\t\t\t\t\t\trequestId: replyRequestId,\n\t\t\t\t\t\t\t\tbindingId: reply.bindingId,\n\t\t\t\t\t\t\t\thandle: {\n\t\t\t\t\t\t\t\t\tresolve: resolveReply ?? (() => undefined),\n\t\t\t\t\t\t\t\t\treject: rejectReply ?? (() => undefined),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor (const entry of ingressEmits) {\n\t\t\t\t\tentry.binding.boundary.emit(host, {\n\t\t\t\t\t\tbindingId: entry.binding.bindingId,\n\t\t\t\t\t\trequestId: entry.requestId,\n\t\t\t\t\t\t...bindingPayloadEmitOption(host, entry.binding),\n\t\t\t\t\t\trequireRequestId: requiresRequestId(entry.binding.kind),\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tfor (const cleanup of cleanups) cleanup();\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t\treturn replyPromise?.finally(() => {\n\t\t\t\tfor (const cleanup of cleanups) cleanup();\n\t\t\t});\n\t\t},\n\t\tdispose() {\n\t\t\tfor (const byBinding of httpBoundaries.values()) {\n\t\t\t\tfor (const boundary of byBinding.values()) boundary.dispose();\n\t\t\t}\n\t\t\thttpBoundaries.clear();\n\t\t},\n\t};\n}\n\nexport function createNestGraphBoundaryInterceptor<THost = unknown>(\n\topts: NestGraphBoundaryInterceptorOptions<THost> = {},\n): NestGraphBoundaryInterceptor {\n\tconst runner = opts.runner ?? createNestGraphBoundaryRunner(opts);\n\tlet nextRequestSeq = 1;\n\treturn {\n\t\tintercept(context, next) {\n\t\t\tconst ctor = context.getClass();\n\t\t\tconst handler = context.getHandler();\n\t\t\tconst methodKey = methodKeyForHandler(ctor, handler);\n\t\t\tif (methodKey === undefined) return next?.handle();\n\t\t\tconst bindings = getNestBoundaryBindings(ctor, methodKey);\n\t\t\tconst needsSyntheticRequestId = bindings.some(\n\t\t\t\t(binding) =>\n\t\t\t\t\tbinding.direction === \"egress\" ||\n\t\t\t\t\t(binding.direction === \"ingress\" && requiresRequestId(binding.kind)),\n\t\t\t);\n\t\t\tconst host =\n\t\t\t\topts.host?.(context) ??\n\t\t\t\t(defaultNestHttpHost(context, () => nextRequestSeq++, needsSyntheticRequestId) as THost) ??\n\t\t\t\t({} as THost);\n\t\t\tconst result = runner.run(ctor, methodKey, host, opts);\n\t\t\treturn result ?? next?.handle();\n\t\t},\n\t\tdispose() {\n\t\t\trunner.dispose();\n\t\t},\n\t};\n}\n\nexport function getNestBoundaryBindings(\n\ttarget: DecoratorHostConstructor | object,\n\tmethodKey?: string | symbol,\n): readonly NestBoundaryBindingMeta[] {\n\tconst ctor =\n\t\ttypeof target === \"function\"\n\t\t\t? (target as DecoratorHostConstructor)\n\t\t\t: ((target as { constructor: DecoratorHostConstructor })\n\t\t\t\t\t.constructor as DecoratorHostConstructor);\n\tconst bindings = boundaryBindingsFor(ctor);\n\treturn sortBoundaryBindings(\n\t\tmethodKey === undefined\n\t\t\t? bindings\n\t\t\t: bindings.filter((binding) => binding.methodKey === methodKey),\n\t);\n}\n\nexport function resolveNestMethodKey(\n\tctor: DecoratorHostConstructor,\n\thandler: DecoratorBoundMethod,\n): string | symbol | undefined {\n\treturn methodKeyForHandler(ctor, handler);\n}\n\nexport function bindingRequestId<THost>(\n\thost: THost,\n\tbinding: NestBoundaryBindingMeta,\n\tfallback?: string | ((host: THost) => string | undefined),\n): string | undefined {\n\tif (binding.direction === \"ingress\") {\n\t\tconst requestId = requestIdFromBinding(host, binding);\n\t\tif (requestId !== undefined) return requestId;\n\t}\n\tif (typeof fallback === \"string\") {\n\t\tassertNonEmptyString(fallback, \"requestId\");\n\t\treturn fallback;\n\t}\n\tif (typeof fallback === \"function\") {\n\t\tconst requestId = fallback(host);\n\t\tif (requestId !== undefined) assertNonEmptyString(requestId, \"requestId\");\n\t\treturn requestId;\n\t}\n\treturn requestIdOf(host, {}, {});\n}\n\nexport function bindingEmitOptions<THost>(\n\thost: THost,\n\tbinding: NestIngressBindingMeta,\n\trequestId?: string,\n): NestIngressEmitOptions<unknown> {\n\treturn {\n\t\tbindingId: binding.bindingId,\n\t\trequestId,\n\t\t...bindingPayloadEmitOption(host, binding),\n\t\trequireRequestId: requiresRequestId(binding.kind),\n\t};\n}\n\nexport function isDataIssue(value: unknown): value is DataIssue {\n\treturn (\n\t\tvalue !== null &&\n\t\ttypeof value === \"object\" &&\n\t\t(value as { kind?: unknown }).kind === \"issue\" &&\n\t\ttypeof (value as { code?: unknown }).code === \"string\" &&\n\t\ttypeof (value as { message?: unknown }).message === \"string\"\n\t);\n}\n\nexport function isHttpDataIssue(value: unknown): value is HttpDataIssue {\n\treturn isDataIssue(value) && Number.isInteger((value as { status?: unknown }).status);\n}\n\nexport function issueResponse<THost = unknown>(\n\tissue: DataIssue,\n\t_host?: THost,\n): NestHttpResponsePayload {\n\tif (isHttpDataIssue(issue)) {\n\t\treturn {\n\t\t\tstatus: issue.status,\n\t\t\tbody: issue.body ?? { code: issue.code, message: issue.message },\n\t\t\theaders: issue.headers,\n\t\t};\n\t}\n\treturn {\n\t\tstatus: 400,\n\t\tbody: { code: issue.code, message: issue.message },\n\t};\n}\n\nexport function protocolError<THost = unknown>(\n\t_errorPayload: unknown,\n\t_host?: THost,\n): NestHttpResponsePayload {\n\treturn {\n\t\tstatus: 500,\n\t\tbody: { code: \"graphrefly.protocol_error\", message: \"GraphReFly reply pipeline failed\" },\n\t};\n}\n\nexport function lowerHttpReplyPayload<THost = unknown>(\n\tpayload: unknown,\n\thost: THost,\n\topts: { readonly issueResponse?: NestIssueResponse<THost> } = {},\n): NestHttpResponsePayload {\n\tif (isHttpResponsePayload(payload)) return payload;\n\tif (isDataIssue(payload)) return (opts.issueResponse ?? issueResponse)(payload, host);\n\treturn { status: 200, body: payload };\n}\n\nexport function lowerProtocolError<THost = unknown>(\n\terrorPayload: unknown,\n\thost: THost,\n\topts: { readonly protocolError?: NestProtocolErrorResponse<THost> } = {},\n): NestHttpResponsePayload {\n\treturn (opts.protocolError ?? protocolError)(errorPayload, host);\n}\n\nexport function sanitizeNestDiagnostic(\n\tdiagnostic: NestDiagnosticInput,\n\tdefaultPhase: NestDiagnosticPhase = \"adapter\",\n): NestDiagnosticPayload {\n\tconst payload: NestDiagnosticPayload = {\n\t\tkind: diagnostic.kind,\n\t\tphase: diagnostic.phase ?? defaultPhase,\n\t\tmessage: diagnostic.message,\n\t\t...optionalStringField(\"requestId\", diagnostic.requestId),\n\t\t...optionalStringField(\"bindingId\", diagnostic.bindingId),\n\t\t...optionalStringField(\"expectedBindingId\", diagnostic.expectedBindingId),\n\t\t...optionalDiagnosticError(diagnostic.error),\n\t};\n\tassertGraphVisibleData(payload, \"NestDiagnosticPayload\", NEST_BOUNDARY_PAYLOAD_MAX_BYTES);\n\treturn payload;\n}\n\nfunction nestIngress<THost, TPayload>(\n\tgraph: Graph,\n\tkind: NestBoundaryKind,\n\topts: NestIngressOptions<THost, TPayload>,\n): NestIngressBoundary<THost, TPayload> {\n\tconst bindingId = stableBindingId(kind, opts);\n\tconst version = parseEnvelopeVersion(opts.version ?? NEST_BOUNDARY_ENVELOPE_VERSION, \"version\");\n\tconst maxPayloadBytes = payloadByteLimit(opts.maxPayloadBytes);\n\tconst node = graph.node<NestBoundaryEnvelope<TPayload>>([], null, {\n\t\tname: opts.name,\n\t\tmeta: { adapter: \"nestjs\", boundary: \"ingress\", kind, bindingId, version },\n\t});\n\n\treturn {\n\t\tkind,\n\t\tbindingId,\n\t\tversion,\n\t\tnode,\n\t\tenvelope(host, emitOpts = {}) {\n\t\t\tconst requestId = requestIdOf(host, opts, {\n\t\t\t\t...emitOpts,\n\t\t\t\trequireRequestId:\n\t\t\t\t\temitOpts.requireRequestId ?? opts.requireRequestId ?? requiresRequestId(kind),\n\t\t\t});\n\t\t\tconst envelopeBindingId = emitOpts.bindingId ?? bindingId;\n\t\t\tassertNonEmptyString(envelopeBindingId, \"NestBoundaryEnvelope.bindingId\");\n\t\t\tconst envelopeVersion = parseEnvelopeVersion(\n\t\t\t\temitOpts.version ?? version,\n\t\t\t\t\"NestBoundaryEnvelope.version\",\n\t\t\t);\n\t\t\tconst payload =\n\t\t\t\t\"payload\" in emitOpts\n\t\t\t\t\t? (emitOpts.payload as TPayload)\n\t\t\t\t\t: opts.payload !== undefined\n\t\t\t\t\t\t? opts.payload(host)\n\t\t\t\t\t\t: (host as unknown as TPayload);\n\t\t\tassertGraphVisibleData(payload, \"NestBoundaryEnvelope.payload\", maxPayloadBytes);\n\t\t\tconst envelope: NestBoundaryEnvelope<TPayload> = {\n\t\t\t\tbindingId: envelopeBindingId,\n\t\t\t\tversion: envelopeVersion,\n\t\t\t\tpayload,\n\t\t\t};\n\t\t\treturn requestId === undefined ? envelope : { ...envelope, requestId };\n\t\t},\n\t\temit(host, emitOpts = {}) {\n\t\t\tconst envelope = this.envelope(host, emitOpts);\n\t\t\tnode.down([[\"DATA\", envelope]]);\n\t\t\treturn envelope;\n\t\t},\n\t};\n}\n\nfunction stableBindingId(\n\tkind: NestBoundaryKind | NestEgressKind,\n\topts: { readonly bindingId?: string; readonly name?: string },\n): string {\n\tconst bindingId = opts.bindingId ?? opts.name ?? `nestjs.${kind}`;\n\tassertNonEmptyString(bindingId, \"bindingId\");\n\treturn bindingId;\n}\n\nfunction requiresRequestId(kind: NestBoundaryKind): boolean {\n\treturn kind === \"request\" || kind === \"guard\" || kind === \"interceptor\" || kind === \"error\";\n}\n\nfunction requestIdFromRunOptions<THost>(\n\thost: THost,\n\topts: NestGraphRunOptions<THost>,\n): string | undefined {\n\tif (typeof opts.requestId === \"string\") {\n\t\tassertNonEmptyString(opts.requestId, \"requestId\");\n\t\treturn opts.requestId;\n\t}\n\tif (typeof opts.requestId === \"function\") {\n\t\tconst requestId = opts.requestId(host);\n\t\tif (requestId !== undefined) assertNonEmptyString(requestId, \"requestId\");\n\t\treturn requestId;\n\t}\n\treturn requestIdOf(host, {}, {});\n}\n\nfunction requestIdFromBinding<THost>(\n\thost: THost,\n\tbinding: NestIngressBindingMeta,\n): string | undefined {\n\tif (typeof binding.requestId === \"string\") {\n\t\tassertNonEmptyString(binding.requestId, \"requestId\");\n\t\treturn binding.requestId;\n\t}\n\tif (typeof binding.requestId === \"function\") {\n\t\tconst requestId = binding.requestId(host);\n\t\tif (requestId !== undefined) assertNonEmptyString(requestId, \"requestId\");\n\t\treturn requestId;\n\t}\n\treturn undefined;\n}\n\nfunction bindingPayloadEmitOption<THost>(\n\thost: THost,\n\tbinding: NestIngressBindingMeta,\n): { readonly payload: unknown } | Record<string, never> {\n\treturn binding.payload === undefined ? {} : { payload: binding.payload(host) };\n}\n\nfunction isHttpResponsePayload(value: unknown): value is NestHttpResponsePayload {\n\tif (value === null || typeof value !== \"object\") return false;\n\tconst status = (value as { status?: unknown }).status;\n\tif (!Number.isInteger(status)) return false;\n\tconst headers = (value as { headers?: unknown }).headers;\n\treturn headers === undefined || isStringRecord(headers);\n}\n\nfunction isStringRecord(value: unknown): value is Record<string, string> {\n\tif (value === null || typeof value !== \"object\" || Array.isArray(value)) return false;\n\tfor (const entry of Object.values(value)) if (typeof entry !== \"string\") return false;\n\treturn true;\n}\n\nfunction isHttpReplyBinding(binding: NestBoundaryBindingMeta): binding is NestHttpReplyBindingMeta {\n\treturn binding.direction === \"egress\" && binding.kind === \"http\";\n}\n\nfunction uniqueDefinedStrings(values: readonly (string | undefined)[]): string[] {\n\tconst seen = new Set<string>();\n\tfor (const value of values) {\n\t\tif (value !== undefined) seen.add(value);\n\t}\n\treturn [...seen];\n}\n\nfunction defaultNestHttpHost(\n\tcontext: NestExecutionContextLike,\n\tnextSeq: () => number,\n\tneedsSyntheticRequestId: boolean,\n): unknown | undefined {\n\tconst request = context.switchToHttp?.().getRequest<Record<string, unknown>>();\n\tif (request === undefined || request === null || typeof request !== \"object\") return request;\n\tif (requestIdFromRecord(request) !== undefined) return request;\n\tconst headerId = requestIdFromHeaders(request.headers);\n\tif (headerId !== undefined || needsSyntheticRequestId) {\n\t\treturn { ...request, requestId: headerId ?? `nestjs-request:${nextSeq()}` };\n\t}\n\treturn request;\n}\n\nfunction requestIdFromRecord(record: Record<string, unknown>): string | undefined {\n\tfor (const key of [\"requestId\", \"id\"]) {\n\t\tconst value = record[key];\n\t\tif (typeof value === \"string\" && value.length > 0) return value;\n\t}\n\treturn undefined;\n}\n\nfunction requestIdFromHeaders(headers: unknown): string | undefined {\n\tif (headers === null || typeof headers !== \"object\") return undefined;\n\tfor (const key of [\"x-request-id\", \"x-correlation-id\"]) {\n\t\tconst value = (headers as Record<string, unknown>)[key];\n\t\tconst first = Array.isArray(value) ? value[0] : value;\n\t\tif (typeof first === \"string\" && first.trim().length > 0) return first.trim();\n\t}\n\treturn undefined;\n}\n\nfunction graphIngressBinding<THost, TPayload>(\n\tkind: NestBoundaryKind,\n\tboundary: NestIngressBoundary<THost, TPayload>,\n\topts: NestBoundaryDecoratorOptions<THost, TPayload> & NestFilterDecoratorOptions<THost, TPayload>,\n): GraphMethodDecorator {\n\tif (boundary.kind !== kind) {\n\t\tthrow new Error(`Graph${kind} expected a ${kind} boundary, got ${boundary.kind}`);\n\t}\n\tconst bindingId = opts.bindingId ?? boundary.bindingId;\n\tassertNonEmptyString(bindingId, \"bindingId\");\n\treturn registerMeta(NEST_BOUNDARY_BINDINGS, (methodKey) => ({\n\t\tdirection: \"ingress\" as const,\n\t\tkind,\n\t\tbindingId,\n\t\tmethodKey,\n\t\tboundary: boundary as NestIngressBoundary<unknown, unknown>,\n\t\tpayload: opts.payload as ((host: unknown) => unknown) | undefined,\n\t\trequestId: opts.requestId as string | ((host: unknown) => string | undefined) | undefined,\n\t\torder: opts.order,\n\t\tmode: opts.mode,\n\t\tissueResponse: opts.issueResponse as NestIssueResponse<unknown> | undefined,\n\t\tprotocolError: opts.protocolError as NestProtocolErrorResponse<unknown> | undefined,\n\t}));\n}\n\nfunction graphReplyBinding<TPayload>(\n\tkind: \"ws-ack\" | \"ws-reply\" | \"message-reply\",\n\tnode: Node<NestReplyEnvelope<TPayload>>,\n\topts: { readonly bindingId: string; readonly order?: number },\n\tdecoratorName: string,\n): GraphMethodDecorator {\n\tconst bindingId = opts?.bindingId;\n\tif (typeof bindingId !== \"string\" || bindingId.length === 0) {\n\t\tthrow new Error(`${decoratorName} requires a non-empty bindingId`);\n\t}\n\tconst replyNode = node as Node<NestReplyEnvelope<unknown>>;\n\treturn registerMeta(NEST_BOUNDARY_BINDINGS, (methodKey) => {\n\t\tif (kind === \"ws-ack\") {\n\t\t\treturn {\n\t\t\t\tdirection: \"egress\" as const,\n\t\t\t\tkind,\n\t\t\t\tbindingId,\n\t\t\t\tmethodKey,\n\t\t\t\tackNode: replyNode,\n\t\t\t\torder: opts.order,\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\tdirection: \"egress\" as const,\n\t\t\tkind,\n\t\t\tbindingId,\n\t\t\tmethodKey,\n\t\t\treplyNode,\n\t\t\torder: opts.order,\n\t\t};\n\t});\n}\n\nfunction methodKeyForHandler(\n\tctor: DecoratorHostConstructor,\n\thandler: DecoratorBoundMethod,\n): string | symbol | undefined {\n\tfor (const binding of boundaryBindingsFor(ctor)) {\n\t\tconst candidate = methodOnPrototypeChain(ctor, binding.methodKey);\n\t\tif (candidate === handler || String(binding.methodKey) === handler.name)\n\t\t\treturn binding.methodKey;\n\t}\n\treturn undefined;\n}\n\nfunction boundaryBindingsFor(ctor: DecoratorHostConstructor): NestBoundaryBindingMeta[] {\n\tconst bindings: NestBoundaryBindingMeta[] = [];\n\tconst seen = new Set<NestBoundaryBindingMeta>();\n\tlet current: unknown = ctor;\n\twhile (typeof current === \"function\" && current !== Function.prototype) {\n\t\tfor (const binding of NEST_BOUNDARY_BINDINGS.get(current as DecoratorHostConstructor) ?? []) {\n\t\t\tif (seen.has(binding)) continue;\n\t\t\tseen.add(binding);\n\t\t\tbindings.push(binding);\n\t\t}\n\t\tcurrent = Object.getPrototypeOf(current);\n\t}\n\treturn bindings;\n}\n\nfunction sortBoundaryBindings(\n\tbindings: readonly NestBoundaryBindingMeta[],\n): readonly NestBoundaryBindingMeta[] {\n\treturn bindings\n\t\t.map((binding, index) => ({ binding, index }))\n\t\t.sort((a, b) => (a.binding.order ?? 0) - (b.binding.order ?? 0) || a.index - b.index)\n\t\t.map(({ binding }) => binding);\n}\n\nfunction methodOnPrototypeChain(\n\tctor: DecoratorHostConstructor,\n\tmethodKey: string | symbol,\n): unknown {\n\tlet proto: unknown = ctor.prototype;\n\twhile (proto !== null && typeof proto === \"object\") {\n\t\tif (Object.hasOwn(proto, methodKey)) {\n\t\t\treturn (proto as Record<string | symbol, unknown>)[methodKey];\n\t\t}\n\t\tproto = Object.getPrototypeOf(proto);\n\t}\n\treturn undefined;\n}\n\nfunction requestIdOf<THost, TPayload>(\n\thost: THost,\n\topts: NestIngressOptions<THost, TPayload>,\n\temitOpts: NestIngressEmitOptions<TPayload>,\n): string | undefined {\n\tconst fromEmit = emitOpts.requestId;\n\tif (fromEmit !== undefined) {\n\t\tassertNonEmptyString(fromEmit, \"requestId\");\n\t\treturn fromEmit;\n\t}\n\tif (typeof opts.requestId === \"string\") {\n\t\tassertNonEmptyString(opts.requestId, \"requestId\");\n\t\treturn opts.requestId;\n\t}\n\tif (typeof opts.requestId === \"function\") {\n\t\tconst requestId = opts.requestId(host);\n\t\tif (requestId !== undefined) assertNonEmptyString(requestId, \"requestId\");\n\t\treturn requestId;\n\t}\n\tconst record = host as { requestId?: unknown; id?: unknown };\n\tif (typeof record?.requestId === \"string\" && record.requestId.length > 0) return record.requestId;\n\tif (typeof record?.id === \"string\" && record.id.length > 0) return record.id;\n\tif (emitOpts.requireRequestId ?? opts.requireRequestId ?? false) {\n\t\tthrow new Error(\"Nest boundary ingress requires a stable requestId\");\n\t}\n\treturn undefined;\n}\n\nfunction validateEnvelope(value: unknown, maxPayloadBytes: number): string | undefined {\n\ttry {\n\t\tassertGraphVisibleData(value, \"NestBoundaryEnvelope\", maxPayloadBytes);\n\t} catch (error) {\n\t\treturn error instanceof Error ? error.message : \"egress envelope must be data-only material\";\n\t}\n\tif (value === null || typeof value !== \"object\") return \"egress DATA is not an envelope object\";\n\tconst envelope = value as Partial<NestBoundaryEnvelope>;\n\tif (typeof envelope.requestId !== \"string\" || envelope.requestId.length === 0) {\n\t\treturn \"egress envelope requestId must be a non-empty string\";\n\t}\n\tif (typeof envelope.bindingId !== \"string\" || envelope.bindingId.length === 0) {\n\t\treturn \"egress envelope bindingId must be a non-empty string\";\n\t}\n\ttry {\n\t\tparseEnvelopeVersion(envelope.version, \"egress envelope version\");\n\t} catch {\n\t\treturn `egress envelope version must be ${NEST_BOUNDARY_ENVELOPE_VERSION}`;\n\t}\n\treturn undefined;\n}\n\nfunction malformedCorrelation(\n\tvalue: unknown,\n\tscopedBindingId: string | undefined,\n): { readonly requestId: string; readonly bindingId: string } | undefined {\n\tif (value === null || typeof value !== \"object\") return undefined;\n\tconst requestId = (value as { readonly requestId?: unknown }).requestId;\n\tconst bindingId = (value as { readonly bindingId?: unknown }).bindingId;\n\tif (typeof requestId !== \"string\" || requestId.length === 0) return undefined;\n\tif (typeof bindingId !== \"string\" || bindingId.length === 0) return undefined;\n\tif (scopedBindingId !== undefined && bindingId !== scopedBindingId) return undefined;\n\treturn { requestId, bindingId };\n}\n\nfunction parseEnvelopeVersion(value: unknown, label: string): number {\n\tif (value !== NEST_BOUNDARY_ENVELOPE_VERSION) {\n\t\tthrow new Error(`${label} must be ${NEST_BOUNDARY_ENVELOPE_VERSION}`);\n\t}\n\treturn value;\n}\n\nfunction assertNonEmptyString(value: string, label: string): void {\n\tif (value.length === 0) throw new Error(`${label} must be a non-empty string`);\n}\n\nfunction optionalStringField<K extends \"requestId\" | \"bindingId\" | \"expectedBindingId\">(\n\tkey: K,\n\tvalue: string | undefined,\n): Record<K, string> | Record<string, never> {\n\treturn value === undefined ? {} : ({ [key]: value } as Record<K, string>);\n}\n\nfunction optionalDiagnosticError(\n\terror: unknown,\n): { readonly error: NestDiagnosticErrorPayload } | Record<string, never> {\n\tconst summarized = summarizeDiagnosticError(error);\n\treturn summarized === undefined ? {} : { error: summarized };\n}\n\nfunction summarizeDiagnosticError(error: unknown): NestDiagnosticErrorPayload | undefined {\n\tif (error === undefined) return undefined;\n\tif (error instanceof Error) {\n\t\treturn {\n\t\t\t...optionalDiagnosticName(safeDiagnosticString(() => error.name)),\n\t\t\tmessage: safeDiagnosticString(() => error.message) ?? \"diagnostic error\",\n\t\t};\n\t}\n\tif (typeof error === \"string\") return { message: error };\n\tif (typeof error === \"number\" || typeof error === \"boolean\" || typeof error === \"bigint\") {\n\t\treturn { message: String(error) };\n\t}\n\tif (typeof error === \"symbol\") return { message: error.description ?? \"symbol\" };\n\tif (typeof error === \"function\") return { message: \"opaque diagnostic function\" };\n\tif (error !== null && typeof error === \"object\") {\n\t\tconst record = error as { readonly name?: unknown; readonly message?: unknown };\n\t\tconst message = safeDiagnosticString(() => record.message);\n\t\tif (message !== undefined) {\n\t\t\treturn {\n\t\t\t\t...optionalDiagnosticName(safeDiagnosticString(() => record.name)),\n\t\t\t\tmessage,\n\t\t\t};\n\t\t}\n\t\treturn { message: \"opaque diagnostic error\" };\n\t}\n\treturn { message: String(error) };\n}\n\nfunction safeDiagnosticString(read: () => unknown): string | undefined {\n\ttry {\n\t\tconst value = read();\n\t\treturn typeof value === \"string\" ? value : undefined;\n\t} catch {\n\t\treturn undefined;\n\t}\n}\n\nfunction optionalDiagnosticName(\n\tname: string | undefined,\n): { readonly name: string } | Record<string, never> {\n\treturn name === undefined || name.length === 0 ? {} : { name };\n}\n\nfunction payloadByteLimit(value: number | undefined): number {\n\tif (value === undefined) return NEST_BOUNDARY_PAYLOAD_MAX_BYTES;\n\tif (!Number.isSafeInteger(value) || value < 1) {\n\t\tthrow new Error(\"Nest boundary maxPayloadBytes must be a positive safe integer\");\n\t}\n\treturn value;\n}\n\nfunction diagnosticsRetainedLimit(value: number | undefined): number {\n\tif (value === undefined) return NEST_HTTP_DIAGNOSTICS_MAX_RETAINED;\n\tif (!Number.isSafeInteger(value) || value < 0) {\n\t\tthrow new Error(\"toNestHttp maxDiagnostics must be a non-negative safe integer\");\n\t}\n\treturn value;\n}\n\nfunction pushDiagnostic(\n\tdiagnostics: NestBoundaryDiagnostic[],\n\tdiagnostic: NestBoundaryDiagnostic,\n\tmaxDiagnostics: number,\n): void {\n\tif (maxDiagnostics === 0) return;\n\tdiagnostics.push(diagnostic);\n\tif (diagnostics.length > maxDiagnostics)\n\t\tdiagnostics.splice(0, diagnostics.length - maxDiagnostics);\n}\n\nfunction assertGraphVisibleData(\n\tvalue: unknown,\n\tpath: string,\n\tmaxPayloadBytes: number,\n\tseen = new WeakSet<object>(),\n): void {\n\tif (value === undefined) {\n\t\tthrow new TypeError(`${path} cannot be undefined; undefined is SENTINEL/no DATA`);\n\t}\n\tif (value === null) return;\n\tconst type = typeof value;\n\tif (type === \"string\" || type === \"boolean\") return;\n\tif (type === \"number\") {\n\t\tif (!Number.isFinite(value)) throw new TypeError(`${path} number must be finite`);\n\t\treturn;\n\t}\n\tif (type === \"function\" || type === \"symbol\" || type === \"bigint\") {\n\t\tthrow new TypeError(`${path} must be data-only; found ${type}`);\n\t}\n\tif (type !== \"object\") return;\n\tif (seen.has(value as object)) throw new TypeError(`${path} must be acyclic data`);\n\tseen.add(value as object);\n\tif (Array.isArray(value)) {\n\t\ttry {\n\t\t\tfor (let i = 0; i < value.length; i += 1) {\n\t\t\t\tconst descriptor = Object.getOwnPropertyDescriptor(value, i);\n\t\t\t\tif (descriptor === undefined) {\n\t\t\t\t\tthrow new TypeError(`${path}[${i}] cannot be a sparse array hole`);\n\t\t\t\t}\n\t\t\t\tif (!descriptor.enumerable || !(\"value\" in descriptor)) {\n\t\t\t\t\tthrow new TypeError(`${path}[${i}] must be enumerable plain data`);\n\t\t\t\t}\n\t\t\t\tassertGraphVisibleData(descriptor.value, `${path}[${i}]`, maxPayloadBytes, seen);\n\t\t\t}\n\t\t\tfor (const key of Reflect.ownKeys(value)) {\n\t\t\t\tif (key === \"length\") continue;\n\t\t\t\tif (typeof key === \"symbol\" || !/^(0|[1-9]\\d*)$/.test(key)) {\n\t\t\t\t\tthrow new TypeError(`${path} arrays must not carry hidden or extra properties`);\n\t\t\t\t}\n\t\t\t}\n\t\t\tassertPayloadSize(value, path, maxPayloadBytes);\n\t\t} finally {\n\t\t\tseen.delete(value as object);\n\t\t}\n\t\treturn;\n\t}\n\tconst proto = Object.getPrototypeOf(value);\n\tif (proto !== Object.prototype && proto !== null) {\n\t\tthrow new TypeError(`${path} must be a plain data object or array`);\n\t}\n\ttry {\n\t\tfor (const key of Reflect.ownKeys(value)) {\n\t\t\tif (typeof key === \"symbol\") throw new TypeError(`${path} must not carry symbol keys`);\n\t\t\tconst descriptor = Object.getOwnPropertyDescriptor(value, key);\n\t\t\tif (descriptor === undefined) continue;\n\t\t\tif (!descriptor.enumerable || !(\"value\" in descriptor)) {\n\t\t\t\tthrow new TypeError(`${path}.${key} must be enumerable plain data`);\n\t\t\t}\n\t\t\tassertGraphVisibleData(descriptor.value, `${path}.${key}`, maxPayloadBytes, seen);\n\t\t}\n\t\tassertPayloadSize(value, path, maxPayloadBytes);\n\t} finally {\n\t\tseen.delete(value as object);\n\t}\n}\n\nfunction assertPayloadSize(value: unknown, path: string, maxPayloadBytes: number): void {\n\tconst serialized = JSON.stringify(value);\n\tif (serialized !== undefined && utf8ByteLength(serialized) > maxPayloadBytes) {\n\t\tthrow new TypeError(`${path} exceeds ${maxPayloadBytes} bytes`);\n\t}\n}\n\nfunction utf8ByteLength(value: string): number {\n\tlet bytes = 0;\n\tfor (let i = 0; i < value.length; i += 1) {\n\t\tconst code = value.charCodeAt(i);\n\t\tif (code < 0x80) {\n\t\t\tbytes += 1;\n\t\t} else if (code < 0x800) {\n\t\t\tbytes += 2;\n\t\t} else if (code >= 0xd800 && code <= 0xdbff && i + 1 < value.length) {\n\t\t\tconst next = value.charCodeAt(i + 1);\n\t\t\tif (next >= 0xdc00 && next <= 0xdfff) {\n\t\t\t\tbytes += 4;\n\t\t\t\ti += 1;\n\t\t\t} else {\n\t\t\t\tbytes += 3;\n\t\t\t}\n\t\t} else {\n\t\t\tbytes += 3;\n\t\t}\n\t}\n\treturn bytes;\n}\n\nfunction sameMeta<T>(a: T, b: T): boolean {\n\tconst left = a as Record<string | symbol, unknown>;\n\tconst right = b as Record<string | symbol, unknown>;\n\tconst keys = Reflect.ownKeys(left);\n\tif (keys.length !== Reflect.ownKeys(right).length) return false;\n\tfor (const key of keys) {\n\t\tif (!Object.is(left[key], right[key])) return false;\n\t}\n\treturn true;\n}\n\nfunction pushUniqueMeta<T>(\n\tregistry: WeakMap<DecoratorHostConstructor, T[]>,\n\tctor: DecoratorHostConstructor,\n\titem: T,\n): void {\n\tconst existing = registry.get(ctor) ?? [];\n\tif (existing.some((current) => sameMeta(current, item))) return;\n\tregistry.set(ctor, [...existing, item]);\n}\n\nfunction registerMeta<T>(\n\tregistry: WeakMap<DecoratorHostConstructor, T[]>,\n\tmeta: (methodKey: string | symbol) => T,\n): GraphMethodDecorator {\n\treturn ((targetOrValue: object, contextOrKey: ClassMethodDecoratorContext | string | symbol) => {\n\t\tif (typeof contextOrKey === \"object\" && contextOrKey !== null) {\n\t\t\tconst methodKey = contextOrKey.name;\n\t\t\tcontextOrKey.addInitializer(function (this: unknown) {\n\t\t\t\tconst ctor = (this as { constructor: DecoratorHostConstructor }).constructor;\n\t\t\t\tpushUniqueMeta(registry, ctor, meta(methodKey));\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\n\t\tconst ctor = (targetOrValue as { constructor: DecoratorHostConstructor }).constructor;\n\t\tpushUniqueMeta(registry, ctor, meta(contextOrKey));\n\t}) as GraphMethodDecorator;\n}\n\n/** Register a method as a DATA-event handler for a graph observe path. */\nexport function OnGraphEvent(nodeName: string): GraphMethodDecorator {\n\treturn registerMeta(EVENT_HANDLERS, (methodKey) => ({ nodeName, methodKey }));\n}\n\n/** Register fixed-interval metadata for a user-land NestJS scheduler bridge. */\nexport function GraphInterval(ms: number): GraphMethodDecorator {\n\treturn registerMeta(INTERVAL_HANDLERS, (methodKey) => ({ ms, methodKey }));\n}\n"],"mappings":"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","names":["pendingKey","entry","opts","ctor"]}
|
|
@@ -0,0 +1,385 @@
|
|
|
1
|
+
import { DataIssue } from '../data/index.cjs';
|
|
2
|
+
import { d as Graph } from '../graph-CWK3HLPB.cjs';
|
|
3
|
+
import { N as Node } from '../types-BS6CyR-x.cjs';
|
|
4
|
+
import '../core/index.cjs';
|
|
5
|
+
import '../messages-CAzUPPJM.cjs';
|
|
6
|
+
import '../codec-BB7p8fJc.cjs';
|
|
7
|
+
import '../describe-CQRrkv-Q.cjs';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Focused NestJS boundary bindings for GraphReFly (D474/D478).
|
|
11
|
+
*
|
|
12
|
+
* This subpath stays dependency-light: it exposes graph boundary primitives,
|
|
13
|
+
* token/provider shapes, and decorator metadata without importing Nest itself.
|
|
14
|
+
* User-land Nest modules/controllers bind these helpers to real decorators and
|
|
15
|
+
* host lifecycle objects at the framework edge.
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
declare const NEST_BOUNDARY_ENVELOPE_VERSION = 1;
|
|
19
|
+
declare const NEST_BOUNDARY_PAYLOAD_MAX_BYTES: number;
|
|
20
|
+
declare const NEST_HTTP_DIAGNOSTICS_MAX_RETAINED = 100;
|
|
21
|
+
/** D478 minimal graph-visible transport envelope. Payload must be data-only. */
|
|
22
|
+
interface NestBoundaryEnvelope<T = unknown> {
|
|
23
|
+
readonly bindingId: string;
|
|
24
|
+
readonly version: number;
|
|
25
|
+
readonly payload: T;
|
|
26
|
+
readonly requestId?: string;
|
|
27
|
+
}
|
|
28
|
+
/** Reply-capable egress must carry host-private request correlation (D478). */
|
|
29
|
+
type NestReplyEnvelope<T = unknown> = NestBoundaryEnvelope<T> & {
|
|
30
|
+
readonly requestId: string;
|
|
31
|
+
};
|
|
32
|
+
type NestBoundaryKind = "request" | "guard" | "interceptor" | "error" | "lifecycle" | "cron" | "diagnostics" | "ws" | "message";
|
|
33
|
+
type NestEgressKind = "http" | "guard-decision" | "ws-ack" | "ws-reply" | "message-reply";
|
|
34
|
+
type NestFilterMode = "handle" | "observe";
|
|
35
|
+
type NestDiagnosticPhase = "adapter" | "http" | "guard" | "filter" | "cron" | "lifecycle" | "ws" | "message" | NestBoundaryKind | NestEgressKind;
|
|
36
|
+
interface NestHttpResponsePayload<TBody = unknown> {
|
|
37
|
+
readonly status: number;
|
|
38
|
+
readonly body?: TBody;
|
|
39
|
+
readonly headers?: Record<string, string>;
|
|
40
|
+
}
|
|
41
|
+
interface HttpDataIssue extends DataIssue {
|
|
42
|
+
readonly status: number;
|
|
43
|
+
readonly body?: unknown;
|
|
44
|
+
readonly headers?: Record<string, string>;
|
|
45
|
+
}
|
|
46
|
+
type NestIssueResponse<THost = unknown> = (issue: DataIssue, host: THost) => NestHttpResponsePayload;
|
|
47
|
+
type NestProtocolErrorResponse<THost = unknown> = (errorPayload: unknown, host: THost) => NestHttpResponsePayload;
|
|
48
|
+
interface NestBoundaryDiagnostic {
|
|
49
|
+
readonly kind: "binding-mismatch" | "dispose-pending" | "malformed-egress" | "stale-egress" | "terminal-egress" | "timeout" | "resolve-threw" | "reject-threw";
|
|
50
|
+
readonly phase?: NestDiagnosticPhase;
|
|
51
|
+
readonly requestId?: string;
|
|
52
|
+
readonly bindingId?: string;
|
|
53
|
+
readonly expectedBindingId?: string;
|
|
54
|
+
readonly message: string;
|
|
55
|
+
readonly error?: unknown;
|
|
56
|
+
}
|
|
57
|
+
interface NestDiagnosticErrorPayload {
|
|
58
|
+
readonly name?: string;
|
|
59
|
+
readonly message: string;
|
|
60
|
+
}
|
|
61
|
+
interface NestDiagnosticPayload {
|
|
62
|
+
readonly kind: NestBoundaryDiagnostic["kind"];
|
|
63
|
+
readonly phase: NestDiagnosticPhase;
|
|
64
|
+
readonly requestId?: string;
|
|
65
|
+
readonly bindingId?: string;
|
|
66
|
+
readonly expectedBindingId?: string;
|
|
67
|
+
readonly message: string;
|
|
68
|
+
readonly error?: NestDiagnosticErrorPayload;
|
|
69
|
+
}
|
|
70
|
+
interface NestDiagnosticInput extends NestBoundaryDiagnostic {
|
|
71
|
+
readonly phase?: NestDiagnosticPhase;
|
|
72
|
+
}
|
|
73
|
+
interface NestDiagnosticsOptions extends Omit<NestIngressOptions<NestDiagnosticInput, NestDiagnosticPayload>, "payload"> {
|
|
74
|
+
readonly phase?: NestDiagnosticPhase;
|
|
75
|
+
}
|
|
76
|
+
type NestDiagnosticIngressBoundary = NestIngressBoundary<NestDiagnosticInput, NestDiagnosticPayload>;
|
|
77
|
+
interface NestIngressBoundary<THost = unknown, TPayload = THost> {
|
|
78
|
+
readonly kind: NestBoundaryKind;
|
|
79
|
+
readonly bindingId: string;
|
|
80
|
+
readonly version: number;
|
|
81
|
+
readonly node: Node<NestBoundaryEnvelope<TPayload>>;
|
|
82
|
+
envelope(host: THost, opts?: NestIngressEmitOptions<TPayload>): NestBoundaryEnvelope<TPayload>;
|
|
83
|
+
emit(host: THost, opts?: NestIngressEmitOptions<TPayload>): NestBoundaryEnvelope<TPayload>;
|
|
84
|
+
}
|
|
85
|
+
interface NestIngressOptions<THost, TPayload> {
|
|
86
|
+
readonly bindingId?: string;
|
|
87
|
+
readonly name?: string;
|
|
88
|
+
readonly version?: number;
|
|
89
|
+
readonly maxPayloadBytes?: number;
|
|
90
|
+
readonly requestId?: string | ((host: THost) => string | undefined);
|
|
91
|
+
readonly requireRequestId?: boolean;
|
|
92
|
+
readonly payload?: (host: THost) => TPayload;
|
|
93
|
+
}
|
|
94
|
+
interface NestIngressEmitOptions<TPayload> {
|
|
95
|
+
readonly requestId?: string;
|
|
96
|
+
readonly bindingId?: string;
|
|
97
|
+
readonly version?: number;
|
|
98
|
+
readonly payload?: TPayload;
|
|
99
|
+
readonly requireRequestId?: boolean;
|
|
100
|
+
}
|
|
101
|
+
interface NestReplyResponseHandle<TPayload> {
|
|
102
|
+
resolve(payload: TPayload, envelope: NestReplyEnvelope<TPayload>): void;
|
|
103
|
+
reject(error: unknown, envelope?: NestReplyEnvelope<TPayload>): void;
|
|
104
|
+
}
|
|
105
|
+
interface NestReplyPendingRegistration<TPayload> {
|
|
106
|
+
readonly requestId: string;
|
|
107
|
+
readonly handle: NestReplyResponseHandle<TPayload>;
|
|
108
|
+
readonly bindingId?: string;
|
|
109
|
+
}
|
|
110
|
+
interface NestReplyBoundary<TPayload = unknown> {
|
|
111
|
+
readonly kind: NestEgressKind;
|
|
112
|
+
readonly bindingId: string;
|
|
113
|
+
attach(registration: NestReplyPendingRegistration<TPayload>): () => boolean;
|
|
114
|
+
pendingCount(): number;
|
|
115
|
+
diagnostics(): readonly NestBoundaryDiagnostic[];
|
|
116
|
+
dispose(): void;
|
|
117
|
+
}
|
|
118
|
+
interface NestHttpResponseHandle<TPayload> extends NestReplyResponseHandle<TPayload> {
|
|
119
|
+
}
|
|
120
|
+
interface NestHttpPendingRegistration<TPayload> extends NestReplyPendingRegistration<TPayload> {
|
|
121
|
+
}
|
|
122
|
+
interface NestHttpBoundary<TPayload = unknown> extends NestReplyBoundary<TPayload> {
|
|
123
|
+
readonly kind: "http";
|
|
124
|
+
}
|
|
125
|
+
interface ToNestHttpOptions<TPayload> {
|
|
126
|
+
readonly bindingId?: string;
|
|
127
|
+
readonly diagnosticBoundary?: NestDiagnosticIngressBoundary;
|
|
128
|
+
readonly diagnosticPhase?: NestDiagnosticPhase;
|
|
129
|
+
readonly maxDiagnostics?: number;
|
|
130
|
+
readonly maxPayloadBytes?: number;
|
|
131
|
+
readonly name?: string;
|
|
132
|
+
readonly transform?: (payload: TPayload, envelope: NestReplyEnvelope<TPayload>) => TPayload;
|
|
133
|
+
readonly label?: string;
|
|
134
|
+
}
|
|
135
|
+
interface NestBoundaryDecoratorOptions<THost = unknown, TPayload = unknown> {
|
|
136
|
+
readonly bindingId?: string;
|
|
137
|
+
readonly payload?: (host: THost) => TPayload;
|
|
138
|
+
readonly requestId?: string | ((host: THost) => string | undefined);
|
|
139
|
+
readonly order?: number;
|
|
140
|
+
}
|
|
141
|
+
interface NestFilterDecoratorOptions<THost = unknown, TPayload = unknown> extends NestBoundaryDecoratorOptions<THost, TPayload> {
|
|
142
|
+
readonly mode?: NestFilterMode;
|
|
143
|
+
readonly issueResponse?: NestIssueResponse<THost>;
|
|
144
|
+
readonly protocolError?: NestProtocolErrorResponse<THost>;
|
|
145
|
+
}
|
|
146
|
+
interface NestHttpReplyDecoratorOptions<THost = unknown> {
|
|
147
|
+
readonly bindingId: string;
|
|
148
|
+
readonly order?: number;
|
|
149
|
+
readonly issueResponse?: NestIssueResponse<THost>;
|
|
150
|
+
readonly protocolError?: NestProtocolErrorResponse<THost>;
|
|
151
|
+
}
|
|
152
|
+
interface NestGuardDecisionDecoratorOptions<THost = unknown> {
|
|
153
|
+
readonly bindingId: string;
|
|
154
|
+
readonly order?: number;
|
|
155
|
+
readonly issueResponse?: NestIssueResponse<THost>;
|
|
156
|
+
readonly protocolError?: NestProtocolErrorResponse<THost>;
|
|
157
|
+
}
|
|
158
|
+
interface NestGraphRunOptions<THost = unknown> {
|
|
159
|
+
readonly requestId?: string | ((host: THost) => string | undefined);
|
|
160
|
+
}
|
|
161
|
+
interface NestGraphBoundaryRunnerOptions {
|
|
162
|
+
readonly diagnosticBoundary?: NestDiagnosticIngressBoundary;
|
|
163
|
+
readonly diagnosticPhase?: NestDiagnosticPhase;
|
|
164
|
+
}
|
|
165
|
+
interface NestGraphBoundaryRunner {
|
|
166
|
+
run<THost = unknown>(target: DecoratorHostConstructor | object, methodKey: string | symbol, host: THost, opts?: NestGraphRunOptions<THost>): Promise<unknown> | undefined;
|
|
167
|
+
dispose(): void;
|
|
168
|
+
}
|
|
169
|
+
interface NestExecutionContextLike {
|
|
170
|
+
getClass(): DecoratorHostConstructor;
|
|
171
|
+
getHandler(): DecoratorBoundMethod;
|
|
172
|
+
switchToHttp?(): {
|
|
173
|
+
getRequest<T = unknown>(): T;
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
interface NestCallHandlerLike {
|
|
177
|
+
handle(): unknown;
|
|
178
|
+
}
|
|
179
|
+
interface NestGraphBoundaryInterceptorOptions<THost = unknown> extends NestGraphRunOptions<THost>, NestGraphBoundaryRunnerOptions {
|
|
180
|
+
readonly host?: (context: NestExecutionContextLike) => THost;
|
|
181
|
+
readonly runner?: NestGraphBoundaryRunner;
|
|
182
|
+
}
|
|
183
|
+
interface NestGraphBoundaryInterceptor {
|
|
184
|
+
intercept(context: NestExecutionContextLike, next?: NestCallHandlerLike): Promise<unknown> | unknown;
|
|
185
|
+
dispose(): void;
|
|
186
|
+
}
|
|
187
|
+
/** Injection token for a root graph singleton. */
|
|
188
|
+
declare const GRAPHREFLY_ROOT_GRAPH: unique symbol;
|
|
189
|
+
/** Injection token for adapter module options. */
|
|
190
|
+
declare const GRAPHREFLY_MODULE_OPTIONS: unique symbol;
|
|
191
|
+
/** Injection token for a request-scoped graph. */
|
|
192
|
+
declare const GRAPHREFLY_REQUEST_GRAPH: unique symbol;
|
|
193
|
+
type DecoratorHostConstructor = abstract new (...args: unknown[]) => unknown;
|
|
194
|
+
type DecoratorBoundMethod = (...args: unknown[]) => unknown;
|
|
195
|
+
interface OnGraphEventMeta {
|
|
196
|
+
nodeName: string;
|
|
197
|
+
methodKey: string | symbol;
|
|
198
|
+
}
|
|
199
|
+
interface GraphIntervalMeta {
|
|
200
|
+
ms: number;
|
|
201
|
+
methodKey: string | symbol;
|
|
202
|
+
}
|
|
203
|
+
interface GraphCronMeta {
|
|
204
|
+
expr: string;
|
|
205
|
+
methodKey: string | symbol;
|
|
206
|
+
}
|
|
207
|
+
type NestBoundaryBindingDirection = "ingress" | "egress";
|
|
208
|
+
interface NestIngressBindingMeta {
|
|
209
|
+
readonly direction: "ingress";
|
|
210
|
+
kind: NestBoundaryKind;
|
|
211
|
+
bindingId: string;
|
|
212
|
+
methodKey: string | symbol;
|
|
213
|
+
readonly boundary: NestIngressBoundary<unknown, unknown>;
|
|
214
|
+
readonly payload?: (host: unknown) => unknown;
|
|
215
|
+
readonly requestId?: string | ((host: unknown) => string | undefined);
|
|
216
|
+
readonly order?: number;
|
|
217
|
+
readonly mode?: NestFilterMode;
|
|
218
|
+
readonly issueResponse?: NestIssueResponse<unknown>;
|
|
219
|
+
readonly protocolError?: NestProtocolErrorResponse<unknown>;
|
|
220
|
+
}
|
|
221
|
+
interface NestHttpReplyBindingMeta {
|
|
222
|
+
readonly direction: "egress";
|
|
223
|
+
readonly kind: "http";
|
|
224
|
+
readonly bindingId: string;
|
|
225
|
+
readonly methodKey: string | symbol;
|
|
226
|
+
readonly replyNode: Node<NestReplyEnvelope<unknown>>;
|
|
227
|
+
readonly order?: number;
|
|
228
|
+
readonly issueResponse?: NestIssueResponse<unknown>;
|
|
229
|
+
readonly protocolError?: NestProtocolErrorResponse<unknown>;
|
|
230
|
+
}
|
|
231
|
+
interface NestGuardDecisionBindingMeta {
|
|
232
|
+
readonly direction: "egress";
|
|
233
|
+
readonly kind: "guard-decision";
|
|
234
|
+
readonly bindingId: string;
|
|
235
|
+
readonly methodKey: string | symbol;
|
|
236
|
+
readonly decisionNode: Node<NestReplyEnvelope<GraphGuardDecision>>;
|
|
237
|
+
readonly order?: number;
|
|
238
|
+
readonly issueResponse?: NestIssueResponse<unknown>;
|
|
239
|
+
readonly protocolError?: NestProtocolErrorResponse<unknown>;
|
|
240
|
+
}
|
|
241
|
+
interface NestWsAckBindingMeta {
|
|
242
|
+
readonly direction: "egress";
|
|
243
|
+
readonly kind: "ws-ack";
|
|
244
|
+
readonly bindingId: string;
|
|
245
|
+
readonly methodKey: string | symbol;
|
|
246
|
+
readonly ackNode: Node<NestReplyEnvelope<unknown>>;
|
|
247
|
+
readonly order?: number;
|
|
248
|
+
}
|
|
249
|
+
interface NestWsReplyBindingMeta {
|
|
250
|
+
readonly direction: "egress";
|
|
251
|
+
readonly kind: "ws-reply";
|
|
252
|
+
readonly bindingId: string;
|
|
253
|
+
readonly methodKey: string | symbol;
|
|
254
|
+
readonly replyNode: Node<NestReplyEnvelope<unknown>>;
|
|
255
|
+
readonly order?: number;
|
|
256
|
+
}
|
|
257
|
+
interface NestMessageReplyBindingMeta {
|
|
258
|
+
readonly direction: "egress";
|
|
259
|
+
readonly kind: "message-reply";
|
|
260
|
+
readonly bindingId: string;
|
|
261
|
+
readonly methodKey: string | symbol;
|
|
262
|
+
readonly replyNode: Node<NestReplyEnvelope<unknown>>;
|
|
263
|
+
readonly order?: number;
|
|
264
|
+
}
|
|
265
|
+
type NestBoundaryBindingMeta = NestIngressBindingMeta | NestHttpReplyBindingMeta | NestGuardDecisionBindingMeta | NestWsAckBindingMeta | NestWsReplyBindingMeta | NestMessageReplyBindingMeta;
|
|
266
|
+
declare const EVENT_HANDLERS: WeakMap<DecoratorHostConstructor, OnGraphEventMeta[]>;
|
|
267
|
+
declare const INTERVAL_HANDLERS: WeakMap<DecoratorHostConstructor, GraphIntervalMeta[]>;
|
|
268
|
+
declare const CRON_HANDLERS: WeakMap<DecoratorHostConstructor, GraphCronMeta[]>;
|
|
269
|
+
declare const NEST_BOUNDARY_BINDINGS: WeakMap<DecoratorHostConstructor, NestBoundaryBindingMeta[]>;
|
|
270
|
+
type GraphMethodDecorator = MethodDecorator & ((value: DecoratorBoundMethod, context: ClassMethodDecoratorContext) => void);
|
|
271
|
+
/** Minimal Nest provider object shape without importing @nestjs/common. */
|
|
272
|
+
type NestProviderBinding<T = unknown> = {
|
|
273
|
+
readonly provide: string | symbol;
|
|
274
|
+
readonly useValue: T;
|
|
275
|
+
} | {
|
|
276
|
+
readonly provide: string | symbol;
|
|
277
|
+
readonly useFactory: (...args: unknown[]) => T;
|
|
278
|
+
};
|
|
279
|
+
/** Get the injection token for a named feature graph. */
|
|
280
|
+
declare function getGraphToken(name: string): symbol;
|
|
281
|
+
/** Get the injection token for a node at a qualified path. */
|
|
282
|
+
declare function getNodeToken(path: string): symbol;
|
|
283
|
+
/** Get the injection token for a named Nest boundary binding. */
|
|
284
|
+
declare function getNestBoundaryToken(bindingId: string): symbol;
|
|
285
|
+
/** Build a dependency-free provider binding shape for user-land Nest modules. */
|
|
286
|
+
declare function nestProvider<T>(provide: string | symbol, useValue: T): NestProviderBinding<T>;
|
|
287
|
+
/** D474 P0 HTTP request ingress. */
|
|
288
|
+
declare function fromNestReq<THost = unknown, TPayload = THost>(graph: Graph, opts?: NestIngressOptions<THost, TPayload>): NestIngressBoundary<THost, TPayload>;
|
|
289
|
+
/** D474 P0 guard/admission ingress. */
|
|
290
|
+
declare function fromNestGuard<THost = unknown, TPayload = THost>(graph: Graph, opts?: NestIngressOptions<THost, TPayload>): NestIngressBoundary<THost, TPayload>;
|
|
291
|
+
/** D474 P1 interceptor ingress. */
|
|
292
|
+
declare function fromNestIntercept<THost = unknown, TPayload = THost>(graph: Graph, opts?: NestIngressOptions<THost, TPayload>): NestIngressBoundary<THost, TPayload>;
|
|
293
|
+
/** D474 P0 error/filter ingress. */
|
|
294
|
+
declare function fromNestError<THost = unknown, TPayload = THost>(graph: Graph, opts?: NestIngressOptions<THost, TPayload>): NestIngressBoundary<THost, TPayload>;
|
|
295
|
+
/** D474 P1 Nest lifecycle hook ingress. */
|
|
296
|
+
declare function fromNestLifecycle<THost = unknown, TPayload = THost>(graph: Graph, opts?: NestIngressOptions<THost, TPayload>): NestIngressBoundary<THost, TPayload>;
|
|
297
|
+
/** D474 P1 schedule/cron ingress. */
|
|
298
|
+
declare function fromNestCron<THost = unknown, TPayload = THost>(graph: Graph, opts?: NestIngressOptions<THost, TPayload>): NestIngressBoundary<THost, TPayload>;
|
|
299
|
+
/** D494 explicit graph-visible diagnostics ingress. Emits sanitized data-only payloads. */
|
|
300
|
+
declare function fromNestDiagnostics(graph: Graph, opts?: NestDiagnosticsOptions): NestDiagnosticIngressBoundary;
|
|
301
|
+
/** D474 later/optional WebSocket ingress. Kept thin for first-slice experiments. */
|
|
302
|
+
declare function fromNestWs<THost = unknown, TPayload = THost>(graph: Graph, opts?: NestIngressOptions<THost, TPayload>): NestIngressBoundary<THost, TPayload>;
|
|
303
|
+
/** D474 later/optional microservice/message ingress. */
|
|
304
|
+
declare function fromNestMessage<THost = unknown, TPayload = THost>(graph: Graph, opts?: NestIngressOptions<THost, TPayload>): NestIngressBoundary<THost, TPayload>;
|
|
305
|
+
/**
|
|
306
|
+
* D474 HTTP egress resolver.
|
|
307
|
+
*
|
|
308
|
+
* The returned boundary owns only a host-private pending map. It never stores
|
|
309
|
+
* response/socket/ack handles in graph DATA and only resolves handles whose
|
|
310
|
+
* requestId (and optional bindingId) match an egress envelope.
|
|
311
|
+
*/
|
|
312
|
+
declare function toNestHttp<TPayload = unknown>(egress: Node<NestReplyEnvelope<TPayload>>, opts?: ToNestHttpOptions<TPayload>): NestHttpBoundary<TPayload>;
|
|
313
|
+
/** D478 route-request decorator over an existing ingress boundary. */
|
|
314
|
+
declare function GraphReq<THost = unknown, TPayload = unknown>(boundary: NestIngressBoundary<THost, TPayload>, opts?: NestBoundaryDecoratorOptions<THost, TPayload>): GraphMethodDecorator;
|
|
315
|
+
/** D478 route-guard decorator over an existing ingress boundary. */
|
|
316
|
+
declare function GraphGuard<THost = unknown, TPayload = unknown>(boundary: NestIngressBoundary<THost, TPayload>, opts?: NestBoundaryDecoratorOptions<THost, TPayload>): GraphMethodDecorator;
|
|
317
|
+
/** D478 route-interceptor decorator over an existing ingress boundary. */
|
|
318
|
+
declare function GraphIntercept<THost = unknown, TPayload = unknown>(boundary: NestIngressBoundary<THost, TPayload>, opts?: NestBoundaryDecoratorOptions<THost, TPayload>): GraphMethodDecorator;
|
|
319
|
+
/** D484 generic filter decorator over an existing ingress boundary. */
|
|
320
|
+
declare function GraphFilter<THost = unknown, TPayload = unknown>(boundary: NestIngressBoundary<THost, TPayload>, opts?: NestFilterDecoratorOptions<THost, TPayload>): GraphMethodDecorator;
|
|
321
|
+
/** D484 exception-oriented sugar over GraphFilter. */
|
|
322
|
+
declare function GraphError<THost = unknown, TPayload = unknown>(boundary: NestIngressBoundary<THost, TPayload>, opts?: NestFilterDecoratorOptions<THost, TPayload>): GraphMethodDecorator;
|
|
323
|
+
/** D478 lifecycle decorator over an existing ingress boundary. */
|
|
324
|
+
declare function GraphLifecycle<THost = unknown, TPayload = unknown>(boundary: NestIngressBoundary<THost, TPayload>, opts?: NestBoundaryDecoratorOptions<THost, TPayload>): GraphMethodDecorator;
|
|
325
|
+
/** D478 cron/schedule decorator over an existing ingress boundary. */
|
|
326
|
+
declare function GraphCron<THost = unknown, TPayload = unknown>(boundary: NestIngressBoundary<THost, TPayload>, opts?: NestBoundaryDecoratorOptions<THost, TPayload>): GraphMethodDecorator;
|
|
327
|
+
/** D488 WebSocket message ingress decorator over an existing boundary. */
|
|
328
|
+
declare function GraphWs<THost = unknown, TPayload = unknown>(boundary: NestIngressBoundary<THost, TPayload>, opts?: NestBoundaryDecoratorOptions<THost, TPayload>): GraphMethodDecorator;
|
|
329
|
+
/** D488 microservice/message ingress decorator over an existing boundary. */
|
|
330
|
+
declare function GraphMessage<THost = unknown, TPayload = unknown>(boundary: NestIngressBoundary<THost, TPayload>, opts?: NestBoundaryDecoratorOptions<THost, TPayload>): GraphMethodDecorator;
|
|
331
|
+
/** D478 HTTP reply decorator over an existing reply node. */
|
|
332
|
+
declare function GraphHttpReply<THost = unknown, TPayload = unknown>(replyNode: Node<NestReplyEnvelope<TPayload>>, opts: NestHttpReplyDecoratorOptions<THost>): GraphMethodDecorator;
|
|
333
|
+
type GraphGuardDecision = {
|
|
334
|
+
readonly kind: "allow";
|
|
335
|
+
readonly reason?: string;
|
|
336
|
+
readonly metadata?: Record<string, unknown>;
|
|
337
|
+
} | {
|
|
338
|
+
readonly kind: "deny";
|
|
339
|
+
readonly reason?: string;
|
|
340
|
+
readonly status?: number;
|
|
341
|
+
readonly body?: unknown;
|
|
342
|
+
readonly headers?: Record<string, string>;
|
|
343
|
+
readonly issue?: DataIssue | HttpDataIssue;
|
|
344
|
+
readonly metadata?: Record<string, unknown>;
|
|
345
|
+
};
|
|
346
|
+
/** D484 guard decision egress decorator over an existing reply-correlated decision node. */
|
|
347
|
+
declare function GraphGuardDecision<THost = unknown>(decisionNode: Node<NestReplyEnvelope<GraphGuardDecision>>, opts: NestGuardDecisionDecoratorOptions<THost>): GraphMethodDecorator;
|
|
348
|
+
/** D488 WebSocket acknowledgement egress decorator over an existing reply-correlated node. */
|
|
349
|
+
declare function GraphWsAck<TPayload = unknown>(ackNode: Node<NestReplyEnvelope<TPayload>>, opts: {
|
|
350
|
+
readonly bindingId: string;
|
|
351
|
+
readonly order?: number;
|
|
352
|
+
}): GraphMethodDecorator;
|
|
353
|
+
/** D488 WebSocket reply egress decorator over an existing reply-correlated node. */
|
|
354
|
+
declare function GraphWsReply<TPayload = unknown>(replyNode: Node<NestReplyEnvelope<TPayload>>, opts: {
|
|
355
|
+
readonly bindingId: string;
|
|
356
|
+
readonly order?: number;
|
|
357
|
+
}): GraphMethodDecorator;
|
|
358
|
+
/** D488 microservice/message reply egress decorator over an existing reply-correlated node. */
|
|
359
|
+
declare function GraphMessageReply<TPayload = unknown>(replyNode: Node<NestReplyEnvelope<TPayload>>, opts: {
|
|
360
|
+
readonly bindingId: string;
|
|
361
|
+
readonly order?: number;
|
|
362
|
+
}): GraphMethodDecorator;
|
|
363
|
+
declare function createNestGraphBoundaryRunner(opts?: NestGraphBoundaryRunnerOptions): NestGraphBoundaryRunner;
|
|
364
|
+
declare function createNestGraphBoundaryInterceptor<THost = unknown>(opts?: NestGraphBoundaryInterceptorOptions<THost>): NestGraphBoundaryInterceptor;
|
|
365
|
+
declare function getNestBoundaryBindings(target: DecoratorHostConstructor | object, methodKey?: string | symbol): readonly NestBoundaryBindingMeta[];
|
|
366
|
+
declare function resolveNestMethodKey(ctor: DecoratorHostConstructor, handler: DecoratorBoundMethod): string | symbol | undefined;
|
|
367
|
+
declare function bindingRequestId<THost>(host: THost, binding: NestBoundaryBindingMeta, fallback?: string | ((host: THost) => string | undefined)): string | undefined;
|
|
368
|
+
declare function bindingEmitOptions<THost>(host: THost, binding: NestIngressBindingMeta, requestId?: string): NestIngressEmitOptions<unknown>;
|
|
369
|
+
declare function isDataIssue(value: unknown): value is DataIssue;
|
|
370
|
+
declare function isHttpDataIssue(value: unknown): value is HttpDataIssue;
|
|
371
|
+
declare function issueResponse<THost = unknown>(issue: DataIssue, _host?: THost): NestHttpResponsePayload;
|
|
372
|
+
declare function protocolError<THost = unknown>(_errorPayload: unknown, _host?: THost): NestHttpResponsePayload;
|
|
373
|
+
declare function lowerHttpReplyPayload<THost = unknown>(payload: unknown, host: THost, opts?: {
|
|
374
|
+
readonly issueResponse?: NestIssueResponse<THost>;
|
|
375
|
+
}): NestHttpResponsePayload;
|
|
376
|
+
declare function lowerProtocolError<THost = unknown>(errorPayload: unknown, host: THost, opts?: {
|
|
377
|
+
readonly protocolError?: NestProtocolErrorResponse<THost>;
|
|
378
|
+
}): NestHttpResponsePayload;
|
|
379
|
+
declare function sanitizeNestDiagnostic(diagnostic: NestDiagnosticInput, defaultPhase?: NestDiagnosticPhase): NestDiagnosticPayload;
|
|
380
|
+
/** Register a method as a DATA-event handler for a graph observe path. */
|
|
381
|
+
declare function OnGraphEvent(nodeName: string): GraphMethodDecorator;
|
|
382
|
+
/** Register fixed-interval metadata for a user-land NestJS scheduler bridge. */
|
|
383
|
+
declare function GraphInterval(ms: number): GraphMethodDecorator;
|
|
384
|
+
|
|
385
|
+
export { CRON_HANDLERS, type DecoratorBoundMethod, type DecoratorHostConstructor, EVENT_HANDLERS, GRAPHREFLY_MODULE_OPTIONS, GRAPHREFLY_REQUEST_GRAPH, GRAPHREFLY_ROOT_GRAPH, GraphCron, type GraphCronMeta, GraphError, GraphFilter, GraphGuard, GraphGuardDecision, GraphHttpReply, GraphIntercept, GraphInterval, type GraphIntervalMeta, GraphLifecycle, GraphMessage, GraphMessageReply, type GraphMethodDecorator, GraphReq, GraphWs, GraphWsAck, GraphWsReply, type HttpDataIssue, INTERVAL_HANDLERS, NEST_BOUNDARY_BINDINGS, NEST_BOUNDARY_ENVELOPE_VERSION, NEST_BOUNDARY_PAYLOAD_MAX_BYTES, NEST_HTTP_DIAGNOSTICS_MAX_RETAINED, type NestBoundaryBindingDirection, type NestBoundaryBindingMeta, type NestBoundaryDecoratorOptions, type NestBoundaryDiagnostic, type NestBoundaryEnvelope, type NestBoundaryKind, type NestCallHandlerLike, type NestDiagnosticErrorPayload, type NestDiagnosticIngressBoundary, type NestDiagnosticInput, type NestDiagnosticPayload, type NestDiagnosticPhase, type NestDiagnosticsOptions, type NestEgressKind, type NestExecutionContextLike, type NestFilterDecoratorOptions, type NestFilterMode, type NestGraphBoundaryInterceptor, type NestGraphBoundaryInterceptorOptions, type NestGraphBoundaryRunner, type NestGraphBoundaryRunnerOptions, type NestGraphRunOptions, type NestGuardDecisionBindingMeta, type NestGuardDecisionDecoratorOptions, type NestHttpBoundary, type NestHttpPendingRegistration, type NestHttpReplyBindingMeta, type NestHttpReplyDecoratorOptions, type NestHttpResponseHandle, type NestHttpResponsePayload, type NestIngressBindingMeta, type NestIngressBoundary, type NestIngressEmitOptions, type NestIngressOptions, type NestIssueResponse, type NestMessageReplyBindingMeta, type NestProtocolErrorResponse, type NestProviderBinding, type NestReplyBoundary, type NestReplyEnvelope, type NestReplyPendingRegistration, type NestReplyResponseHandle, type NestWsAckBindingMeta, type NestWsReplyBindingMeta, OnGraphEvent, type OnGraphEventMeta, type ToNestHttpOptions, bindingEmitOptions, bindingRequestId, createNestGraphBoundaryInterceptor, createNestGraphBoundaryRunner, fromNestCron, fromNestDiagnostics, fromNestError, fromNestGuard, fromNestIntercept, fromNestLifecycle, fromNestMessage, fromNestReq, fromNestWs, getGraphToken, getNestBoundaryBindings, getNestBoundaryToken, getNodeToken, isDataIssue, isHttpDataIssue, issueResponse, lowerHttpReplyPayload, lowerProtocolError, nestProvider, protocolError, resolveNestMethodKey, sanitizeNestDiagnostic, toNestHttp };
|