acrylblends 0.6.2 → 0.6.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -1
- package/docs/framework/README.md +3 -2
- package/docs/framework/UPSTREAM.md +1 -1
- package/docs/framework/cordis/acryl-in-a-cordis-app.md +6 -0
- package/docs/framework/getting-started/basic.md +1 -0
- package/docs/framework/getting-started/desktop.md +41 -0
- package/docs/framework/guides/jsx-dom.md +0 -3
- package/docs/framework/guides/jsx.md +24 -3
- package/docs/framework/helpers/css.md +0 -3
- package/docs/framework/helpers/ssg.md +3 -6
- package/docs/framework/middleware/builtin/jsx-renderer.md +0 -3
- package/docs/framework/upstream.json +3 -3
- package/lib/accepts.d.ts +1 -1
- package/lib/acryl-base.d.ts +1 -1
- package/lib/adapter.d.ts +1 -1
- package/lib/{app-BdrVHBlJ.d.ts → app-D8riatvv.d.ts} +1 -1
- package/lib/base-BpQy2Rk7.d.ts +783 -0
- package/lib/base-ddiVmiE7.js +721 -0
- package/lib/basic-auth.d.ts +1 -1
- package/lib/bearer-auth.d.ts +1 -1
- package/lib/body-limit.d.ts +1 -1
- package/lib/cache.d.ts +1 -1
- package/lib/cache.js +4 -4
- package/lib/{client-BHTr318g.js → client-DDLXwhBo.js} +2 -125
- package/lib/client.d.ts +2 -2
- package/lib/client.js +2 -1
- package/lib/combine.d.ts +1 -1
- package/lib/common-D8Z4JRCw.d.ts +46 -0
- package/lib/components-0o0CBYNv.js +268 -0
- package/lib/components-DdI7-ns7.js +24 -0
- package/lib/compress.d.ts +1 -1
- package/lib/conninfo.d.ts +2 -2
- package/lib/constants-BR9jM9BC.js +9 -0
- package/lib/{context-B5Y1lLha.d.ts → context-DS3fYyG-.d.ts} +2 -2
- package/lib/context-DxFdY_un.d.ts +250 -0
- package/lib/context-storage.d.ts +1 -1
- package/lib/{cookie-D9_nQbsM.d.ts → cookie-CCelEqky.d.ts} +1 -1
- package/lib/cookie.d.ts +3 -3
- package/lib/cors.d.ts +1 -1
- package/lib/csrf.d.ts +1 -1
- package/lib/css-D2jb7X8b.js +320 -0
- package/lib/css.d.ts +82 -0
- package/lib/css.js +134 -0
- package/lib/dev.d.ts +2 -2
- package/lib/etag.d.ts +1 -1
- package/lib/factory.d.ts +2 -2
- package/lib/hooks-BMw6BAyP.js +762 -0
- package/lib/html-SllAe0YT.d.ts +46 -0
- package/lib/html.d.ts +1 -1
- package/lib/{index-m12zcmph.d.ts → index-Bb7YJKCq.d.ts} +3 -3
- package/lib/{index-Kqou8Fjh.d.ts → index-BvFh1Gfx.d.ts} +2 -2
- package/lib/index-C850MeBA.d.ts +94 -0
- package/lib/{index-DtEoak1i.d.ts → index-CTy4N7ng.d.ts} +2 -2
- package/lib/index.d.ts +4 -4
- package/lib/ip-restriction.d.ts +2 -2
- package/lib/jsx/dom/client.d.ts +30 -0
- package/lib/jsx/dom/client.js +49 -0
- package/lib/jsx/dom/css.d.ts +84 -0
- package/lib/jsx/dom/css.js +2 -0
- package/lib/jsx/dom/jsx-dev-runtime.d.ts +3 -0
- package/lib/jsx/dom/jsx-dev-runtime.js +2 -0
- package/lib/jsx/dom/jsx-runtime.d.ts +3 -0
- package/lib/jsx/dom/jsx-runtime.js +2 -0
- package/lib/jsx/dom/server.d.ts +105 -0
- package/lib/jsx/dom/server.js +37 -0
- package/lib/jsx/dom.d.ts +5 -0
- package/lib/jsx/dom.js +74 -0
- package/lib/jsx/jsx-dev-runtime.d.ts +6 -0
- package/lib/jsx/jsx-dev-runtime.js +14 -0
- package/lib/jsx/jsx-runtime.d.ts +10 -0
- package/lib/jsx/jsx-runtime.js +30 -0
- package/lib/jsx/streaming.d.ts +2 -0
- package/lib/jsx/streaming.js +2 -0
- package/lib/jsx-dev-runtime-B22O-Npk.d.ts +7 -0
- package/lib/jsx-dev-runtime-D18Y35TI.js +354 -0
- package/lib/jsx-renderer.d.ts +75 -0
- package/lib/jsx-renderer.js +99 -0
- package/lib/jsx-runtime-BVVgDSdq.d.ts +1 -0
- package/lib/jsx.d.ts +3 -0
- package/lib/jsx.js +47 -0
- package/lib/jwk.d.ts +4 -4
- package/lib/{jwt-BA65QhnJ.d.ts → jwt-BARhotDz.d.ts} +1 -1
- package/lib/jwt.d.ts +4 -4
- package/lib/language.d.ts +1 -1
- package/lib/logger.d.ts +1 -1
- package/lib/loopback-only.d.ts +1 -1
- package/lib/method-not-allowed.d.ts +2 -2
- package/lib/method-override.d.ts +2 -2
- package/lib/mount.d.ts +1 -1
- package/lib/node-server/conninfo.d.ts +1 -1
- package/lib/node-server/serve-static.d.ts +1 -1
- package/lib/node-server/serve-static.js +1 -1
- package/lib/node-server.d.ts +1 -1
- package/lib/node-server.js +1 -1
- package/lib/powered-by.d.ts +1 -1
- package/lib/pretty-json.d.ts +1 -1
- package/lib/proxy.d.ts +1 -1
- package/lib/quick.d.ts +1 -1
- package/lib/request-id.d.ts +1 -1
- package/lib/request.d.ts +1 -1
- package/lib/route.d.ts +1 -1
- package/lib/schema-validator.d.ts +1 -1
- package/lib/secure-headers.d.ts +1 -1
- package/lib/{serve-static-Dw_m6KxR.js → serve-static-B14MF1Va.js} +2 -0
- package/lib/serve-static.d.ts +1 -1
- package/lib/ssg-BwjcA-Ge.js +389 -0
- package/lib/ssg.d.ts +156 -0
- package/lib/ssg.js +2 -0
- package/lib/streaming.d.ts +1 -1
- package/lib/testing.d.ts +4 -4
- package/lib/testing.js +1 -1
- package/lib/timeout.d.ts +1 -1
- package/lib/timing.d.ts +1 -1
- package/lib/tiny.d.ts +1 -1
- package/lib/trailing-slash.d.ts +1 -1
- package/lib/{types-ZM9gIiKh.d.ts → types-Dv_nV2cv.d.ts} +1 -1
- package/lib/{types-D9DEXMjE.d.ts → types-Lqx5BxQF.d.ts} +8 -1
- package/lib/{types-Bd29gh2o.d.ts → types-zNxyEpG2.d.ts} +3 -3
- package/lib/types.d.ts +1 -1
- package/lib/utils/body.d.ts +1 -1
- package/lib/utils/cookie.d.ts +1 -1
- package/lib/utils/crypto.d.ts +1 -1
- package/lib/utils/html.d.ts +1 -45
- package/lib/utils/ipaddr.d.ts +1 -1
- package/lib/utils/jwt.d.ts +1 -1
- package/lib/utils/types.d.ts +2 -2
- package/lib/utils-Cx61GFMC.js +125 -0
- package/lib/validator.d.ts +2 -2
- package/lib/ws.d.ts +1 -1
- package/package.json +53 -1
- package/plugins/acryl-inspect/upstream.json +1 -1
- package/plugins/acryl-node-server/upstream.json +1 -1
- package/plugins/acryl-router/src/core/helper/css/common.ts +337 -0
- package/plugins/acryl-router/src/core/helper/css/index.ts +262 -0
- package/plugins/acryl-router/src/core/helper/ssg/index.ts +14 -0
- package/plugins/acryl-router/src/core/helper/ssg/middleware.ts +83 -0
- package/plugins/acryl-router/src/core/helper/ssg/plugins.ts +72 -0
- package/plugins/acryl-router/src/core/helper/ssg/ssg.ts +471 -0
- package/plugins/acryl-router/src/core/helper/ssg/utils.ts +118 -0
- package/plugins/acryl-router/src/core/jsx/base.ts +490 -0
- package/plugins/acryl-router/src/core/jsx/children.ts +20 -0
- package/plugins/acryl-router/src/core/jsx/components.ts +257 -0
- package/plugins/acryl-router/src/core/jsx/constants.ts +6 -0
- package/plugins/acryl-router/src/core/jsx/context.ts +266 -0
- package/plugins/acryl-router/src/core/jsx/dom/client.ts +89 -0
- package/plugins/acryl-router/src/core/jsx/dom/components.ts +39 -0
- package/plugins/acryl-router/src/core/jsx/dom/context.ts +52 -0
- package/plugins/acryl-router/src/core/jsx/dom/css.ts +263 -0
- package/plugins/acryl-router/src/core/jsx/dom/hooks/index.ts +91 -0
- package/plugins/acryl-router/src/core/jsx/dom/index.ts +170 -0
- package/plugins/acryl-router/src/core/jsx/dom/intrinsic-element/components.ts +438 -0
- package/plugins/acryl-router/src/core/jsx/dom/jsx-dev-runtime.ts +23 -0
- package/plugins/acryl-router/src/core/jsx/dom/jsx-runtime.ts +8 -0
- package/plugins/acryl-router/src/core/jsx/dom/render.ts +879 -0
- package/plugins/acryl-router/src/core/jsx/dom/server.ts +76 -0
- package/plugins/acryl-router/src/core/jsx/dom/utils.ts +7 -0
- package/plugins/acryl-router/src/core/jsx/hooks/index.ts +437 -0
- package/plugins/acryl-router/src/core/jsx/index.ts +115 -0
- package/plugins/acryl-router/src/core/jsx/intrinsic-element/common.ts +23 -0
- package/plugins/acryl-router/src/core/jsx/intrinsic-element/components.ts +210 -0
- package/plugins/acryl-router/src/core/jsx/intrinsic-elements.ts +938 -0
- package/plugins/acryl-router/src/core/jsx/jsx-dev-runtime.ts +26 -0
- package/plugins/acryl-router/src/core/jsx/jsx-runtime.ts +51 -0
- package/plugins/acryl-router/src/core/jsx/streaming.ts +231 -0
- package/plugins/acryl-router/src/core/jsx/types.ts +41 -0
- package/plugins/acryl-router/src/core/jsx/utils.ts +202 -0
- package/plugins/acryl-router/src/core/middleware/cache/index.ts +4 -4
- package/plugins/acryl-router/src/core/middleware/jsx-renderer/index.ts +162 -0
- package/plugins/acryl-router/src/core/utils/types.ts +6 -0
- package/plugins/acryl-router/src/helpers/index.ts +2 -0
- package/plugins/acryl-router/src/middleware/index.ts +1 -0
- package/plugins/acryl-router/upstream.json +3 -3
- package/plugins/acryl-router-http/upstream.json +1 -1
- package/plugins/acryl-state/upstream.json +1 -1
- package/plugins/desktop/upstream.json +1 -1
- package/plugins/desktop-web/upstream.json +1 -1
- package/plugins/extensions/resolve.ts +4 -0
- package/plugins/save/plugin.json +1 -1
- package/shared/AGENTS.core.md +4 -0
- package/templates/agent/tsconfig.json +7 -1
- package/templates/todo/upstream.json +1 -1
- package/plugins/acryl-inspect/tests/report.spec.ts +0 -69
- package/plugins/acryl-inspect/tests/service.spec.ts +0 -121
- package/plugins/acryl-node-server/tests/adapter/app.ts +0 -76
- package/plugins/acryl-node-server/tests/adapter/assets/.static/plain.txt +0 -1
- package/plugins/acryl-node-server/tests/adapter/assets/favicon.ico +0 -0
- package/plugins/acryl-node-server/tests/adapter/assets/secret.txt +0 -1
- package/plugins/acryl-node-server/tests/adapter/assets/static/acryl.html +0 -1
- package/plugins/acryl-node-server/tests/adapter/assets/static/admin/secret.txt +0 -1
- package/plugins/acryl-node-server/tests/adapter/assets/static/data.json +0 -5
- package/plugins/acryl-node-server/tests/adapter/assets/static/extensionless +0 -1
- package/plugins/acryl-node-server/tests/adapter/assets/static/foo..bar.txt +0 -0
- package/plugins/acryl-node-server/tests/adapter/assets/static/index.html +0 -1
- package/plugins/acryl-node-server/tests/adapter/assets/static/plain.txt +0 -1
- package/plugins/acryl-node-server/tests/adapter/assets/static-with-context-path/plain.txt +0 -1
- package/plugins/acryl-node-server/tests/adapter/assets/static-with-precompressed/hello.bin +0 -1
- package/plugins/acryl-node-server/tests/adapter/assets/static-with-precompressed/hello.bin.br +0 -1
- package/plugins/acryl-node-server/tests/adapter/assets/static-with-precompressed/hello.txt +0 -1
- package/plugins/acryl-node-server/tests/adapter/assets/static-with-precompressed/hello.txt.br +0 -1
- package/plugins/acryl-node-server/tests/adapter/assets/static-with-precompressed/hello.txt.zst +0 -1
- package/plugins/acryl-node-server/tests/adapter/conninfo.test.ts +0 -34
- package/plugins/acryl-node-server/tests/adapter/content-length.test.ts +0 -248
- package/plugins/acryl-node-server/tests/adapter/early-hints.test.ts +0 -457
- package/plugins/acryl-node-server/tests/adapter/fixtures/keys/agent1-cert.pem +0 -23
- package/plugins/acryl-node-server/tests/adapter/fixtures/keys/agent1-key.pem +0 -27
- package/plugins/acryl-node-server/tests/adapter/headers.test.ts +0 -252
- package/plugins/acryl-node-server/tests/adapter/helpers/request.ts +0 -190
- package/plugins/acryl-node-server/tests/adapter/listener.test.ts +0 -727
- package/plugins/acryl-node-server/tests/adapter/request-client-disconnect.test.ts +0 -189
- package/plugins/acryl-node-server/tests/adapter/request.test.ts +0 -1230
- package/plugins/acryl-node-server/tests/adapter/response.test.ts +0 -285
- package/plugins/acryl-node-server/tests/adapter/serve-static.test.ts +0 -849
- package/plugins/acryl-node-server/tests/adapter/server-socket.test.ts +0 -790
- package/plugins/acryl-node-server/tests/adapter/server.test.ts +0 -1312
- package/plugins/acryl-node-server/tests/adapter/setup.ts +0 -16
- package/plugins/acryl-node-server/tests/adapter/url.test.ts +0 -76
- package/plugins/acryl-node-server/tests/adapter/utils/response.test.ts +0 -23
- package/plugins/acryl-node-server/tests/adapter/utils/stream.test.ts +0 -75
- package/plugins/acryl-node-server/tests/adapter/utils.test.ts +0 -235
- package/plugins/acryl-node-server/tests/adapter/websocket.test.ts +0 -260
- package/plugins/acryl-node-server/tests/server.spec.ts +0 -141
- package/plugins/acryl-router/src/core/app.test.ts +0 -3833
- package/plugins/acryl-router/src/core/client/client.test.ts +0 -2313
- package/plugins/acryl-router/src/core/client/types.test.ts +0 -149
- package/plugins/acryl-router/src/core/client/utils.test.ts +0 -405
- package/plugins/acryl-router/src/core/compose.test.ts +0 -751
- package/plugins/acryl-router/src/core/context.test.ts +0 -629
- package/plugins/acryl-router/src/core/helper/accepts/accepts.test.ts +0 -344
- package/plugins/acryl-router/src/core/helper/adapter/index.test.ts +0 -55
- package/plugins/acryl-router/src/core/helper/cookie/index.test.ts +0 -510
- package/plugins/acryl-router/src/core/helper/dev/index.test.ts +0 -181
- package/plugins/acryl-router/src/core/helper/factory/index.test.ts +0 -434
- package/plugins/acryl-router/src/core/helper/html/index.test.ts +0 -78
- package/plugins/acryl-router/src/core/helper/proxy/index.test.ts +0 -356
- package/plugins/acryl-router/src/core/helper/route/index.test.ts +0 -259
- package/plugins/acryl-router/src/core/helper/streaming/stream.test.ts +0 -128
- package/plugins/acryl-router/src/core/helper/streaming/text.test.ts +0 -34
- package/plugins/acryl-router/src/core/helper/testing/index.test.ts +0 -42
- package/plugins/acryl-router/src/core/helper/websocket/index.test.ts +0 -124
- package/plugins/acryl-router/src/core/http-exception.test.ts +0 -45
- package/plugins/acryl-router/src/core/middleware/basic-auth/index.test.ts +0 -434
- package/plugins/acryl-router/src/core/middleware/bearer-auth/index.test.ts +0 -1018
- package/plugins/acryl-router/src/core/middleware/body-limit/index.test.ts +0 -273
- package/plugins/acryl-router/src/core/middleware/cache/index.test.ts +0 -1211
- package/plugins/acryl-router/src/core/middleware/combine/index.test.ts +0 -355
- package/plugins/acryl-router/src/core/middleware/compress/index.test.ts +0 -535
- package/plugins/acryl-router/src/core/middleware/context-storage/index.test.ts +0 -43
- package/plugins/acryl-router/src/core/middleware/cors/index.test.ts +0 -532
- package/plugins/acryl-router/src/core/middleware/csrf/index.test.ts +0 -534
- package/plugins/acryl-router/src/core/middleware/etag/digest.test.ts +0 -21
- package/plugins/acryl-router/src/core/middleware/etag/index.test.ts +0 -503
- package/plugins/acryl-router/src/core/middleware/ip-restriction/index.test.ts +0 -217
- package/plugins/acryl-router/src/core/middleware/jwk/index.test.ts +0 -1135
- package/plugins/acryl-router/src/core/middleware/jwk/keys.test.json +0 -48
- package/plugins/acryl-router/src/core/middleware/jwt/index.test.ts +0 -802
- package/plugins/acryl-router/src/core/middleware/language/index.test.ts +0 -552
- package/plugins/acryl-router/src/core/middleware/logger/index.test.ts +0 -204
- package/plugins/acryl-router/src/core/middleware/method-not-allowed/index.test.ts +0 -292
- package/plugins/acryl-router/src/core/middleware/method-override/index.test.ts +0 -221
- package/plugins/acryl-router/src/core/middleware/mount/index.test.ts +0 -334
- package/plugins/acryl-router/src/core/middleware/powered-by/index.test.ts +0 -37
- package/plugins/acryl-router/src/core/middleware/pretty-json/index.test.ts +0 -218
- package/plugins/acryl-router/src/core/middleware/request-id/index.test.ts +0 -168
- package/plugins/acryl-router/src/core/middleware/secure-headers/index.test.ts +0 -671
- package/plugins/acryl-router/src/core/middleware/serve-static/index.test.ts +0 -450
- package/plugins/acryl-router/src/core/middleware/serve-static/path.test.ts +0 -50
- package/plugins/acryl-router/src/core/middleware/timeout/index.test.ts +0 -70
- package/plugins/acryl-router/src/core/middleware/timing/index.test.ts +0 -310
- package/plugins/acryl-router/src/core/middleware/trailing-slash/index.test.ts +0 -381
- package/plugins/acryl-router/src/core/preset/quick.test.ts +0 -42
- package/plugins/acryl-router/src/core/preset/tiny.test.ts +0 -42
- package/plugins/acryl-router/src/core/request.test.ts +0 -751
- package/plugins/acryl-router/src/core/router/common.case.test.ts +0 -1132
- package/plugins/acryl-router/src/core/router/linear-router/router.test.ts +0 -80
- package/plugins/acryl-router/src/core/router/pattern-router/router.test.ts +0 -46
- package/plugins/acryl-router/src/core/router/reg-exp-router/prepared-router.test.ts +0 -154
- package/plugins/acryl-router/src/core/router/reg-exp-router/router.test.ts +0 -265
- package/plugins/acryl-router/src/core/router/smart-router/router.test.ts +0 -13
- package/plugins/acryl-router/src/core/router/trie-router/node.test.ts +0 -896
- package/plugins/acryl-router/src/core/router/trie-router/router.test.ts +0 -8
- package/plugins/acryl-router/src/core/types.test.ts +0 -4134
- package/plugins/acryl-router/src/core/utils/accept.test.ts +0 -299
- package/plugins/acryl-router/src/core/utils/basic-auth.test.ts +0 -56
- package/plugins/acryl-router/src/core/utils/body.test.ts +0 -496
- package/plugins/acryl-router/src/core/utils/buffer.test.ts +0 -147
- package/plugins/acryl-router/src/core/utils/color.test.ts +0 -23
- package/plugins/acryl-router/src/core/utils/concurrent.test.ts +0 -69
- package/plugins/acryl-router/src/core/utils/cookie.test.ts +0 -460
- package/plugins/acryl-router/src/core/utils/crypto.test.ts +0 -43
- package/plugins/acryl-router/src/core/utils/encode.test.ts +0 -61
- package/plugins/acryl-router/src/core/utils/filepath.test.ts +0 -78
- package/plugins/acryl-router/src/core/utils/html.test.ts +0 -16
- package/plugins/acryl-router/src/core/utils/ipaddr.test.ts +0 -149
- package/plugins/acryl-router/src/core/utils/jwt/jwa.test.ts +0 -86
- package/plugins/acryl-router/src/core/utils/jwt/jwt.test.ts +0 -1788
- package/plugins/acryl-router/src/core/utils/mime.test.ts +0 -64
- package/plugins/acryl-router/src/core/utils/stream.test.ts +0 -212
- package/plugins/acryl-router/src/core/utils/types.test.ts +0 -295
- package/plugins/acryl-router/src/core/utils/url.test.ts +0 -384
- package/plugins/acryl-router/src/core/validator/utils.test.ts +0 -82
- package/plugins/acryl-router/src/core/validator/validator.test.ts +0 -1488
- package/plugins/acryl-router/tests/docs-examples.spec.ts +0 -152
- package/plugins/acryl-router/tests/live-install.spec.ts +0 -64
- package/plugins/acryl-router/tests/loader.spec.ts +0 -72
- package/plugins/acryl-router/tests/loopback-only.spec.ts +0 -80
- package/plugins/acryl-router/tests/no-dom/consumer.ts +0 -11
- package/plugins/acryl-router/tests/no-dom/tsconfig.json +0 -13
- package/plugins/acryl-router/tests/service.spec.ts +0 -426
- package/plugins/acryl-router/tests/shadow-state.spec.ts +0 -79
- package/plugins/acryl-router-http/tests/adapter.spec.ts +0 -174
- package/plugins/acryl-router-http/tests/stream.spec.ts +0 -133
- package/plugins/acryl-router-http/tests/surfaces.spec.ts +0 -101
- package/plugins/acryl-state/src/react.ts +0 -11
- package/plugins/acryl-state/tests/cell.spec.ts +0 -71
- package/plugins/acryl-state/tests/react.spec.ts +0 -39
- package/plugins/acryl-state/tests/service.spec.ts +0 -132
|
@@ -1,285 +0,0 @@
|
|
|
1
|
-
import { createServer } from 'node:http'
|
|
2
|
-
import type { Server } from 'node:http'
|
|
3
|
-
import type { AddressInfo } from 'node:net'
|
|
4
|
-
import { GlobalResponse, Response as LightweightResponse, cacheKey } from '../../src/adapter/response.ts'
|
|
5
|
-
|
|
6
|
-
Object.defineProperty(global, 'Response', {
|
|
7
|
-
value: LightweightResponse,
|
|
8
|
-
})
|
|
9
|
-
|
|
10
|
-
class NextResponse extends LightweightResponse {}
|
|
11
|
-
|
|
12
|
-
class UpperCaseStream extends TransformStream {
|
|
13
|
-
constructor() {
|
|
14
|
-
super({
|
|
15
|
-
transform(chunk, controller) {
|
|
16
|
-
controller.enqueue(
|
|
17
|
-
new TextEncoder().encode(new TextDecoder().decode(chunk).toString().toUpperCase())
|
|
18
|
-
)
|
|
19
|
-
},
|
|
20
|
-
})
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
describe('Response', () => {
|
|
25
|
-
let server: Server
|
|
26
|
-
let port: number
|
|
27
|
-
beforeAll(
|
|
28
|
-
async () =>
|
|
29
|
-
new Promise<void>((resolve) => {
|
|
30
|
-
server = createServer((_, res) => {
|
|
31
|
-
res.writeHead(200, {
|
|
32
|
-
'Content-Type': 'application/json charset=UTF-8',
|
|
33
|
-
})
|
|
34
|
-
res.end(JSON.stringify({ status: 'ok' }))
|
|
35
|
-
})
|
|
36
|
-
.listen(0)
|
|
37
|
-
.on('listening', () => {
|
|
38
|
-
port = (server.address() as AddressInfo).port
|
|
39
|
-
resolve()
|
|
40
|
-
})
|
|
41
|
-
})
|
|
42
|
-
)
|
|
43
|
-
|
|
44
|
-
afterAll(() => {
|
|
45
|
-
server.close()
|
|
46
|
-
})
|
|
47
|
-
|
|
48
|
-
it('Should be overrode by Response', () => {
|
|
49
|
-
expect(Response).not.toBe(GlobalResponse)
|
|
50
|
-
})
|
|
51
|
-
|
|
52
|
-
it('Compatibility with standard Response object', async () => {
|
|
53
|
-
// response name not changed
|
|
54
|
-
expect(Response.name).toEqual('Response')
|
|
55
|
-
|
|
56
|
-
// response prototype chain not changed
|
|
57
|
-
expect(new Response()).toBeInstanceOf(GlobalResponse)
|
|
58
|
-
|
|
59
|
-
// `fetch()` and `Response` are not changed
|
|
60
|
-
const fetchRes = await fetch(`http://localhost:${port}`)
|
|
61
|
-
expect(new Response()).toBeInstanceOf(fetchRes.constructor)
|
|
62
|
-
const resJson = await fetchRes.json()
|
|
63
|
-
expect(fetchRes.headers.get('content-type')).toEqual('application/json charset=UTF-8')
|
|
64
|
-
expect(resJson).toEqual({ status: 'ok' })
|
|
65
|
-
|
|
66
|
-
// can only use new operator
|
|
67
|
-
expect(() => {
|
|
68
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
69
|
-
;(Response as any)()
|
|
70
|
-
}).toThrow()
|
|
71
|
-
|
|
72
|
-
// support Response static method
|
|
73
|
-
expect(Response.error).toEqual(expect.any(Function))
|
|
74
|
-
expect(Response.json).toEqual(expect.any(Function))
|
|
75
|
-
expect(Response.redirect).toEqual(expect.any(Function))
|
|
76
|
-
|
|
77
|
-
// support other class to extends from Response
|
|
78
|
-
expect(new NextResponse()).toBeInstanceOf(Response)
|
|
79
|
-
})
|
|
80
|
-
|
|
81
|
-
it('Should not lose header data', async () => {
|
|
82
|
-
const parentResponse = new Response('OK', {
|
|
83
|
-
headers: {
|
|
84
|
-
'content-type': 'application/json',
|
|
85
|
-
},
|
|
86
|
-
})
|
|
87
|
-
const childResponse = new Response('OK', parentResponse)
|
|
88
|
-
parentResponse.headers.delete('content-type')
|
|
89
|
-
expect(childResponse.headers.get('content-type')).toEqual('application/json')
|
|
90
|
-
})
|
|
91
|
-
|
|
92
|
-
it('Should preserve mutated headers when cloned before body access', () => {
|
|
93
|
-
const parentResponse = new Response('hello', {
|
|
94
|
-
status: 200,
|
|
95
|
-
headers: { 'content-type': 'application/json' },
|
|
96
|
-
})
|
|
97
|
-
parentResponse.headers.append('set-cookie', 'session=abc; Path=/; HttpOnly')
|
|
98
|
-
|
|
99
|
-
const childResponse = new Response('hello', parentResponse)
|
|
100
|
-
expect(childResponse.headers.get('set-cookie')).toEqual('session=abc; Path=/; HttpOnly')
|
|
101
|
-
expect(childResponse.headers.get('content-type')).toEqual('application/json')
|
|
102
|
-
})
|
|
103
|
-
|
|
104
|
-
it('Should preserve mutated headers when cloned after body access', () => {
|
|
105
|
-
const parentResponse = new Response('hello', {
|
|
106
|
-
status: 200,
|
|
107
|
-
headers: { 'content-type': 'application/json' },
|
|
108
|
-
})
|
|
109
|
-
parentResponse.headers.append('set-cookie', 'session=xyz; Path=/; HttpOnly')
|
|
110
|
-
|
|
111
|
-
const childResponse = new Response(parentResponse.body, parentResponse)
|
|
112
|
-
expect(childResponse.headers.get('set-cookie')).toEqual('session=xyz; Path=/; HttpOnly')
|
|
113
|
-
expect(childResponse.headers.get('content-type')).toEqual('application/json')
|
|
114
|
-
})
|
|
115
|
-
|
|
116
|
-
it('Should preserve status and statusText when headers are mutated', () => {
|
|
117
|
-
const res = new Response('hello', {
|
|
118
|
-
status: 201,
|
|
119
|
-
statusText: 'Created',
|
|
120
|
-
headers: { 'content-type': 'application/json' },
|
|
121
|
-
})
|
|
122
|
-
res.headers.append('set-cookie', 'session=abc; Path=/; HttpOnly')
|
|
123
|
-
|
|
124
|
-
expect(res.status).toEqual(201)
|
|
125
|
-
expect(res.statusText).toEqual('Created')
|
|
126
|
-
expect(res.headers.get('set-cookie')).toEqual('session=abc; Path=/; HttpOnly')
|
|
127
|
-
})
|
|
128
|
-
|
|
129
|
-
it('Should preserve status from a native Response after materialization', () => {
|
|
130
|
-
const nativeRedirect = new GlobalResponse(null, {
|
|
131
|
-
status: 302,
|
|
132
|
-
headers: { location: 'https://example.com/' },
|
|
133
|
-
})
|
|
134
|
-
const res = new Response(nativeRedirect.body, nativeRedirect)
|
|
135
|
-
|
|
136
|
-
expect(res.status).toEqual(302)
|
|
137
|
-
void res.body
|
|
138
|
-
expect(res.status).toEqual(302)
|
|
139
|
-
expect(res.headers.get('location')).toEqual('https://example.com/')
|
|
140
|
-
})
|
|
141
|
-
|
|
142
|
-
it('Should copy headers when rebuilding a response from fetch()', async () => {
|
|
143
|
-
const upstream = await fetch(`http://localhost:${port}`)
|
|
144
|
-
const rebuilt = new Response(upstream.body, upstream)
|
|
145
|
-
rebuilt.headers.set('x-test', '1')
|
|
146
|
-
expect(rebuilt.headers.get('x-test')).toEqual('1')
|
|
147
|
-
expect(rebuilt.headers.get('content-type')).toEqual('application/json charset=UTF-8')
|
|
148
|
-
expect(upstream.headers.get('x-test')).toBeNull()
|
|
149
|
-
expect(await rebuilt.json()).toEqual({ status: 'ok' })
|
|
150
|
-
})
|
|
151
|
-
|
|
152
|
-
it('Nested constructors should not cause an error even if ReadableStream is specified', async () => {
|
|
153
|
-
const stream = new Response('acryl').body
|
|
154
|
-
const parentResponse = new Response(stream)
|
|
155
|
-
const upperCaseStream = new UpperCaseStream()
|
|
156
|
-
const childResponse = new Response(
|
|
157
|
-
parentResponse.body!.pipeThrough(upperCaseStream),
|
|
158
|
-
parentResponse
|
|
159
|
-
)
|
|
160
|
-
expect(await childResponse.text()).toEqual('ACRYL')
|
|
161
|
-
})
|
|
162
|
-
|
|
163
|
-
describe('Response.json', () => {
|
|
164
|
-
it('should return 200 with application/json content-type by default', () => {
|
|
165
|
-
const res = Response.json({ hello: 'world' })
|
|
166
|
-
expect(res.status).toBe(200)
|
|
167
|
-
expect(res.headers.get('content-type')).toBe('application/json')
|
|
168
|
-
})
|
|
169
|
-
|
|
170
|
-
it('should serialize data correctly', async () => {
|
|
171
|
-
const data = { hello: 'world', num: 42, arr: [1, 2, 3] }
|
|
172
|
-
const res = Response.json(data)
|
|
173
|
-
expect(await res.json()).toEqual(data)
|
|
174
|
-
})
|
|
175
|
-
|
|
176
|
-
it('should use custom status from init', () => {
|
|
177
|
-
const res = Response.json({ error: 'not found' }, { status: 404 })
|
|
178
|
-
expect(res.status).toBe(404)
|
|
179
|
-
})
|
|
180
|
-
|
|
181
|
-
it('should preserve statusText from init', () => {
|
|
182
|
-
const res = Response.json({ error: 'not found' }, { status: 404, statusText: 'Not Found' })
|
|
183
|
-
expect(res.statusText).toBe('Not Found')
|
|
184
|
-
})
|
|
185
|
-
|
|
186
|
-
it('should preserve custom content-type from init headers', () => {
|
|
187
|
-
const res = Response.json(
|
|
188
|
-
{ data: 'test' },
|
|
189
|
-
{ headers: { 'content-type': 'application/vnd.api+json' } }
|
|
190
|
-
)
|
|
191
|
-
expect(res.headers.get('content-type')).toBe('application/vnd.api+json')
|
|
192
|
-
})
|
|
193
|
-
|
|
194
|
-
it('should set application/json when init headers do not include content-type', () => {
|
|
195
|
-
const res = Response.json({ data: 'test' }, { headers: { 'x-custom': 'value' } })
|
|
196
|
-
expect(res.headers.get('content-type')).toBe('application/json')
|
|
197
|
-
expect(res.headers.get('x-custom')).toBe('value')
|
|
198
|
-
})
|
|
199
|
-
|
|
200
|
-
it('should return a LightweightResponse with cacheKey set for the fast path', () => {
|
|
201
|
-
const res = Response.json({ ok: true })
|
|
202
|
-
expect(res).toBeInstanceOf(LightweightResponse)
|
|
203
|
-
expect(cacheKey in res).toBe(true)
|
|
204
|
-
})
|
|
205
|
-
|
|
206
|
-
it('should throw for non-serializable data', () => {
|
|
207
|
-
const circ: Record<string, unknown> = {}
|
|
208
|
-
circ.self = circ
|
|
209
|
-
expect(() => Response.json(circ)).toThrow(TypeError)
|
|
210
|
-
})
|
|
211
|
-
})
|
|
212
|
-
|
|
213
|
-
describe('Response.redirect', () => {
|
|
214
|
-
it('should return a 302 redirect by default', () => {
|
|
215
|
-
const res = Response.redirect('https://example.com')
|
|
216
|
-
expect(res.status).toBe(302)
|
|
217
|
-
expect(res.headers.get('location')).toBe('https://example.com')
|
|
218
|
-
})
|
|
219
|
-
|
|
220
|
-
it('should use a custom redirect status', () => {
|
|
221
|
-
const res = Response.redirect('https://example.com/new', 301)
|
|
222
|
-
expect(res.status).toBe(301)
|
|
223
|
-
})
|
|
224
|
-
|
|
225
|
-
it('should accept a URL object', () => {
|
|
226
|
-
const res = Response.redirect(new URL('https://example.com/path'))
|
|
227
|
-
expect(res.headers.get('location')).toBe('https://example.com/path')
|
|
228
|
-
})
|
|
229
|
-
|
|
230
|
-
it('should throw for invalid status codes', () => {
|
|
231
|
-
expect(() => Response.redirect('https://example.com', 200)).toThrow(RangeError)
|
|
232
|
-
})
|
|
233
|
-
|
|
234
|
-
it('should return a LightweightResponse with cacheKey set for the fast path', () => {
|
|
235
|
-
const res = Response.redirect('https://example.com')
|
|
236
|
-
expect(res).toBeInstanceOf(LightweightResponse)
|
|
237
|
-
expect(cacheKey in res).toBe(true)
|
|
238
|
-
})
|
|
239
|
-
})
|
|
240
|
-
|
|
241
|
-
describe('Fallback to GlobalResponse object', () => {
|
|
242
|
-
it('Should return value from internal cache', () => {
|
|
243
|
-
const res = new Response('Hello! Node!')
|
|
244
|
-
res.headers.set('x-test', 'test')
|
|
245
|
-
expect(res.headers.get('x-test')).toEqual('test')
|
|
246
|
-
expect(res.status).toEqual(200)
|
|
247
|
-
expect(res.ok).toEqual(true)
|
|
248
|
-
expect(cacheKey in res).toBe(true)
|
|
249
|
-
})
|
|
250
|
-
|
|
251
|
-
it('Should return value from generated GlobalResponse object', () => {
|
|
252
|
-
const res = new Response('Hello! Node!', {
|
|
253
|
-
statusText: 'OK',
|
|
254
|
-
})
|
|
255
|
-
expect(res.statusText).toEqual('OK')
|
|
256
|
-
expect(cacheKey in res).toBe(false)
|
|
257
|
-
})
|
|
258
|
-
})
|
|
259
|
-
|
|
260
|
-
describe('util.inspect', () => {
|
|
261
|
-
it('should show a lightweight response summary before native Response creation', () => {
|
|
262
|
-
const { inspect } = require('node:util')
|
|
263
|
-
const res = new Response('Hello')
|
|
264
|
-
|
|
265
|
-
expect(() => inspect(res)).not.toThrow()
|
|
266
|
-
const result = inspect(res)
|
|
267
|
-
expect(result).toContain('Response (lightweight)')
|
|
268
|
-
expect(result).toContain('200')
|
|
269
|
-
expect(result).toContain('nativeResponse: undefined')
|
|
270
|
-
expect(res).toBeInstanceOf(GlobalResponse)
|
|
271
|
-
})
|
|
272
|
-
|
|
273
|
-
it('should include the native Response after cache creation', async () => {
|
|
274
|
-
const { inspect } = require('node:util')
|
|
275
|
-
const res = new Response('Hello', { statusText: 'OK' })
|
|
276
|
-
|
|
277
|
-
// Access statusText to trigger native Response creation
|
|
278
|
-
res.statusText
|
|
279
|
-
|
|
280
|
-
const result = inspect(res)
|
|
281
|
-
expect(result).toContain('Response (lightweight)')
|
|
282
|
-
expect(result).toContain('nativeResponse: Response {')
|
|
283
|
-
})
|
|
284
|
-
})
|
|
285
|
-
})
|