acrylblends 0.11.0 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (93) hide show
  1. package/README.md +131 -53
  2. package/dist/index.d.ts +29 -2
  3. package/dist/index.js +450 -69
  4. package/dist/index.js.map +1 -1
  5. package/docs/framework/README.md +5 -3
  6. package/docs/framework/agents/index.md +1 -1
  7. package/docs/framework/api/acryl.md +5 -17
  8. package/docs/framework/api/context.md +12 -61
  9. package/docs/framework/api/presets.md +1 -1
  10. package/docs/framework/api/request.md +3 -3
  11. package/docs/framework/api/summary.md +1 -1
  12. package/docs/framework/concepts/web-standard.md +6 -16
  13. package/docs/framework/cordis/acryl-in-a-cordis-app.md +13 -8
  14. package/docs/framework/cordis/migration-from-0-4.md +1 -1
  15. package/docs/framework/cordis/migration-to-1-0.md +45 -0
  16. package/docs/framework/cordis/node-server.md +2 -2
  17. package/docs/framework/getting-started/basic.md +15 -10
  18. package/docs/framework/getting-started/desktop.md +1 -1
  19. package/docs/framework/getting-started/other-runtimes.md +10 -14
  20. package/docs/framework/guides/create-acrylblends.md +4 -2
  21. package/docs/framework/guides/data.md +1 -1
  22. package/docs/framework/guides/faq.md +1 -1
  23. package/docs/framework/guides/jsx-dom.md +1 -1
  24. package/docs/framework/guides/production.md +43 -0
  25. package/docs/framework/guides/rpc.md +3 -11
  26. package/docs/framework/helpers/adapter.md +13 -43
  27. package/docs/framework/helpers/conninfo.md +1 -36
  28. package/docs/framework/helpers/streaming.md +1 -1
  29. package/docs/framework/helpers/websocket.md +4 -11
  30. package/docs/framework/middleware/builtin/basic-auth.md +1 -1
  31. package/docs/framework/middleware/builtin/cache.md +2 -22
  32. package/docs/framework/middleware/builtin/compress.md +1 -1
  33. package/docs/framework/middleware/builtin/context-storage.md +10 -14
  34. package/docs/framework/middleware/builtin/cors.md +1 -2
  35. package/docs/framework/middleware/builtin/ip-restriction.md +1 -1
  36. package/docs/framework/middleware/builtin/jsx-renderer.md +1 -1
  37. package/docs/framework/middleware/builtin/logger.md +1 -1
  38. package/docs/framework/middleware/builtin/loopback-only.md +1 -1
  39. package/docs/framework/middleware/builtin/mount.md +1 -1
  40. package/docs/framework/middleware/builtin/request-id.md +13 -20
  41. package/docs/framework/middleware/builtin/timing.md +1 -2
  42. package/lib/cordis/door.d.ts +5 -0
  43. package/lib/cordis/door.js +8 -4
  44. package/lib/cordis/inspect.js +1 -1
  45. package/lib/cordis/router-http.js +1 -1
  46. package/lib/cordis/router.d.ts +1 -2
  47. package/lib/cordis/router.js +2 -3
  48. package/lib/cordis/state.js +1 -1
  49. package/lib/door/host.js +1 -1
  50. package/lib/drivers.d.ts +66 -0
  51. package/lib/drivers.js +16 -0
  52. package/lib/index.d.ts +1 -2
  53. package/lib/index.js +1 -2
  54. package/lib/{snapshot-text-yaWlezbd.js → snapshot-text-DmE0YfeZ.js} +2 -2
  55. package/lib/{src-DNzw0Qsb.js → src-2Z4mJg0x.js} +0 -1
  56. package/package.json +5 -121
  57. package/plugins/acryl-door/src/index.ts +8 -0
  58. package/plugins/acryl-router/src/index.ts +0 -1
  59. package/plugins/agent-panel/drivers.ts +1 -16
  60. package/plugins/agent-panel/index.ts +1 -1
  61. package/plugins/agent-panel/registry.ts +16 -0
  62. package/plugins/driver-acp/README.md +53 -0
  63. package/plugins/driver-acp/chat.ts +258 -0
  64. package/plugins/driver-acp/connection.ts +239 -0
  65. package/plugins/driver-acp/index.ts +65 -0
  66. package/plugins/driver-acp/plugin.json +12 -0
  67. package/plugins/driver-acp/provenance.json +20 -0
  68. package/plugins/driver-pty/index.ts +1 -0
  69. package/shared/library-history.json +464 -0
  70. package/docs/framework/getting-started/aws-lambda.md +0 -115
  71. package/docs/framework/getting-started/cloudflare-pages.md +0 -53
  72. package/docs/framework/getting-started/cloudflare-workers.md +0 -67
  73. package/docs/framework/getting-started/lambda-edge.md +0 -41
  74. package/docs/framework/getting-started/netlify.md +0 -25
  75. package/docs/framework/getting-started/service-worker.md +0 -33
  76. package/docs/framework/getting-started/vercel.md +0 -28
  77. package/lib/aws-lambda.d.ts +0 -324
  78. package/lib/aws-lambda.js +0 -357
  79. package/lib/cloudflare-pages.d.ts +0 -58
  80. package/lib/cloudflare-pages.js +0 -78
  81. package/lib/cloudflare-workers.d.ts +0 -21
  82. package/lib/cloudflare-workers.js +0 -80
  83. package/lib/deprecated-BP4fPt38.js +0 -10
  84. package/lib/deprecated-CTy4N7ng.d.ts +0 -12
  85. package/lib/lambda-edge.d.ts +0 -92
  86. package/lib/lambda-edge.js +0 -105
  87. package/lib/netlify.d.ts +0 -29
  88. package/lib/netlify.js +0 -30
  89. package/lib/service-worker.d.ts +0 -48
  90. package/lib/service-worker.js +0 -38
  91. package/lib/vercel.d.ts +0 -10
  92. package/lib/vercel.js +0 -9
  93. package/plugins/acryl-router/src/deprecated.ts +0 -15
