@nocobase/plugin-idp-oauth 2.1.0-alpha.10

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 (451) hide show
  1. package/LICENSE.txt +107 -0
  2. package/README.md +14 -0
  3. package/build.config.ts +46 -0
  4. package/client.d.ts +2 -0
  5. package/client.js +1 -0
  6. package/dist/client/ErrorPage.d.ts +11 -0
  7. package/dist/client/InteractionPage.d.ts +11 -0
  8. package/dist/client/index.d.ts +9 -0
  9. package/dist/client/index.js +10 -0
  10. package/dist/client/locale.d.ts +10 -0
  11. package/dist/client/models/index.d.ts +11 -0
  12. package/dist/client/plugin.d.ts +13 -0
  13. package/dist/externalVersion.js +18 -0
  14. package/dist/index.d.ts +10 -0
  15. package/dist/index.js +48 -0
  16. package/dist/locale/en-US.json +1 -0
  17. package/dist/locale/zh-CN.json +1 -0
  18. package/dist/node_modules/eta/LICENSE +7 -0
  19. package/dist/node_modules/eta/README.md +185 -0
  20. package/dist/node_modules/eta/dist/core.d.ts +179 -0
  21. package/dist/node_modules/eta/dist/core.d.ts.map +1 -0
  22. package/dist/node_modules/eta/dist/core.js +42 -0
  23. package/dist/node_modules/eta/dist/core.js.map +1 -0
  24. package/dist/node_modules/eta/dist/index.cjs +542 -0
  25. package/dist/node_modules/eta/dist/index.cjs.map +1 -0
  26. package/dist/node_modules/eta/dist/index.d.cts +187 -0
  27. package/dist/node_modules/eta/dist/index.d.cts.map +1 -0
  28. package/dist/node_modules/eta/dist/index.d.mts +187 -0
  29. package/dist/node_modules/eta/dist/index.d.mts.map +1 -0
  30. package/dist/node_modules/eta/dist/index.mjs +512 -0
  31. package/dist/node_modules/eta/dist/index.mjs.map +1 -0
  32. package/dist/node_modules/eta/package.json +75 -0
  33. package/dist/node_modules/jose/LICENSE.md +21 -0
  34. package/dist/node_modules/jose/README.md +153 -0
  35. package/dist/node_modules/jose/dist/types/index.d.ts +55 -0
  36. package/dist/node_modules/jose/dist/types/jwe/compact/decrypt.d.ts +31 -0
  37. package/dist/node_modules/jose/dist/types/jwe/compact/encrypt.d.ts +65 -0
  38. package/dist/node_modules/jose/dist/types/jwe/flattened/decrypt.d.ts +31 -0
  39. package/dist/node_modules/jose/dist/types/jwe/flattened/encrypt.d.ts +83 -0
  40. package/dist/node_modules/jose/dist/types/jwe/general/decrypt.d.ts +38 -0
  41. package/dist/node_modules/jose/dist/types/jwe/general/encrypt.d.ts +74 -0
  42. package/dist/node_modules/jose/dist/types/jwk/embedded.d.ts +17 -0
  43. package/dist/node_modules/jose/dist/types/jwk/thumbprint.d.ts +32 -0
  44. package/dist/node_modules/jose/dist/types/jwks/local.d.ts +29 -0
  45. package/dist/node_modules/jose/dist/types/jwks/remote.d.ts +237 -0
  46. package/dist/node_modules/jose/dist/types/jws/compact/sign.d.ts +36 -0
  47. package/dist/node_modules/jose/dist/types/jws/compact/verify.d.ts +33 -0
  48. package/dist/node_modules/jose/dist/types/jws/flattened/sign.d.ts +42 -0
  49. package/dist/node_modules/jose/dist/types/jws/flattened/verify.d.ts +33 -0
  50. package/dist/node_modules/jose/dist/types/jws/general/sign.d.ts +53 -0
  51. package/dist/node_modules/jose/dist/types/jws/general/verify.d.ts +41 -0
  52. package/dist/node_modules/jose/dist/types/jwt/decrypt.d.ts +35 -0
  53. package/dist/node_modules/jose/dist/types/jwt/encrypt.d.ts +91 -0
  54. package/dist/node_modules/jose/dist/types/jwt/sign.d.ts +43 -0
  55. package/dist/node_modules/jose/dist/types/jwt/unsecured.d.ts +43 -0
  56. package/dist/node_modules/jose/dist/types/jwt/verify.d.ts +37 -0
  57. package/dist/node_modules/jose/dist/types/key/export.d.ts +33 -0
  58. package/dist/node_modules/jose/dist/types/key/generate_key_pair.d.ts +47 -0
  59. package/dist/node_modules/jose/dist/types/key/generate_secret.d.ts +35 -0
  60. package/dist/node_modules/jose/dist/types/key/import.d.ts +83 -0
  61. package/dist/node_modules/jose/dist/types/types.d.ts +852 -0
  62. package/dist/node_modules/jose/dist/types/util/base64url.d.ts +9 -0
  63. package/dist/node_modules/jose/dist/types/util/decode_jwt.d.ts +18 -0
  64. package/dist/node_modules/jose/dist/types/util/decode_protected_header.d.ts +17 -0
  65. package/dist/node_modules/jose/dist/types/util/errors.d.ts +213 -0
  66. package/dist/node_modules/jose/dist/webapi/index.js +32 -0
  67. package/dist/node_modules/jose/dist/webapi/jwe/compact/decrypt.js +27 -0
  68. package/dist/node_modules/jose/dist/webapi/jwe/compact/encrypt.js +27 -0
  69. package/dist/node_modules/jose/dist/webapi/jwe/flattened/decrypt.js +155 -0
  70. package/dist/node_modules/jose/dist/webapi/jwe/flattened/encrypt.js +165 -0
  71. package/dist/node_modules/jose/dist/webapi/jwe/general/decrypt.js +31 -0
  72. package/dist/node_modules/jose/dist/webapi/jwe/general/encrypt.js +182 -0
  73. package/dist/node_modules/jose/dist/webapi/jwk/embedded.js +17 -0
  74. package/dist/node_modules/jose/dist/webapi/jwk/thumbprint.js +68 -0
  75. package/dist/node_modules/jose/dist/webapi/jwks/local.js +119 -0
  76. package/dist/node_modules/jose/dist/webapi/jwks/remote.js +179 -0
  77. package/dist/node_modules/jose/dist/webapi/jws/compact/sign.js +18 -0
  78. package/dist/node_modules/jose/dist/webapi/jws/compact/verify.js +21 -0
  79. package/dist/node_modules/jose/dist/webapi/jws/flattened/sign.js +89 -0
  80. package/dist/node_modules/jose/dist/webapi/jws/flattened/verify.js +110 -0
  81. package/dist/node_modules/jose/dist/webapi/jws/general/sign.js +70 -0
  82. package/dist/node_modules/jose/dist/webapi/jws/general/verify.js +24 -0
  83. package/dist/node_modules/jose/dist/webapi/jwt/decrypt.js +23 -0
  84. package/dist/node_modules/jose/dist/webapi/jwt/encrypt.js +101 -0
  85. package/dist/node_modules/jose/dist/webapi/jwt/sign.js +52 -0
  86. package/dist/node_modules/jose/dist/webapi/jwt/unsecured.js +63 -0
  87. package/dist/node_modules/jose/dist/webapi/jwt/verify.js +15 -0
  88. package/dist/node_modules/jose/dist/webapi/key/export.js +11 -0
  89. package/dist/node_modules/jose/dist/webapi/key/generate_key_pair.js +97 -0
  90. package/dist/node_modules/jose/dist/webapi/key/generate_secret.js +40 -0
  91. package/dist/node_modules/jose/dist/webapi/key/import.js +57 -0
  92. package/dist/node_modules/jose/dist/webapi/lib/aesgcmkw.js +15 -0
  93. package/dist/node_modules/jose/dist/webapi/lib/aeskw.js +25 -0
  94. package/dist/node_modules/jose/dist/webapi/lib/asn1.js +243 -0
  95. package/dist/node_modules/jose/dist/webapi/lib/base64.js +22 -0
  96. package/dist/node_modules/jose/dist/webapi/lib/buffer_utils.js +43 -0
  97. package/dist/node_modules/jose/dist/webapi/lib/check_key_type.js +122 -0
  98. package/dist/node_modules/jose/dist/webapi/lib/content_encryption.js +217 -0
  99. package/dist/node_modules/jose/dist/webapi/lib/crypto_key.js +136 -0
  100. package/dist/node_modules/jose/dist/webapi/lib/deflate.js +44 -0
  101. package/dist/node_modules/jose/dist/webapi/lib/ecdhes.js +52 -0
  102. package/dist/node_modules/jose/dist/webapi/lib/helpers.js +19 -0
  103. package/dist/node_modules/jose/dist/webapi/lib/invalid_key_input.js +27 -0
  104. package/dist/node_modules/jose/dist/webapi/lib/is_key_like.js +17 -0
  105. package/dist/node_modules/jose/dist/webapi/lib/jwk_to_key.js +107 -0
  106. package/dist/node_modules/jose/dist/webapi/lib/jwt_claims_set.js +238 -0
  107. package/dist/node_modules/jose/dist/webapi/lib/key_management.js +186 -0
  108. package/dist/node_modules/jose/dist/webapi/lib/key_to_jwk.js +31 -0
  109. package/dist/node_modules/jose/dist/webapi/lib/normalize_key.js +166 -0
  110. package/dist/node_modules/jose/dist/webapi/lib/pbes2kw.js +39 -0
  111. package/dist/node_modules/jose/dist/webapi/lib/rsaes.js +24 -0
  112. package/dist/node_modules/jose/dist/webapi/lib/signing.js +68 -0
  113. package/dist/node_modules/jose/dist/webapi/lib/type_checks.js +40 -0
  114. package/dist/node_modules/jose/dist/webapi/lib/validate_algorithms.js +10 -0
  115. package/dist/node_modules/jose/dist/webapi/lib/validate_crit.js +33 -0
  116. package/dist/node_modules/jose/dist/webapi/util/base64url.js +30 -0
  117. package/dist/node_modules/jose/dist/webapi/util/decode_jwt.js +32 -0
  118. package/dist/node_modules/jose/dist/webapi/util/decode_protected_header.js +34 -0
  119. package/dist/node_modules/jose/dist/webapi/util/errors.js +99 -0
  120. package/dist/node_modules/jose/package.json +200 -0
  121. package/dist/node_modules/light-my-request/.gitattributes +2 -0
  122. package/dist/node_modules/light-my-request/.github/dependabot.yml +13 -0
  123. package/dist/node_modules/light-my-request/.github/stale.yml +21 -0
  124. package/dist/node_modules/light-my-request/.github/workflows/benchmark.yml +30 -0
  125. package/dist/node_modules/light-my-request/.github/workflows/ci.yml +23 -0
  126. package/dist/node_modules/light-my-request/LICENSE +32 -0
  127. package/dist/node_modules/light-my-request/benchmark/benchmark.js +164 -0
  128. package/dist/node_modules/light-my-request/build/build-validation.js +100 -0
  129. package/dist/node_modules/light-my-request/eslint.config.js +9 -0
  130. package/dist/node_modules/light-my-request/index.js +2 -0
  131. package/dist/node_modules/light-my-request/lib/config-validator.js +919 -0
  132. package/dist/node_modules/light-my-request/lib/form-data.js +79 -0
  133. package/dist/node_modules/light-my-request/lib/parse-url.js +47 -0
  134. package/dist/node_modules/light-my-request/lib/request.js +290 -0
  135. package/dist/node_modules/light-my-request/lib/response.js +240 -0
  136. package/dist/node_modules/light-my-request/node_modules/process-warning/.gitattributes +2 -0
  137. package/dist/node_modules/light-my-request/node_modules/process-warning/.github/dependabot.yml +13 -0
  138. package/dist/node_modules/light-my-request/node_modules/process-warning/.github/workflows/ci.yml +24 -0
  139. package/dist/node_modules/light-my-request/node_modules/process-warning/.taprc +2 -0
  140. package/dist/node_modules/light-my-request/node_modules/process-warning/benchmarks/warn.js +25 -0
  141. package/dist/node_modules/light-my-request/node_modules/process-warning/eslint.config.js +6 -0
  142. package/dist/node_modules/light-my-request/node_modules/process-warning/examples/example.js +11 -0
  143. package/dist/node_modules/light-my-request/node_modules/process-warning/index.js +124 -0
  144. package/dist/node_modules/light-my-request/node_modules/process-warning/package.json +73 -0
  145. package/dist/node_modules/light-my-request/node_modules/process-warning/test/emit-interpolated-string.test.js +29 -0
  146. package/dist/node_modules/light-my-request/node_modules/process-warning/test/emit-once-only.test.js +28 -0
  147. package/dist/node_modules/light-my-request/node_modules/process-warning/test/emit-reset.test.js +36 -0
  148. package/dist/node_modules/light-my-request/node_modules/process-warning/test/emit-set.test.js +30 -0
  149. package/dist/node_modules/light-my-request/node_modules/process-warning/test/emit-unlimited.test.js +37 -0
  150. package/dist/node_modules/light-my-request/node_modules/process-warning/test/index.test.js +99 -0
  151. package/dist/node_modules/light-my-request/node_modules/process-warning/test/issue-88.test.js +33 -0
  152. package/dist/node_modules/light-my-request/node_modules/process-warning/test/jest.test.js +22 -0
  153. package/dist/node_modules/light-my-request/node_modules/process-warning/test/no-warnings.test.js +80 -0
  154. package/dist/node_modules/light-my-request/node_modules/process-warning/types/index.d.ts +37 -0
  155. package/dist/node_modules/light-my-request/node_modules/process-warning/types/index.test-d.ts +36 -0
  156. package/dist/node_modules/light-my-request/package.json +1 -0
  157. package/dist/node_modules/light-my-request/test/async-await.test.js +55 -0
  158. package/dist/node_modules/light-my-request/test/index.test.js +2316 -0
  159. package/dist/node_modules/light-my-request/test/request.test.js +16 -0
  160. package/dist/node_modules/light-my-request/test/response.test.js +19 -0
  161. package/dist/node_modules/light-my-request/test/stream.test.js +359 -0
  162. package/dist/node_modules/light-my-request/types/index.d.ts +128 -0
  163. package/dist/node_modules/light-my-request/types/index.test-d.ts +149 -0
  164. package/dist/node_modules/oidc-provider/LICENSE.md +21 -0
  165. package/dist/node_modules/oidc-provider/README.md +174 -0
  166. package/dist/node_modules/oidc-provider/lib/actions/authorization/assign_claims.js +28 -0
  167. package/dist/node_modules/oidc-provider/lib/actions/authorization/assign_defaults.js +17 -0
  168. package/dist/node_modules/oidc-provider/lib/actions/authorization/authenticated_client_id.js +6 -0
  169. package/dist/node_modules/oidc-provider/lib/actions/authorization/backchannel_request_remap_errors.js +17 -0
  170. package/dist/node_modules/oidc-provider/lib/actions/authorization/backchannel_request_response.js +41 -0
  171. package/dist/node_modules/oidc-provider/lib/actions/authorization/check_ciba_context.js +12 -0
  172. package/dist/node_modules/oidc-provider/lib/actions/authorization/check_claims.js +68 -0
  173. package/dist/node_modules/oidc-provider/lib/actions/authorization/check_client.js +21 -0
  174. package/dist/node_modules/oidc-provider/lib/actions/authorization/check_client_grant_type.js +21 -0
  175. package/dist/node_modules/oidc-provider/lib/actions/authorization/check_dpop_jkt.js +35 -0
  176. package/dist/node_modules/oidc-provider/lib/actions/authorization/check_extra_params.js +18 -0
  177. package/dist/node_modules/oidc-provider/lib/actions/authorization/check_id_token_hint.js +23 -0
  178. package/dist/node_modules/oidc-provider/lib/actions/authorization/check_max_age.js +25 -0
  179. package/dist/node_modules/oidc-provider/lib/actions/authorization/check_openid_scope.js +47 -0
  180. package/dist/node_modules/oidc-provider/lib/actions/authorization/check_pkce.js +41 -0
  181. package/dist/node_modules/oidc-provider/lib/actions/authorization/check_prompt.js +25 -0
  182. package/dist/node_modules/oidc-provider/lib/actions/authorization/check_redirect_uri.js +41 -0
  183. package/dist/node_modules/oidc-provider/lib/actions/authorization/check_requested_expiry.js +16 -0
  184. package/dist/node_modules/oidc-provider/lib/actions/authorization/check_response_mode.js +54 -0
  185. package/dist/node_modules/oidc-provider/lib/actions/authorization/check_response_type.js +26 -0
  186. package/dist/node_modules/oidc-provider/lib/actions/authorization/check_scope.js +53 -0
  187. package/dist/node_modules/oidc-provider/lib/actions/authorization/ciba_load_account.js +58 -0
  188. package/dist/node_modules/oidc-provider/lib/actions/authorization/ciba_required.js +13 -0
  189. package/dist/node_modules/oidc-provider/lib/actions/authorization/device_authorization_response.js +31 -0
  190. package/dist/node_modules/oidc-provider/lib/actions/authorization/device_user_flow.js +31 -0
  191. package/dist/node_modules/oidc-provider/lib/actions/authorization/device_user_flow_errors.js +37 -0
  192. package/dist/node_modules/oidc-provider/lib/actions/authorization/device_user_flow_response.js +55 -0
  193. package/dist/node_modules/oidc-provider/lib/actions/authorization/index.js +200 -0
  194. package/dist/node_modules/oidc-provider/lib/actions/authorization/interaction_emit.js +9 -0
  195. package/dist/node_modules/oidc-provider/lib/actions/authorization/interactions.js +149 -0
  196. package/dist/node_modules/oidc-provider/lib/actions/authorization/load_account.js +15 -0
  197. package/dist/node_modules/oidc-provider/lib/actions/authorization/load_grant.js +29 -0
  198. package/dist/node_modules/oidc-provider/lib/actions/authorization/load_pushed_authorization_request.js +36 -0
  199. package/dist/node_modules/oidc-provider/lib/actions/authorization/oauth_required.js +11 -0
  200. package/dist/node_modules/oidc-provider/lib/actions/authorization/oidc_required.js +27 -0
  201. package/dist/node_modules/oidc-provider/lib/actions/authorization/one_redirect_uri_clients.js +20 -0
  202. package/dist/node_modules/oidc-provider/lib/actions/authorization/process_request_object.js +214 -0
  203. package/dist/node_modules/oidc-provider/lib/actions/authorization/pushed_authorization_request_remap_errors.js +17 -0
  204. package/dist/node_modules/oidc-provider/lib/actions/authorization/pushed_authorization_request_response.js +65 -0
  205. package/dist/node_modules/oidc-provider/lib/actions/authorization/reject_registration.js +12 -0
  206. package/dist/node_modules/oidc-provider/lib/actions/authorization/reject_request_and_uri.js +12 -0
  207. package/dist/node_modules/oidc-provider/lib/actions/authorization/reject_unsupported.js +33 -0
  208. package/dist/node_modules/oidc-provider/lib/actions/authorization/respond.js +46 -0
  209. package/dist/node_modules/oidc-provider/lib/actions/authorization/resume.js +111 -0
  210. package/dist/node_modules/oidc-provider/lib/actions/authorization/strip_outside_jar_params.js +19 -0
  211. package/dist/node_modules/oidc-provider/lib/actions/authorization/unsupported_rar.js +9 -0
  212. package/dist/node_modules/oidc-provider/lib/actions/challenge.js +22 -0
  213. package/dist/node_modules/oidc-provider/lib/actions/code_verification.js +122 -0
  214. package/dist/node_modules/oidc-provider/lib/actions/discovery.js +151 -0
  215. package/dist/node_modules/oidc-provider/lib/actions/end_session.js +222 -0
  216. package/dist/node_modules/oidc-provider/lib/actions/grants/authorization_code.js +144 -0
  217. package/dist/node_modules/oidc-provider/lib/actions/grants/ciba.js +127 -0
  218. package/dist/node_modules/oidc-provider/lib/actions/grants/client_credentials.js +79 -0
  219. package/dist/node_modules/oidc-provider/lib/actions/grants/device_code.js +125 -0
  220. package/dist/node_modules/oidc-provider/lib/actions/grants/index.js +7 -0
  221. package/dist/node_modules/oidc-provider/lib/actions/grants/refresh_token.js +229 -0
  222. package/dist/node_modules/oidc-provider/lib/actions/index.js +25 -0
  223. package/dist/node_modules/oidc-provider/lib/actions/interaction.js +150 -0
  224. package/dist/node_modules/oidc-provider/lib/actions/introspection.js +164 -0
  225. package/dist/node_modules/oidc-provider/lib/actions/jwks.js +7 -0
  226. package/dist/node_modules/oidc-provider/lib/actions/registration.js +274 -0
  227. package/dist/node_modules/oidc-provider/lib/actions/revocation.js +81 -0
  228. package/dist/node_modules/oidc-provider/lib/actions/token.js +74 -0
  229. package/dist/node_modules/oidc-provider/lib/actions/userinfo.js +183 -0
  230. package/dist/node_modules/oidc-provider/lib/adapters/memory_adapter.js +95 -0
  231. package/dist/node_modules/oidc-provider/lib/consts/client_attributes.js +211 -0
  232. package/dist/node_modules/oidc-provider/lib/consts/dev_keystore.js +18 -0
  233. package/dist/node_modules/oidc-provider/lib/consts/index.js +13 -0
  234. package/dist/node_modules/oidc-provider/lib/consts/jwa.js +47 -0
  235. package/dist/node_modules/oidc-provider/lib/consts/non_rejectable_claims.js +1 -0
  236. package/dist/node_modules/oidc-provider/lib/consts/param_list.js +23 -0
  237. package/dist/node_modules/oidc-provider/lib/helpers/_/camel_case.js +1 -0
  238. package/dist/node_modules/oidc-provider/lib/helpers/_/defaults.js +28 -0
  239. package/dist/node_modules/oidc-provider/lib/helpers/_/difference.js +1 -0
  240. package/dist/node_modules/oidc-provider/lib/helpers/_/is_plain_object.js +1 -0
  241. package/dist/node_modules/oidc-provider/lib/helpers/_/map_keys.js +9 -0
  242. package/dist/node_modules/oidc-provider/lib/helpers/_/merge.js +25 -0
  243. package/dist/node_modules/oidc-provider/lib/helpers/_/omit_by.js +11 -0
  244. package/dist/node_modules/oidc-provider/lib/helpers/_/pick.js +10 -0
  245. package/dist/node_modules/oidc-provider/lib/helpers/_/pick_by.js +10 -0
  246. package/dist/node_modules/oidc-provider/lib/helpers/_/remove.js +9 -0
  247. package/dist/node_modules/oidc-provider/lib/helpers/_/set.js +18 -0
  248. package/dist/node_modules/oidc-provider/lib/helpers/_/snake_case.js +1 -0
  249. package/dist/node_modules/oidc-provider/lib/helpers/_/upper_first.js +1 -0
  250. package/dist/node_modules/oidc-provider/lib/helpers/account_claims.js +6 -0
  251. package/dist/node_modules/oidc-provider/lib/helpers/add_client.js +14 -0
  252. package/dist/node_modules/oidc-provider/lib/helpers/als.js +3 -0
  253. package/dist/node_modules/oidc-provider/lib/helpers/append_www_authenticate.js +9 -0
  254. package/dist/node_modules/oidc-provider/lib/helpers/attention.js +23 -0
  255. package/dist/node_modules/oidc-provider/lib/helpers/base64url.js +11 -0
  256. package/dist/node_modules/oidc-provider/lib/helpers/certificate_thumbprint.js +15 -0
  257. package/dist/node_modules/oidc-provider/lib/helpers/challenge.js +111 -0
  258. package/dist/node_modules/oidc-provider/lib/helpers/check_attest_binding.js +10 -0
  259. package/dist/node_modules/oidc-provider/lib/helpers/claims.js +79 -0
  260. package/dist/node_modules/oidc-provider/lib/helpers/client_id_metadata_document.js +198 -0
  261. package/dist/node_modules/oidc-provider/lib/helpers/client_schema.js +700 -0
  262. package/dist/node_modules/oidc-provider/lib/helpers/combined_scope.js +17 -0
  263. package/dist/node_modules/oidc-provider/lib/helpers/configuration.js +544 -0
  264. package/dist/node_modules/oidc-provider/lib/helpers/constant_equals.js +20 -0
  265. package/dist/node_modules/oidc-provider/lib/helpers/defaults.js +3510 -0
  266. package/dist/node_modules/oidc-provider/lib/helpers/epoch_time.js +1 -0
  267. package/dist/node_modules/oidc-provider/lib/helpers/err_out.js +17 -0
  268. package/dist/node_modules/oidc-provider/lib/helpers/errors.js +161 -0
  269. package/dist/node_modules/oidc-provider/lib/helpers/features.js +51 -0
  270. package/dist/node_modules/oidc-provider/lib/helpers/fetch_body_check.js +25 -0
  271. package/dist/node_modules/oidc-provider/lib/helpers/fetch_request.js +221 -0
  272. package/dist/node_modules/oidc-provider/lib/helpers/filter_claims.js +16 -0
  273. package/dist/node_modules/oidc-provider/lib/helpers/formatters.js +24 -0
  274. package/dist/node_modules/oidc-provider/lib/helpers/grant_common.js +214 -0
  275. package/dist/node_modules/oidc-provider/lib/helpers/html_safe.js +19 -0
  276. package/dist/node_modules/oidc-provider/lib/helpers/initialize_adapter.js +24 -0
  277. package/dist/node_modules/oidc-provider/lib/helpers/initialize_app.js +243 -0
  278. package/dist/node_modules/oidc-provider/lib/helpers/initialize_clients.js +24 -0
  279. package/dist/node_modules/oidc-provider/lib/helpers/initialize_keystore.js +310 -0
  280. package/dist/node_modules/oidc-provider/lib/helpers/interaction_policy/check.js +21 -0
  281. package/dist/node_modules/oidc-provider/lib/helpers/interaction_policy/index.js +43 -0
  282. package/dist/node_modules/oidc-provider/lib/helpers/interaction_policy/prompt.js +95 -0
  283. package/dist/node_modules/oidc-provider/lib/helpers/interaction_policy/prompts/consent.js +105 -0
  284. package/dist/node_modules/oidc-provider/lib/helpers/interaction_policy/prompts/login.js +162 -0
  285. package/dist/node_modules/oidc-provider/lib/helpers/jwt.js +211 -0
  286. package/dist/node_modules/oidc-provider/lib/helpers/keystore.js +301 -0
  287. package/dist/node_modules/oidc-provider/lib/helpers/nanoid.js +5 -0
  288. package/dist/node_modules/oidc-provider/lib/helpers/oidc_context.js +284 -0
  289. package/dist/node_modules/oidc-provider/lib/helpers/params.js +27 -0
  290. package/dist/node_modules/oidc-provider/lib/helpers/pkce.js +30 -0
  291. package/dist/node_modules/oidc-provider/lib/helpers/pkce_format.js +17 -0
  292. package/dist/node_modules/oidc-provider/lib/helpers/process_response_types.js +202 -0
  293. package/dist/node_modules/oidc-provider/lib/helpers/re_render_errors.js +39 -0
  294. package/dist/node_modules/oidc-provider/lib/helpers/redirect_uri.js +16 -0
  295. package/dist/node_modules/oidc-provider/lib/helpers/resolve_resource.js +33 -0
  296. package/dist/node_modules/oidc-provider/lib/helpers/resolve_response_mode.js +7 -0
  297. package/dist/node_modules/oidc-provider/lib/helpers/resource_server.js +20 -0
  298. package/dist/node_modules/oidc-provider/lib/helpers/revoke.js +27 -0
  299. package/dist/node_modules/oidc-provider/lib/helpers/script_src_sha.js +21 -0
  300. package/dist/node_modules/oidc-provider/lib/helpers/sector_identifier.js +19 -0
  301. package/dist/node_modules/oidc-provider/lib/helpers/sector_validate.js +55 -0
  302. package/dist/node_modules/oidc-provider/lib/helpers/set_rt_bindings.js +21 -0
  303. package/dist/node_modules/oidc-provider/lib/helpers/token_find.js +51 -0
  304. package/dist/node_modules/oidc-provider/lib/helpers/type_validators.js +8 -0
  305. package/dist/node_modules/oidc-provider/lib/helpers/user_code_form.js +19 -0
  306. package/dist/node_modules/oidc-provider/lib/helpers/user_codes.js +38 -0
  307. package/dist/node_modules/oidc-provider/lib/helpers/valid_url.js +8 -0
  308. package/dist/node_modules/oidc-provider/lib/helpers/validate_dpop.js +129 -0
  309. package/dist/node_modules/oidc-provider/lib/helpers/validate_presence.js +17 -0
  310. package/dist/node_modules/oidc-provider/lib/helpers/weak_cache.js +11 -0
  311. package/dist/node_modules/oidc-provider/lib/index.js +21 -0
  312. package/dist/node_modules/oidc-provider/lib/models/access_token.js +31 -0
  313. package/dist/node_modules/oidc-provider/lib/models/authorization_code.js +27 -0
  314. package/dist/node_modules/oidc-provider/lib/models/backchannel_authentication_request.js +26 -0
  315. package/dist/node_modules/oidc-provider/lib/models/base_model.js +141 -0
  316. package/dist/node_modules/oidc-provider/lib/models/base_token.js +86 -0
  317. package/dist/node_modules/oidc-provider/lib/models/client.js +593 -0
  318. package/dist/node_modules/oidc-provider/lib/models/client_credentials.js +19 -0
  319. package/dist/node_modules/oidc-provider/lib/models/device_code.js +44 -0
  320. package/dist/node_modules/oidc-provider/lib/models/formats/dynamic.js +21 -0
  321. package/dist/node_modules/oidc-provider/lib/models/formats/index.js +14 -0
  322. package/dist/node_modules/oidc-provider/lib/models/formats/jwt.js +198 -0
  323. package/dist/node_modules/oidc-provider/lib/models/formats/opaque.js +58 -0
  324. package/dist/node_modules/oidc-provider/lib/models/grant.js +243 -0
  325. package/dist/node_modules/oidc-provider/lib/models/id_token.js +271 -0
  326. package/dist/node_modules/oidc-provider/lib/models/index.js +37 -0
  327. package/dist/node_modules/oidc-provider/lib/models/initial_access_token.js +12 -0
  328. package/dist/node_modules/oidc-provider/lib/models/interaction.js +73 -0
  329. package/dist/node_modules/oidc-provider/lib/models/mixins/apply.js +4 -0
  330. package/dist/node_modules/oidc-provider/lib/models/mixins/consumable.js +17 -0
  331. package/dist/node_modules/oidc-provider/lib/models/mixins/has_format.js +46 -0
  332. package/dist/node_modules/oidc-provider/lib/models/mixins/has_grant_id.js +12 -0
  333. package/dist/node_modules/oidc-provider/lib/models/mixins/has_grant_type.js +8 -0
  334. package/dist/node_modules/oidc-provider/lib/models/mixins/has_policies.js +38 -0
  335. package/dist/node_modules/oidc-provider/lib/models/mixins/is_attestation_constrained.js +15 -0
  336. package/dist/node_modules/oidc-provider/lib/models/mixins/is_sender_constrained.js +50 -0
  337. package/dist/node_modules/oidc-provider/lib/models/mixins/is_session_bound.js +38 -0
  338. package/dist/node_modules/oidc-provider/lib/models/mixins/set_audience.js +21 -0
  339. package/dist/node_modules/oidc-provider/lib/models/mixins/stores_auth.js +16 -0
  340. package/dist/node_modules/oidc-provider/lib/models/mixins/stores_pkce.js +9 -0
  341. package/dist/node_modules/oidc-provider/lib/models/pushed_authorization_request.js +21 -0
  342. package/dist/node_modules/oidc-provider/lib/models/refresh_token.js +47 -0
  343. package/dist/node_modules/oidc-provider/lib/models/registration_access_token.js +8 -0
  344. package/dist/node_modules/oidc-provider/lib/models/replay_detection.js +31 -0
  345. package/dist/node_modules/oidc-provider/lib/models/session.js +192 -0
  346. package/dist/node_modules/oidc-provider/lib/provider.js +453 -0
  347. package/dist/node_modules/oidc-provider/lib/response_modes/form_post.js +36 -0
  348. package/dist/node_modules/oidc-provider/lib/response_modes/fragment.js +7 -0
  349. package/dist/node_modules/oidc-provider/lib/response_modes/index.js +15 -0
  350. package/dist/node_modules/oidc-provider/lib/response_modes/jwt.js +43 -0
  351. package/dist/node_modules/oidc-provider/lib/response_modes/query.js +7 -0
  352. package/dist/node_modules/oidc-provider/lib/response_modes/web_message.js +55 -0
  353. package/dist/node_modules/oidc-provider/lib/shared/assemble_params.js +7 -0
  354. package/dist/node_modules/oidc-provider/lib/shared/attest_client_auth.js +111 -0
  355. package/dist/node_modules/oidc-provider/lib/shared/authorization_error_handler.js +104 -0
  356. package/dist/node_modules/oidc-provider/lib/shared/check_rar.js +75 -0
  357. package/dist/node_modules/oidc-provider/lib/shared/check_resource.js +77 -0
  358. package/dist/node_modules/oidc-provider/lib/shared/client_auth.js +263 -0
  359. package/dist/node_modules/oidc-provider/lib/shared/conditional_body.js +9 -0
  360. package/dist/node_modules/oidc-provider/lib/shared/cors.js +49 -0
  361. package/dist/node_modules/oidc-provider/lib/shared/error_handler.js +59 -0
  362. package/dist/node_modules/oidc-provider/lib/shared/jwt_client_auth.js +79 -0
  363. package/dist/node_modules/oidc-provider/lib/shared/no_cache.js +4 -0
  364. package/dist/node_modules/oidc-provider/lib/shared/reject_dupes.js +45 -0
  365. package/dist/node_modules/oidc-provider/lib/shared/reject_structured_tokens.js +18 -0
  366. package/dist/node_modules/oidc-provider/lib/shared/selective_body.js +60 -0
  367. package/dist/node_modules/oidc-provider/lib/shared/session.js +68 -0
  368. package/dist/node_modules/oidc-provider/lib/shared/set_www_authenticate_header.js +52 -0
  369. package/dist/node_modules/oidc-provider/lib/views/index.js +22 -0
  370. package/dist/node_modules/oidc-provider/lib/views/interaction.js +171 -0
  371. package/dist/node_modules/oidc-provider/lib/views/layout.js +237 -0
  372. package/dist/node_modules/oidc-provider/lib/views/login.js +43 -0
  373. package/dist/node_modules/oidc-provider/node_modules/@koa/router/LICENSE +21 -0
  374. package/dist/node_modules/oidc-provider/node_modules/@koa/router/README.md +1370 -0
  375. package/dist/node_modules/oidc-provider/node_modules/@koa/router/dist/index.d.mts +1003 -0
  376. package/dist/node_modules/oidc-provider/node_modules/@koa/router/dist/index.d.ts +1003 -0
  377. package/dist/node_modules/oidc-provider/node_modules/@koa/router/dist/index.js +1616 -0
  378. package/dist/node_modules/oidc-provider/node_modules/@koa/router/dist/index.mjs +1573 -0
  379. package/dist/node_modules/oidc-provider/node_modules/@koa/router/package.json +122 -0
  380. package/dist/node_modules/oidc-provider/node_modules/debug/LICENSE +20 -0
  381. package/dist/node_modules/oidc-provider/node_modules/debug/README.md +481 -0
  382. package/dist/node_modules/oidc-provider/node_modules/debug/package.json +64 -0
  383. package/dist/node_modules/oidc-provider/node_modules/debug/src/browser.js +272 -0
  384. package/dist/node_modules/oidc-provider/node_modules/debug/src/common.js +292 -0
  385. package/dist/node_modules/oidc-provider/node_modules/debug/src/index.js +10 -0
  386. package/dist/node_modules/oidc-provider/node_modules/debug/src/node.js +263 -0
  387. package/dist/node_modules/oidc-provider/node_modules/http-errors/HISTORY.md +186 -0
  388. package/dist/node_modules/oidc-provider/node_modules/http-errors/LICENSE +23 -0
  389. package/dist/node_modules/oidc-provider/node_modules/http-errors/README.md +169 -0
  390. package/dist/node_modules/oidc-provider/node_modules/http-errors/index.js +290 -0
  391. package/dist/node_modules/oidc-provider/node_modules/http-errors/package.json +54 -0
  392. package/dist/node_modules/oidc-provider/node_modules/jsesc/LICENSE-MIT.txt +20 -0
  393. package/dist/node_modules/oidc-provider/node_modules/jsesc/README.md +422 -0
  394. package/dist/node_modules/oidc-provider/node_modules/jsesc/bin/jsesc +148 -0
  395. package/dist/node_modules/oidc-provider/node_modules/jsesc/jsesc.js +337 -0
  396. package/dist/node_modules/oidc-provider/node_modules/jsesc/man/jsesc.1 +94 -0
  397. package/dist/node_modules/oidc-provider/node_modules/jsesc/package.json +56 -0
  398. package/dist/node_modules/oidc-provider/node_modules/nanoid/LICENSE +20 -0
  399. package/dist/node_modules/oidc-provider/node_modules/nanoid/README.md +38 -0
  400. package/dist/node_modules/oidc-provider/node_modules/nanoid/bin/nanoid.js +55 -0
  401. package/dist/node_modules/oidc-provider/node_modules/nanoid/index.browser.js +29 -0
  402. package/dist/node_modules/oidc-provider/node_modules/nanoid/index.d.ts +106 -0
  403. package/dist/node_modules/oidc-provider/node_modules/nanoid/index.js +47 -0
  404. package/dist/node_modules/oidc-provider/node_modules/nanoid/nanoid.js +1 -0
  405. package/dist/node_modules/oidc-provider/node_modules/nanoid/non-secure/index.d.ts +48 -0
  406. package/dist/node_modules/oidc-provider/node_modules/nanoid/non-secure/index.js +21 -0
  407. package/dist/node_modules/oidc-provider/node_modules/nanoid/package.json +46 -0
  408. package/dist/node_modules/oidc-provider/node_modules/nanoid/url-alphabet/index.js +2 -0
  409. package/dist/node_modules/oidc-provider/node_modules/path-to-regexp/LICENSE +21 -0
  410. package/dist/node_modules/oidc-provider/node_modules/path-to-regexp/Readme.md +224 -0
  411. package/dist/node_modules/oidc-provider/node_modules/path-to-regexp/dist/index.d.ts +144 -0
  412. package/dist/node_modules/oidc-provider/node_modules/path-to-regexp/dist/index.js +409 -0
  413. package/dist/node_modules/oidc-provider/node_modules/path-to-regexp/dist/index.js.map +1 -0
  414. package/dist/node_modules/oidc-provider/node_modules/path-to-regexp/package.json +64 -0
  415. package/dist/node_modules/oidc-provider/node_modules/statuses/HISTORY.md +87 -0
  416. package/dist/node_modules/oidc-provider/node_modules/statuses/LICENSE +23 -0
  417. package/dist/node_modules/oidc-provider/node_modules/statuses/README.md +139 -0
  418. package/dist/node_modules/oidc-provider/node_modules/statuses/codes.json +65 -0
  419. package/dist/node_modules/oidc-provider/node_modules/statuses/index.js +146 -0
  420. package/dist/node_modules/oidc-provider/node_modules/statuses/package.json +49 -0
  421. package/dist/node_modules/oidc-provider/package.json +95 -0
  422. package/dist/node_modules/quick-lru/index.d.ts +178 -0
  423. package/dist/node_modules/quick-lru/index.js +329 -0
  424. package/dist/node_modules/quick-lru/license +9 -0
  425. package/dist/node_modules/quick-lru/package.json +54 -0
  426. package/dist/node_modules/quick-lru/readme.md +236 -0
  427. package/dist/node_modules/statuses/HISTORY.md +65 -0
  428. package/dist/node_modules/statuses/LICENSE +23 -0
  429. package/dist/node_modules/statuses/README.md +127 -0
  430. package/dist/node_modules/statuses/codes.json +66 -0
  431. package/dist/node_modules/statuses/index.js +113 -0
  432. package/dist/node_modules/statuses/package.json +48 -0
  433. package/dist/server/cache-adapter.d.ts +33 -0
  434. package/dist/server/cache-adapter.js +159 -0
  435. package/dist/server/index.d.ts +10 -0
  436. package/dist/server/index.js +48 -0
  437. package/dist/server/interaction.d.ts +26 -0
  438. package/dist/server/interaction.js +172 -0
  439. package/dist/server/paths.d.ts +19 -0
  440. package/dist/server/paths.js +64 -0
  441. package/dist/server/plugin.d.ts +16 -0
  442. package/dist/server/plugin.js +108 -0
  443. package/dist/server/provider-dispatch.d.ts +32 -0
  444. package/dist/server/provider-dispatch.js +252 -0
  445. package/dist/server/service.d.ts +63 -0
  446. package/dist/server/service.js +540 -0
  447. package/dist/server/utils.d.ts +12 -0
  448. package/dist/server/utils.js +58 -0
  449. package/package.json +24 -0
  450. package/server.d.ts +2 -0
  451. package/server.js +1 -0
