hono 2.1.4 → 2.2.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 (145) hide show
  1. package/README.md +13 -14
  2. package/dist/cjs/compose.js +48 -0
  3. package/dist/cjs/context.js +148 -0
  4. package/dist/cjs/hono.js +154 -0
  5. package/dist/cjs/index.js +13 -0
  6. package/dist/cjs/middleware/basic-auth/index.js +48 -0
  7. package/dist/cjs/middleware/bearer-auth/index.js +57 -0
  8. package/dist/cjs/middleware/cache/index.js +32 -0
  9. package/dist/cjs/middleware/compress/index.js +19 -0
  10. package/dist/cjs/middleware/cors/index.js +75 -0
  11. package/dist/cjs/middleware/etag/index.js +27 -0
  12. package/dist/cjs/middleware/html/index.js +36 -0
  13. package/dist/cjs/middleware/jsx/index.js +193 -0
  14. package/dist/cjs/middleware/jsx/jsx-dev-runtime.js +10 -0
  15. package/dist/cjs/middleware/jsx/jsx-runtime.js +7 -0
  16. package/dist/cjs/middleware/jwt/index.js +63 -0
  17. package/dist/cjs/middleware/logger/index.js +49 -0
  18. package/dist/cjs/middleware/powered-by/index.js +10 -0
  19. package/dist/cjs/middleware/pretty-json/index.js +11 -0
  20. package/dist/cjs/middleware/serve-static/bun.js +41 -0
  21. package/dist/cjs/middleware/serve-static/index.js +5 -0
  22. package/dist/cjs/middleware/serve-static/serve-static.js +40 -0
  23. package/dist/cjs/middleware/validator/index.js +5 -0
  24. package/dist/cjs/middleware/validator/middleware.js +56 -0
  25. package/dist/cjs/middleware/validator/rule.js +66 -0
  26. package/dist/cjs/middleware/validator/sanitizer.js +6 -0
  27. package/dist/cjs/middleware/validator/validator.js +195 -0
  28. package/dist/cjs/request.js +120 -0
  29. package/dist/cjs/router/reg-exp-router/index.js +5 -0
  30. package/dist/cjs/router/reg-exp-router/node.js +108 -0
  31. package/dist/cjs/router/reg-exp-router/router.js +161 -0
  32. package/dist/cjs/router/reg-exp-router/trie.js +42 -0
  33. package/dist/cjs/router/smart-router/index.js +5 -0
  34. package/dist/cjs/router/smart-router/router.js +57 -0
  35. package/dist/cjs/router/static-router/index.js +5 -0
  36. package/dist/cjs/router/static-router/router.js +72 -0
  37. package/dist/cjs/router/trie-router/index.js +5 -0
  38. package/dist/cjs/router/trie-router/node.js +175 -0
  39. package/dist/cjs/router/trie-router/router.js +24 -0
  40. package/dist/cjs/router.js +9 -0
  41. package/dist/cjs/utils/body.js +18 -0
  42. package/dist/cjs/utils/buffer.js +39 -0
  43. package/dist/cjs/utils/cloudflare.js +39 -0
  44. package/dist/cjs/utils/cookie.js +40 -0
  45. package/dist/cjs/utils/crypto.js +53 -0
  46. package/dist/cjs/utils/encode.js +80 -0
  47. package/dist/cjs/utils/filepath.js +25 -0
  48. package/dist/cjs/utils/html.js +38 -0
  49. package/dist/cjs/utils/http-status.js +50 -0
  50. package/dist/cjs/utils/json.js +22 -0
  51. package/dist/cjs/utils/jwt/index.js +27 -0
  52. package/dist/cjs/utils/jwt/jwt.js +101 -0
  53. package/dist/cjs/utils/jwt/types.js +49 -0
  54. package/dist/cjs/utils/mime.js +92 -0
  55. package/dist/cjs/utils/url.js +94 -0
  56. package/dist/compose.d.ts +2 -2
  57. package/dist/compose.js +3 -7
  58. package/dist/context.d.ts +14 -9
  59. package/dist/context.js +56 -25
  60. package/dist/hono.d.ts +28 -26
  61. package/dist/hono.js +23 -22
  62. package/dist/index.js +3 -6
  63. package/dist/middleware/basic-auth/index.d.ts +2 -3
  64. package/dist/middleware/basic-auth/index.js +7 -11
  65. package/dist/middleware/bearer-auth/index.d.ts +2 -3
  66. package/dist/middleware/bearer-auth/index.js +4 -12
  67. package/dist/middleware/cache/index.d.ts +2 -3
  68. package/dist/middleware/cache/index.js +1 -5
  69. package/dist/middleware/compress/index.d.ts +2 -3
  70. package/dist/middleware/compress/index.js +1 -5
  71. package/dist/middleware/cors/index.d.ts +3 -4
  72. package/dist/middleware/cors/index.js +16 -6
  73. package/dist/middleware/etag/index.d.ts +2 -3
  74. package/dist/middleware/etag/index.js +3 -7
  75. package/dist/middleware/html/index.js +6 -11
  76. package/dist/middleware/jsx/index.js +9 -15
  77. package/dist/middleware/jsx/jsx-dev-runtime.js +3 -7
  78. package/dist/middleware/jsx/jsx-runtime.js +2 -7
  79. package/dist/middleware/jwt/index.d.ts +2 -3
  80. package/dist/middleware/jwt/index.js +3 -7
  81. package/dist/middleware/logger/index.d.ts +2 -3
  82. package/dist/middleware/logger/index.js +3 -7
  83. package/dist/middleware/powered-by/index.d.ts +2 -3
  84. package/dist/middleware/powered-by/index.js +1 -5
  85. package/dist/middleware/pretty-json/index.d.ts +2 -3
  86. package/dist/middleware/pretty-json/index.js +1 -5
  87. package/dist/middleware/serve-static/bun.d.ts +2 -3
  88. package/dist/middleware/serve-static/bun.js +18 -19
  89. package/dist/middleware/serve-static/index.js +1 -5
  90. package/dist/middleware/serve-static/module.d.mts +1 -1
  91. package/dist/middleware/serve-static/serve-static.d.ts +2 -3
  92. package/dist/middleware/serve-static/serve-static.js +7 -11
  93. package/dist/middleware/validator/index.d.ts +2 -0
  94. package/dist/middleware/validator/index.js +2 -0
  95. package/dist/middleware/validator/middleware.d.ts +21 -0
  96. package/dist/middleware/validator/middleware.js +52 -0
  97. package/dist/middleware/validator/rule.d.ts +21 -0
  98. package/dist/middleware/validator/rule.js +63 -0
  99. package/dist/middleware/validator/sanitizer.d.ts +3 -0
  100. package/dist/middleware/validator/sanitizer.js +3 -0
  101. package/dist/middleware/validator/validator.d.ts +75 -0
  102. package/dist/middleware/validator/validator.js +186 -0
  103. package/dist/request.d.ts +15 -5
  104. package/dist/request.js +58 -28
  105. package/dist/router/reg-exp-router/index.js +1 -5
  106. package/dist/router/reg-exp-router/node.d.ts +1 -3
  107. package/dist/router/reg-exp-router/node.js +21 -17
  108. package/dist/router/reg-exp-router/router.d.ts +3 -27
  109. package/dist/router/reg-exp-router/router.js +105 -315
  110. package/dist/router/reg-exp-router/trie.d.ts +0 -4
  111. package/dist/router/reg-exp-router/trie.js +4 -8
  112. package/dist/router/smart-router/index.d.ts +1 -0
  113. package/dist/router/smart-router/index.js +1 -0
  114. package/dist/router/smart-router/router.d.ts +9 -0
  115. package/dist/router/smart-router/router.js +53 -0
  116. package/dist/router/static-router/index.d.ts +1 -0
  117. package/dist/router/static-router/index.js +1 -0
  118. package/dist/router/static-router/router.d.ts +8 -0
  119. package/dist/router/static-router/router.js +68 -0
  120. package/dist/router/trie-router/index.js +1 -5
  121. package/dist/router/trie-router/node.js +7 -11
  122. package/dist/router/trie-router/router.js +11 -7
  123. package/dist/router.d.ts +3 -0
  124. package/dist/router.js +5 -5
  125. package/dist/utils/body.d.ts +2 -1
  126. package/dist/utils/body.js +1 -5
  127. package/dist/utils/buffer.d.ts +1 -1
  128. package/dist/utils/buffer.js +5 -11
  129. package/dist/utils/cloudflare.d.ts +1 -1
  130. package/dist/utils/cloudflare.js +1 -5
  131. package/dist/utils/cookie.js +2 -7
  132. package/dist/utils/crypto.js +8 -15
  133. package/dist/utils/encode.js +10 -20
  134. package/dist/utils/filepath.js +1 -5
  135. package/dist/utils/html.js +1 -5
  136. package/dist/utils/http-status.js +1 -5
  137. package/dist/utils/json.d.ts +1 -0
  138. package/dist/utils/json.js +18 -0
  139. package/dist/utils/jwt/index.js +1 -27
  140. package/dist/utils/jwt/jwt.js +22 -28
  141. package/dist/utils/jwt/types.js +8 -16
  142. package/dist/utils/mime.js +1 -5
  143. package/dist/utils/url.d.ts +1 -1
  144. package/dist/utils/url.js +18 -22
  145. package/package.json +122 -35
