acrylblends 1.0.4 → 1.0.6
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/docs/framework/agents/index.md +7 -5
- package/lib/accept-CNNHu4Cf.js +193 -0
- package/lib/{accepts-XBuZPVRI.js → accepts-Btq83xPd.js} +1 -1
- package/lib/accepts.js +1 -1
- package/lib/acryl-base.js +1 -331
- package/lib/adapter-CaZ6FZUU.js +37 -0
- package/lib/adapter.js +1 -36
- package/lib/{app-BM0rTCp7.js → app-CQcGWjrk.js} +4 -4
- package/lib/app-base-CpRMZL4v.js +332 -0
- package/lib/{audit-D5z9uwOP.d.ts → audit-GcLtvNLV.d.ts} +4 -2
- package/lib/{base-NSN_SNv-.js → base-D_6kfOr-.js} +1 -1
- package/lib/basic-auth-C0HTRpXh.js +20 -0
- package/lib/basic-auth-DFLflXNe.js +95 -0
- package/lib/basic-auth.js +1 -94
- package/lib/bearer-auth-Cwxt-vgS.js +94 -0
- package/lib/bearer-auth.js +1 -93
- package/lib/body-D7f4e7w_.js +94 -0
- package/lib/body-limit-WmIjWRLt.js +66 -0
- package/lib/body-limit.js +1 -65
- package/lib/buffer-CkEOJCcY.js +51 -0
- package/lib/bun.js +3 -3
- package/lib/cache-B0bHH7s5.js +169 -0
- package/lib/cache.js +1 -168
- package/lib/{client-DDLXwhBo.js → client-BrMFnMEd.js} +1 -1
- package/lib/{client-modules-CLvWOjbd.js → client-modules-drj4mjhj.js} +4 -4
- package/lib/client.js +1 -1
- package/lib/color-COa3DplO.js +37 -0
- package/lib/combine-TWuGdcbC.js +137 -0
- package/lib/combine.js +1 -136
- package/lib/{components-cEW3ovK0.js → components-B2ka9Ax1.js} +4 -4
- package/lib/{components-JXVm45kK.js → components-PVXwaOaC.js} +2 -2
- package/lib/compress-BzWqsHF1.js +79 -0
- package/lib/compress-C-9vK4B2.d.ts +11 -0
- package/lib/compress-DCyrrQ5D.js +11 -0
- package/lib/compress.d.ts +1 -1
- package/lib/compress.js +2 -78
- package/lib/concurrent-DrF3d2c-.js +30 -0
- package/lib/conninfo-BCROmdnf.d.ts +11 -0
- package/lib/conninfo-CWJwieh4.js +19 -0
- package/lib/constants-CBSEudrb.js +7 -0
- package/lib/{context-DDO0cfuP.js → context-CkOh7Ygv.js} +2 -2
- package/lib/context-storage-iuPoI_CR.js +52 -0
- package/lib/context-storage.js +1 -51
- package/lib/cookie-B1LlkzOe.js +125 -0
- package/lib/cookie-BHIduy2T.js +82 -0
- package/lib/cookie.js +1 -81
- package/lib/cordis/db-sqlite.d.ts +1 -1
- package/lib/cordis/door.d.ts +99 -5
- package/lib/cordis/door.js +562 -20
- package/lib/cordis/inspect.js +4 -4
- package/lib/cordis/kv-db.d.ts +1 -1
- package/lib/cordis/kv-db.js +1 -1
- package/lib/cordis/kv-json.d.ts +1 -1
- package/lib/cordis/kv-json.js +1 -1
- package/lib/cordis/node-server.d.ts +1 -1
- package/lib/cordis/node-server.js +3 -116
- package/lib/cordis/router-http.js +2 -2
- package/lib/cordis/router.js +4 -4
- package/lib/cordis/state.js +7 -7
- package/lib/{core-CaY8XDZ6.js → core-BOu1jYua.js} +1 -1
- package/lib/cors-CbAQ-8qU.js +106 -0
- package/lib/cors.js +1 -105
- package/lib/crypto-iVP-N-tS.js +34 -0
- package/lib/csrf-DqqOZtgy.js +101 -0
- package/lib/csrf.js +1 -100
- package/lib/css-C5CPVMvM.js +134 -0
- package/lib/css.js +2 -133
- package/lib/db/sqlite.d.ts +1 -25
- package/lib/dev-CLgu-JRe.js +50 -0
- package/lib/dev.js +1 -49
- package/lib/dom-YjND9Jt3.js +74 -0
- package/lib/door/host.d.ts +2 -2
- package/lib/door/host.js +1 -1
- package/lib/door/page.d.ts +3 -1
- package/lib/door/page.js +2 -2
- package/lib/door/protocol.d.ts +1 -1
- package/lib/door/protocol.js +1 -212
- package/lib/encode-BhbNLrjp.js +33 -0
- package/lib/factory-CLdSf-xS.js +30 -0
- package/lib/factory.js +1 -29
- package/lib/handler-C0wZ0KwO.js +12 -0
- package/lib/helpers-BEjcdbgw.js +5 -0
- package/lib/{hooks-w72iLeFR.js → hooks-CfC07ri0.js} +1 -1
- package/lib/html-CgNa89xw.js +31 -0
- package/lib/html-DGExBFNg.js +103 -0
- package/lib/html.d.ts +2 -5
- package/lib/html.js +2 -30
- package/lib/http-exception-MjWkT89V.js +54 -0
- package/lib/http-exception.js +1 -53
- package/lib/index-dAzQsJG9.d.ts +6 -0
- package/lib/index.js +3 -3
- package/lib/ip-restriction-jKtKCRM_.js +166 -0
- package/lib/ip-restriction.js +1 -165
- package/lib/ipaddr-DCoIo528.js +238 -0
- package/lib/jsx/dom/client.js +1 -1
- package/lib/jsx/dom/jsx-dev-runtime.js +1 -1
- package/lib/jsx/dom/jsx-runtime.js +2 -1
- package/lib/jsx/dom/server.js +3 -3
- package/lib/jsx/dom.js +5 -73
- package/lib/jsx/jsx-dev-runtime.d.ts +2 -5
- package/lib/jsx/jsx-dev-runtime.js +2 -13
- package/lib/jsx/jsx-runtime.d.ts +2 -2
- package/lib/jsx/jsx-runtime.js +4 -4
- package/lib/jsx/streaming.js +1 -1
- package/lib/jsx-CUQgttxU.js +47 -0
- package/lib/jsx-dev-runtime-B4WTyq8r.js +14 -0
- package/lib/{jsx-dev-runtime-CWLRA2F3.js → jsx-dev-runtime-BLfA-EhI.js} +2 -2
- package/lib/jsx-dev-runtime-CGt4kNYr.d.ts +6 -0
- package/lib/jsx-renderer-CfifM4hT.js +99 -0
- package/lib/jsx-renderer.js +1 -98
- package/lib/jsx-runtime-COCRWBJ9.js +2 -0
- package/lib/jsx.js +5 -46
- package/lib/{jwk-LkzeoaU8.js → jwk-CDPpYQpD.js} +3 -3
- package/lib/jwk.js +1 -1
- package/lib/{jwt-BGJBw5AF.js → jwt-BXoIA2fQ.js} +2 -2
- package/lib/{jwt-CskdhEW9.js → jwt-lyS4Q3mT.js} +3 -3
- package/lib/jwt.js +2 -2
- package/lib/kv/db.d.ts +1 -10
- package/lib/kv/db.js +1 -56
- package/lib/kv/json.d.ts +1 -9
- package/lib/kv/json.js +1 -223
- package/lib/{language-D9a4zqvn.js → language-DeGRtLJt.js} +2 -2
- package/lib/language.js +1 -1
- package/lib/{linear-router-C3FPib6h.js → linear-router-CmZn_JLV.js} +2 -2
- package/lib/logger-Ckxu8diz.js +54 -0
- package/lib/logger.js +1 -53
- package/lib/loopback-only-BbasoF7R.js +90 -0
- package/lib/loopback-only.js +1 -89
- package/lib/method-not-allowed-TO2_hnfl.js +82 -0
- package/lib/method-not-allowed.js +1 -81
- package/lib/method-override-DnZKfJbV.js +103 -0
- package/lib/method-override.js +1 -102
- package/lib/middleware-BfG_fp8P.js +12 -0
- package/lib/mime-BnScXkQn.js +77 -0
- package/lib/mount-QkK_3NtJ.js +67 -0
- package/lib/mount.js +1 -66
- package/lib/node-server/conninfo.d.ts +1 -10
- package/lib/node-server/conninfo.js +1 -18
- package/lib/node-server/register.js +25 -2
- package/lib/node-server/serve-static.d.ts +1 -17
- package/lib/node-server/serve-static.js +1 -1
- package/lib/node-server.d.ts +2 -2
- package/lib/node-server.js +4 -4
- package/lib/open-BqK4D2Wn.d.ts +11 -0
- package/lib/open-But9E2rL.js +57 -0
- package/lib/open-CULVJgOc.d.ts +12 -0
- package/lib/open-Dp4sxspc.js +224 -0
- package/lib/open-T7kgbO2O.d.ts +27 -0
- package/lib/{pattern-router-HZxjDGEQ.js → pattern-router-CJBecJBd.js} +1 -1
- package/lib/powered-by-CXQNjNIX.js +24 -0
- package/lib/powered-by.js +1 -23
- package/lib/pretty-json-CeC1yvYt.js +39 -0
- package/lib/pretty-json.js +1 -38
- package/lib/{protocol-C37gPePD.d.ts → protocol-CR31M7K_.d.ts} +2 -0
- package/lib/protocol-Dt0AZBOz.js +213 -0
- package/lib/proxy-C2w_mH7k.js +121 -0
- package/lib/proxy.js +1 -120
- package/lib/quick.js +4 -4
- package/lib/{reg-exp-router-DC1R3qoY.js → reg-exp-router-C_WV84eV.js} +2 -2
- package/lib/request-DvMgGtlW.js +323 -0
- package/lib/request.js +1 -322
- package/lib/route-D8m-a2I1.js +126 -0
- package/lib/route.js +1 -125
- package/lib/router/linear-router.js +1 -1
- package/lib/router/pattern-router.js +1 -1
- package/lib/router/reg-exp-router.js +1 -1
- package/lib/router/smart-router.js +1 -1
- package/lib/router/trie-router.js +1 -1
- package/lib/router-Be_o6nFu.js +35 -0
- package/lib/router.js +1 -34
- package/lib/schema-validator-EK3cUUCt.js +22 -0
- package/lib/schema-validator.js +1 -21
- package/lib/{secure-headers-mP3j6Hm6.js → secure-headers-C5ZOcXqk.js} +1 -1
- package/lib/secure-headers.js +1 -1
- package/lib/serve-static-B7sqnftW.d.ts +18 -0
- package/lib/{serve-static-3uo_9rjF.js → serve-static-C1Nkj_xB.js} +2 -2
- package/lib/{serve-static-Cp5adzGo.js → serve-static-EiJf1zkO.js} +4 -4
- package/lib/serve-static.js +1 -1
- package/lib/{smart-router-C5CZ5XSM.js → smart-router-BjxkDQCE.js} +1 -1
- package/lib/{snapshot-text-BLz8nlSc.js → snapshot-text-CtQm3n8n.js} +23 -14
- package/lib/{src-dy3Fk9tA.js → src-BTBm4OPD.js} +6 -6
- package/lib/src-LX0E4ec4.js +117 -0
- package/lib/{ssg-BwjcA-Ge.js → ssg-BEl7MHqg.js} +5 -5
- package/lib/ssg.js +1 -1
- package/lib/stream-CzM_SHkq.js +88 -0
- package/lib/{streaming-DHST3Scg.js → streaming-BlDaph8U.js} +3 -3
- package/lib/streaming.js +1 -1
- package/lib/{test-websocket-D8WWqE5G.js → test-websocket-BLeEvybj.js} +2 -2
- package/lib/testing-BQx5T_UX.js +17 -0
- package/lib/testing.js +1 -16
- package/lib/timeout-FeqZ9A-0.js +42 -0
- package/lib/timeout.js +1 -41
- package/lib/tiny.js +2 -2
- package/lib/trailing-slash-DwTx-1sk.js +85 -0
- package/lib/trailing-slash.js +1 -84
- package/lib/{trie-router-CfFbapzL.js → trie-router-JydLKUa2.js} +2 -2
- package/lib/url-BPh4d6j-.js +197 -0
- package/lib/utils/accept.js +1 -192
- package/lib/utils/basic-auth.js +1 -19
- package/lib/utils/body.js +1 -93
- package/lib/utils/buffer.js +1 -50
- package/lib/utils/color.js +1 -36
- package/lib/utils/compress.d.ts +1 -10
- package/lib/utils/compress.js +1 -10
- package/lib/utils/concurrent.js +1 -29
- package/lib/utils/constants.js +1 -6
- package/lib/utils/cookie.js +1 -124
- package/lib/utils/crypto.js +1 -33
- package/lib/utils/encode.js +1 -32
- package/lib/utils/handler.js +1 -11
- package/lib/utils/html.js +1 -102
- package/lib/utils/ipaddr.js +1 -237
- package/lib/utils/jwt.js +1 -1
- package/lib/utils/mime.js +1 -76
- package/lib/utils/stream.js +1 -87
- package/lib/utils/url.js +1 -196
- package/lib/{validator-D84mq-dO.js → validator-Btiyt5VJ.js} +3 -3
- package/lib/validator.js +1 -1
- package/lib/websocket-DsyBIKVA.js +56 -0
- package/lib/ws.js +1 -55
- package/package.json +1 -1
- package/plugins/acryl-door/src/cli/acryl.ts +36 -5
- package/plugins/acryl-door/src/host/channel.ts +14 -6
- package/plugins/acryl-door/src/host/chat-tools.ts +2 -0
- package/plugins/acryl-door/src/host/door.ts +97 -12
- package/plugins/acryl-door/src/host/page-routes.ts +3 -1
- package/plugins/acryl-door/src/host/shell.ts +147 -0
- package/plugins/acryl-door/src/host/shim.ts +39 -3
- package/plugins/acryl-door/src/host/verbs.ts +39 -2
- package/plugins/acryl-door/src/index.ts +22 -3
- package/plugins/acryl-door/src/page/channel.ts +3 -1
- package/plugins/acryl-door/src/page/index.ts +2 -1
- package/plugins/acryl-door/src/page/protocol.ts +2 -0
- package/plugins/acryl-door/src/shell/protocol.ts +130 -0
- package/plugins/acryl-node-server/src/register.ts +29 -2
- package/plugins/agent/model.ts +6 -1
- package/plugins/agent/tools.ts +12 -2
- package/plugins/agent-panel/client/describe.ts +44 -0
- package/plugins/agent-panel/client/main.ts +4 -1
- package/plugins/agent-panel/headless.ts +29 -8
- package/plugins/agent-panel/index.ts +22 -10
- package/plugins/agent-panel/launch.ts +67 -0
- package/plugins/desktop/attach.ts +72 -0
- package/plugins/desktop/door-shell.ts +379 -0
- package/plugins/desktop/main.ts +82 -15
- package/plugins/extensions/index.ts +3 -4
- package/plugins/extensions/stage.ts +33 -5
- package/plugins/openai/index.ts +1 -1
- package/templates/agent/AGENTS.md +4 -0
- package/templates/agent/blend.yaml +4 -1
- package/templates/agent/src/app.ts +2 -0
- package/templates/agent/src/routes.ts +1 -1
- package/templates/agent/template.json +1 -0
- package/templates/agent/test/builder.test.ts +26 -21
- package/lib/helpers-CvTauQT5.js +0 -5
- package/lib/middleware-CPQ8himN.js +0 -12
- package/plugins/acryl-router/src/connection.d.ts +0 -25
- package/plugins/acryl-router/src/core/app-base.d.ts +0 -215
- package/plugins/acryl-router/src/core/app.d.ts +0 -19
- package/plugins/acryl-router/src/core/client/client.d.ts +0 -4
- package/plugins/acryl-router/src/core/client/fetch-result-please.d.ts +0 -35
- package/plugins/acryl-router/src/core/client/index.d.ts +0 -7
- package/plugins/acryl-router/src/core/client/types.d.ts +0 -229
- package/plugins/acryl-router/src/core/client/utils.d.ts +0 -18
- package/plugins/acryl-router/src/core/compose.d.ts +0 -14
- package/plugins/acryl-router/src/core/context.d.ts +0 -443
- package/plugins/acryl-router/src/core/helper/accepts/accepts.d.ts +0 -30
- package/plugins/acryl-router/src/core/helper/accepts/index.d.ts +0 -5
- package/plugins/acryl-router/src/core/helper/conninfo/index.d.ts +0 -5
- package/plugins/acryl-router/src/core/helper/conninfo/types.d.ts +0 -36
- package/plugins/acryl-router/src/core/helper/cookie/index.d.ts +0 -25
- package/plugins/acryl-router/src/core/helper/css/common.d.ts +0 -59
- package/plugins/acryl-router/src/core/helper/css/index.d.ts +0 -80
- package/plugins/acryl-router/src/core/helper/dev/index.d.ts +0 -20
- package/plugins/acryl-router/src/core/helper/factory/index.d.ts +0 -82
- package/plugins/acryl-router/src/core/helper/html/index.d.ts +0 -8
- package/plugins/acryl-router/src/core/helper/proxy/index.d.ts +0 -73
- package/plugins/acryl-router/src/core/helper/route/index.d.ts +0 -75
- package/plugins/acryl-router/src/core/helper/ssg/index.d.ts +0 -7
- package/plugins/acryl-router/src/core/helper/ssg/middleware.d.ts +0 -44
- package/plugins/acryl-router/src/core/helper/ssg/plugins.d.ts +0 -27
- package/plugins/acryl-router/src/core/helper/ssg/ssg.d.ts +0 -91
- package/plugins/acryl-router/src/core/helper/ssg/utils.d.ts +0 -16
- package/plugins/acryl-router/src/core/helper/streaming/index.d.ts +0 -8
- package/plugins/acryl-router/src/core/helper/streaming/sse.d.ts +0 -13
- package/plugins/acryl-router/src/core/helper/streaming/stream.d.ts +0 -3
- package/plugins/acryl-router/src/core/helper/streaming/text.d.ts +0 -3
- package/plugins/acryl-router/src/core/helper/streaming/utils.d.ts +0 -1
- package/plugins/acryl-router/src/core/helper/testing/index.d.ts +0 -13
- package/plugins/acryl-router/src/core/helper/websocket/index.d.ts +0 -70
- package/plugins/acryl-router/src/core/http-exception.d.ts +0 -58
- package/plugins/acryl-router/src/core/index.d.ts +0 -37
- package/plugins/acryl-router/src/core/jsx/base.d.ts +0 -61
- package/plugins/acryl-router/src/core/jsx/children.d.ts +0 -9
- package/plugins/acryl-router/src/core/jsx/components.d.ts +0 -15
- package/plugins/acryl-router/src/core/jsx/constants.d.ts +0 -6
- package/plugins/acryl-router/src/core/jsx/context.d.ts +0 -51
- package/plugins/acryl-router/src/core/jsx/dom/components.d.ts +0 -10
- package/plugins/acryl-router/src/core/jsx/dom/context.d.ts +0 -3
- package/plugins/acryl-router/src/core/jsx/dom/css.d.ts +0 -83
- package/plugins/acryl-router/src/core/jsx/dom/hooks/index.d.ts +0 -39
- package/plugins/acryl-router/src/core/jsx/dom/intrinsic-element/components.d.ts +0 -16
- package/plugins/acryl-router/src/core/jsx/dom/jsx-dev-runtime.d.ts +0 -8
- package/plugins/acryl-router/src/core/jsx/dom/jsx-runtime.d.ts +0 -7
- package/plugins/acryl-router/src/core/jsx/dom/render.d.ts +0 -73
- package/plugins/acryl-router/src/core/jsx/dom/utils.d.ts +0 -1
- package/plugins/acryl-router/src/core/jsx/hooks/index.d.ts +0 -47
- package/plugins/acryl-router/src/core/jsx/index.d.ts +0 -76
- package/plugins/acryl-router/src/core/jsx/intrinsic-element/common.d.ts +0 -6
- package/plugins/acryl-router/src/core/jsx/intrinsic-element/components.d.ts +0 -13
- package/plugins/acryl-router/src/core/jsx/intrinsic-elements.d.ts +0 -735
- package/plugins/acryl-router/src/core/jsx/streaming.d.ts +0 -36
- package/plugins/acryl-router/src/core/jsx/types.d.ts +0 -36
- package/plugins/acryl-router/src/core/jsx/utils.d.ts +0 -4
- package/plugins/acryl-router/src/core/request/constants.d.ts +0 -1
- package/plugins/acryl-router/src/core/request.d.ts +0 -306
- package/plugins/acryl-router/src/core/router/reg-exp-router/index.d.ts +0 -6
- package/plugins/acryl-router/src/core/router/reg-exp-router/matcher.d.ts +0 -7
- package/plugins/acryl-router/src/core/router/reg-exp-router/node.d.ts +0 -13
- package/plugins/acryl-router/src/core/router/reg-exp-router/prepared-router.d.ts +0 -17
- package/plugins/acryl-router/src/core/router/reg-exp-router/router.d.ts +0 -11
- package/plugins/acryl-router/src/core/router/reg-exp-router/trie.d.ts +0 -8
- package/plugins/acryl-router/src/core/router/smart-router/index.d.ts +0 -5
- package/plugins/acryl-router/src/core/router/smart-router/router.d.ts +0 -11
- package/plugins/acryl-router/src/core/router/trie-router/index.d.ts +0 -5
- package/plugins/acryl-router/src/core/router/trie-router/node.d.ts +0 -6
- package/plugins/acryl-router/src/core/router/trie-router/router.d.ts +0 -7
- package/plugins/acryl-router/src/core/router/utils.d.ts +0 -1
- package/plugins/acryl-router/src/core/router.d.ts +0 -97
- package/plugins/acryl-router/src/core/types.d.ts +0 -573
- package/plugins/acryl-router/src/core/utils/accept.d.ts +0 -6
- package/plugins/acryl-router/src/core/utils/body.d.ts +0 -79
- package/plugins/acryl-router/src/core/utils/buffer.d.ts +0 -17
- package/plugins/acryl-router/src/core/utils/color.d.ts +0 -21
- package/plugins/acryl-router/src/core/utils/concurrent.d.ts +0 -11
- package/plugins/acryl-router/src/core/utils/constants.d.ts +0 -4
- package/plugins/acryl-router/src/core/utils/cookie.d.ts +0 -41
- package/plugins/acryl-router/src/core/utils/crypto.d.ts +0 -15
- package/plugins/acryl-router/src/core/utils/handler.d.ts +0 -6
- package/plugins/acryl-router/src/core/utils/headers.d.ts +0 -8
- package/plugins/acryl-router/src/core/utils/html.d.ts +0 -44
- package/plugins/acryl-router/src/core/utils/http-status.d.ts +0 -32
- package/plugins/acryl-router/src/core/utils/mime.d.ts +0 -70
- package/plugins/acryl-router/src/core/utils/stream.d.ts +0 -31
- package/plugins/acryl-router/src/core/utils/types.d.ts +0 -128
- package/plugins/acryl-router/src/core/utils/url.d.ts +0 -44
- package/plugins/acryl-router/src/core/validator/index.d.ts +0 -7
- package/plugins/acryl-router/src/core/validator/utils.d.ts +0 -29
- package/plugins/acryl-router/src/core/validator/validator.d.ts +0 -16
- package/plugins/acryl-router/src/helpers/index.d.ts +0 -17
- package/plugins/acryl-router/src/helpers/schema-validator.d.ts +0 -54
package/lib/schema-validator.js
CHANGED
|
@@ -1,22 +1,2 @@
|
|
|
1
|
-
import { t as
|
|
2
|
-
//#region ../../plugins/acryl-router/src/helpers/schema-validator.ts
|
|
3
|
-
const pathOf = (path) => (path ?? []).map((part) => String(typeof part === "object" ? part.key : part)).join(".");
|
|
4
|
-
/**
|
|
5
|
-
* The core `validator` driven by a Standard Schema. A failure answers 400 with `{ error, issues }`; success makes the parsed value the
|
|
6
|
-
* handler's `c.req.valid(target)`, typed by the schema's output.
|
|
7
|
-
*/
|
|
8
|
-
function schemaValidator(target, schema) {
|
|
9
|
-
return validator(target, async (value, c) => {
|
|
10
|
-
const result = await schema["~standard"].validate(value);
|
|
11
|
-
if (result.issues !== void 0) return c.json({
|
|
12
|
-
error: `invalid ${target}`,
|
|
13
|
-
issues: result.issues.map((issue) => ({
|
|
14
|
-
message: issue.message,
|
|
15
|
-
path: pathOf(issue.path)
|
|
16
|
-
}))
|
|
17
|
-
}, 400);
|
|
18
|
-
return result.value;
|
|
19
|
-
});
|
|
20
|
-
}
|
|
21
|
-
//#endregion
|
|
1
|
+
import { t as schemaValidator } from "./schema-validator-EK3cUUCt.js";
|
|
22
2
|
export { schemaValidator };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { encodeBase64 } from "./
|
|
1
|
+
import { r as encodeBase64 } from "./encode-BhbNLrjp.js";
|
|
2
2
|
//#region ../../plugins/acryl-router/src/core/middleware/secure-headers/secure-headers.ts
|
|
3
3
|
const HEADERS_MAP = {
|
|
4
4
|
crossOriginEmbedderPolicy: ["Cross-Origin-Embedder-Policy", "require-corp"],
|
package/lib/secure-headers.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as secureHeaders, t as NONCE } from "./secure-headers-
|
|
1
|
+
import { n as secureHeaders, t as NONCE } from "./secure-headers-C5ZOcXqk.js";
|
|
2
2
|
export { NONCE, secureHeaders };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { L as MiddlewareHandler, t as Context, v as Env } from "./context-DS3fYyG-.js";
|
|
2
|
+
//#region ../../plugins/acryl-node-server/src/adapter/serve-static.d.ts
|
|
3
|
+
type ServeStaticOptions<E extends Env = Env> = {
|
|
4
|
+
/**
|
|
5
|
+
* Root path. Relative path is based on current working directory from which the app was started.
|
|
6
|
+
*/
|
|
7
|
+
root?: string;
|
|
8
|
+
path?: string;
|
|
9
|
+
index?: string;
|
|
10
|
+
precompressed?: boolean; /** Allow percent signs in the routed request path. Defaults to false. */
|
|
11
|
+
allowPercentInPath?: boolean;
|
|
12
|
+
rewriteRequestPath?: (path: string, c: Context<E>) => string;
|
|
13
|
+
onFound?: (path: string, c: Context<E>) => void | Promise<void>;
|
|
14
|
+
onNotFound?: (path: string, c: Context<E>) => void | Promise<void>;
|
|
15
|
+
};
|
|
16
|
+
declare const serveStatic: <E extends Env = any>(options?: ServeStaticOptions<E>) => MiddlewareHandler<E>;
|
|
17
|
+
//#endregion
|
|
18
|
+
export { serveStatic as n, ServeStaticOptions as t };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { getMimeType } from "./
|
|
2
|
-
import "./helpers-
|
|
1
|
+
import { r as getMimeType } from "./mime-BnScXkQn.js";
|
|
2
|
+
import "./helpers-BEjcdbgw.js";
|
|
3
3
|
import { join } from "node:path";
|
|
4
4
|
import { Readable } from "node:stream";
|
|
5
5
|
import { createReadStream, existsSync, statSync } from "node:fs";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { tryDecodeURI } from "./
|
|
2
|
-
import { parseAccept } from "./
|
|
3
|
-
import { COMPRESSIBLE_CONTENT_TYPE_REGEX } from "./
|
|
4
|
-
import { getMimeType } from "./
|
|
1
|
+
import { p as tryDecodeURI } from "./url-BPh4d6j-.js";
|
|
2
|
+
import { t as parseAccept } from "./accept-CNNHu4Cf.js";
|
|
3
|
+
import { t as COMPRESSIBLE_CONTENT_TYPE_REGEX } from "./compress-DCyrrQ5D.js";
|
|
4
|
+
import { r as getMimeType } from "./mime-BnScXkQn.js";
|
|
5
5
|
//#region ../../plugins/acryl-router/src/core/middleware/serve-static/path.ts
|
|
6
6
|
/**
|
|
7
7
|
* `defaultJoin` does not support Windows paths and always uses `/` separators.
|
package/lib/serve-static.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as serveStatic } from "./serve-static-
|
|
1
|
+
import { t as serveStatic } from "./serve-static-EiJf1zkO.js";
|
|
2
2
|
export { serveStatic };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { a as UnsupportedPathError, t as MESSAGE_MATCHER_IS_ALREADY_BUILT } from "./router-Be_o6nFu.js";
|
|
2
2
|
//#region ../../plugins/acryl-router/src/core/router/smart-router/router.ts
|
|
3
3
|
var SmartRouter = class {
|
|
4
4
|
name = "SmartRouter";
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { t as Acryl } from "./app-
|
|
2
|
-
import { bodyLimit } from "./body-limit.js";
|
|
3
|
-
import { methodNotAllowed } from "./method-not-allowed.js";
|
|
4
|
-
import { r as streamSSE } from "./streaming-
|
|
5
|
-
import {
|
|
6
|
-
import "./helpers-
|
|
7
|
-
import { UiControlError, WINDOW_ID
|
|
8
|
-
import "./src-
|
|
9
|
-
import "./middleware-
|
|
1
|
+
import { t as Acryl } from "./app-CQcGWjrk.js";
|
|
2
|
+
import { t as bodyLimit } from "./body-limit-WmIjWRLt.js";
|
|
3
|
+
import { t as methodNotAllowed } from "./method-not-allowed-TO2_hnfl.js";
|
|
4
|
+
import { r as streamSSE } from "./streaming-BlDaph8U.js";
|
|
5
|
+
import { i as loopbackOnly, r as loopbackAuthority } from "./loopback-only-BbasoF7R.js";
|
|
6
|
+
import "./helpers-BEjcdbgw.js";
|
|
7
|
+
import { d as parseChannelToHost, l as UiControlError, u as WINDOW_ID } from "./protocol-Dt0AZBOz.js";
|
|
8
|
+
import "./src-BTBm4OPD.js";
|
|
9
|
+
import "./middleware-BfG_fp8P.js";
|
|
10
10
|
import { dirname, join } from "node:path";
|
|
11
11
|
import { closeSync, mkdirSync, openSync, readFileSync, renameSync, statSync, writeSync } from "node:fs";
|
|
12
12
|
import { timingSafeEqual } from "node:crypto";
|
|
@@ -32,12 +32,13 @@ var UiChannel = class {
|
|
|
32
32
|
* Register a page's stream. A stream already open for the same window is closed first, and its calls settle as `disconnected`.
|
|
33
33
|
* @returns the function to call when this stream ends.
|
|
34
34
|
*/
|
|
35
|
-
attach(windowId, focused, stream) {
|
|
35
|
+
attach(windowId, focused, stream, shellWindow) {
|
|
36
36
|
const previous = this.connections.get(windowId);
|
|
37
37
|
if (previous !== void 0) this.drop(previous, true);
|
|
38
38
|
const connection = {
|
|
39
39
|
stream,
|
|
40
40
|
windowId,
|
|
41
|
+
shellWindow,
|
|
41
42
|
focused,
|
|
42
43
|
lastActive: ++this.clock
|
|
43
44
|
};
|
|
@@ -67,9 +68,10 @@ var UiChannel = class {
|
|
|
67
68
|
}
|
|
68
69
|
/** The windows currently connected, most recently active first (for diagnostics and tests). */
|
|
69
70
|
windows() {
|
|
70
|
-
return this.byRecency().map(({ windowId, focused }) => ({
|
|
71
|
+
return this.byRecency().map(({ windowId, focused, shellWindow }) => ({
|
|
71
72
|
windowId,
|
|
72
|
-
focused
|
|
73
|
+
focused,
|
|
74
|
+
...shellWindow === void 0 ? {} : { shellWindow }
|
|
73
75
|
}));
|
|
74
76
|
}
|
|
75
77
|
/**
|
|
@@ -78,7 +80,12 @@ var UiChannel = class {
|
|
|
78
80
|
*/
|
|
79
81
|
call(request, options = {}) {
|
|
80
82
|
if (this.closed) return Promise.reject(new UiControlError("unloaded", "the door was unloaded"));
|
|
81
|
-
const
|
|
83
|
+
const ordered = this.byRecency();
|
|
84
|
+
const target = options.window === void 0 ? ordered[0] : ordered.find((connection) => connection.shellWindow === options.window);
|
|
85
|
+
if (target === void 0 && options.window !== void 0) {
|
|
86
|
+
const known = ordered.flatMap((connection) => connection.shellWindow === void 0 ? [] : [String(connection.shellWindow)]);
|
|
87
|
+
return Promise.reject(new UiControlError("no-window", `no page of window ${String(options.window)} is connected to the door${known.length === 0 ? " (no desktop window has a page connected)" : `; windows with a page: ${known.join(", ")}`}; window list prints the windows`));
|
|
88
|
+
}
|
|
82
89
|
if (target === void 0) return Promise.reject(new UiControlError("no-window", "no page of the app is open to control"));
|
|
83
90
|
const signal = options.signal;
|
|
84
91
|
if (signal?.aborted === true) return Promise.reject(new UiControlError("aborted", "the call was cancelled"));
|
|
@@ -324,6 +331,8 @@ function pageChannelRoutes(channel, options) {
|
|
|
324
331
|
const windowId = c.req.query("window");
|
|
325
332
|
if (windowId === void 0 || !WINDOW_ID.test(windowId)) return c.json(error("a window id is required"), 400);
|
|
326
333
|
const focused = c.req.query("focused") === "1";
|
|
334
|
+
const shellQuery = Number(c.req.query("shell"));
|
|
335
|
+
const shellWindow = Number.isSafeInteger(shellQuery) && shellQuery > 0 ? shellQuery : void 0;
|
|
327
336
|
const signal = c.req.raw.signal;
|
|
328
337
|
return streamSSE(c, async (stream) => {
|
|
329
338
|
let end = () => {};
|
|
@@ -343,7 +352,7 @@ function pageChannelRoutes(channel, options) {
|
|
|
343
352
|
write("call", data);
|
|
344
353
|
},
|
|
345
354
|
close: end
|
|
346
|
-
});
|
|
355
|
+
}, shellWindow);
|
|
347
356
|
const beat = setInterval(() => {
|
|
348
357
|
write("ping", "");
|
|
349
358
|
}, heartbeatMs);
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { HTTPException } from "./http-exception.js";
|
|
2
|
-
import { mergePath } from "./
|
|
3
|
-
import { COMPOSED_HANDLER } from "./
|
|
4
|
-
import { t as TrieRouter } from "./trie-router-
|
|
5
|
-
import { t as Acryl } from "./app-
|
|
6
|
-
import "./core-
|
|
1
|
+
import { t as HTTPException } from "./http-exception-MjWkT89V.js";
|
|
2
|
+
import { l as mergePath } from "./url-BPh4d6j-.js";
|
|
3
|
+
import { t as COMPOSED_HANDLER } from "./constants-CBSEudrb.js";
|
|
4
|
+
import { t as TrieRouter } from "./trie-router-JydLKUa2.js";
|
|
5
|
+
import { t as Acryl } from "./app-CQcGWjrk.js";
|
|
6
|
+
import "./core-BOu1jYua.js";
|
|
7
7
|
import "./connection-C7xgP1hP.js";
|
|
8
8
|
import { Service } from "@deepseek-ai/cordis";
|
|
9
9
|
import z from "@deepseek-ai/schemastery";
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import { c as Request, i as createAdaptorServer, r as UpgradeHub } from "./test-websocket-BLeEvybj.js";
|
|
2
|
+
import "./serve-static-C1Nkj_xB.js";
|
|
3
|
+
import { Service } from "@deepseek-ai/cordis";
|
|
4
|
+
import z from "@deepseek-ai/schemastery";
|
|
5
|
+
//#region ../../plugins/acryl-node-server/src/index.ts
|
|
6
|
+
/** Stable Cordis plugin name, equal to the package name and the Loader row id. */
|
|
7
|
+
const name = "acryl-node-server";
|
|
8
|
+
const inject = ["router"];
|
|
9
|
+
/** Every field has a default, so a caller passes only what it changes: `ctx.plugin(plugin, { ... })` takes the partial shape. */
|
|
10
|
+
const Config = z.object({
|
|
11
|
+
hostname: z.string().default("127.0.0.1").description("Address to bind. Loopback by default; binding elsewhere exposes the app to the network."),
|
|
12
|
+
port: z.number().min(0).max(65535).default(0).description("Port to listen on; 0 lets the system choose. A taken port is followed by the next free one."),
|
|
13
|
+
scan: z.number().min(0).default(20).description("How many further ports to try when the configured one is taken."),
|
|
14
|
+
websocket: z.object({
|
|
15
|
+
maxPayload: z.number().min(1).default(1024 * 1024).description("The largest WebSocket frame accepted, in bytes; a bigger one closes the socket with 1009."),
|
|
16
|
+
heartbeat: z.number().min(0).default(3e4).description("Milliseconds between pings; a peer that did not answer the last one is terminated. 0 turns it off."),
|
|
17
|
+
grace: z.number().min(0).default(2e3).description("Milliseconds a closing socket gets before it is terminated when its plugin unloads.")
|
|
18
|
+
}).default({})
|
|
19
|
+
});
|
|
20
|
+
var NodeServer = class extends Service {
|
|
21
|
+
hostname;
|
|
22
|
+
config;
|
|
23
|
+
server;
|
|
24
|
+
hub;
|
|
25
|
+
bound = 0;
|
|
26
|
+
constructor(ctx, config) {
|
|
27
|
+
super(ctx, "nodeServer");
|
|
28
|
+
this.config = config;
|
|
29
|
+
this.hostname = config.hostname;
|
|
30
|
+
const router = ctx.router;
|
|
31
|
+
this.server = createAdaptorServer({
|
|
32
|
+
fetch: (request, { incoming }) => router.fetch(new Request(request), {
|
|
33
|
+
remoteAddress: incoming.socket.remoteAddress,
|
|
34
|
+
localPort: incoming.socket.localPort
|
|
35
|
+
}),
|
|
36
|
+
hostname: config.hostname,
|
|
37
|
+
overrideGlobalObjects: false
|
|
38
|
+
});
|
|
39
|
+
ctx.effect(() => async () => {
|
|
40
|
+
await this.hub?.close();
|
|
41
|
+
this.server.closeAllConnections();
|
|
42
|
+
if (this.server.listening) await new Promise((resolve) => {
|
|
43
|
+
this.server.close(() => {
|
|
44
|
+
resolve();
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
}, "acryl-node-server: close listener and open connections");
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* `upgradeWebSocket` for the plugin that asks (call it once, in `apply`): `app.get('/ws', upgrade((c) => ({ onMessage(event, ws) { ... } })))`. Checks go in ordinary middleware on the
|
|
51
|
+
* route, and a handler that returns a `Response` refuses the upgrade with that status before any handshake. Every socket it accepts belongs to the calling plugin: when the plugin
|
|
52
|
+
* unloads they are closed with 1001 within `websocket.grace` and the handler sees `close` once. Pass `{ textOnly: true }` to drop binary frames. Needs the `ws` package.
|
|
53
|
+
*/
|
|
54
|
+
upgrades() {
|
|
55
|
+
if (!this.hub) {
|
|
56
|
+
this.hub = new UpgradeHub(this.config.websocket);
|
|
57
|
+
this.hub.attach(this.server, this.ctx.router);
|
|
58
|
+
}
|
|
59
|
+
return this.hub.upgradeWebSocketFor(this.ctx);
|
|
60
|
+
}
|
|
61
|
+
/** How many WebSocket connections are open now. */
|
|
62
|
+
get sockets() {
|
|
63
|
+
return this.hub?.size ?? 0;
|
|
64
|
+
}
|
|
65
|
+
/** The port in use, 0 before the server listens. */
|
|
66
|
+
get port() {
|
|
67
|
+
return this.bound;
|
|
68
|
+
}
|
|
69
|
+
/** The address clients use. */
|
|
70
|
+
get url() {
|
|
71
|
+
return `http://${this.hostname.includes(":") ? `[${this.hostname}]` : this.hostname}:${String(this.bound)}`;
|
|
72
|
+
}
|
|
73
|
+
/** Bind, scanning past taken ports. */
|
|
74
|
+
async listen() {
|
|
75
|
+
const { port, scan, hostname } = this.config;
|
|
76
|
+
const last = port === 0 ? 0 : Math.min(65535, port + scan);
|
|
77
|
+
for (let candidate = port; candidate <= last; candidate += 1) try {
|
|
78
|
+
await new Promise((resolve, reject) => {
|
|
79
|
+
const onError = (error) => {
|
|
80
|
+
reject(error);
|
|
81
|
+
};
|
|
82
|
+
this.server.once("error", onError);
|
|
83
|
+
this.server.listen(candidate, hostname, () => {
|
|
84
|
+
this.server.off("error", onError);
|
|
85
|
+
resolve();
|
|
86
|
+
});
|
|
87
|
+
});
|
|
88
|
+
this.bound = this.server.address().port;
|
|
89
|
+
return;
|
|
90
|
+
} catch (error) {
|
|
91
|
+
if (!isPortUnavailable(error)) throw error;
|
|
92
|
+
}
|
|
93
|
+
throw new Error(`acryl-node-server: no free port from ${String(port)} to ${String(last)} on ${hostname}`);
|
|
94
|
+
}
|
|
95
|
+
};
|
|
96
|
+
/**
|
|
97
|
+
* Whether a failed bind means "this port, try the next one". A port another socket holds answers `EADDRINUSE` everywhere. On Windows a port
|
|
98
|
+
* inside a range the system reserves (Hyper-V, WSL and Docker exclude ranges, `netsh interface ipv4 show excludedportrange`) answers
|
|
99
|
+
* `EACCES`, which is a property of that port too; elsewhere `EACCES` means the process may not bind low ports at all, so moving on would
|
|
100
|
+
* only hide the reason.
|
|
101
|
+
*/
|
|
102
|
+
function isPortUnavailable(error, platform = process.platform) {
|
|
103
|
+
const code = error?.code;
|
|
104
|
+
return code === "EADDRINUSE" || platform === "win32" && code === "EACCES";
|
|
105
|
+
}
|
|
106
|
+
/** Loads once the server listens, so a plugin that injects `nodeServer` can rely on `url`. A failure to bind fails the plugin. */
|
|
107
|
+
async function apply(ctx, config = {}) {
|
|
108
|
+
await new NodeServer(ctx, {
|
|
109
|
+
hostname: "127.0.0.1",
|
|
110
|
+
port: 0,
|
|
111
|
+
scan: 20,
|
|
112
|
+
websocket: {},
|
|
113
|
+
...config
|
|
114
|
+
}).listen();
|
|
115
|
+
}
|
|
116
|
+
//#endregion
|
|
117
|
+
export { isPortUnavailable as a, inject as i, NodeServer as n, name as o, apply as r, Config as t };
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import "./router.js";
|
|
2
|
-
import { html } from "./html.js";
|
|
3
|
-
import { getExtension } from "./
|
|
4
|
-
import {
|
|
1
|
+
import "./router-Be_o6nFu.js";
|
|
2
|
+
import { t as html } from "./html-CgNa89xw.js";
|
|
3
|
+
import { n as getExtension } from "./mime-BnScXkQn.js";
|
|
4
|
+
import { n as isMiddleware, t as findTargetHandler } from "./handler-C0wZ0KwO.js";
|
|
5
5
|
import { o as replaceUrlParam } from "./utils-Cx61GFMC.js";
|
|
6
|
-
import { createPool } from "./
|
|
6
|
+
import { t as createPool } from "./concurrent-DrF3d2c-.js";
|
|
7
7
|
//#region ../../plugins/acryl-router/src/core/helper/ssg/utils.ts
|
|
8
8
|
/**
|
|
9
9
|
* Get dirname
|
package/lib/ssg.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as defaultExtensionMap, c as toSSG, d as X_ACRYL_DISABLE_SSG_HEADER_KEY, f as disableSSG, h as ssgParams, i as combineBeforeRequestHooks, l as defaultPlugin, m as onlySSG, n as combineAfterGenerateHooks, o as fetchRoutesContent, p as isSSGContext, r as combineAfterResponseHooks, s as saveContentToFile, t as DEFAULT_OUTPUT_DIR, u as redirectPlugin } from "./ssg-
|
|
1
|
+
import { a as defaultExtensionMap, c as toSSG, d as X_ACRYL_DISABLE_SSG_HEADER_KEY, f as disableSSG, h as ssgParams, i as combineBeforeRequestHooks, l as defaultPlugin, m as onlySSG, n as combineAfterGenerateHooks, o as fetchRoutesContent, p as isSSGContext, r as combineAfterResponseHooks, s as saveContentToFile, t as DEFAULT_OUTPUT_DIR, u as redirectPlugin } from "./ssg-BEl7MHqg.js";
|
|
2
2
|
export { DEFAULT_OUTPUT_DIR, X_ACRYL_DISABLE_SSG_HEADER_KEY, combineAfterGenerateHooks, combineAfterResponseHooks, combineBeforeRequestHooks, defaultExtensionMap, defaultPlugin, disableSSG, fetchRoutesContent, isSSGContext, onlySSG, redirectPlugin, saveContentToFile, ssgParams, toSSG };
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
//#region ../../plugins/acryl-router/src/core/utils/stream.ts
|
|
2
|
+
/**
|
|
3
|
+
* @module
|
|
4
|
+
* Stream utility.
|
|
5
|
+
*/
|
|
6
|
+
var StreamingApi = class {
|
|
7
|
+
writer;
|
|
8
|
+
encoder;
|
|
9
|
+
writable;
|
|
10
|
+
abortSubscribers = [];
|
|
11
|
+
responseReadable;
|
|
12
|
+
/**
|
|
13
|
+
* Whether the stream has been aborted.
|
|
14
|
+
*/
|
|
15
|
+
aborted = false;
|
|
16
|
+
/**
|
|
17
|
+
* Whether the stream has been closed normally.
|
|
18
|
+
*/
|
|
19
|
+
closed = false;
|
|
20
|
+
constructor(writable, _readable) {
|
|
21
|
+
this.writable = writable;
|
|
22
|
+
this.writer = writable.getWriter();
|
|
23
|
+
this.encoder = new TextEncoder();
|
|
24
|
+
const reader = _readable.getReader();
|
|
25
|
+
this.abortSubscribers.push(async () => {
|
|
26
|
+
await reader.cancel();
|
|
27
|
+
});
|
|
28
|
+
this.responseReadable = new ReadableStream({
|
|
29
|
+
async pull(controller) {
|
|
30
|
+
const { done, value } = await reader.read();
|
|
31
|
+
done ? controller.close() : controller.enqueue(value);
|
|
32
|
+
},
|
|
33
|
+
cancel: () => {
|
|
34
|
+
if (!this.closed) this.abort();
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
async write(input) {
|
|
39
|
+
try {
|
|
40
|
+
if (typeof input === "string") input = this.encoder.encode(input);
|
|
41
|
+
await this.writer.write(input);
|
|
42
|
+
} catch {}
|
|
43
|
+
return this;
|
|
44
|
+
}
|
|
45
|
+
async writeln(input) {
|
|
46
|
+
await this.write(input + "\n");
|
|
47
|
+
return this;
|
|
48
|
+
}
|
|
49
|
+
sleep(ms) {
|
|
50
|
+
return new Promise((res) => setTimeout(res, ms));
|
|
51
|
+
}
|
|
52
|
+
async close() {
|
|
53
|
+
this.closed = true;
|
|
54
|
+
try {
|
|
55
|
+
await this.writer.close();
|
|
56
|
+
} catch {}
|
|
57
|
+
}
|
|
58
|
+
async pipe(body) {
|
|
59
|
+
this.writer.releaseLock();
|
|
60
|
+
try {
|
|
61
|
+
await body.pipeTo(this.writable, {
|
|
62
|
+
preventClose: true,
|
|
63
|
+
preventAbort: true
|
|
64
|
+
});
|
|
65
|
+
} finally {
|
|
66
|
+
this.writer = this.writable.getWriter();
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
onAbort(listener) {
|
|
70
|
+
this.abortSubscribers.push(listener);
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Abort the stream.
|
|
74
|
+
* You can call this method when stream is aborted by external event.
|
|
75
|
+
*/
|
|
76
|
+
abort() {
|
|
77
|
+
if (!this.aborted) {
|
|
78
|
+
this.aborted = true;
|
|
79
|
+
this.abortSubscribers.forEach((subscriber) => {
|
|
80
|
+
try {
|
|
81
|
+
Promise.resolve(subscriber()).catch(() => {});
|
|
82
|
+
} catch {}
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
//#endregion
|
|
88
|
+
export { StreamingApi as t };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { n as TEXT_PLAIN } from "./context-
|
|
3
|
-
import { StreamingApi } from "./
|
|
1
|
+
import { i as resolveCallback, t as HtmlEscapedCallbackPhase } from "./html-DGExBFNg.js";
|
|
2
|
+
import { n as TEXT_PLAIN } from "./context-CkOh7Ygv.js";
|
|
3
|
+
import { t as StreamingApi } from "./stream-CzM_SHkq.js";
|
|
4
4
|
//#region ../../plugins/acryl-router/src/core/helper/streaming/utils.ts
|
|
5
5
|
let isOldBunVersion = () => {
|
|
6
6
|
const version = typeof Bun !== "undefined" ? Bun.version : void 0;
|
package/lib/streaming.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { i as stream, n as SSEStreamingApi, r as streamSSE, t as streamText } from "./streaming-
|
|
1
|
+
import { i as stream, n as SSEStreamingApi, r as streamSSE, t as streamText } from "./streaming-BlDaph8U.js";
|
|
2
2
|
export { SSEStreamingApi, stream, streamSSE, streamText };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { defineWebSocketHelper } from "./
|
|
2
|
-
import "./helpers-
|
|
1
|
+
import { r as defineWebSocketHelper } from "./websocket-DsyBIKVA.js";
|
|
2
|
+
import "./helpers-BEjcdbgw.js";
|
|
3
3
|
import { createRequire } from "node:module";
|
|
4
4
|
import { STATUS_CODES, ServerResponse, createServer } from "node:http";
|
|
5
5
|
import { Http2ServerRequest, constants } from "node:http2";
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { t as hc } from "./client-BrMFnMEd.js";
|
|
2
|
+
//#region ../../plugins/acryl-router/src/core/helper/testing/index.ts
|
|
3
|
+
/**
|
|
4
|
+
* @module
|
|
5
|
+
* Testing Helper for Acryl.
|
|
6
|
+
*/
|
|
7
|
+
const testClient = (app, Env, executionCtx, options) => {
|
|
8
|
+
const customFetch = (input, init) => {
|
|
9
|
+
return app.request(input, init, Env, executionCtx);
|
|
10
|
+
};
|
|
11
|
+
return hc("http://localhost", {
|
|
12
|
+
...options,
|
|
13
|
+
fetch: customFetch
|
|
14
|
+
});
|
|
15
|
+
};
|
|
16
|
+
//#endregion
|
|
17
|
+
export { testClient as t };
|
package/lib/testing.js
CHANGED
|
@@ -1,17 +1,2 @@
|
|
|
1
|
-
import { t as
|
|
2
|
-
//#region ../../plugins/acryl-router/src/core/helper/testing/index.ts
|
|
3
|
-
/**
|
|
4
|
-
* @module
|
|
5
|
-
* Testing Helper for Acryl.
|
|
6
|
-
*/
|
|
7
|
-
const testClient = (app, Env, executionCtx, options) => {
|
|
8
|
-
const customFetch = (input, init) => {
|
|
9
|
-
return app.request(input, init, Env, executionCtx);
|
|
10
|
-
};
|
|
11
|
-
return hc("http://localhost", {
|
|
12
|
-
...options,
|
|
13
|
-
fetch: customFetch
|
|
14
|
-
});
|
|
15
|
-
};
|
|
16
|
-
//#endregion
|
|
1
|
+
import { t as testClient } from "./testing-BQx5T_UX.js";
|
|
17
2
|
export { testClient };
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { t as HTTPException } from "./http-exception-MjWkT89V.js";
|
|
2
|
+
//#region ../../plugins/acryl-router/src/core/middleware/timeout/index.ts
|
|
3
|
+
const defaultTimeoutException = new HTTPException(504, { message: "Gateway Timeout" });
|
|
4
|
+
/**
|
|
5
|
+
* Timeout Middleware for Acryl.
|
|
6
|
+
*
|
|
7
|
+
* @param {number} duration - The timeout duration in milliseconds.
|
|
8
|
+
* @param {HTTPExceptionFunction | HTTPException} [exception=defaultTimeoutException] - The exception to throw when the timeout occurs. Can be a function that returns an HTTPException or an HTTPException object.
|
|
9
|
+
* @returns {MiddlewareHandler} The middleware handler function.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```ts
|
|
13
|
+
* const app = new Acryl()
|
|
14
|
+
*
|
|
15
|
+
* app.use(
|
|
16
|
+
* '/long-request',
|
|
17
|
+
* timeout(5000) // Set timeout to 5 seconds
|
|
18
|
+
* )
|
|
19
|
+
*
|
|
20
|
+
* app.get('/long-request', async (c) => {
|
|
21
|
+
* await someLongRunningFunction()
|
|
22
|
+
* return c.text('Completed within time limit')
|
|
23
|
+
* })
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
const timeout = (duration, exception = defaultTimeoutException) => {
|
|
27
|
+
return async function timeout(context, next) {
|
|
28
|
+
let timer;
|
|
29
|
+
const timeoutPromise = new Promise((_, reject) => {
|
|
30
|
+
timer = setTimeout(() => {
|
|
31
|
+
reject(typeof exception === "function" ? exception(context) : exception);
|
|
32
|
+
}, duration);
|
|
33
|
+
});
|
|
34
|
+
try {
|
|
35
|
+
await Promise.race([next(), timeoutPromise]);
|
|
36
|
+
} finally {
|
|
37
|
+
if (timer !== void 0) clearTimeout(timer);
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
//#endregion
|
|
42
|
+
export { timeout as t };
|
package/lib/timeout.js
CHANGED
|
@@ -1,42 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
//#region ../../plugins/acryl-router/src/core/middleware/timeout/index.ts
|
|
3
|
-
const defaultTimeoutException = new HTTPException(504, { message: "Gateway Timeout" });
|
|
4
|
-
/**
|
|
5
|
-
* Timeout Middleware for Acryl.
|
|
6
|
-
*
|
|
7
|
-
* @param {number} duration - The timeout duration in milliseconds.
|
|
8
|
-
* @param {HTTPExceptionFunction | HTTPException} [exception=defaultTimeoutException] - The exception to throw when the timeout occurs. Can be a function that returns an HTTPException or an HTTPException object.
|
|
9
|
-
* @returns {MiddlewareHandler} The middleware handler function.
|
|
10
|
-
*
|
|
11
|
-
* @example
|
|
12
|
-
* ```ts
|
|
13
|
-
* const app = new Acryl()
|
|
14
|
-
*
|
|
15
|
-
* app.use(
|
|
16
|
-
* '/long-request',
|
|
17
|
-
* timeout(5000) // Set timeout to 5 seconds
|
|
18
|
-
* )
|
|
19
|
-
*
|
|
20
|
-
* app.get('/long-request', async (c) => {
|
|
21
|
-
* await someLongRunningFunction()
|
|
22
|
-
* return c.text('Completed within time limit')
|
|
23
|
-
* })
|
|
24
|
-
* ```
|
|
25
|
-
*/
|
|
26
|
-
const timeout = (duration, exception = defaultTimeoutException) => {
|
|
27
|
-
return async function timeout(context, next) {
|
|
28
|
-
let timer;
|
|
29
|
-
const timeoutPromise = new Promise((_, reject) => {
|
|
30
|
-
timer = setTimeout(() => {
|
|
31
|
-
reject(typeof exception === "function" ? exception(context) : exception);
|
|
32
|
-
}, duration);
|
|
33
|
-
});
|
|
34
|
-
try {
|
|
35
|
-
await Promise.race([next(), timeoutPromise]);
|
|
36
|
-
} finally {
|
|
37
|
-
if (timer !== void 0) clearTimeout(timer);
|
|
38
|
-
}
|
|
39
|
-
};
|
|
40
|
-
};
|
|
41
|
-
//#endregion
|
|
1
|
+
import { t as timeout } from "./timeout-FeqZ9A-0.js";
|
|
42
2
|
export { timeout };
|
package/lib/tiny.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { t as PatternRouter } from "./pattern-router-
|
|
1
|
+
import { t as Acryl$1 } from "./app-base-CpRMZL4v.js";
|
|
2
|
+
import { t as PatternRouter } from "./pattern-router-CJBecJBd.js";
|
|
3
3
|
//#region ../../plugins/acryl-router/src/core/preset/tiny.ts
|
|
4
4
|
/**
|
|
5
5
|
* @module
|