@@ -0,0 +1,1003 @@
1
+ import * as koa from 'koa';
2
+ import { DefaultState, DefaultContext, Middleware, ParameterizedContext } from 'koa';
3
+ import { Key } from 'path-to-regexp';
4
+
5
+ /**
6
+ * Extended middleware with param metadata
7
+ * @internal
8
+ */
9
+ type ParameterMiddleware<StateT = DefaultState, ContextT = DefaultContext, BodyT = unknown> = RouterMiddleware<StateT, ContextT, BodyT> & {
10
+ param?: string;
11
+ _originalFn?: RouterParameterMiddleware<StateT, ContextT, BodyT>;
12
+ };
13
+ /**
14
+ * Layer class represents a single route or middleware layer.
15
+ * It handles path matching, parameter extraction, and middleware execution.
16
+ *
17
+ * @typeParam StateT - Custom state type extending Koa's DefaultState
18
+ * @typeParam ContextT - Custom context type extending Koa's DefaultContext
19
+ * @typeParam BodyT - Response body type
20
+ */
21
+ declare class Layer<StateT = DefaultState, ContextT = DefaultContext, BodyT = unknown> {
22
+ opts: LayerOptions;
23
+ name: string | undefined;
24
+ methods: string[];
25
+ paramNames: Key[];
26
+ stack: Array<RouterMiddleware<StateT, ContextT, BodyT> | ParameterMiddleware<StateT, ContextT, BodyT>>;
27
+ path: string | RegExp;
28
+ regexp: RegExp;
29
+ /**
30
+ * Initialize a new routing Layer with given `method`, `path`, and `middleware`.
31
+ *
32
+ * @param path - Path string or regular expression
33
+ * @param methods - Array of HTTP verbs
34
+ * @param middleware - Layer callback/middleware or series of
35
+ * @param opts - Layer options
36
+ * @private
37
+ */
38
+ constructor(path: string | RegExp, methods: string[], middleware: RouterMiddleware<StateT, ContextT, BodyT> | Array<RouterMiddleware<StateT, ContextT, BodyT>>, options?: LayerOptions);
39
+ /**
40
+ * Normalize HTTP methods and add automatic HEAD support for GET
41
+ * @private
42
+ */
43
+ private _normalizeHttpMethods;
44
+ /**
45
+ * Normalize middleware to array and validate all are functions
46
+ * @private
47
+ */
48
+ private _normalizeAndValidateMiddleware;
49
+ /**
50
+ * Configure path matching regexp and parameters
51
+ * @private
52
+ */
53
+ private _configurePathMatching;
54
+ /**
55
+ * Configure path-to-regexp for string paths
56
+ * @private
57
+ */
58
+ private _configurePathToRegexp;
59
+ /**
60
+ * Returns whether request `path` matches route.
61
+ *
62
+ * @param path - Request path
63
+ * @returns Whether path matches
64
+ * @private
65
+ */
66
+ match(path: string): boolean;
67
+ /**
68
+ * Returns map of URL parameters for given `path` and `paramNames`.
69
+ *
70
+ * @param _path - Request path (not used, kept for API compatibility)
71
+ * @param captures - Captured values from regexp
72
+ * @param existingParams - Existing params to merge with
73
+ * @returns Parameter map
74
+ * @private
75
+ */
76
+ params(_path: string, captures: string[], existingParameters?: Record<string, string>): Record<string, string>;
77
+ /**
78
+ * Returns array of regexp url path captures.
79
+ *
80
+ * @param path - Request path
81
+ * @returns Array of captured values
82
+ * @private
83
+ */
84
+ captures(path: string): string[];
85
+ /**
86
+ * Generate URL for route using given `params`.
87
+ *
88
+ * @example
89
+ *
90
+ * ```javascript
91
+ * const route = new Layer('/users/:id', ['GET'], fn);
92
+ *
93
+ * route.url({ id: 123 }); // => "/users/123"
94
+ * ```
95
+ *
96
+ * @param args - URL parameters (various formats supported)
97
+ * @returns Generated URL
98
+ * @throws Error if route path is a RegExp (cannot generate URL from RegExp)
99
+ * @private
100
+ */
101
+ url(...arguments_: unknown[]): string;
102
+ /**
103
+ * Parse url() arguments into params and options
104
+ * Supports multiple call signatures:
105
+ * - url({ id: 1 })
106
+ * - url(1, 2, 3)
107
+ * - url({ query: {...} })
108
+ * - url({ id: 1 }, { query: {...} })
109
+ * @private
110
+ */
111
+ private _parseUrlArguments;
112
+ /**
113
+ * Build parameter replacements for URL generation
114
+ * @private
115
+ */
116
+ private _buildParamReplacements;
117
+ /**
118
+ * Add query string to URL
119
+ * @private
120
+ */
121
+ private _addQueryString;
122
+ /**
123
+ * Run validations on route named parameters.
124
+ *
125
+ * @example
126
+ *
127
+ * ```javascript
128
+ * router
129
+ * .param('user', function (id, ctx, next) {
130
+ * ctx.user = users[id];
131
+ * if (!ctx.user) return ctx.status = 404;
132
+ * next();
133
+ * })
134
+ * .get('/users/:user', function (ctx, next) {
135
+ * ctx.body = ctx.user;
136
+ * });
137
+ * ```
138
+ *
139
+ * @param paramName - Parameter name
140
+ * @param paramHandler - Middleware function
141
+ * @returns This layer instance
142
+ * @private
143
+ */
144
+ param(parameterName: string, parameterHandler: RouterParameterMiddleware<StateT, ContextT, BodyT>): Layer<StateT, ContextT, BodyT>;
145
+ /**
146
+ * Create param middleware with deduplication tracking
147
+ * @private
148
+ */
149
+ private _createParamMiddleware;
150
+ /**
151
+ * Insert param middleware at the correct position in the stack
152
+ * @private
153
+ */
154
+ private _insertParamMiddleware;
155
+ /**
156
+ * Prefix route path.
157
+ *
158
+ * @param prefixPath - Prefix to prepend
159
+ * @returns This layer instance
160
+ * @private
161
+ */
162
+ setPrefix(prefixPath: string): Layer<StateT, ContextT, BodyT>;
163
+ /**
164
+ * Apply prefix to the current path
165
+ * @private
166
+ */
167
+ private _applyPrefix;
168
+ /**
169
+ * Reconfigure path matching after prefix is applied
170
+ * @private
171
+ */
172
+ private _reconfigurePathMatching;
173
+ }
174
+
175
+ /**
176
+ * Named constants for active router lifecycle events.
177
+ *
178
+ * Only events that are fully implemented appear here. Planned events will be
179
+ * added as each one is implemented so the public API always reflects what
180
+ * actually works.
181
+ *
182
+ * @experimental
183
+ */
184
+ declare const RouterEvents: {
185
+ /**
186
+ * Fires when no route matched the request path + HTTP method.
187
+ */
188
+ readonly NotFound: "not-found";
189
+ };
190
+ /**
191
+ * Union of all valid router event name strings.
192
+ * Derived from `RouterEvents` so the two are always in sync.
193
+ *
194
+ * @experimental
195
+ */
196
+ type RouterEvent = (typeof RouterEvents)[keyof typeof RouterEvents];
197
+ /**
198
+ * Accepts either a raw event name string or a selector function that receives
199
+ * the `RouterEvents` object and returns an event name.
200
+ *
201
+ * Both forms are equivalent — choose whichever reads better in context.
202
+ *
203
+ * @example
204
+ * ```typescript
205
+ * // string
206
+ * 'not-found'
207
+ *
208
+ * // selector function
209
+ * (events) => events.NotFound
210
+ * ```
211
+ *
212
+ * @experimental
213
+ */
214
+ type RouterEventSelector = RouterEvent | ((events: typeof RouterEvents) => RouterEvent);
215
+
216
+ type RouterInstance<StateT = koa.DefaultState, ContextT = koa.DefaultContext> = RouterImplementation<StateT, ContextT>;
217
+ /**
218
+ * Middleware with router property
219
+ */
220
+ type RouterComposedMiddleware<StateT = koa.DefaultState, ContextT = koa.DefaultContext> = Middleware<StateT, ContextT & RouterParameterContext<StateT, ContextT>> & {
221
+ router?: Router<StateT, ContextT>;
222
+ };
223
+ /**
224
+ * @module koa-router
225
+ */
226
+ declare class RouterImplementation<StateT = koa.DefaultState, ContextT = koa.DefaultContext> {
227
+ opts: RouterOptions;
228
+ methods: string[];
229
+ exclusive: boolean;
230
+ params: Record<string, RouterParameterMiddleware<StateT, ContextT> | RouterParameterMiddleware<StateT, ContextT>[]>;
231
+ stack: Layer<StateT, ContextT>[];
232
+ host?: string | string[] | RegExp;
233
+ /**
234
+ * Event emitter for router lifecycle events (experimental)
235
+ * @internal
236
+ */
237
+ private _events;
238
+ /**
239
+ * Create a new router.
240
+ *
241
+ * @example
242
+ *
243
+ * Basic usage:
244
+ *
245
+ * ```javascript
246
+ * const Koa = require('koa');
247
+ * const Router = require('@koa/router');
248
+ *
249
+ * const app = new Koa();
250
+ * const router = new Router();
251
+ *
252
+ * router.get('/', (ctx, next) => {
253
+ * // ctx.router available
254
+ * });
255
+ *
256
+ * app
257
+ * .use(router.routes())
258
+ * .use(router.allowedMethods());
259
+ * ```
260
+ *
261
+ * @alias module:koa-router
262
+ * @param opts - Router options
263
+ * @constructor
264
+ */
265
+ constructor(options?: RouterOptions);
266
+ /**
267
+ * Generate URL from url pattern and given `params`.
268
+ *
269
+ * @example
270
+ *
271
+ * ```javascript
272
+ * const url = Router.url('/users/:id', {id: 1});
273
+ * // => "/users/1"
274
+ * ```
275
+ *
276
+ * @param path - URL pattern
277
+ * @param args - URL parameters
278
+ * @returns Generated URL
279
+ */
280
+ static url(path: string | RegExp, ...arguments_: unknown[]): string;
281
+ /**
282
+ * Use given middleware.
283
+ *
284
+ * Middleware run in the order they are defined by `.use()`. They are invoked
285
+ * sequentially, requests start at the first middleware and work their way
286
+ * "down" the middleware stack.
287
+ *
288
+ * @example
289
+ *
290
+ * ```javascript
291
+ * // session middleware will run before authorize
292
+ * router
293
+ * .use(session())
294
+ * .use(authorize());
295
+ *
296
+ * // use middleware only with given path
297
+ * router.use('/users', userAuth());
298
+ *
299
+ * // or with an array of paths
300
+ * router.use(['/users', '/admin'], userAuth());
301
+ *
302
+ * app.use(router.routes());
303
+ * ```
304
+ *
305
+ * @param middleware - Middleware functions
306
+ * @returns This router instance
307
+ */
308
+ use<T = {}, U = {}, B = unknown>(middleware: RouterMiddleware<StateT & T, ContextT & U, B>): Router<StateT, ContextT>;
309
+ use<T = {}, U = {}>(middleware: RouterComposedMiddleware<StateT & T, ContextT & U>): Router<StateT, ContextT>;
310
+ use<T = {}, U = {}, B = unknown>(...middleware: Array<RouterMiddleware<StateT & T, ContextT & U, B>>): Router<StateT, ContextT>;
311
+ use<T = {}, U = {}>(...middleware: Array<RouterComposedMiddleware<StateT & T, ContextT & U>>): Router<StateT, ContextT>;
312
+ use<T = {}, U = {}, B = unknown>(path: string | RegExp | string[], middleware: RouterMiddleware<StateT & T, ContextT & U, B>): Router<StateT, ContextT>;
313
+ use<T = {}, U = {}>(path: string | RegExp | string[], middleware: RouterComposedMiddleware<StateT & T, ContextT & U>): Router<StateT, ContextT>;
314
+ use<T = {}, U = {}, B = unknown>(path: string | RegExp | string[], ...middleware: Array<RouterMiddleware<StateT & T, ContextT & U, B>>): Router<StateT, ContextT>;
315
+ use<T = {}, U = {}>(path: string | RegExp | string[], ...middleware: Array<RouterComposedMiddleware<StateT & T, ContextT & U>>): Router<StateT, ContextT>;
316
+ use<T = {}, U = {}, B = unknown>(path: string | RegExp | string[], m1: RouterMiddleware<StateT & T, ContextT & U, B>, m2: RouterMiddleware<StateT & T, ContextT & U, B> | RouterComposedMiddleware<StateT & T, ContextT & U>, ...middleware: Array<RouterMiddleware<StateT & T, ContextT & U, B> | RouterComposedMiddleware<StateT & T, ContextT & U>>): Router<StateT, ContextT>;
317
+ use<T = {}, U = {}, B = unknown>(m1: RouterMiddleware<StateT & T, ContextT & U, B>, m2: RouterMiddleware<StateT & T, ContextT & U, B> | RouterComposedMiddleware<StateT & T, ContextT & U>, ...middleware: Array<RouterMiddleware<StateT & T, ContextT & U, B> | RouterComposedMiddleware<StateT & T, ContextT & U>>): Router<StateT, ContextT>;
318
+ /**
319
+ * Check if first argument is an array of paths (all elements must be strings)
320
+ * @private
321
+ */
322
+ private _isPathArray;
323
+ /**
324
+ * Check if first argument is an explicit path (string or RegExp)
325
+ * Empty string counts as explicit path to enable param capture
326
+ * @private
327
+ */
328
+ private _hasExplicitPath;
329
+ /**
330
+ * Check if middleware contains a nested router
331
+ * @private
332
+ */
333
+ private _isNestedRouter;
334
+ /**
335
+ * Apply middleware to multiple paths
336
+ * @private
337
+ */
338
+ private _useWithPathArray;
339
+ /**
340
+ * Mount a nested router
341
+ * @private
342
+ */
343
+ private _mountNestedRouter;
344
+ /**
345
+ * Clone a router instance
346
+ * @private
347
+ */
348
+ private _cloneRouter;
349
+ /**
350
+ * Clone a layer instance (deep clone to avoid shared references)
351
+ * @private
352
+ */
353
+ private _cloneLayer;
354
+ /**
355
+ * Apply this router's param middleware to a nested router
356
+ * @private
357
+ */
358
+ private _applyParamMiddlewareToRouter;
359
+ /**
360
+ * Register regular middleware (not nested router)
361
+ * @private
362
+ */
363
+ private _registerMiddleware;
364
+ /**
365
+ * Set the path prefix for a Router instance that was already initialized.
366
+ * Note: Calling this method multiple times will replace the prefix, not stack them.
367
+ *
368
+ * @example
369
+ *
370
+ * ```javascript
371
+ * router.prefix('/things/:thing_id')
372
+ * ```
373
+ *
374
+ * @param prefixPath - Prefix string
375
+ * @returns This router instance
376
+ */
377
+ prefix(prefixPath: string): Router<StateT, ContextT>;
378
+ /**
379
+ * Returns router middleware which dispatches a route matching the request.
380
+ *
381
+ * @returns Router middleware
382
+ */
383
+ middleware(): RouterComposedMiddleware<StateT, ContextT>;
384
+ /**
385
+ * Get the request path to use for routing
386
+ * @private
387
+ */
388
+ private _getRequestPath;
389
+ /**
390
+ * Store matched routes on context
391
+ * @private
392
+ */
393
+ private _storeMatchedRoutes;
394
+ /**
395
+ * Set matched route information on context
396
+ * @private
397
+ */
398
+ private _setMatchedRouteInfo;
399
+ /**
400
+ * Build middleware chain from matched layers
401
+ * @private
402
+ */
403
+ private _buildMiddlewareChain;
404
+ routes(): RouterComposedMiddleware<StateT, ContextT>;
405
+ /**
406
+ * Register an event handler on the router.
407
+ *
408
+ * @experimental This API is experimental and may change in future versions.
409
+ *
410
+ * **Active events:**
411
+ * - `'not-found'` — fires when no route matched path + method. Handlers are
412
+ * composed and called instead of `next()`, so they are responsible for
413
+ * calling `next()` themselves if they want to pass control downstream.
414
+ *
415
+ * @example
416
+ *
417
+ * All three forms are equivalent:
418
+ *
419
+ * ```javascript
420
+ * import { RouterEvents } from '@koa/router';
421
+ *
422
+ * // Named constant (recommended — autocomplete + refactor safe)
423
+ * router.on(RouterEvents.NotFound, handler);
424
+ *
425
+ * // Selector function (fluent style)
426
+ * router.on((events) => events.NotFound, handler);
427
+ *
428
+ * // Raw string (still accepted)
429
+ * router.on('not-found', handler);
430
+ * ```
431
+ *
432
+ * Multiple handlers compose in registration order:
433
+ *
434
+ * ```javascript
435
+ * router.on(RouterEvents.NotFound, async (ctx, next) => {
436
+ * console.log('no route matched', ctx.path);
437
+ * await next();
438
+ * });
439
+ * router.on(RouterEvents.NotFound, (ctx) => {
440
+ * ctx.status = 404;
441
+ * ctx.body = { error: 'Not Found' };
442
+ * });
443
+ * ```
444
+ *
445
+ * @param event - Event name string, `RouterEvents` constant, or selector
446
+ * function `(events) => events.NotFound` (see `RouterEventSelector`)
447
+ * @param handler - Middleware to run when the event fires
448
+ * @returns This router instance for chaining
449
+ */
450
+ on(event: RouterEventSelector, handler: RouterMiddleware<StateT, ContextT>): Router<StateT, ContextT>;
451
+ /**
452
+ * Returns separate middleware for responding to `OPTIONS` requests with
453
+ * an `Allow` header containing the allowed methods, as well as responding
454
+ * with `405 Method Not Allowed` and `501 Not Implemented` as appropriate.
455
+ *
456
+ * @example
457
+ *
458
+ * ```javascript
459
+ * const Koa = require('koa');
460
+ * const Router = require('@koa/router');
461
+ *
462
+ * const app = new Koa();
463
+ * const router = new Router();
464
+ *
465
+ * app.use(router.routes());
466
+ * app.use(router.allowedMethods());
467
+ * ```
468
+ *
469
+ * **Example with [Boom](https://github.com/hapijs/boom)**
470
+ *
471
+ * ```javascript
472
+ * const Koa = require('koa');
473
+ * const Router = require('@koa/router');
474
+ * const Boom = require('boom');
475
+ *
476
+ * const app = new Koa();
477
+ * const router = new Router();
478
+ *
479
+ * app.use(router.routes());
480
+ * app.use(router.allowedMethods({
481
+ * throw: true,
482
+ * notImplemented: () => new Boom.notImplemented(),
483
+ * methodNotAllowed: () => new Boom.methodNotAllowed()
484
+ * }));
485
+ * ```
486
+ *
487
+ * @param options - Options object
488
+ * @returns Middleware function
489
+ */
490
+ allowedMethods(options?: AllowedMethodsOptions): RouterMiddleware<StateT, ContextT>;
491
+ /**
492
+ * Check if we should process allowed methods
493
+ * @private
494
+ */
495
+ private _shouldProcessAllowedMethods;
496
+ /**
497
+ * Collect all allowed methods from matched routes
498
+ * @private
499
+ */
500
+ private _collectAllowedMethods;
501
+ /**
502
+ * Handle 501 Not Implemented response
503
+ * @private
504
+ */
505
+ private _handleNotImplemented;
506
+ /**
507
+ * Handle OPTIONS request
508
+ * @private
509
+ */
510
+ private _handleOptionsRequest;
511
+ /**
512
+ * Handle 405 Method Not Allowed response
513
+ * @private
514
+ */
515
+ private _handleMethodNotAllowed;
516
+ /**
517
+ * Register route with all methods.
518
+ *
519
+ * @param args - Route arguments (name, path, middleware)
520
+ * @returns This router instance
521
+ */
522
+ all<T = {}, U = {}, B = unknown>(name: string, path: string | RegExp, ...middleware: Array<RouterMiddleware<StateT & T, ContextT & U, B>>): Router<StateT, ContextT>;
523
+ all<T = {}, U = {}, B = unknown>(path: string | RegExp | Array<string | RegExp>, ...middleware: Array<RouterMiddleware<StateT & T, ContextT & U, B>>): Router<StateT, ContextT>;
524
+ /**
525
+ * Redirect `source` to `destination` URL with optional 30x status `code`.
526
+ *
527
+ * Both `source` and `destination` can be route names.
528
+ *
529
+ * ```javascript
530
+ * router.redirect('/login', 'sign-in');
531
+ * ```
532
+ *
533
+ * This is equivalent to:
534
+ *
535
+ * ```javascript
536
+ * router.all('/login', ctx => {
537
+ * ctx.redirect('/sign-in');
538
+ * ctx.status = 301;
539
+ * });
540
+ * ```
541
+ *
542
+ * @param source - URL or route name
543
+ * @param destination - URL or route name
544
+ * @param code - HTTP status code (default: 301)
545
+ * @returns This router instance
546
+ */
547
+ redirect(source: string | symbol, destination: string | symbol, code?: number): Router<StateT, ContextT>;
548
+ /**
549
+ * Create and register a route.
550
+ *
551
+ * @param path - Path string
552
+ * @param methods - Array of HTTP verbs
553
+ * @param middleware - Middleware functions
554
+ * @param additionalOptions - Additional options
555
+ * @returns Created layer
556
+ * @private
557
+ */
558
+ register(path: string | RegExp | string[], methods: string[], middleware: RouterMiddleware<StateT, ContextT> | RouterMiddleware<StateT, ContextT>[], additionalOptions?: LayerOptions): Layer<StateT, ContextT> | Router<StateT, ContextT>;
559
+ /**
560
+ * Register multiple paths with the same configuration
561
+ * @private
562
+ */
563
+ private _registerMultiplePaths;
564
+ /**
565
+ * Create a route layer with given configuration
566
+ * @private
567
+ */
568
+ private _createRouteLayer;
569
+ /**
570
+ * Lookup route with given `name`.
571
+ *
572
+ * @param name - Route name
573
+ * @returns Matched layer or false
574
+ */
575
+ route(name: string): Layer<StateT, ContextT> | false;
576
+ /**
577
+ * Generate URL for route. Takes a route name and map of named `params`.
578
+ *
579
+ * @example
580
+ *
581
+ * ```javascript
582
+ * router.get('user', '/users/:id', (ctx, next) => {
583
+ * // ...
584
+ * });
585
+ *
586
+ * router.url('user', 3);
587
+ * // => "/users/3"
588
+ *
589
+ * router.url('user', { id: 3 });
590
+ * // => "/users/3"
591
+ *
592
+ * router.use((ctx, next) => {
593
+ * // redirect to named route
594
+ * ctx.redirect(ctx.router.url('sign-in'));
595
+ * })
596
+ *
597
+ * router.url('user', { id: 3 }, { query: { limit: 1 } });
598
+ * // => "/users/3?limit=1"
599
+ *
600
+ * router.url('user', { id: 3 }, { query: "limit=1" });
601
+ * // => "/users/3?limit=1"
602
+ * ```
603
+ *
604
+ * @param name - Route name
605
+ * @param args - URL parameters
606
+ * @returns Generated URL or Error
607
+ */
608
+ url(name: string, ...arguments_: unknown[]): string | Error;
609
+ /**
610
+ * Match given `path` and return corresponding routes.
611
+ *
612
+ * @param path - Request path
613
+ * @param method - HTTP method
614
+ * @returns Match result with matched layers
615
+ * @private
616
+ */
617
+ match(path: string, method: string): MatchResult<StateT, ContextT>;
618
+ /**
619
+ * Match given `input` to allowed host
620
+ * @param input - Host to check
621
+ * @returns Whether host matches
622
+ */
623
+ matchHost(input?: string): boolean;
624
+ /**
625
+ * Run middleware for named route parameters. Useful for auto-loading or
626
+ * validation.
627
+ *
628
+ * @example
629
+ *
630
+ * ```javascript
631
+ * router
632
+ * .param('user', (id, ctx, next) => {
633
+ * ctx.user = users[id];
634
+ * if (!ctx.user) return ctx.status = 404;
635
+ * return next();
636
+ * })
637
+ * .get('/users/:user', ctx => {
638
+ * ctx.body = ctx.user;
639
+ * })
640
+ * .get('/users/:user/friends', ctx => {
641
+ * return ctx.user.getFriends().then(function(friends) {
642
+ * ctx.body = friends;
643
+ * });
644
+ * })
645
+ * // /users/3 => {"id": 3, "name": "Alex"}
646
+ * // /users/3/friends => [{"id": 4, "name": "TJ"}]
647
+ * ```
648
+ *
649
+ * @param param - Parameter name
650
+ * @param middleware - Parameter middleware
651
+ * @returns This router instance
652
+ */
653
+ param(parameter: string, middleware: RouterParameterMiddleware<StateT, ContextT>): Router<StateT, ContextT>;
654
+ /**
655
+ * Helper method for registering HTTP verb routes
656
+ * @internal - Used by dynamically added HTTP methods
657
+ */
658
+ _registerMethod(method: string, ...arguments_: unknown[]): Router<StateT, ContextT>;
659
+ /**
660
+ * HTTP GET method
661
+ */
662
+ get<T = {}, U = {}, B = unknown>(name: string, path: string | RegExp, ...middleware: Array<RouterMiddleware<StateT & T, ContextT & U, B>>): Router<StateT, ContextT>;
663
+ get<T = {}, U = {}, B = unknown>(path: string | RegExp | Array<string | RegExp>, ...middleware: Array<RouterMiddleware<StateT & T, ContextT & U, B>>): Router<StateT, ContextT>;
664
+ /**
665
+ * HTTP POST method
666
+ */
667
+ post<T = {}, U = {}, B = unknown>(name: string, path: string | RegExp, ...middleware: Array<RouterMiddleware<StateT & T, ContextT & U, B>>): Router<StateT, ContextT>;
668
+ post<T = {}, U = {}, B = unknown>(path: string | RegExp | Array<string | RegExp>, ...middleware: Array<RouterMiddleware<StateT & T, ContextT & U, B>>): Router<StateT, ContextT>;
669
+ /**
670
+ * HTTP PUT method
671
+ */
672
+ put<T = {}, U = {}, B = unknown>(name: string, path: string | RegExp, ...middleware: Array<RouterMiddleware<StateT & T, ContextT & U, B>>): Router<StateT, ContextT>;
673
+ put<T = {}, U = {}, B = unknown>(path: string | RegExp | Array<string | RegExp>, ...middleware: Array<RouterMiddleware<StateT & T, ContextT & U, B>>): Router<StateT, ContextT>;
674
+ /**
675
+ * HTTP PATCH method
676
+ */
677
+ patch<T = {}, U = {}, B = unknown>(name: string, path: string | RegExp, ...middleware: Array<RouterMiddleware<StateT & T, ContextT & U, B>>): Router<StateT, ContextT>;
678
+ patch<T = {}, U = {}, B = unknown>(path: string | RegExp | Array<string | RegExp>, ...middleware: Array<RouterMiddleware<StateT & T, ContextT & U, B>>): Router<StateT, ContextT>;
679
+ /**
680
+ * HTTP DELETE method
681
+ */
682
+ delete<T = {}, U = {}, B = unknown>(name: string, path: string | RegExp, ...middleware: Array<RouterMiddleware<StateT & T, ContextT & U, B>>): Router<StateT, ContextT>;
683
+ delete<T = {}, U = {}, B = unknown>(path: string | RegExp | Array<string | RegExp>, ...middleware: Array<RouterMiddleware<StateT & T, ContextT & U, B>>): Router<StateT, ContextT>;
684
+ /**
685
+ * HTTP DELETE method alias (del)
686
+ */
687
+ del<T = {}, U = {}, B = unknown>(name: string, path: string | RegExp, ...middleware: Array<RouterMiddleware<StateT & T, ContextT & U, B>>): Router<StateT, ContextT>;
688
+ del<T = {}, U = {}, B = unknown>(path: string | RegExp | Array<string | RegExp>, ...middleware: Array<RouterMiddleware<StateT & T, ContextT & U, B>>): Router<StateT, ContextT>;
689
+ /**
690
+ * HTTP HEAD method
691
+ */
692
+ head<T = {}, U = {}, B = unknown>(name: string, path: string | RegExp, ...middleware: Array<RouterMiddleware<StateT & T, ContextT & U, B>>): Router<StateT, ContextT>;
693
+ head<T = {}, U = {}, B = unknown>(path: string | RegExp | Array<string | RegExp>, ...middleware: Array<RouterMiddleware<StateT & T, ContextT & U, B>>): Router<StateT, ContextT>;
694
+ /**
695
+ * HTTP OPTIONS method
696
+ */
697
+ options<T = {}, U = {}, B = unknown>(name: string, path: string | RegExp, ...middleware: Array<RouterMiddleware<StateT & T, ContextT & U, B>>): Router<StateT, ContextT>;
698
+ options<T = {}, U = {}, B = unknown>(path: string | RegExp | Array<string | RegExp>, ...middleware: Array<RouterMiddleware<StateT & T, ContextT & U, B>>): Router<StateT, ContextT>;
699
+ /**
700
+ * Dynamic HTTP method handler for any method from http.METHODS.
701
+ * Use this index signature to access methods like PURGE, COPY, CONNECT, TRACE, etc.
702
+ * These are dynamically added at runtime from Node's http.METHODS.
703
+ *
704
+ * @example
705
+ * ```typescript
706
+ * // Type-safe way to use dynamic methods
707
+ * const router = new Router();
708
+ * router.register('/cache/:key', ['PURGE'], middleware);
709
+ *
710
+ * // Or cast to access dynamic method directly
711
+ * (router as any).purge('/cache/:key', middleware);
712
+ * ```
713
+ */
714
+ [method: string]: unknown;
715
+ }
716
+ /**
717
+ * Router constructor interface with automatic type inference for custom HTTP methods.
718
+ *
719
+ * @example
720
+ * ```typescript
721
+ * // Methods are automatically typed based on what you pass
722
+ * const router = new Router({
723
+ * methods: ['GET', 'POST', 'PURGE', 'CUSTOM'] as const
724
+ * });
725
+ *
726
+ * // TypeScript knows these methods exist
727
+ * router.get('/users', handler);
728
+ * router.purge('/cache/:key', handler);
729
+ * router.custom('/special', handler);
730
+ * ```
731
+ */
732
+ interface RouterConstructor {
733
+ new <M extends string, StateT = koa.DefaultState, ContextT = koa.DefaultContext>(options: RouterOptionsWithMethods<M>): RouterWithMethods<M, StateT, ContextT>;
734
+ new <StateT = koa.DefaultState, ContextT = koa.DefaultContext>(options?: RouterOptions): Router<StateT, ContextT>;
735
+ /**
736
+ * Generate URL from url pattern and given `params`.
737
+ */
738
+ url(path: string, parameters?: Record<string, unknown>): string;
739
+ url(path: string, ...parameters: unknown[]): string;
740
+ readonly prototype: Router;
741
+ }
742
+ type Router<StateT = koa.DefaultState, ContextT = koa.DefaultContext> = RouterInstance<StateT, ContextT>;
743
+ declare const Router: RouterConstructor;
744
+
745
+ /**
746
+ * Type definitions for @koa/router
747
+ */
748
+
749
+ type RouterOptions = {
750
+ /**
751
+ * Only run last matched route's controller when there are multiple matches
752
+ */
753
+ exclusive?: boolean;
754
+ /**
755
+ * Prefix for all routes
756
+ */
757
+ prefix?: string;
758
+ /**
759
+ * Host for router match (string, array of strings, or RegExp)
760
+ * - string: exact match
761
+ * - string[]: matches if input equals any string in the array
762
+ * - RegExp: pattern match
763
+ */
764
+ host?: string | string[] | RegExp;
765
+ /**
766
+ * HTTP methods this router should respond to
767
+ */
768
+ methods?: string[];
769
+ /**
770
+ * Path to use for routing (internal)
771
+ */
772
+ routerPath?: string;
773
+ /**
774
+ * Whether to use case-sensitive routing
775
+ */
776
+ sensitive?: boolean;
777
+ /**
778
+ * Whether trailing slashes are significant
779
+ */
780
+ strict?: boolean;
781
+ /**
782
+ * Additional options passed through
783
+ */
784
+ [key: string]: unknown;
785
+ };
786
+ type LayerOptions = {
787
+ /**
788
+ * Route name for URL generation
789
+ */
790
+ name?: string | null;
791
+ /**
792
+ * Case sensitive routing
793
+ */
794
+ sensitive?: boolean;
795
+ /**
796
+ * Require trailing slash
797
+ */
798
+ strict?: boolean;
799
+ /**
800
+ * Whether trailing slashes matter (path-to-regexp v8)
801
+ */
802
+ trailing?: boolean;
803
+ /**
804
+ * Route path ends at this path
805
+ */
806
+ end?: boolean;
807
+ /**
808
+ * Prefix for the route
809
+ */
810
+ prefix?: string;
811
+ /**
812
+ * Ignore captures in route matching
813
+ */
814
+ ignoreCaptures?: boolean;
815
+ /**
816
+ * Treat path as a regular expression
817
+ */
818
+ pathAsRegExp?: boolean;
819
+ /**
820
+ * Additional options passed through to path-to-regexp
821
+ */
822
+ [key: string]: unknown;
823
+ };
824
+ type UrlOptions = {
825
+ /**
826
+ * Query string parameters
827
+ */
828
+ query?: Record<string, unknown> | string;
829
+ [key: string]: unknown;
830
+ };
831
+ type RouterParameterContext<StateT = DefaultState, ContextT = DefaultContext> = {
832
+ /**
833
+ * URL parameters
834
+ */
835
+ params: Record<string, string>;
836
+ /**
837
+ * Router instance
838
+ */
839
+ router: RouterInstance<StateT, ContextT>;
840
+ /**
841
+ * Matched route path (internal)
842
+ */
843
+ _matchedRoute?: string | RegExp;
844
+ /**
845
+ * Matched route name (internal)
846
+ */
847
+ _matchedRouteName?: string;
848
+ };
849
+ type RouterParameterMiddleware<StateT = DefaultState, ContextT = DefaultContext, BodyT = unknown> = (parameterValue: string, context: RouterContext<StateT, ContextT, BodyT>, next: () => Promise<unknown>) => unknown | Promise<unknown>;
850
+ type MatchResult<StateT = DefaultState, ContextT = DefaultContext, BodyT = unknown> = {
851
+ /**
852
+ * Layers that matched the path
853
+ */
854
+ path: Layer<StateT, ContextT, BodyT>[];
855
+ /**
856
+ * Layers that matched both path and HTTP method
857
+ */
858
+ pathAndMethod: Layer<StateT, ContextT, BodyT>[];
859
+ /**
860
+ * Whether a route (not just middleware) was matched
861
+ */
862
+ route: boolean;
863
+ };
864
+ type AllowedMethodsOptions = {
865
+ /**
866
+ * Throw error instead of setting status and header
867
+ */
868
+ throw?: boolean;
869
+ /**
870
+ * Throw the returned value in place of the default NotImplemented error
871
+ */
872
+ notImplemented?: () => Error;
873
+ /**
874
+ * Throw the returned value in place of the default MethodNotAllowed error
875
+ */
876
+ methodNotAllowed?: () => Error;
877
+ };
878
+ /**
879
+ * Extended Koa context with router-specific properties
880
+ * Matches the structure from @types/koa-router
881
+ */
882
+ type RouterContext<StateT = DefaultState, ContextT = DefaultContext, BodyT = unknown> = ParameterizedContext<StateT, ContextT & RouterParameterContext<StateT, ContextT>, BodyT> & {
883
+ /**
884
+ * Request with params (set by router during routing)
885
+ */
886
+ request: {
887
+ params: Record<string, string>;
888
+ };
889
+ /**
890
+ * Path of matched route
891
+ */
892
+ routerPath?: string;
893
+ /**
894
+ * Name of matched route
895
+ */
896
+ routerName?: string;
897
+ /**
898
+ * Array of matched layers
899
+ */
900
+ matched?: Layer<StateT, ContextT, BodyT>[];
901
+ /**
902
+ * Whether a route (with HTTP methods) was matched for this request.
903
+ * Set by the router before any handlers run.
904
+ *
905
+ * Use this in app-level middleware after `router.routes()` to detect
906
+ * requests that the router did not handle.
907
+ *
908
+ * @example
909
+ * ```javascript
910
+ * app.use(router.routes());
911
+ * app.use((ctx) => {
912
+ * if (!ctx.routeMatched) {
913
+ * ctx.status = 404;
914
+ * ctx.body = { error: 'Not Found' };
915
+ * }
916
+ * });
917
+ * ```
918
+ */
919
+ routeMatched?: boolean;
920
+ /**
921
+ * Captured values from path
922
+ */
923
+ captures?: string[];
924
+ /**
925
+ * New router path (for nested routers)
926
+ */
927
+ newRouterPath?: string;
928
+ /**
929
+ * Track param middleware execution (internal)
930
+ */
931
+ _matchedParams?: WeakMap<Function, boolean>;
932
+ };
933
+ /**
934
+ * Router middleware function type
935
+ */
936
+ type RouterMiddleware<StateT = DefaultState, ContextT = DefaultContext, BodyT = unknown> = Middleware<StateT, RouterContext<StateT, ContextT, BodyT>, BodyT>;
937
+ /**
938
+ * HTTP method names in lowercase
939
+ */
940
+ type HttpMethod = 'get' | 'post' | 'put' | 'patch' | 'delete' | 'del' | 'head' | 'options' | 'connect' | 'trace' | string;
941
+ /**
942
+ * Router options with generic methods array for type inference
943
+ */
944
+ type RouterOptionsWithMethods<M extends string = string> = Omit<RouterOptions, 'methods'> & {
945
+ methods?: readonly M[];
946
+ };
947
+ /**
948
+ * Type for a dynamic HTTP method function on Router
949
+ */
950
+ type RouterMethodFunction<StateT = DefaultState, ContextT = DefaultContext> = {
951
+ <T = {}, U = {}, B = unknown>(name: string, path: string | RegExp, ...middleware: Array<RouterMiddleware<StateT & T, ContextT & U, B>>): RouterInstance<StateT, ContextT>;
952
+ <T = {}, U = {}, B = unknown>(path: string | RegExp | Array<string | RegExp>, ...middleware: Array<RouterMiddleware<StateT & T, ContextT & U, B>>): RouterInstance<StateT, ContextT>;
953
+ };
954
+ /**
955
+ * Router with additional HTTP methods based on the methods option.
956
+ * Use createRouter() factory function for automatic type inference.
957
+ */
958
+ type RouterWithMethods<M extends string, StateT = DefaultState, ContextT = DefaultContext> = RouterInstance<StateT, ContextT> & Record<Lowercase<M>, RouterMethodFunction<StateT, ContextT>>;
959
+
960
+ /**
961
+ * Parameter validation helpers.
962
+ *
963
+ * These utilities exist to help migrate legacy `:param(regex)` usage from older
964
+ * router/path-to-regexp versions to v14+ (path-to-regexp v8), where inline
965
+ * parameter regexes are no longer supported in route strings.
966
+ */
967
+
968
+ /**
969
+ * Options for createParameterValidationMiddleware helper
970
+ */
971
+ type ParameterValidationOptions = {
972
+ /**
973
+ * HTTP status to use when the value does not match
974
+ * @default 400
975
+ */
976
+ status?: number;
977
+ /**
978
+ * Error message to use when the value does not match
979
+ * @default `Invalid value for parameter "<parameterName>"`
980
+ */
981
+ message?: string;
982
+ /**
983
+ * Whether the error message should be exposed to the client.
984
+ * Passed through to HttpError#expose.
985
+ */
986
+ expose?: boolean;
987
+ /**
988
+ * Optional custom error factory. If provided, it is used
989
+ * instead of the default HttpError.
990
+ */
991
+ createError?: (parameterName: string, value: string) => Error;
992
+ };
993
+ /**
994
+ * Convenience helper to recreate legacy `:param(regex)` validation.
995
+ *
996
+ * @example
997
+ * const validateUuid = createParameterValidationMiddleware('id', uuidRegex);
998
+ * router.param('id', validateUuid).get('/role/:id', handler);
999
+ * router.get('/role/:id', createParameterValidationMiddleware('id', uuidRegex)
1000
+ */
1001
+ declare function createParameterValidationMiddleware(parameterName: string, pattern: RegExp, options?: ParameterValidationOptions): RouterMiddleware<any, any, any> & RouterParameterMiddleware<any, any, any>;
1002
+
1003
+ export { type AllowedMethodsOptions, type HttpMethod, Layer, type LayerOptions, type MatchResult, type ParameterValidationOptions, Router, type RouterContext, type RouterEvent, type RouterEventSelector, RouterEvents, type RouterInstance, type RouterMethodFunction, type RouterMiddleware, type RouterOptions, type RouterOptionsWithMethods, type RouterParameterMiddleware, type RouterWithMethods, type UrlOptions, createParameterValidationMiddleware, Router as default };