0
0
mirror of https://github.com/honojs/hono.git synced 2024-12-01 10:51:01 +00:00
Commit Graph

132 Commits

Author SHA1 Message Date
Yusuke Wada
74287a82cc
feat: introduce css Helper (#1850)
* feat: introduce CSS Helper

* shorten

* feat(css): Implement css helper with callback (#1858)

* feat(css): Implement css helper with callback

* feat(css): add keyframes and pseudo selectors support

* fix(css): Specify missing "context" argument in resolveCallback()

* feat(css): use WeakMap instead of Map, to avoid memory leak

* feat(css): improve CSS helper

* fix(css): fix formatting and types in css helper

* chore: denoify

* docs(css): add experimental flag to css helper

* feat(css): Enable to embed sub `css`.

* fix(css): propagate selector to parent class

* feat(css): Use Record again for usedClassNameData

* feat(css): escape only close tag "</...>", not all slashes. we can use url() without escaping.

* fix(css): embedded `css` must have ";"

* Fix format.

* feat(css): add cx() helper

`cx()` is a helper function to combine multiple css classes.
This function is compatible with `cx()` in @emotion/css.

* feat(css): ignore boolean, null, and undefined values as same as jsx

* chore: denoify

* feat(css): enable to use cx() with external class name

* refactor(css): use symbols for keys

* chore: denoify

---------

Co-authored-by: Taku Amano <taku@taaas.jp>
2024-01-02 22:47:42 +09:00
Yusuke Wada
bfd7583cd3
fix(types): JSONParsed supports interface and Date etc. (#1853)
* fix(types): `JSONParsed` supports interface and `Date` etc.

* denoify

* supports bigint as never

* denoify
2024-01-01 18:23:12 +09:00
Yusuke Wada
d41c17ad0b
fix(req): avoid error when req.queries() receives unexpected values (#1862)
* wip

* fix(req): avoid error when `req.queries()` receives unexpected values

* denoify
2023-12-27 06:41:48 +09:00
Taku Amano
1567438549
feat(helper/html): Support Promise<string | HtmlEscapedString> in html tagged template literals (#1826)
* feat(helper/html): Support Promise<string | HtmlEscapedString> in html tagged template literals

* chore: denoify

* test: fix lint error
2023-12-17 07:35:34 +09:00
Yusuke Wada
af8d16b6db
fix(context): c.json() allows object and returns JSONParsed<T> (#1806)
* fix(context): `c.json()` allows object and returns JSONParsed<T>

* denoify
2023-12-13 09:01:34 +09:00
Taku Amano
cd6c488b76
feat(jsx): Introduce ErrorBoundary component (#1714)
* feat(jsx/streaming): Support Suspense in non-streaming mode.

* feat(jsx): Introduce ErrorBoundary component.

* chore: denoify

* feat: Support ErrorBoundary[fallbackRender].

* chore: denoify

* Rename utils.ts to components.ts

* refactor: export the ErrorBoundary component from the top level.

* fix: tweaks `resolveStream` to work with nested components

* refactor: Import `childrenToString` from `components.ts`

* fix: return immediately if the element is not found

* test: add test for jsx/components

* fix: run `npm run format:fix`

* chore: denoify
2023-11-21 18:05:05 +09:00
Taku Amano
fa1abf637b
fix(jsx/streaming): Fixed a problem when multiple children are added directly under Suspense. (#1665)
* fix(jsx/streaming): Fixed a problem when multiple children are added directly under Suspense.

* refactor: Use `raw()` helper as constructor of `HtmlEscapedString`.

* chore: denoify.
2023-11-09 14:37:47 +09:00
Taku Amano
fedeb3d696
feat: Introduce streaming API with Suspense and use. (#1630)
* feat(jsx): Support async component.

* chore: denoify

* feat: Support nested async components.

* chore: denoify

* Remove unintended file from commit.

* test(jsx): Add test for html tagged template strings.

* feat: Introduce streaming API with `Suspense` and `use`.

* chore: denoify

* "use" receives only Promise.

* feat: Support multiple calls and nested calls to "use".

* refactor: tweaks replacement script.

* test: Add test for replacement result of streaming

* chore: denoify

* test: Add test "Complex fallback content"

* refactor: Add "typescript-eslint/no-explicit-any".

* Use jsdom instead of happy-dom due to ci failure.

* test: update test data for suspense.

* refactor: Remove excessive exports

* refactor: Changed initialization of `useContexts[]` to clarify intent.

* perf: improve `renderToReadableStream()` performance.

* chore: denoify

* pref: Shortened the output JS a bit.

* pref: Delete unneeded condition

* docs(jsx/streaming): Add `@experimental` flag to streaming API.

* fix(jsx/streadming): fix loop when using fullfilled Promise with null or undefined.

* fix(jsx/streaming): Catch unhandledRejection to avoid streaming not being closed.

* chore(jsx/streaming): Add entries for jsx/streaming to package.json.

* chore: denoify

* feat(jsx/streaming): Support the Async Component inside Suspense.

* chore: denoify

* feat(jsx/streaming): remove implementation of `use()`.
2023-11-07 07:09:04 +09:00
Yusuke Wada
48dc87dfd5
fix(utils/filepath): filepath supports Windows (#1642) 2023-11-04 06:56:14 +09:00
Andrew
a654842d56
fix(client/types): make args param optional if the input has no required keys (#1618)
* feat(types.ts): add RequiredKeysOf and HasRequiredKeys utility types

* fix(client/types.ts): make args param optional if input has no required keys

* chore(types.ts): move RequiredKeysOf and HasRequiredKeys types to utils/types.ts

* chore(types.ts): rewrite ClientRequest type

* chore(types.ts): fix formatting

* chore(types.ts): denoify
2023-10-26 18:07:25 +09:00
Sor4chi
e4f7f971a8
feat: parseBody() for multi values' field (#1528)
* feat: add "all" option to parseBody

* feat: add parseBody option to `req.parseBody()`

* test: add single value (override) and multiple value cases to praseBody

* test: split parse case of parseBody

* chore: denoify

* refactor(body): make clear parseBody logic

* chore: denoify

* fix: single value of the field should not be parsed to array

* test: add some case of single value's field in "all" option

* chore: denoify
2023-10-05 16:33:56 +09:00
Yusuke Wada
c7fc8a033a
fix(utils/buffer): fix bufferToFormData() (#1500)
* fix(utils/buffer): fix `bufferToFormData()`

* denoify
2023-09-23 23:46:09 +09:00
Yusuke Wada
3eb52bc102
Merge pull request #1489 from honojs/next 2023-09-21 11:44:56 +09:00
Nico Plyley
d6478aac6c
fix(jwt): incorrect error message (#1487) 2023-09-21 06:14:48 +09:00
Yusuke Wada
6c374623ed Merge branch 'main' into next 2023-09-21 00:32:01 +09:00
Yusuke Wada
2c47bf5890
fix(context): fix c.stream() and c.streamText() matters (#1482)
* fix(context): fix `c.stream()` and `c.streamText()`

* denoify

* remove the not used line
2023-09-20 22:53:30 +09:00
Yusuke Wada
11f2fe53ad
fix(jwt): avoid using enum (#1485)
* fix(jwt): avoid using `enum`

* denoify
2023-09-20 22:48:14 +09:00
Bakunya | Kirisaki Rem
f25ae8aa5c
feat: Improvement of Parse Body (#1461)
* feat: improvement of parse body

* feat: add test for improvement of parse body commit

* chore: denoify and fix:format

* rm: test file on deno_dist

---------

Co-authored-by: irvan hakim <irvanhakim.dev@gmail.com>
2023-09-17 01:09:25 +09:00
CyberFlame
d64cbdb05a feat: Add CHIP support - supersedes #1198 (#1456)
Signed-off-by: CyberFlame <cyberflameu@gmail.com>
Co-authored-by: David Manouchehri <david.manouchehri@ai.moda>
2023-09-17 00:57:26 +09:00
Sor4chi
31f0605209 feat: Add c.stream() (#1437)
* feat: implement stream api utility-class

* test: write the test of StreamApi

* feat: implement `c.stream` to context

* test: write the test of `c.stream()`

* chore: denoify

* fix: extend for bytes, remove buffer system, add pipe and log interface

* test: update test about log, pipe, etc... for streaming API

* feat: extend textStream interface, remove utf-8 content-type

* test: add test about `c.textStream`

* refactor: update some args name

* chore: denoify

* fix: for deno, removed the optional parameter of `write` and `writeln`

* chore: denoify

* feat: add charset for textStream content-type header

* fix: rename textStream to streamText

* fix: reuse stream in streamText for bundle size

* feat: add `stream.wait()` api

* chore: denoify

* fix: rename `stream.wait` to `stream.sleep`

* test: use `stream.sleep` for waiting

* refactor: remove `stream.log`

* fix: remove preHeader from `c.stream()` and use `transfer-encoding` only `c.streamText()`

* chore: denoify

* refactoring: remove preHeader initialize

* test: reduce sleep duration

* chore: denoify

Co-authored-by: Glen Maddern <glenmaddern@gmail.com>
2023-09-17 00:57:26 +09:00
Yusuke Wada
bb386a49c9
fix(types): middleware with different env types (#1466)
* fix(types): middleware with different env types

* denoify

* fix factory helper
2023-09-16 20:32:54 +09:00
jkeys089
d6ec48ee02
feat(cookie): cookie parsing improvements (#1428) 2023-09-09 17:05:09 +09:00
Yusuke Wada
405ec8cdb7
fix(utils/buffer): don't decode space as + (#1411)
* fix(`utils/buffer`): don't decode space as `+`

* denoify
2023-09-05 17:30:40 +09:00
Yusuke Wada
5cbd89c3ae
fix(validator): cache arrayBuffer to use after validation (#1393)
* wip

* fix(validator): cache `arrayBuffer` to use after validation

* denoify

* refactor

* denoify

* make it `bufferToFormData()` in utils/buffer.ts
2023-09-03 14:43:01 +09:00
Torsten Engelbrecht
1a2c0d58e5
fix(middleware): signed cookie misinterpretation of cookie values with dot (#1342)
Close #1337
2023-08-18 18:56:10 +09:00
Yusuke Wada
f254fdc846
feat(req): cache body content (#1333)
* feat(req): cache body content

* denoify

* use destruction

* denoify
2023-08-18 16:25:48 +09:00
Sor4chi
8ab0ccd7cc
docs: support change of escapeTextForBrowser path in react (#1336) 2023-08-16 07:39:35 +09:00
Yusuke Wada
b7f12ddbe9 Revert "refactor(utils/url): remove unnecessary code (#1315)"
This reverts commit ce4ac5a6f5.
2023-08-10 16:39:28 +09:00
Yusuke Wada
ce4ac5a6f5
refactor(utils/url): remove unnecessary code (#1315)
* refactor(utils/url): remove unnecessary code

* denoify
2023-08-10 15:02:14 +09:00
Tim Fish
9be3b7b6dd
Add missing wasm mime type (#1307)
* Add missing wasm mime type

* deno dist
2023-08-09 21:45:07 +09:00
Yusuke Wada
85b54920f9
feat(parseBody): allow passing generics to parseBody() (#1289)
* feat(parseBody): allow passing generics to `parseBody()`

* denoify
2023-08-05 18:10:12 +09:00
Torsten Engelbrecht
35246d0de6
feat(middleware): Simple cookie signing functionality (#1279) 2023-08-05 17:19:08 +09:00
Yusuke Wada
e851e9bd82
perf(utils/url): use regexp instead of indexOf() (#1276)
* perf(utils/url): use regexp instead of `indexOf()`

* remove unused file

* denoify
2023-07-29 23:38:55 +09:00
Yusuke Wada
77b7ac7fe7
fix(utils/filepath): allow .. in filename (#1272)
* fix(utils/filepath): allow `..` in filename

* denoify

* support `./foo../bar.txt`

* denoify

* add tests

---

Co-authored-by: Taku Amano <taku@taaas.jp>
2023-07-27 11:43:42 +09:00
Yusuke Wada
614ab9d6e4
fix(utils/filepath): don't allow dot segments (#1271) 2023-07-27 08:37:20 +09:00
Codinak
1495f8b41b
fix(jsx): escapeToBuffer vulnerability (#1266)
* fix escapeToBuffer vulnerability

Escape single quote (0x27) to limit execution capabilities under certain conditions.

* denoify
2023-07-26 23:12:25 +09:00
Yusuke Wada
cef0adb1d6
fix(mount): include query params (#1224)
* fix(mount): include query params

* denoify
2023-07-08 18:25:50 +09:00
Yusuke Wada
4b2dfb824b
fix(utils/cookie): allow 0 to maxAge (#1196)
* fix(utils/cookie): allow 0 to maxAge

* denoify
2023-06-23 17:33:20 +09:00
Yusuke Wada
e2b26d6074
fix(cookie): maxAge should be positive (#1194)
* Allow setting cookie's maxAge to 0.

* fix(cookie): `maxAge` should be positive

* denoify

---------

Co-authored-by: David Manouchehri <david.manouchehri@ai.moda>
2023-06-22 22:37:07 +09:00
Kelly Littlepage
387d696303
fix: application/x-www-form-urlencoded decoding (#1189)
The current logic for decoding application/x-www-form-urlencoded is
overly restrictive and misses `Content-Type` headers with a character
encoding set, i.e., application/x-www-form-urlencoded; charset=UTF-8.

This fix harmonizes the logic for handling multipart/form-data
and application/x-www-form-urlencoded in the `parseBody` method of
request objects.
2023-06-21 22:51:59 +09:00
IGUCHI Kanahiro
a6b0833060
fix: avoid range-error (#1168)
* fix: avoid range-error

* fix: avoid range-error

* denoify
2023-06-07 21:54:49 +09:00
ayame113
81d271279c
feat: Allow context.jsonT to take interface as an argument (#1162) 2023-06-06 10:23:09 +09:00
Taku Amano
8a1b9aa9a8
refactor: Tweaks variable names to reduce code. (#1157)
* refactor: Tweaks variable names to reduce code.

* Delete meaningless comments

* chore: denoify
2023-06-04 09:16:29 +09:00
Yusuke Wada
220c956272 Merge branch 'main' into next 2023-05-11 17:53:05 +09:00
Taku Amano
b15638c37c
fix(getQueryParam): Fixed a bug in getQueryParam when a partial matching key was found. (#1085)
* fix(getQueryParam): Fixed a bug in getQueryParam when a partial matching key was found.

* chore: denoify
2023-05-10 08:26:17 +09:00
Taku Amano
b253a8735b
feat: Allow getPath to be replaced. (#1064)
* feat: Allow getPath to be replaced.

* chore: denoify
2023-05-03 22:13:23 +09:00
Yusuke Wada
64ddf093d6
perf: use === instead of startsWith and endsWith (#1053) 2023-04-30 21:18:32 +09:00
Yusuke Wada
0a19deaa5b
perf: shorten code (#1051) 2023-04-30 21:07:00 +09:00
Yusuke Wada
03df736763 feat(utils): remove HTTP status messages from http-status.ts (#1037)
* feat(utils): remove HTTP status messages from `http-status.ts`

* denoify
2023-04-28 12:10:20 +09:00
Yusuke Wada
e6669f7779
feat(jwt): support for getting payload from c.get('jwtPayload') (#1025) 2023-03-31 18:39:26 +09:00