package/dist/utils/url.js CHANGED
@@ -1,17 +1,12 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.mergePath = exports.isAbsoluteURL = exports.getQueryStringFromURL = exports.getPathFromURL = exports.getPattern = exports.splitPath = void 0;
4
- const URL_REGEXP = /^https?:\/\/[a-zA-Z0-9\-\.:]+(\/?[^?#]*)/;
5
- const splitPath = (path) => {
1
+ export const splitPath = (path) => {
6
2
  const paths = path.split(/\//); // faster than path.split('/')
7
3
  if (paths[0] === '') {
8
4
  paths.shift();
9
5
  }
10
6
  return paths;
11
7
  };
12
- exports.splitPath = splitPath;
13
8
  const patternCache = {};
14
- const getPattern = (label) => {
9
+ export const getPattern = (label) => {
15
10
  // * => wildcard
16
11
  // :id{[0-9]+} => ([0-9]+)
17
12
  // :id => (.+)
@@ -33,8 +28,7 @@ const getPattern = (label) => {
33
28
  }
34
29
  return null;
35
30
  };
36
- exports.getPattern = getPattern;
37
- const getPathFromURL = (url, strict = true) => {
31
+ export const getPathFromURL = (url, strict = true) => {
38
32
  const queryIndex = url.indexOf('?');
39
33
  const result = url.substring(url.indexOf('/', 8), queryIndex === -1 ? url.length : queryIndex);
40
34
  // if strict routing is false => `/hello/hey/` and `/hello/hey` are treated the same
@@ -44,22 +38,12 @@ const getPathFromURL = (url, strict = true) => {
44
38
  }
45
39
  return result;
46
40
  };
47
- exports.getPathFromURL = getPathFromURL;
48
- const getQueryStringFromURL = (url) => {
41
+ export const getQueryStringFromURL = (url) => {
49
42
  const queryIndex = url.indexOf('?');
50
43
  const result = queryIndex !== -1 ? url.substring(queryIndex) : '';
51
44
  return result;
52
45
  };
53
- exports.getQueryStringFromURL = getQueryStringFromURL;
54
- const isAbsoluteURL = (url) => {
55
- const match = url.match(URL_REGEXP);
56
- if (match) {
57
- return true;
58
- }
59
- return false;
60
- };
61
- exports.isAbsoluteURL = isAbsoluteURL;
62
- const mergePath = (...paths) => {
46
+ export const mergePath = (...paths) => {
63
47
  let p = '';
64
48
  let endsWithSlash = false;
65
49
  for (let path of paths) {
@@ -86,4 +70,16 @@ const mergePath = (...paths) => {
86
70
  }
87
71
  return p;
88
72
  };
89
- exports.mergePath = mergePath;
73
+ export const checkOptionalParameter = (path) => {
74
+ /*
75
+ If path is `/api/animals/:type?` it will return:
76
+ [`/api/animals`, `/api/animals/:type`]
77
+ in other cases it will return null
78
+ */
79
+ const match = path.match(/(^.+)(\/\:[^\/]+)\?$/);
80
+ if (!match)
81
+ return null;
82
+ const base = match[1];
83
+ const optional = base + match[2];
84
+ return [base, optional];
85
+ };
package/package.json CHANGED
@@ -1,8 +1,9 @@
1
1
  {
2
2
  "name": "hono",
3
- "version": "2.1.4",
3
+ "version": "2.2.0",
4
4
  "description": "Ultrafast web framework for Cloudflare Workers.",
5
5
  "main": "dist/index.js",
6
+ "module": "dist/index.js",
6
7
  "types": "dist/index.d.ts",
7
8
  "files": [
8
9
  "dist"
@@ -15,34 +16,111 @@
15
16
  "lint": "eslint --ext js,ts src .eslintrc.js",
16
17
  "lint:fix": "eslint --ext js,ts src .eslintrc.js --fix",
17
18
  "denoify": "rimraf deno_dist && denoify && rimraf 'deno_dist/**/*.test.ts'",
18
- "build": "rimraf dist && tsc --project tsconfig.build.esm.json && tsc --project tsconfig.build.json",
19
+ "build": "rimraf dist && tsc --project tsconfig.build.json && tsc --project tsconfig.build.cjs.json",
19
20
  "watch": "tsc --project tsconfig.build.json -w",
20
21
  "prerelease": "yarn denoify && yarn test:deno && yarn build",
21
22
  "release": "np"
22
23
  },
23
24
  "exports": {
24
- ".": "./dist/index.js",
25
- "./basic-auth": "./dist/middleware/basic-auth/index.js",
26
- "./bearer-auth": "./dist/middleware/bearer-auth/index.js",
27
- "./cache": "./dist/middleware/cache/index.js",
28
- "./compress": "./dist/middleware/compress/index.js",
29
- "./cors": "./dist/middleware/cors/index.js",
30
- "./etag": "./dist/middleware/etag/index.js",
31
- "./html": "./dist/middleware/html/index.js",
32
- "./jsx": "./dist/middleware/jsx/index.js",
33
- "./jsx/jsx-dev-runtime": "./dist/middleware/jsx/jsx-dev-runtime.js",
34
- "./jsx/jsx-runtime": "./dist/middleware/jsx/jsx-runtime.js",
35
- "./jwt": "./dist/middleware/jwt/index.js",
36
- "./logger": "./dist/middleware/logger/index.js",
37
- "./powered-by": "./dist/middleware/powered-by/index.js",
38
- "./pretty-json": "./dist/middleware/pretty-json/index.js",
39
- "./serve-static": "./dist/middleware/serve-static/index.js",
40
- "./serve-static.bun": "./dist/middleware/serve-static/bun.js",
41
- "./serve-static.module": "./dist/middleware/serve-static/module.mjs",
42
- "./router/trie-router": "./dist/router/trie-router/index.js",
43
- "./router/reg-exp-router": "./dist/router/reg-exp-router/index.js",
44
- "./utils/jwt": "./dist/utils/jwt/index.js",
45
- "./utils/*": "./dist/utils/*.js"
25
+ ".": {
26
+ "import": "./dist/index.js",
27
+ "require": "./dist/cjs/index.js"
28
+ },
29
+ "./basic-auth": {
30
+ "import": "./dist/middleware/basic-auth/index.js",
31
+ "require": "./dist/cjs/middleware/basic-auth/index.js"
32
+ },
33
+ "./bearer-auth": {
34
+ "import": "./dist/middleware/bearer-auth/index.js",
35
+ "require": "./dist/cjs/middleware/bearer-auth/index.js"
36
+ },
37
+ "./cache": {
38
+ "import": "./dist/middleware/cache/index.js",
39
+ "require": "./dist/cjs/middleware/cache/index.js"
40
+ },
41
+ "./compress": {
42
+ "import": "./dist/middleware/compress/index.js",
43
+ "require": "./dist/cjs/middleware/compress/index.js"
44
+ },
45
+ "./cors": {
46
+ "import": "./dist/middleware/cors/index.js",
47
+ "require": "./dist/cjs/middleware/cors/index.js"
48
+ },
49
+ "./etag": {
50
+ "import": "./dist/middleware/etag/index.js",
51
+ "require": "./dist/cjs/middleware/etag/index.js"
52
+ },
53
+ "./html": {
54
+ "import": "./dist/middleware/html/index.js",
55
+ "require": "./dist/cjs/middleware/html/index.js"
56
+ },
57
+ "./jsx": {
58
+ "import": "./dist/middleware/jsx/index.js",
59
+ "require": "./dist/cjs/middleware/jsx/index.js"
60
+ },
61
+ "./jsx/jsx-dev-runtime": {
62
+ "import": "./dist/middleware/jsx/jsx-dev-runtime.js",
63
+ "require": "./dist/cjs/middleware/jsx/jsx-dev-runtime.js"
64
+ },
65
+ "./jsx/jsx-runtime": {
66
+ "import": "./dist/middleware/jsx/jsx-runtime.js",
67
+ "require": "./dist/cjs/middleware/jsx/jsx-runtime.js"
68
+ },
69
+ "./jwt": {
70
+ "import": "./dist/middleware/jwt/index.js",
71
+ "require": "./dist/cjs/middleware/jwt/index.js"
72
+ },
73
+ "./logger": {
74
+ "import": "./dist/middleware/logger/index.js",
75
+ "require": "./dist/cjs/middleware/logger/index.js"
76
+ },
77
+ "./powered-by": {
78
+ "import": "./dist/middleware/powered-by/index.js",
79
+ "require": "./dist/cjs/middleware/powered-by/index.js"
80
+ },
81
+ "./pretty-json": {
82
+ "import": "./dist/middleware/pretty-json/index.js",
83
+ "require": "./dist/cjs/middleware/pretty-json/index.js"
84
+ },
85
+ "./serve-static": {
86
+ "import": "./dist/middleware/serve-static/index.js",
87
+ "require": "./dist/cjs/middleware/serve-static/index.js"
88
+ },
89
+ "./serve-static.bun": {
90
+ "import": "./dist/middleware/serve-static/bun.js",
91
+ "require": "./dist/cjs/middleware/serve-static/bun.js"
92
+ },
93
+ "./serve-static.module": {
94
+ "import": "./dist/middleware/serve-static/module.mjs"
95
+ },
96
+ "./validator": {
97
+ "import": "./dist/middleware/validator/index.js",
98
+ "require": "./dist/cjs/middleware/validator/index.js"
99
+ },
100
+ "./router/reg-exp-router": {
101
+ "import": "./dist/router/reg-exp-router/index.js",
102
+ "require": "./dist/cjs/router/reg-exp-router/index.js"
103
+ },
104
+ "./router/smart-router": {
105
+ "import": "./dist/router/smart-router/index.js",
106
+ "require": "./dist/cjs/router/smart-router/index.js"
107
+ },
108
+ "./router/static-router": {
109
+ "import": "./dist/router/static-router/index.js",
110
+ "require": "./dist/cjs/router/static-router/index.js"
111
+ },
112
+ "./router/trie-router": {
113
+ "import": "./dist/router/trie-router/index.js",
114
+ "require": "./dist/cjs/router/trie-router/index.js"
115
+ },
116
+ "./utils/jwt": {
117
+ "import": "./dist/utils/jwt/index.js",
118
+ "require": "./dist/cjs/utils/jwt/index.js"
119
+ },
120
+ "./utils/*": {
121
+ "import": "./dist/utils/*.js",
122
+ "require": "./dist/cjs/utils/*.js"
123
+ }
46
124
  },
47
125
  "typesVersions": {
48
126
  "*": {
@@ -97,12 +175,21 @@
97
175
  "serve-static.module": [
98
176
  "./dist/middleware/serve-static/module.d.mts"
99
177
  ],
100
- "router/trie-router": [
101
- "./dist/router/trie-router/router.d.ts"
178
+ "validator": [
179
+ "./dist/middleware/validator"
102
180
  ],
103
181
  "router/reg-exp-router": [
104
182
  "./dist/router/reg-exp-router/router.d.ts"
105
183
  ],
184
+ "router/smart-router": [
185
+ "./dist/router/smart-router/router.d.ts"
186
+ ],
187
+ "router/static-router": [
188
+ "./dist/router/static-router/router.d.ts"
189
+ ],
190
+ "router/trie-router": [
191
+ "./dist/router/trie-router/router.d.ts"
192
+ ],
106
193
  "utils/jwt": [
107
194
  "./dist/utils/jwt/index.d.ts"
108
195
  ],
@@ -120,7 +207,7 @@
120
207
  "publishConfig": {
121
208
  "registry": "https://registry.npmjs.org"
122
209
  },
123
- "homepage": "https://github.com/honojs/hono",
210
+ "homepage": "https://honojs.dev",
124
211
  "keywords": [
125
212
  "hono",
126
213
  "web",
@@ -137,14 +224,14 @@
137
224
  "bun"
138
225
  ],
139
226
  "devDependencies": {
140
- "@cloudflare/workers-types": "^3.7.1",
227
+ "@cloudflare/workers-types": "^3.16.0",
141
228
  "@types/crypto-js": "^4.1.1",
142
- "@types/jest": "^27.4.1",
229
+ "@types/jest": "^29.0.2",
143
230
  "@types/node": "^17.0.29",
144
231
  "@typescript-eslint/eslint-plugin": "^5.21.0",
145
232
  "@typescript-eslint/parser": "^5.21.0",
146
233
  "crypto-js": "^4.1.1",
147
- "denoify": "^0.11.1",
234
+ "denoify": "^1.1.1",
148
235
  "eslint": "^8.14.0",
149
236
  "eslint-config-prettier": "^8.5.0",
150
237
  "eslint-define-config": "^1.4.0",
@@ -154,15 +241,15 @@
154
241
  "eslint-plugin-import": "^2.26.0",
155
242
  "eslint-plugin-node": "^11.1.0",
156
243
  "form-data": "^4.0.0",
157
- "jest": "27.5.1",
158
- "jest-environment-miniflare": "^2.7.0",
244
+ "jest": "^29.0.3",
245
+ "jest-environment-miniflare": "2.7.1",
159
246
  "np": "^7.6.2",
160
247
  "prettier": "^2.6.2",
161
248
  "rimraf": "^3.0.2",
162
- "ts-jest": "^27.1.4",
163
- "typescript": "^4.6.3"
249
+ "ts-jest": "^29.0.1",
250
+ "typescript": "^4.8.3"
164
251
  },
165
252
  "engines": {
166
- "node": ">=11.0.0"
253
+ "node": ">=16.0.0"
167
254
  }
168
255
  }