@@ -0,0 +1,464 @@
1
+ {
2
+ "acryl-db": {
3
+ "LICENSE": ["b84342464fb19baab24f"],
4
+ "src/cordis.ts": ["5521f8caba096ed0c924"],
5
+ "src/facade/database.ts": ["6946de67e2226b10569a"],
6
+ "src/facade/migrations.ts": ["5ea156638d9b083fc73c"],
7
+ "src/facade/schema.ts": ["16cc5ebd172d109d4650"],
8
+ "src/index.ts": ["ddec11313248a8a23f7b"],
9
+ "src/migration-files.ts": ["06122839b04c338a7b55"]
10
+ },
11
+ "acryl-db-sqlite": {
12
+ "LICENSE": ["ef3897302ab91dccedfc"],
13
+ "src/facade/node.ts": ["8b9405055c5da973ef2c"],
14
+ "src/index.ts": ["87ff9cb43f77dfa760ac"],
15
+ "src/open.ts": ["0ee7cc85f660910d2fca"]
16
+ },
17
+ "acryl-door": {
18
+ "LICENSE": ["b84342464fb19baab24f"],
19
+ "src/cli/acryl.ts": ["0dcfd9e51ac6eba760fa"],
20
+ "src/host/api.ts": ["0626ef27ad2065b3b379"],
21
+ "src/host/audit.ts": ["fb718ee832bdcbaf13e4"],
22
+ "src/host/channel.ts": ["3dee2f7f45181408c1b2"],
23
+ "src/host/chat-tools.ts": ["d0dd41066eef663649cb"],
24
+ "src/host/door-file.ts": ["aeba058f761cb2b46c03"],
25
+ "src/host/door.ts": ["81398163a2225b6a5c67", "f7eebdaebe24c1c8ee80"],
26
+ "src/host/http.ts": ["e894092402938071b346"],
27
+ "src/host/mcp-routes.ts": ["d139b336307d391d0696"],
28
+ "src/host/operator-routes.ts": ["4dbceec2a79224770ddf"],
29
+ "src/host/page-routes.ts": ["7c2367a408dab92ae9d8"],
30
+ "src/host/shim.ts": ["b1a03003568ea3a10ec8"],
31
+ "src/host/verbs.ts": ["3746905e14426042afd9"],
32
+ "src/index.ts": ["2c4f2230541d54c3868b", "3ca586bf0cefe2e3b15a"],
33
+ "src/page/api.ts": ["5644cb5607452893bc11"],
34
+ "src/page/channel.ts": ["134f38cb134706a62e32"],
35
+ "src/page/driver/accessibility.ts": ["ae3174bb2f2ad6911230", "1532845253f73399a726"],
36
+ "src/page/driver/actions.ts": ["38d7761494116bdf3807"],
37
+ "src/page/driver/driver.ts": ["567079c6ab38199678db"],
38
+ "src/page/driver/ref-table.ts": ["ee4372af68a383ffe91a"],
39
+ "src/page/driver/sensitivity.ts": ["9e73e84e23cf7f477c2a"],
40
+ "src/page/driver/snapshot.ts": ["6d7d42db6577c2e4d598"],
41
+ "src/page/index.ts": ["9391a7defe4302c4b33b"],
42
+ "src/page/indicator.ts": ["ef995d1bbf0154f24997"],
43
+ "src/page/main.ts": ["114a9fbe1a3f278bcb2a"],
44
+ "src/page/protocol.ts": ["2c5e4df9fd1f626b9457"],
45
+ "src/page/snapshot-text.ts": ["d1ab0f5eff70cfba77eb"],
46
+ "src/page/user-input.ts": ["edf3e28136a947b16ba1"]
47
+ },
48
+ "acryl-inspect": {
49
+ "LICENSE": ["9e159eea922378a88a12"],
50
+ "src/index.ts": ["bc7d0dd5fa8495de2bdf"],
51
+ "src/report.ts": ["c8cc3a59fe944026ef8a"],
52
+ "src/service.ts": ["9a0b97ecb736b6b87568"]
53
+ },
54
+ "acryl-kv": {
55
+ "LICENSE": ["b84342464fb19baab24f"],
56
+ "src/check.ts": ["0749ebd141cfdfb3975e"],
57
+ "src/copy.ts": ["a72af91ac13e078617a3"],
58
+ "src/cordis.ts": ["90426ad0987ea9a5f256"],
59
+ "src/index.ts": ["b664afd830bfbc5fba00"],
60
+ "src/kv.ts": ["d3fa1146596a0ce77b2e"]
61
+ },
62
+ "acryl-kv-db": {
63
+ "LICENSE": ["b84342464fb19baab24f"],
64
+ "src/index.ts": ["879553f8b9a0359b0700"],
65
+ "src/open.ts": ["b74bd718396874b9ae19"]
66
+ },
67
+ "acryl-kv-json": {
68
+ "LICENSE": ["b84342464fb19baab24f"],
69
+ "src/index.ts": ["b9be594ecb6fdd2e6295"],
70
+ "src/open.ts": ["99c5e78fd8642fde6b27"]
71
+ },
72
+ "acryl-node-server": {
73
+ "LICENSE": ["97e21f62916eb3787f2d"],
74
+ "src/adapter/conninfo.ts": ["10eaa407ab6767842ec0"],
75
+ "src/adapter/early-hints.ts": ["d110b1d71290545b46f8"],
76
+ "src/adapter/error.ts": ["e205d90b3d02f42eeecb"],
77
+ "src/adapter/headers.ts": ["6cb4777ef5343c38be37"],
78
+ "src/adapter/index.ts": ["09ca4a9e68e4475f542f"],
79
+ "src/adapter/listener.ts": ["585ac76c33ff561f7340"],
80
+ "src/adapter/request.ts": ["7a7c605fafc9ddd4ec97"],
81
+ "src/adapter/response.ts": ["24d52364b21773acee18"],
82
+ "src/adapter/serve-static.ts": ["84b6909a4503255c3ab3"],
83
+ "src/adapter/server.ts": ["70d6559721dc77ef9776"],
84
+ "src/adapter/types.ts": ["8d62b24fad3fef55fc5f"],
85
+ "src/adapter/url.ts": ["b92d178a1d2883a1b2bf"],
86
+ "src/adapter/utils.ts": ["9b86a115a971464c59c5"],
87
+ "src/adapter/utils/response.ts": ["16f3b37720729a9c1a0d"],
88
+ "src/adapter/utils/response/constants.ts": ["dc85a5b15c3de3c27760"],
89
+ "src/adapter/utils/stream.ts": ["106a155dc353fc70808d"],
90
+ "src/adapter/websocket-types.ts": ["c209a4493ddeb13cb182", "9dbe10d817290c0ce9e6"],
91
+ "src/adapter/websocket.ts": ["140ff3388c849daa45de", "3b81af41e36d046ca389"],
92
+ "src/client-modules.ts": ["80e5b1c8c29be915e4ea"],
93
+ "src/index.ts": ["0c5c49d805791bfc7625", "d7b806b1e1eef48a63b3"],
94
+ "src/register.ts": ["919c6aeda137f6b03282"],
95
+ "src/test-websocket.ts": ["a91e1e4b4b37e7b77bf2"],
96
+ "src/transpile.ts": ["5e7afa4390fbcbc564a0"],
97
+ "src/upgrade-hub.ts": ["a18b5cece2d2c571463e"]
98
+ },
99
+ "acryl-router": {
100
+ "LICENSE": ["fcf95a3a9e661936ca61"],
101
+ "src/browser/client.ts": ["02d59cb4bbc4a494831e"],
102
+ "src/browser/jsx-dom.ts": ["51382d53e99f407273c4"],
103
+ "src/browser/read-sse.ts": ["05e690a38ca2d0ab6317"],
104
+ "src/client.ts": ["f7caec09e4a62dc267c8"],
105
+ "src/connection.d.ts": ["8525c6c4d7f80b2fab64"],
106
+ "src/connection.ts": ["bcba74c800516cb9cda6"],
107
+ "src/core/adapter/aws-lambda/conninfo.ts": ["8d06fe782afffee7015f"],
108
+ "src/core/adapter/aws-lambda/handler.ts": ["faf8b19d86d904486271"],
109
+ "src/core/adapter/aws-lambda/index.ts": ["b8f5f49864872f0cca6c"],
110
+ "src/core/adapter/aws-lambda/types.ts": ["deeb64faf14540949eff"],
111
+ "src/core/adapter/bun/conninfo.ts": ["bc5d41093f38124be53e"],
112
+ "src/core/adapter/bun/index.ts": ["687541cba2bbd5429adc"],
113
+ "src/core/adapter/bun/serve-static.ts": ["b6d021a1a3a1af266b00"],
114
+ "src/core/adapter/bun/server.ts": ["bab3cacadddfe3019745"],
115
+ "src/core/adapter/bun/ssg.ts": ["bdf2c822ca0c84dd3983"],
116
+ "src/core/adapter/bun/websocket.ts": ["93767e71a3e13c0ef9d0"],
117
+ "src/core/adapter/cloudflare-pages/conninfo.ts": ["5431b08d1148eb3ac422"],
118
+ "src/core/adapter/cloudflare-pages/handler.ts": ["ed649b24039a3dc9a843"],
119
+ "src/core/adapter/cloudflare-pages/index.ts": ["762ad200133ed1bde028"],
120
+ "src/core/adapter/cloudflare-workers/conninfo.ts": ["f2a9308340b5a486e8a0"],
121
+ "src/core/adapter/cloudflare-workers/index.ts": ["bec66b4526f6a8368232"],
122
+ "src/core/adapter/cloudflare-workers/serve-static-module.ts": ["62b9e667159703ff33eb"],
123
+ "src/core/adapter/cloudflare-workers/serve-static.ts": ["1ed2858f747b5a4a873e"],
124
+ "src/core/adapter/cloudflare-workers/utils.ts": ["35ec7619eec63023dfc3"],
125
+ "src/core/adapter/cloudflare-workers/websocket.ts": ["250ea09a3a07134cf21d"],
126
+ "src/core/adapter/lambda-edge/conninfo.ts": ["a91c473bfddb4f885223"],
127
+ "src/core/adapter/lambda-edge/handler.ts": ["6a3f10a1467042fbe57b"],
128
+ "src/core/adapter/lambda-edge/index.ts": ["343e7badf0a434975e51"],
129
+ "src/core/adapter/netlify/conninfo.ts": ["249ffbed02c53788a798"],
130
+ "src/core/adapter/netlify/handler.ts": ["87d773f7c181ca92eb23"],
131
+ "src/core/adapter/netlify/index.ts": ["730dbae6712fa80a4bec"],
132
+ "src/core/adapter/netlify/mod.ts": ["6cb2b1c581e058b79460"],
133
+ "src/core/adapter/service-worker/handler.ts": ["6c26b405fc668a619fd1"],
134
+ "src/core/adapter/service-worker/index.ts": ["5bb7ae713e65ff7dac6d"],
135
+ "src/core/adapter/service-worker/types.ts": ["63fbf618800e75d60926"],
136
+ "src/core/adapter/vercel/conninfo.ts": ["f0aa35eeed2dc6b55e7c"],
137
+ "src/core/adapter/vercel/handler.ts": ["59d0e2ce0bbf55e651d5"],
138
+ "src/core/adapter/vercel/index.ts": ["b064eb4b09bd929efcad"],
139
+ "src/core/app-base.d.ts": ["51f9874a4c3bec491765"],
140
+ "src/core/app-base.ts": ["4e990978beb8221537f0"],
141
+ "src/core/app.d.ts": ["ec10809b66a488232128"],
142
+ "src/core/app.ts": ["d63f11b3b086b827c9dd"],
143
+ "src/core/client/client.d.ts": ["fad680f8658dc1c964d4"],
144
+ "src/core/client/client.ts": ["8d3ce2f9883d97c0061b"],
145
+ "src/core/client/fetch-result-please.d.ts": ["269f68f8079931708d59"],
146
+ "src/core/client/fetch-result-please.ts": ["7d1e9e4a1818cf774dbf"],
147
+ "src/core/client/index.d.ts": ["515787cb5dc4a6d8967a"],
148
+ "src/core/client/index.ts": ["bbcadbc55d74e81f1aa3"],
149
+ "src/core/client/types.d.ts": ["e5f8b8cc323a77cc7f8b"],
150
+ "src/core/client/types.ts": ["feeb2685864f84fcb402"],
151
+ "src/core/client/utils.d.ts": ["6178e065e888355a5ce2"],
152
+ "src/core/client/utils.ts": ["60a73d4b0015a73a83b8"],
153
+ "src/core/compose.d.ts": ["ada56d7acea92d21d526"],
154
+ "src/core/compose.ts": ["42578ced2616e5b9fd5b"],
155
+ "src/core/context.d.ts": ["8823de71401aa87d8eee"],
156
+ "src/core/context.ts": ["7336248bc3660f08eabf"],
157
+ "src/core/helper/accepts/accepts.d.ts": ["364b6c0cf2f4c5129cde"],
158
+ "src/core/helper/accepts/accepts.ts": ["4f3818771a1b2a310306"],
159
+ "src/core/helper/accepts/index.d.ts": ["9d8f8d550c0125c1406b"],
160
+ "src/core/helper/accepts/index.ts": ["169919219cbf2bac6ed0"],
161
+ "src/core/helper/adapter/index.ts": ["b8c71955ed5e56817c0a"],
162
+ "src/core/helper/conninfo/index.d.ts": ["7ce7d180f652bc57ace7"],
163
+ "src/core/helper/conninfo/index.ts": ["3347b9479a749b3cdad1"],
164
+ "src/core/helper/conninfo/types.d.ts": ["79cb3ac7ff121ed8d935"],
165
+ "src/core/helper/conninfo/types.ts": ["100c203fe0d9650e8b4d"],
166
+ "src/core/helper/cookie/index.d.ts": ["80b287af26218afa9433"],
167
+ "src/core/helper/cookie/index.ts": ["775a9f0eda9816739bf9"],
168
+ "src/core/helper/css/common.d.ts": ["b2a4564f00cee517384c"],
169
+ "src/core/helper/css/common.ts": ["9557f3afb992391f488d"],
170
+ "src/core/helper/css/index.d.ts": ["f5fa741502da5d6709cf"],
171
+ "src/core/helper/css/index.ts": ["acfc0bd429e19784026c"],
172
+ "src/core/helper/dev/index.d.ts": ["8a3847b18e42ac053c9a"],
173
+ "src/core/helper/dev/index.ts": ["d18874f5e661ffac7534"],
174
+ "src/core/helper/factory/index.d.ts": ["e88002ac4c6cc8e43158"],
175
+ "src/core/helper/factory/index.ts": ["beaeea5103a2039a2c36"],
176
+ "src/core/helper/html/index.d.ts": ["a5e9a270693f5434c92e"],
177
+ "src/core/helper/html/index.ts": ["bd46baa7afa28b384e51"],
178
+ "src/core/helper/proxy/index.d.ts": ["67492457bbd58465ba69"],
179
+ "src/core/helper/proxy/index.ts": ["fbebf15098568c05d7cf"],
180
+ "src/core/helper/route/index.d.ts": ["c371c8754eb5dfde5791"],
181
+ "src/core/helper/route/index.ts": ["531cce0da40c36237f4b"],
182
+ "src/core/helper/ssg/index.d.ts": ["fde48ebf5b39ea70aa5e"],
183
+ "src/core/helper/ssg/index.ts": ["e2914608686363e0e321"],
184
+ "src/core/helper/ssg/middleware.d.ts": ["9816495ce5253524d407"],
185
+ "src/core/helper/ssg/middleware.ts": ["0c13eb716d3d843b098e"],
186
+ "src/core/helper/ssg/plugins.d.ts": ["20727f2cb58dae4db21b"],
187
+ "src/core/helper/ssg/plugins.ts": ["28a8a1f5515025dcce45"],
188
+ "src/core/helper/ssg/ssg.d.ts": ["57641991e0b6c3dd3733"],
189
+ "src/core/helper/ssg/ssg.ts": ["3939b8a6afbba24d5f36"],
190
+ "src/core/helper/ssg/utils.d.ts": ["020923bbf1817d5df679"],
191
+ "src/core/helper/ssg/utils.ts": ["6e60543ae813927b78e5"],
192
+ "src/core/helper/streaming/index.d.ts": ["66f251ce6043c77a4da8"],
193
+ "src/core/helper/streaming/index.ts": ["0b1304665221e3d8f6dd"],
194
+ "src/core/helper/streaming/sse.d.ts": ["b628c78f34f17b2324d6"],
195
+ "src/core/helper/streaming/sse.ts": ["5c03f7babe74e35012bb"],
196
+ "src/core/helper/streaming/stream.d.ts": ["318b24210aee389f53fe"],
197
+ "src/core/helper/streaming/stream.ts": ["a5c7e508f78f83d1bc5b"],
198
+ "src/core/helper/streaming/text.d.ts": ["702606abc93d028555e4"],
199
+ "src/core/helper/streaming/text.ts": ["bd8d1973feeabca63016"],
200
+ "src/core/helper/streaming/utils.d.ts": ["2aaf7b6c7ab366882a11"],
201
+ "src/core/helper/streaming/utils.ts": ["52368d2d53097f5a78c7"],
202
+ "src/core/helper/testing/index.d.ts": ["8f1e6c17bd066e04a76a"],
203
+ "src/core/helper/testing/index.ts": ["0e6337486c36fd30e9da"],
204
+ "src/core/helper/websocket/index.d.ts": ["6462707532e2855e1ba9"],
205
+ "src/core/helper/websocket/index.ts": ["b7277396a2b46389b264", "8e79c50de47391f4ce99"],
206
+ "src/core/http-exception.d.ts": ["cc5d6f960a89088e8a4c"],
207
+ "src/core/http-exception.ts": ["8cb7f8c757cc3f96a3df"],
208
+ "src/core/index.d.ts": ["a24a7f89acaf31eb6896"],
209
+ "src/core/index.ts": ["4a0dac2285237ae955d0"],
210
+ "src/core/jsx/base.d.ts": ["1b9599fe6af6764754ed"],
211
+ "src/core/jsx/base.ts": ["923884787eaf0144307b"],
212
+ "src/core/jsx/children.d.ts": ["ba1af693cfabfc798325"],
213
+ "src/core/jsx/children.ts": ["26ead0f151faba530788"],
214
+ "src/core/jsx/components.d.ts": ["3f39e8f27d9cb67975e1"],
215
+ "src/core/jsx/components.ts": ["eb847eb031b3d0b83ea5"],
216
+ "src/core/jsx/constants.d.ts": ["3f1f226503994e914cd8"],
217
+ "src/core/jsx/constants.ts": ["4c57d25d7cdff6dad5ae"],
218
+ "src/core/jsx/context.d.ts": ["5dfbb09886714497e798"],
219
+ "src/core/jsx/context.ts": ["fb7c24fcb2ed7dd6ec40"],
220
+ "src/core/jsx/dom/client.ts": ["b75bfc692cbbc2393aa0"],
221
+ "src/core/jsx/dom/components.d.ts": ["509901b369a7ec21e890"],
222
+ "src/core/jsx/dom/components.ts": ["9c449221fea07f5f5f93"],
223
+ "src/core/jsx/dom/context.d.ts": ["29b2a428c26c245c8224"],
224
+ "src/core/jsx/dom/context.ts": ["2324724034f67abd52af"],
225
+ "src/core/jsx/dom/css.d.ts": ["e5eee5de72aaa18cd058"],
226
+ "src/core/jsx/dom/css.ts": ["bc7f261724ee126159b4"],
227
+ "src/core/jsx/dom/hooks/index.d.ts": ["2d75ae7cc389b168f802"],
228
+ "src/core/jsx/dom/hooks/index.ts": ["892c8dbb833a8e811349"],
229
+ "src/core/jsx/dom/index.ts": ["57129a7881fe3620715e"],
230
+ "src/core/jsx/dom/intrinsic-element/components.d.ts": ["14da090bd3c1e9a016e6"],
231
+ "src/core/jsx/dom/intrinsic-element/components.ts": ["fb4ef96a4f41014fc621"],
232
+ "src/core/jsx/dom/jsx-dev-runtime.d.ts": ["fc4f962942f9089f3181"],
233
+ "src/core/jsx/dom/jsx-dev-runtime.ts": ["f8a2cbaccd9e2388cea6"],
234
+ "src/core/jsx/dom/jsx-runtime.d.ts": ["a37c287d7569804e0f71"],
235
+ "src/core/jsx/dom/jsx-runtime.ts": ["d5b92c4eb3ca0a677ebc"],
236
+ "src/core/jsx/dom/render.d.ts": ["7752fad608960221eeef"],
237
+ "src/core/jsx/dom/render.ts": ["abc3368a22578b525d09"],
238
+ "src/core/jsx/dom/server.ts": ["e6b5d379d5ec737bb4a6"],
239
+ "src/core/jsx/dom/utils.d.ts": ["64e02355d3f1e2a7d5ca"],
240
+ "src/core/jsx/dom/utils.ts": ["5d3e8c14996902db9c12"],
241
+ "src/core/jsx/hooks/index.d.ts": ["1c8179a25a2191a4cbd9"],
242
+ "src/core/jsx/hooks/index.ts": ["0d3d91456eb3147c8284"],
243
+ "src/core/jsx/index.d.ts": ["f59f34307f08c8773603"],
244
+ "src/core/jsx/index.ts": ["420f0752013389e31b67"],
245
+ "src/core/jsx/intrinsic-element/common.d.ts": ["92d3d8f85f6eda773930"],
246
+ "src/core/jsx/intrinsic-element/common.ts": ["f818fd7f740046bed646"],
247
+ "src/core/jsx/intrinsic-element/components.d.ts": ["ffad863cf6c89f750cdc"],
248
+ "src/core/jsx/intrinsic-element/components.ts": ["8f35cd00d76aa2863279"],
249
+ "src/core/jsx/intrinsic-elements.d.ts": ["3abc97dfb4d20648d9e0"],
250
+ "src/core/jsx/intrinsic-elements.ts": ["1be7dbe5caa916cb9409"],
251
+ "src/core/jsx/jsx-dev-runtime.ts": ["5d9166d4ccbbf7c46198"],
252
+ "src/core/jsx/jsx-runtime.ts": ["f25afb37abb0e9d4a3e7"],
253
+ "src/core/jsx/streaming.d.ts": ["256a976b8065c7ecf1bc"],
254
+ "src/core/jsx/streaming.ts": ["8387fe5665b3c41c9046"],
255
+ "src/core/jsx/types.d.ts": ["b2e04dda58c0235106a1"],
256
+ "src/core/jsx/types.ts": ["3d1c57e92c8fcb1b6714"],
257
+ "src/core/jsx/utils.d.ts": ["7a40ba6b783019df1d77"],
258
+ "src/core/jsx/utils.ts": ["ee39fed9cacc6d14b385"],
259
+ "src/core/middleware/basic-auth/index.ts": ["f86127cb69cba8785860"],
260
+ "src/core/middleware/bearer-auth/index.ts": ["baa8298a070570449e14"],
261
+ "src/core/middleware/body-limit/index.ts": ["be4698f4a33ba88bfc74"],
262
+ "src/core/middleware/cache/index.ts": ["b51d30e41377802c48fa"],
263
+ "src/core/middleware/combine/index.ts": ["c796c25dc412a2ae061d"],
264
+ "src/core/middleware/compress/index.ts": ["7a85380aeaac694ec496"],
265
+ "src/core/middleware/context-storage/index.ts": ["731dd7d1e23443915ca0"],
266
+ "src/core/middleware/cors/index.ts": ["4647129d2cd51ed0700e"],
267
+ "src/core/middleware/csrf/index.ts": ["d19bbb0b6f9056c3351e"],
268
+ "src/core/middleware/etag/digest.ts": ["a087c10aa9a24511d064"],
269
+ "src/core/middleware/etag/index.ts": ["cbbd20e0d2faef080c2f"],
270
+ "src/core/middleware/ip-restriction/index.ts": ["b268ab3376a40b005d49"],
271
+ "src/core/middleware/jsx-renderer/index.ts": ["1a9952cec50d5bfd7a74"],
272
+ "src/core/middleware/jwk/index.ts": ["58701adb4e268d03b6f0"],
273
+ "src/core/middleware/jwk/jwk.ts": ["5f5d9a475ed42ab74d01"],
274
+ "src/core/middleware/jwt/index.ts": ["a5465381b7afa398d872"],
275
+ "src/core/middleware/jwt/jwt.ts": ["2254f8ca06d1e407f037"],
276
+ "src/core/middleware/language/index.ts": ["fc3edb893eab3c96185f"],
277
+ "src/core/middleware/language/language.ts": ["18130bab72b66d4dc965"],
278
+ "src/core/middleware/logger/index.ts": ["0f0eed7d4b7161bc7223"],
279
+ "src/core/middleware/method-not-allowed/index.ts": ["5a5d7addd6c5aee220eb"],
280
+ "src/core/middleware/method-override/index.ts": ["6a88b8cb91bbece6370a"],
281
+ "src/core/middleware/mount/index.ts": ["216f1a0f0530f168f215"],
282
+ "src/core/middleware/powered-by/index.ts": ["518a865bf7c360de0ab2"],
283
+ "src/core/middleware/pretty-json/index.ts": ["ff084394fd313506f0c6"],
284
+ "src/core/middleware/request-id/index.ts": ["88024b32a2d77e294874"],
285
+ "src/core/middleware/request-id/request-id.ts": ["faddd2438b8904c23968"],
286
+ "src/core/middleware/secure-headers/index.ts": ["cc55d73bf42c16e905c4"],
287
+ "src/core/middleware/secure-headers/permissions-policy.ts": ["685ad28372db5f743aea"],
288
+ "src/core/middleware/secure-headers/secure-headers.ts": ["3d6963e222eb9b0374e2"],
289
+ "src/core/middleware/serve-static/index.ts": ["4c1a8dd6af819948c407"],
290
+ "src/core/middleware/serve-static/path.ts": ["0bff510a134272f57c0f"],
291
+ "src/core/middleware/timeout/index.ts": ["27b8deacfe24f381412c"],
292
+ "src/core/middleware/timing/index.ts": ["69ebec6ecab13ee03968"],
293
+ "src/core/middleware/timing/timing.ts": ["c31e534a81ce74d2300d"],
294
+ "src/core/middleware/trailing-slash/index.ts": ["7dab3439d352d0b0fc1c"],
295
+ "src/core/preset/quick.ts": ["e0896beb6a4ed9dbc89b"],
296
+ "src/core/preset/tiny.ts": ["f3e93581e566abf1ac55"],
297
+ "src/core/request.d.ts": ["c3bc75f8152e8fe9eb6b"],
298
+ "src/core/request.ts": ["0e9dcd28d89c77887d7a"],
299
+ "src/core/request/constants.d.ts": ["a8cc184ee589bd3806e9"],
300
+ "src/core/request/constants.ts": ["d9f15cf5cbc780673e6a"],
301
+ "src/core/router.d.ts": ["cc7c56a68d799dfbc621"],
302
+ "src/core/router.ts": ["5a6563fc3b21625f39de"],
303
+ "src/core/router/linear-router/index.ts": ["e2caccab0b8086708841"],
304
+ "src/core/router/linear-router/router.ts": ["9ff7a386da4f2284110f"],
305
+ "src/core/router/pattern-router/index.ts": ["bfc810ecd5b6bcd69124"],
306
+ "src/core/router/pattern-router/router.ts": ["24c21a99b3fd8a236624"],
307
+ "src/core/router/reg-exp-router/index.d.ts": ["c4a2126c5b7005124af1"],
308
+ "src/core/router/reg-exp-router/index.ts": ["b397401a98604f7f8c83"],
309
+ "src/core/router/reg-exp-router/matcher.d.ts": ["d34a03d7cfb4139ebce2"],
310
+ "src/core/router/reg-exp-router/matcher.ts": ["167bd548bd927aceeea3"],
311
+ "src/core/router/reg-exp-router/node.d.ts": ["7935464334507fb46aa9"],
312
+ "src/core/router/reg-exp-router/node.ts": ["d6e901c1ba88fd068365"],
313
+ "src/core/router/reg-exp-router/prepared-router.d.ts": ["50b586528e607027ca49"],
314
+ "src/core/router/reg-exp-router/prepared-router.ts": ["764f0e3a1186a158016a"],
315
+ "src/core/router/reg-exp-router/router.d.ts": ["cd5b913ed7c000e3d2db"],
316
+ "src/core/router/reg-exp-router/router.ts": ["c0c159a09077390cd606"],
317
+ "src/core/router/reg-exp-router/trie.d.ts": ["bae7fc987b02b4bf6249"],
318
+ "src/core/router/reg-exp-router/trie.ts": ["6d0ce9ef007f1bec5630"],
319
+ "src/core/router/smart-router/index.d.ts": ["4114010e062bc804c449"],
320
+ "src/core/router/smart-router/index.ts": ["39c7c2c662965f641b56"],
321
+ "src/core/router/smart-router/router.d.ts": ["5c5bd423bc31386c2d1e"],
322
+ "src/core/router/smart-router/router.ts": ["896a0c4c6db6c3abe070"],
323
+ "src/core/router/trie-router/index.d.ts": ["c9ba04247f2035fb5441"],
324
+ "src/core/router/trie-router/index.ts": ["8c3343b2c59cf6161494"],
325
+ "src/core/router/trie-router/node.d.ts": ["d9d98026f6dfd9c58791"],
326
+ "src/core/router/trie-router/node.ts": ["1c69d469059eebb6d59f"],
327
+ "src/core/router/trie-router/router.d.ts": ["0a7726b1bb33d0e3e823"],
328
+ "src/core/router/trie-router/router.ts": ["23a5de4c157c55cdd848"],
329
+ "src/core/router/utils.d.ts": ["cb352376b7124c61f1f8"],
330
+ "src/core/router/utils.ts": ["457dd7ca0a9ae97ce028"],
331
+ "src/core/types.d.ts": ["3c2e9b1799112ff8b27d"],
332
+ "src/core/types.ts": ["7a2b078b47ba5185a025"],
333
+ "src/core/utils/accept.d.ts": ["8adbd0944368003c17ae"],
334
+ "src/core/utils/accept.ts": ["2c0fd9ccb1399a3ebc2f"],
335
+ "src/core/utils/basic-auth.ts": ["babff7b997e77901dabd"],
336
+ "src/core/utils/body.d.ts": ["762fa8d45205f3a8e01c"],
337
+ "src/core/utils/body.ts": ["28f98f0e04cb2f18e8fb"],
338
+ "src/core/utils/buffer.d.ts": ["3ed95a289ec51ceb6774"],
339
+ "src/core/utils/buffer.ts": ["1c60a669bbcb8d9ec471"],
340
+ "src/core/utils/color.d.ts": ["b35804d6caf84060fb75"],
341
+ "src/core/utils/color.ts": ["48f18beb7e38cf8a172b"],
342
+ "src/core/utils/compress.ts": ["e730278ec198d7627787"],
343
+ "src/core/utils/concurrent.d.ts": ["e15035fc004fe1f0ff5f"],
344
+ "src/core/utils/concurrent.ts": ["64ffff2eae843974a167"],
345
+ "src/core/utils/constants.d.ts": ["3c59a7e50c5abee3070f"],
346
+ "src/core/utils/constants.ts": ["998c2de331bc0fab885e"],
347
+ "src/core/utils/cookie.d.ts": ["394031845fc5f4851743"],
348
+ "src/core/utils/cookie.ts": ["28596b31d4703f45ea31"],
349
+ "src/core/utils/crypto.d.ts": ["7d138e3b3f763eff7469"],
350
+ "src/core/utils/crypto.ts": ["16d4336d44f89a5e9ccb"],
351
+ "src/core/utils/encode.ts": ["2919040203c3481abf01"],
352
+ "src/core/utils/filepath.ts": ["e4b531782f90b1f89848"],
353
+ "src/core/utils/handler.d.ts": ["7e8b0aa8e2332e87fbd6"],
354
+ "src/core/utils/handler.ts": ["55781d9f3a814e7aa210"],
355
+ "src/core/utils/headers.d.ts": ["fce834609d564ef19348"],
356
+ "src/core/utils/headers.ts": ["edb6ce9ae7887a790923"],
357
+ "src/core/utils/html.d.ts": ["00d69a726693b34244bb"],
358
+ "src/core/utils/html.ts": ["cd94095f0ccef619b08f"],
359
+ "src/core/utils/http-status.d.ts": ["984c26e8864dc326bf6f"],
360
+ "src/core/utils/http-status.ts": ["3ece8f7d568f09f0344e"],
361
+ "src/core/utils/ipaddr.ts": ["f17d2301f03619b216c4"],
362
+ "src/core/utils/jwt/index.ts": ["fac8175d651784327727"],
363
+ "src/core/utils/jwt/jwa.ts": ["9fffac5c524b5704cfbf"],
364
+ "src/core/utils/jwt/jws.ts": ["f55cedb004690e5ce0d2"],
365
+ "src/core/utils/jwt/jwt.ts": ["8789f52b2db35fb4622c"],
366
+ "src/core/utils/jwt/types.ts": ["a411f4ef219c4ed1a240"],
367
+ "src/core/utils/jwt/utf8.ts": ["661ca51674ed0a853ac2"],
368
+ "src/core/utils/mime.d.ts": ["d67fecdd34c11726ab6f"],
369
+ "src/core/utils/mime.ts": ["9366cb9ce67591b5118e"],
370
+ "src/core/utils/stream.d.ts": ["8d642e03c98875229acc"],
371
+ "src/core/utils/stream.ts": ["bd2a633735982069b532"],
372
+ "src/core/utils/types.d.ts": ["e9123409625c1e6e8430"],
373
+ "src/core/utils/types.ts": ["80fafbd447ad5c74a7e6"],
374
+ "src/core/utils/url.d.ts": ["b472536de433c2acbabe"],
375
+ "src/core/utils/url.ts": ["d1f85f414ed8fd368200"],
376
+ "src/core/validator/index.d.ts": ["c719eab558f45790459a"],
377
+ "src/core/validator/index.ts": ["78cf6b838c9518f1c90a"],
378
+ "src/core/validator/utils.d.ts": ["6ddc7a2ac0d8512ad577"],
379
+ "src/core/validator/utils.ts": ["8ff64b6ad51ad5a92010"],
380
+ "src/core/validator/validator.d.ts": ["6f24ffb984259d87e8d2"],
381
+ "src/core/validator/validator.ts": ["55dc85883d804e5ff5fd"],
382
+ "src/deprecated.ts": ["ed105fe0bd23172d45b6"],
383
+ "src/helpers/index.d.ts": ["dc17175e4377f346f0f1"],
384
+ "src/helpers/index.ts": ["ae9330a84dd4053c3de1"],
385
+ "src/helpers/read-sse.ts": ["40c1ed42b0163aad3993"],
386
+ "src/helpers/schema-validator.d.ts": ["bc059337a0996e380e03"],
387
+ "src/helpers/schema-validator.ts": ["a0935ddbb76781744d27"],
388
+ "src/index.ts": ["06715586ec54d703a0ec"],
389
+ "src/middleware/index.ts": ["a914ea698fd8c80aed1f"],
390
+ "src/middleware/loopback-only.ts": ["41b210e51d004ba94cff"],
391
+ "src/service.ts": ["1e4715964b83930ec823", "f5067022124cde0d7a49"]
392
+ },
393
+ "acryl-router-http": {
394
+ "LICENSE": ["9e159eea922378a88a12"],
395
+ "src/bridge.ts": ["c4fe8f2230e720ce151b"],
396
+ "src/index.ts": ["493f97a62f69ffc92144", "a67328c359d548010159"],
397
+ "src/serve.ts": ["866d223954bd3d7c99e5"]
398
+ },
399
+ "acryl-state": {
400
+ "LICENSE": ["9e159eea922378a88a12"],
401
+ "src/cell.ts": ["2add14530d4a39c2b358"],
402
+ "src/index.ts": ["db28925155709181a5fe"],
403
+ "src/service.ts": ["885b6f3dd110554435cb"]
404
+ },
405
+ "agent": {
406
+ "agent.ts": ["6a8f44b7c2e7ff8f00c7", "375b09fe4b2af56fcfbd"],
407
+ "index.ts": ["91147873ccdb9a9d991c"],
408
+ "memory.ts": ["6d47d7d80eeabad9cfc3"],
409
+ "model.ts": ["0c61d764aa2183a1239f", "be8a04fae1adf990359c"],
410
+ "tools.ts": ["4771be380e631752f6c3", "0ba15dc21cc56abb29e1"]
411
+ },
412
+ "agent-panel": {
413
+ "client/main.ts": ["888452cf3fa31e4cd8b2", "b2abc5011988ec8b168c"],
414
+ "drivers.ts": ["bb03f3214c87494b26c2"],
415
+ "headless.ts": ["787cca003e7e1d1d14e5"],
416
+ "index.ts": ["2d5f97e1c0cc1911ff14", "1a7aaae0c6e773e795a9", "094db3bb5f5eb1bff0fe"]
417
+ },
418
+ "builder": { "index.ts": ["74c6e252e3ef1154f113"], "script.ts": ["fd1964df061b97d5cfa8"] },
419
+ "desktop": {
420
+ "main.ts": ["e72fe0e887272789fb13"],
421
+ "shutdown.ts": ["a4d94f8a92081af96251"],
422
+ "user-data.ts": ["9a79f5f8b0593085cd6f"],
423
+ "window.ts": ["dbd0e5e91c5bc386ff1e"]
424
+ },
425
+ "desktop-web": {
426
+ "main.ts": ["f86d191ce06092f56438"],
427
+ "shutdown.ts": ["a4d94f8a92081af96251"],
428
+ "user-data.ts": ["9a79f5f8b0593085cd6f"],
429
+ "window.ts": ["dbd0e5e91c5bc386ff1e"]
430
+ },
431
+ "driver-pty": {
432
+ "client/terminal.ts": ["8ba9eccaf16077c6eac6"],
433
+ "client/vendor/addon-fit.d.mts": ["b25706db7e9df6b11250"],
434
+ "client/vendor/addon-fit.mjs": ["2d87e1bddc73be9111de"],
435
+ "client/vendor/LICENSE": ["b569f629d00f2626a810"],
436
+ "client/vendor/LICENSE-addon-fit": ["e256f01188af527e4d06"],
437
+ "client/vendor/VERSION": ["95871ac3d3dc3f3c4236"],
438
+ "client/vendor/xterm-css.d.mts": ["4244c107b4907c5dece5"],
439
+ "client/vendor/xterm-css.mjs": ["0015cf7fe8053144737e"],
440
+ "client/vendor/xterm.d.mts": ["52c18a398f12839e50e0"],
441
+ "client/vendor/xterm.mjs": ["b336ec65a086c056d480"],
442
+ "index.ts": ["27dcc257a9f72c400bf6"],
443
+ "spawn.ts": ["b6a03dc28101ba237052"],
444
+ "terminal.ts": ["1cfa78ee15e01465e9b2"]
445
+ },
446
+ "extensions": {
447
+ "index.ts": ["467841345b312a8b59a1"],
448
+ "ledger.ts": ["2af8407a66e314b9bbbb"],
449
+ "resolve.ts": ["fa65b507a362adc396e3"],
450
+ "stage.ts": ["0b6e0c98294d65d78819"]
451
+ },
452
+ "instance": { "index.ts": ["ede01b973dad78445111"] },
453
+ "manifest": {
454
+ "index.ts": ["eab7e185ab13029aff8f"],
455
+ "lock.ts": ["03f8033bbdffad3f9431"],
456
+ "upgrade-cli.ts": ["636628cfbaffe019472f"],
457
+ "upgrade.ts": ["1e0b1851f1542741d083"]
458
+ },
459
+ "openai": { "index.ts": ["6be04e3f6ab27c99bf1e"], "prompt.ts": ["18b6a53a503d2dd2c9db"] },
460
+ "sandbox": { "index.ts": ["c1c60f42d30c0417a6fc"], "runner.mjs": ["6437184989f4848075ba"] },
461
+ "save": { "cli.ts": ["fccad83af5a41bde542b"], "index.ts": ["48f96cde6c73e781e3e6"] },
462
+ "settings": { "index.ts": ["01e803a60405a1d5ca19"], "merge.ts": ["9d2648479b5cb8f765e7"] },
463
+ "tasks": { "index.ts": ["2b9c53731a4c6c59b2a2"], "store.ts": ["3d24c2b53874e3e14928"] }
464
+ }
@@ -1,115 +0,0 @@
1
- # AWS Lambda
2
-
3
- An Acryl app runs on AWS Lambda behind API Gateway (REST API and HTTP API), an Application Load Balancer, a Lambda Function URL or VPC Lattice. `handle(app)` from `acrylblends/aws-lambda` turns the app into the Lambda handler: it builds a `Request` from the event, calls `app.fetch`, and returns the result in the shape the event source expects.
4
-
5
- > **Status.** The adapter is the upstream adapter ported with its test suite, and the framework's release check calls it with API Gateway v1 and v2 and ALB events. It has not been deployed to an AWS account by the ACRYL team: try your first deploy with a test stage.
6
-
7
- ## Install and write the handler
8
-
9
- ```sh
10
- npm install acrylblends
11
- ```
12
-
13
- ```ts
14
- import { Acryl } from 'acrylblends'
15
- import { handle } from 'acrylblends/aws-lambda'
16
-
17
- const app = new Acryl()
18
-
19
- app.get('/', (c) => c.text('Hello from Lambda'))
20
- app.get('/json', (c) => c.json({ message: 'Hello JSON' }))
21
-
22
- export const handler = handle(app)
23
- ```
24
-
25
- Bundle the file to one JavaScript file for the `nodejs22.x` (or newer) runtime with your tool of choice (esbuild is common), upload it, and set the handler to `index.handler` (the file name, a dot, the export).
26
-
27
- ## The event and the Lambda context
28
-
29
- Both are in the bindings of the request:
30
-
31
- ```ts
32
- import { Acryl } from 'acrylblends'
33
- import type { LambdaContext, LambdaEvent } from 'acrylblends/aws-lambda'
34
-
35
- type Bindings = {
36
- event: LambdaEvent
37
- lambdaContext: LambdaContext
38
- }
39
-
40
- const app = new Acryl<{ Bindings: Bindings }>()
41
-
42
- app.get('/info', (c) => {
43
- return c.json({
44
- isBase64Encoded: c.env.event.isBase64Encoded,
45
- awsRequestId: c.env.lambdaContext.awsRequestId,
46
- })
47
- })
48
- ```
49
-
50
- `c.env.requestContext` holds the request context of the event (API Gateway, ALB or Lattice). The client's address is available through the [ConnInfo helper](../helpers/conninfo.md): `getConnInfo(c).remote.address`.
51
-
52
- ## Binary responses
53
-
54
- A response is returned base64 encoded when its content type is binary (images, audio, video, PDF, archives and other non-text types) or it has a content encoding such as `gzip`. To decide differently, pass `isContentTypeBinary`:
55
-
56
- ```ts
57
- import { Acryl } from 'acrylblends'
58
- import { defaultIsContentTypeBinary, handle } from 'acrylblends/aws-lambda'
59
-
60
- const app = new Acryl()
61
-
62
- export const handler = handle(app, {
63
- isContentTypeBinary: (contentType) =>
64
- defaultIsContentTypeBinary(contentType) || contentType.startsWith('application/vnd.api+octet'),
65
- })
66
- ```
67
-
68
- ## Response streaming
69
-
70
- On a Function URL with `RESPONSE_STREAM` invoke mode, use `streamHandle` instead of `handle`: the body is written to the response stream as the app produces it, so [streaming helpers](../helpers/streaming.md) (SSE, `stream`, `streamText`) reach the client as they are written. It needs the `awslambda` global, which only the Lambda runtime provides.
71
-
72
- ```ts
73
- import { Acryl } from 'acrylblends'
74
- import { streamHandle } from 'acrylblends/aws-lambda'
75
-
76
- const app = new Acryl()
77
-
78
- export const handler = streamHandle(app)
79
- ```
80
-
81
- ## Try it without AWS
82
-
83
- A handler is a function from an event to a result, so it can be called locally with a sample event:
84
-
85
- ```ts
86
- import { Acryl } from 'acrylblends'
87
- import { handle } from 'acrylblends/aws-lambda'
88
-
89
- const app = new Acryl().get('/', (c) => c.text('Hello from Lambda'))
90
-
91
- const result = await handle(app)({
92
- version: '2.0',
93
- routeKey: '$default',
94
- rawPath: '/',
95
- rawQueryString: '',
96
- headers: { host: 'example.execute-api.eu-west-1.amazonaws.com' },
97
- requestContext: {
98
- accountId: '1',
99
- apiId: 'example',
100
- authentication: null,
101
- authorizer: {},
102
- domainName: 'example.execute-api.eu-west-1.amazonaws.com',
103
- domainPrefix: 'example',
104
- http: { method: 'GET', path: '/', protocol: 'HTTP/1.1', sourceIp: '203.0.113.9', userAgent: 'test' },
105
- requestId: 'r',
106
- routeKey: '$default',
107
- stage: '$default',
108
- time: '25/Oct/2026:12:00:00 +0000',
109
- timeEpoch: 0,
110
- },
111
- body: null,
112
- isBase64Encoded: false,
113
- })
114
- console.log(result.statusCode, result.body) // 200 Hello from Lambda
115
- ```
@@ -1,53 +0,0 @@
1
- # Cloudflare Pages
2
-
3
- Cloudflare Pages Functions run code next to a static site. `handle(app)` from `acrylblends/cloudflare-pages` turns an Acryl app into a Pages Function, and `handleMiddleware` turns a middleware into a Pages middleware.
4
-
5
- > **Status.** The adapter is the upstream adapter ported with its test suite, and the framework's release check calls it with a Pages event context. It has not been deployed to Cloudflare by the ACRYL team. Cloudflare recommends Workers with static assets for new projects (see [Cloudflare Workers](cloudflare-workers.md)).
6
-
7
- ## A catch-all function
8
-
9
- Put the file in `functions/[[route]].ts` so it answers every path that is not a static file:
10
-
11
- ```ts
12
- import { Acryl } from 'acrylblends'
13
- import { handle } from 'acrylblends/cloudflare-pages'
14
-
15
- const app = new Acryl().basePath('/api')
16
-
17
- app.get('/hello', (c) => c.json({ message: 'Hello from Pages Functions' }))
18
-
19
- export const onRequest = handle(app)
20
- ```
21
-
22
- `basePath('/api')` is for a function at `functions/api/[[route]].ts`.
23
-
24
- ## The event context and the bindings
25
-
26
- The Pages event context (`env`, `params`, `data`, `waitUntil`, `next`) is `c.env.eventContext`; the environment bindings are `c.env` as in Workers:
27
-
28
- ```ts
29
- import { Acryl } from 'acrylblends'
30
- import type { EventContext } from 'acrylblends/cloudflare-pages'
31
-
32
- type Bindings = { MY_KV: unknown; eventContext: EventContext }
33
-
34
- const app = new Acryl<{ Bindings: Bindings }>()
35
-
36
- app.get('/params', (c) => c.json(c.env.eventContext.params))
37
- ```
38
-
39
- ## Middleware
40
-
41
- ```ts
42
- import { handleMiddleware } from 'acrylblends/cloudflare-pages'
43
-
44
- // functions/_middleware.ts
45
- export const onRequest = handleMiddleware(async (c, next) => {
46
- await next()
47
- c.res.headers.set('x-checked', 'yes')
48
- })
49
- ```
50
-
51
- ## Static files
52
-
53
- In [advanced mode](https://developers.cloudflare.com/pages/platform/functions/advanced-mode/) (a `_worker.js` that answers every request), `serveStatic()` from `acrylblends/cloudflare-pages` answers a request from the Pages `ASSETS` binding and falls through to the app's not-found handler when there is no such file. The client's address is available through the [ConnInfo helper](../helpers/conninfo.md).