@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,16 @@
1
+ 'use strict'
2
+
3
+ const { test } = require('node:test')
4
+
5
+ const Request = require('../lib/request')
6
+
7
+ test('aborted property should be false', async (t) => {
8
+ const mockReq = {
9
+ url: 'http://localhost',
10
+ method: 'GET',
11
+ headers: {}
12
+ }
13
+ const req = new Request(mockReq)
14
+
15
+ t.assert.strictEqual(req.aborted, false)
16
+ })
@@ -0,0 +1,19 @@
1
+ 'use strict'
2
+
3
+ const { test } = require('node:test')
4
+
5
+ const Response = require('../lib/response')
6
+
7
+ test('multiple calls to res.destroy should not be called', (t, done) => {
8
+ t.plan(2)
9
+
10
+ const mockReq = {}
11
+ const res = new Response(mockReq, (err) => {
12
+ t.assert.ok(err)
13
+ t.assert.strictEqual(err.code, 'LIGHT_ECONNRESET')
14
+ done()
15
+ })
16
+
17
+ res.destroy()
18
+ res.destroy()
19
+ })
@@ -0,0 +1,359 @@
1
+ 'use strict'
2
+
3
+ const t = require('node:test')
4
+ const fs = require('node:fs')
5
+ const test = t.test
6
+ const zlib = require('node:zlib')
7
+ const express = require('express')
8
+
9
+ const inject = require('../index')
10
+
11
+ function accumulate (stream, cb) {
12
+ const chunks = []
13
+ stream.on('error', cb)
14
+ stream.on('data', (chunk) => {
15
+ chunks.push(chunk)
16
+ })
17
+ stream.on('end', () => {
18
+ cb(null, Buffer.concat(chunks))
19
+ })
20
+ }
21
+
22
+ test('stream mode - non-chunked payload', (t, done) => {
23
+ t.plan(9)
24
+ const output = 'example.com:8080|/hello'
25
+
26
+ const dispatch = function (req, res) {
27
+ res.statusMessage = 'Super'
28
+ res.setHeader('x-extra', 'hello')
29
+ res.writeHead(200, { 'Content-Type': 'text/plain', 'Content-Length': output.length })
30
+ res.end(req.headers.host + '|' + req.url)
31
+ }
32
+
33
+ inject(dispatch, {
34
+ url: 'http://example.com:8080/hello',
35
+ payloadAsStream: true
36
+ }, (err, res) => {
37
+ t.assert.ifError(err)
38
+ t.assert.strictEqual(res.statusCode, 200)
39
+ t.assert.strictEqual(res.statusMessage, 'Super')
40
+ t.assert.ok(res.headers.date)
41
+ t.assert.deepStrictEqual(res.headers, {
42
+ date: res.headers.date,
43
+ connection: 'keep-alive',
44
+ 'x-extra': 'hello',
45
+ 'content-type': 'text/plain',
46
+ 'content-length': output.length.toString()
47
+ })
48
+ t.assert.strictEqual(res.payload, undefined)
49
+ t.assert.strictEqual(res.rawPayload, undefined)
50
+
51
+ accumulate(res.stream(), (err, payload) => {
52
+ t.assert.ifError(err)
53
+ t.assert.strictEqual(payload.toString(), 'example.com:8080|/hello')
54
+ done()
55
+ })
56
+ })
57
+ })
58
+
59
+ test('stream mode - passes headers', (t, done) => {
60
+ t.plan(3)
61
+ const dispatch = function (req, res) {
62
+ res.writeHead(200, { 'Content-Type': 'text/plain' })
63
+ res.end(req.headers.super)
64
+ }
65
+
66
+ inject(dispatch, {
67
+ method: 'GET',
68
+ url: 'http://example.com:8080/hello',
69
+ headers: { Super: 'duper' },
70
+ payloadAsStream: true
71
+ }, (err, res) => {
72
+ t.assert.ifError(err)
73
+ accumulate(res.stream(), (err, payload) => {
74
+ t.assert.ifError(err)
75
+ t.assert.strictEqual(payload.toString(), 'duper')
76
+ done()
77
+ })
78
+ })
79
+ })
80
+
81
+ test('stream mode - returns chunked payload', (t, done) => {
82
+ t.plan(6)
83
+ const dispatch = function (_req, res) {
84
+ res.writeHead(200, 'OK')
85
+ res.write('a')
86
+ res.write('b')
87
+ res.end()
88
+ }
89
+
90
+ inject(dispatch, { method: 'GET', url: '/', payloadAsStream: true }, (err, res) => {
91
+ t.assert.ifError(err)
92
+ t.assert.ok(res.headers.date)
93
+ t.assert.ok(res.headers.connection)
94
+ t.assert.strictEqual(res.headers['transfer-encoding'], 'chunked')
95
+ accumulate(res.stream(), (err, payload) => {
96
+ t.assert.ifError(err)
97
+ t.assert.strictEqual(payload.toString(), 'ab')
98
+ done()
99
+ })
100
+ })
101
+ })
102
+
103
+ test('stream mode - backpressure', (t, done) => {
104
+ t.plan(7)
105
+ let expected
106
+ const dispatch = function (_req, res) {
107
+ res.writeHead(200, 'OK')
108
+ res.write('a')
109
+ const buf = Buffer.alloc(1024 * 1024).fill('b')
110
+ t.assert.strictEqual(res.write(buf), false)
111
+ expected = 'a' + buf.toString()
112
+ res.on('drain', () => {
113
+ res.end()
114
+ })
115
+ }
116
+
117
+ inject(dispatch, { method: 'GET', url: '/', payloadAsStream: true }, (err, res) => {
118
+ t.assert.ifError(err)
119
+ t.assert.ok(res.headers.date)
120
+ t.assert.ok(res.headers.connection)
121
+ t.assert.strictEqual(res.headers['transfer-encoding'], 'chunked')
122
+ accumulate(res.stream(), (err, payload) => {
123
+ t.assert.ifError(err)
124
+ t.assert.strictEqual(payload.toString(), expected)
125
+ done()
126
+ })
127
+ })
128
+ })
129
+
130
+ test('stream mode - sets trailers in response object', (t, done) => {
131
+ t.plan(4)
132
+ const dispatch = function (_req, res) {
133
+ res.setHeader('Trailer', 'Test')
134
+ res.addTrailers({ Test: 123 })
135
+ res.end()
136
+ }
137
+
138
+ inject(dispatch, { method: 'GET', url: '/', payloadAsStream: true }, (err, res) => {
139
+ t.assert.ifError(err)
140
+ t.assert.strictEqual(res.headers.trailer, 'Test')
141
+ t.assert.strictEqual(res.headers.test, undefined)
142
+ t.assert.strictEqual(res.trailers.test, '123')
143
+ done()
144
+ })
145
+ })
146
+
147
+ test('stream mode - parses zipped payload', (t, done) => {
148
+ t.plan(5)
149
+ const dispatch = function (_req, res) {
150
+ res.writeHead(200, 'OK')
151
+ const stream = fs.createReadStream('./package.json')
152
+ stream.pipe(zlib.createGzip()).pipe(res)
153
+ }
154
+
155
+ inject(dispatch, { method: 'GET', url: '/', payloadAsStream: true }, (err, res) => {
156
+ t.assert.ifError(err)
157
+ fs.readFile('./package.json', { encoding: 'utf-8' }, (err, file) => {
158
+ t.assert.ifError(err)
159
+
160
+ accumulate(res.stream(), (err, payload) => {
161
+ t.assert.ifError(err)
162
+
163
+ zlib.unzip(payload, (err, unzipped) => {
164
+ t.assert.ifError(err)
165
+ t.assert.strictEqual(unzipped.toString('utf-8'), file)
166
+ done()
167
+ })
168
+ })
169
+ })
170
+ })
171
+ })
172
+
173
+ test('stream mode - returns multi buffer payload', (t, done) => {
174
+ t.plan(3)
175
+ const dispatch = function (_req, res) {
176
+ res.writeHead(200)
177
+ res.write('a')
178
+ res.write(Buffer.from('b'))
179
+ res.end()
180
+ }
181
+
182
+ inject(dispatch, { method: 'GET', url: '/', payloadAsStream: true }, (err, res) => {
183
+ t.assert.ifError(err)
184
+
185
+ const chunks = []
186
+ const stream = res.stream()
187
+ stream.on('data', (chunk) => {
188
+ chunks.push(chunk)
189
+ })
190
+
191
+ stream.on('end', () => {
192
+ t.assert.strictEqual(chunks.length, 2)
193
+ t.assert.strictEqual(Buffer.concat(chunks).toString(), 'ab')
194
+ done()
195
+ })
196
+ })
197
+ })
198
+
199
+ test('stream mode - returns null payload', (t, done) => {
200
+ t.plan(4)
201
+ const dispatch = function (_req, res) {
202
+ res.writeHead(200, { 'Content-Length': 0 })
203
+ res.end()
204
+ }
205
+
206
+ inject(dispatch, { method: 'GET', url: '/', payloadAsStream: true }, (err, res) => {
207
+ t.assert.ifError(err)
208
+ t.assert.strictEqual(res.payload, undefined)
209
+ accumulate(res.stream(), (err, payload) => {
210
+ t.assert.ifError(err)
211
+ t.assert.strictEqual(payload.toString(), '')
212
+ done()
213
+ })
214
+ })
215
+ })
216
+
217
+ test('stream mode - simulates error', (t, done) => {
218
+ t.plan(3)
219
+ const dispatch = function (req, res) {
220
+ req.on('readable', () => {
221
+ })
222
+
223
+ req.on('error', () => {
224
+ res.writeHead(200, { 'Content-Length': 0 })
225
+ res.end('error')
226
+ })
227
+ }
228
+
229
+ const body = 'something special just for you'
230
+ inject(dispatch, { method: 'GET', url: '/', payload: body, simulate: { error: true }, payloadAsStream: true }, (err, res) => {
231
+ t.assert.ifError(err)
232
+ accumulate(res.stream(), (err, payload) => {
233
+ t.assert.ifError(err)
234
+ t.assert.strictEqual(payload.toString(), 'error')
235
+ done()
236
+ })
237
+ })
238
+ })
239
+
240
+ test('stream mode - promises support', (t, done) => {
241
+ t.plan(1)
242
+ const dispatch = function (_req, res) {
243
+ res.writeHead(200, { 'Content-Type': 'text/plain' })
244
+ res.end('hello')
245
+ }
246
+
247
+ inject(dispatch, { method: 'GET', url: 'http://example.com:8080/hello', payloadAsStream: true })
248
+ .then((res) => {
249
+ return new Promise((resolve, reject) => {
250
+ accumulate(res.stream(), (err, payload) => {
251
+ if (err) {
252
+ return reject(err)
253
+ }
254
+ resolve(payload)
255
+ })
256
+ })
257
+ })
258
+ .then(payload => t.assert.strictEqual(payload.toString(), 'hello'))
259
+ .catch(t.assert.fail)
260
+ .finally(done)
261
+ })
262
+
263
+ test('stream mode - Response.json() should throw', (t, done) => {
264
+ t.plan(2)
265
+
266
+ const jsonData = {
267
+ a: 1,
268
+ b: '2'
269
+ }
270
+
271
+ const dispatch = function (_req, res) {
272
+ res.writeHead(200, { 'Content-Type': 'application/json' })
273
+ res.end(JSON.stringify(jsonData))
274
+ }
275
+
276
+ inject(dispatch, { method: 'GET', path: 'http://example.com:8080/hello', payloadAsStream: true }, (err, res) => {
277
+ t.assert.ifError(err)
278
+ const { json } = res
279
+ t.assert.throws(json, Error)
280
+ done()
281
+ })
282
+ })
283
+
284
+ test('stream mode - error for response destroy', (t, done) => {
285
+ t.plan(2)
286
+
287
+ const dispatch = function (_req, res) {
288
+ res.writeHead(200)
289
+ setImmediate(() => {
290
+ res.destroy()
291
+ })
292
+ }
293
+
294
+ inject(dispatch, { method: 'GET', url: '/', payloadAsStream: true }, (err, res) => {
295
+ t.assert.ifError(err)
296
+ accumulate(res.stream(), (err) => {
297
+ t.assert.ok(err)
298
+ done()
299
+ })
300
+ })
301
+ })
302
+
303
+ test('stream mode - request destroy with error', (t, done) => {
304
+ t.plan(3)
305
+
306
+ const fakeError = new Error('some-err')
307
+
308
+ const dispatch = function (req) {
309
+ req.destroy(fakeError)
310
+ }
311
+
312
+ inject(dispatch, { method: 'GET', url: '/', payloadAsStream: true }, (err, res) => {
313
+ t.assert.ok(err)
314
+ t.assert.strictEqual(err, fakeError)
315
+ t.assert.strictEqual(res, null)
316
+ done()
317
+ })
318
+ })
319
+
320
+ test('stream mode - Can abort a request using AbortController/AbortSignal', async (t) => {
321
+ const dispatch = function (_req, res) {
322
+ res.writeHead(200)
323
+ }
324
+
325
+ const controller = new AbortController()
326
+ const res = await inject(dispatch, {
327
+ method: 'GET',
328
+ url: 'http://example.com:8080/hello',
329
+ signal: controller.signal,
330
+ payloadAsStream: true
331
+ })
332
+ controller.abort()
333
+
334
+ await t.assert.rejects(async () => {
335
+ for await (const c of res.stream()) {
336
+ t.assert.fail(`should not loop, got ${c.toString()}`)
337
+ }
338
+ }, Error)
339
+ }, { skip: globalThis.AbortController == null })
340
+
341
+ test("stream mode - passes payload when using express' send", (t, done) => {
342
+ t.plan(4)
343
+
344
+ const app = express()
345
+
346
+ app.get('/hello', (_req, res) => {
347
+ res.send('some text')
348
+ })
349
+
350
+ inject(app, { method: 'GET', url: 'http://example.com:8080/hello', payloadAsStream: true }, (err, res) => {
351
+ t.assert.ifError(err)
352
+ t.assert.strictEqual(res.headers['content-length'], '9')
353
+ accumulate(res.stream(), function (err, payload) {
354
+ t.assert.ifError(err)
355
+ t.assert.strictEqual(payload.toString(), 'some text')
356
+ done()
357
+ })
358
+ })
359
+ })
@@ -0,0 +1,128 @@
1
+ import * as http from 'node:http'
2
+ import { Readable } from 'node:stream'
3
+
4
+ type HTTPMethods = 'DELETE' | 'delete' |
5
+ 'GET' | 'get' |
6
+ 'HEAD' | 'head' |
7
+ 'PATCH' | 'patch' |
8
+ 'POST' | 'post' |
9
+ 'PUT' | 'put' |
10
+ 'OPTIONS' | 'options'
11
+
12
+ type Inject = typeof inject
13
+
14
+ declare namespace inject {
15
+
16
+ export type DispatchFunc = http.RequestListener
17
+
18
+ export type CallbackFunc = (err: Error | undefined, response: Response | undefined) => void
19
+
20
+ export type InjectPayload = string | object | Buffer | NodeJS.ReadableStream
21
+
22
+ export function isInjection (obj: http.IncomingMessage | http.ServerResponse): boolean
23
+
24
+ export interface AbortSignal {
25
+ readonly aborted: boolean;
26
+ }
27
+
28
+ export interface InjectOptions {
29
+ url?: string | {
30
+ pathname: string
31
+ protocol?: string
32
+ hostname?: string
33
+ port?: string | number
34
+ query?: string | { [k: string]: string | string[] }
35
+ }
36
+ path?: string | {
37
+ pathname: string
38
+ protocol?: string
39
+ hostname?: string
40
+ port?: string | number
41
+ query?: string | { [k: string]: string | string[] }
42
+ }
43
+ headers?: http.IncomingHttpHeaders | http.OutgoingHttpHeaders
44
+ query?: string | { [k: string]: string | string[] }
45
+ simulate?: {
46
+ end: boolean,
47
+ split: boolean,
48
+ error: boolean,
49
+ close: boolean
50
+ }
51
+ authority?: string
52
+ remoteAddress?: string
53
+ method?: HTTPMethods
54
+ validate?: boolean
55
+ payload?: InjectPayload
56
+ body?: InjectPayload
57
+ server?: http.Server
58
+ autoStart?: boolean
59
+ cookies?: { [k: string]: string },
60
+ signal?: AbortSignal,
61
+ Request?: object,
62
+ payloadAsStream?: boolean
63
+ }
64
+
65
+ /**
66
+ * https://github.com/nfriedly/set-cookie-parser/blob/3eab8b7d5d12c8ed87832532861c1a35520cf5b3/lib/set-cookie.js#L41
67
+ */
68
+ interface Cookie {
69
+ name: string;
70
+ value: string;
71
+ expires?: Date;
72
+ maxAge?: number;
73
+ secure?: boolean;
74
+ httpOnly?: boolean;
75
+ sameSite?: string;
76
+ [name: string]: unknown
77
+ }
78
+
79
+ export interface Response {
80
+ raw: {
81
+ res: http.ServerResponse,
82
+ req: http.IncomingMessage
83
+ }
84
+ rawPayload: Buffer
85
+ headers: http.OutgoingHttpHeaders
86
+ statusCode: number
87
+ statusMessage: string
88
+ trailers: { [key: string]: string }
89
+ payload: string
90
+ body: string
91
+ json: <T = any>() => T
92
+ stream: () => Readable
93
+ cookies: Array<Cookie>
94
+ }
95
+
96
+ export interface Chain extends Promise<Response> {
97
+ delete: (url: string) => Chain
98
+ get: (url: string) => Chain
99
+ head: (url: string) => Chain
100
+ options: (url: string) => Chain
101
+ patch: (url: string) => Chain
102
+ post: (url: string) => Chain
103
+ put: (url: string) => Chain
104
+ trace: (url: string) => Chain
105
+ body: (body: InjectPayload) => Chain
106
+ headers: (headers: http.IncomingHttpHeaders | http.OutgoingHttpHeaders) => Chain
107
+ payload: (payload: InjectPayload) => Chain
108
+ query: (query: string | { [k: string]: string | string[] }) => Chain
109
+ cookies: (query: object) => Chain
110
+ end(): Promise<Response>
111
+ end(callback: CallbackFunc): void
112
+ }
113
+
114
+ export const inject: Inject
115
+ export { inject as default }
116
+ }
117
+
118
+ declare function inject (
119
+ dispatchFunc: inject.DispatchFunc,
120
+ options?: string | inject.InjectOptions
121
+ ): inject.Chain
122
+ declare function inject (
123
+ dispatchFunc: inject.DispatchFunc,
124
+ options: string | inject.InjectOptions,
125
+ callback: inject.CallbackFunc
126
+ ): void
127
+
128
+ export = inject
@@ -0,0 +1,149 @@
1
+ import * as http from 'node:http'
2
+ import { inject, isInjection, Response, DispatchFunc, InjectOptions, Chain } from '..'
3
+ import { expectType, expectAssignable, expectNotAssignable } from 'tsd'
4
+ import { Readable } from 'node:stream'
5
+
6
+ expectAssignable<InjectOptions>({ url: '/' })
7
+ expectAssignable<InjectOptions>({ autoStart: true })
8
+ expectAssignable<InjectOptions>({ autoStart: false })
9
+ expectAssignable<InjectOptions>({ validate: true })
10
+ expectAssignable<InjectOptions>({ validate: false })
11
+
12
+ const dispatch: http.RequestListener = function (req, res) {
13
+ expectAssignable<http.IncomingMessage>(req)
14
+ expectAssignable<http.ServerResponse>(res)
15
+ expectType<boolean>(isInjection(req))
16
+ expectType<boolean>(isInjection(res))
17
+
18
+ const reply = 'Hello World'
19
+ res.writeHead(200, { 'Content-Type': 'text/plain', 'Content-Length': reply.length })
20
+ res.end(reply)
21
+ }
22
+
23
+ const expectResponse = function (res: Response | undefined) {
24
+ if (!res) {
25
+ return
26
+ }
27
+ expectType<Response>(res)
28
+ console.log(res.payload)
29
+ expectAssignable<Function>(res.json)
30
+ expectAssignable<Function>(res.stream)
31
+ expectAssignable<http.ServerResponse>(res.raw.res)
32
+ expectAssignable<http.IncomingMessage>(res.raw.req)
33
+ expectType<Readable>(res.stream())
34
+ expectType<string>(res.payload)
35
+ expectType<string>(res.body)
36
+ expectAssignable<Array<any>>(res.cookies)
37
+ const cookie = res.cookies[0]
38
+ expectType<string>(cookie.name)
39
+ expectType<string>(cookie.value)
40
+ expectType<Date | undefined>(cookie.expires)
41
+ expectType<number | undefined>(cookie.maxAge)
42
+ expectType<boolean | undefined>(cookie.httpOnly)
43
+ expectType<boolean | undefined>(cookie.secure)
44
+ expectType<string | undefined>(cookie.sameSite)
45
+ expectType<unknown | undefined>(cookie.additional)
46
+ }
47
+
48
+ expectType<DispatchFunc>(dispatch)
49
+
50
+ inject(dispatch, { method: 'get', url: '/' }, (err, res) => {
51
+ expectType<Error | undefined>(err)
52
+ expectResponse(res)
53
+ })
54
+
55
+ const url = {
56
+ protocol: 'http',
57
+ hostname: 'example.com',
58
+ port: '8080',
59
+ pathname: 'hello',
60
+ query: {
61
+ test: '1234'
62
+ }
63
+ }
64
+ inject(dispatch, { method: 'get', url }, (err, res) => {
65
+ expectType<Error | undefined>(err)
66
+ expectResponse(res)
67
+ })
68
+
69
+ inject(dispatch, { method: 'get', url: '/', cookies: { name1: 'value1', value2: 'value2' } }, (err, res) => {
70
+ expectType<Error | undefined>(err)
71
+ expectResponse(res)
72
+ })
73
+
74
+ inject(dispatch, { method: 'get', url: '/', query: { name1: 'value1', value2: 'value2' } }, (err, res) => {
75
+ expectType<Error | undefined>(err)
76
+ expectResponse(res)
77
+ })
78
+
79
+ inject(dispatch, { method: 'get', url: '/', query: { name1: ['value1', 'value2'] } }, (err, res) => {
80
+ expectType<Error | undefined>(err)
81
+ expectResponse(res)
82
+ })
83
+
84
+ inject(dispatch, { method: 'get', url: '/', query: 'name1=value1' }, (err, res) => {
85
+ expectType<Error | undefined>(err)
86
+ expectResponse(res)
87
+ })
88
+
89
+ inject(dispatch, { method: 'post', url: '/', payload: { name1: 'value1', value2: 'value2' } }, (err, res) => {
90
+ expectType<Error | undefined>(err)
91
+ expectResponse(res)
92
+ })
93
+
94
+ inject(dispatch, { method: 'post', url: '/', body: { name1: 'value1', value2: 'value2' } }, (err, res) => {
95
+ expectType<Error | undefined>(err)
96
+ expectResponse(res)
97
+ })
98
+
99
+ expectType<void>(
100
+ inject(dispatch)
101
+ .get('/')
102
+ .end((err, res) => {
103
+ expectType<Error | undefined>(err)
104
+ expectType<Response | undefined>(res)
105
+ console.log(res?.payload)
106
+ })
107
+ )
108
+
109
+ inject(dispatch)
110
+ .get('/')
111
+ .then((value) => {
112
+ expectType<Response>(value)
113
+ })
114
+
115
+ expectType<Chain>(inject(dispatch))
116
+ expectType<Promise<Response>>(inject(dispatch).end())
117
+ expectType<Chain>(inject(dispatch, { method: 'get', url: '/' }))
118
+ // @ts-ignore tsd supports top-level await, but normal ts does not so ignore
119
+ expectType<Response>(await inject(dispatch, { method: 'get', url: '/' }))
120
+
121
+ type ParsedValue = { field: string }
122
+ // @ts-ignore tsd supports top-level await, but normal ts does not so ignore
123
+ const response: Response = await inject(dispatch)
124
+ const parsedValue: ParsedValue = response.json()
125
+ expectType<ParsedValue>(parsedValue)
126
+
127
+ const parsedValueUsingGeneric = response.json<ParsedValue>()
128
+ expectType<ParsedValue>(parsedValueUsingGeneric)
129
+
130
+ expectNotAssignable<http.ServerResponse>(response)
131
+
132
+ const httpDispatch = function (req: http.IncomingMessage, res: http.ServerResponse) {
133
+ expectType<boolean>(isInjection(req))
134
+ expectType<boolean>(isInjection(res))
135
+
136
+ const reply = 'Hello World'
137
+ res.writeHead(200, { 'Content-Type': 'text/plain', 'Content-Length': reply.length })
138
+ res.end(reply)
139
+ }
140
+
141
+ inject(httpDispatch, { method: 'get', url: '/' }, (err, res) => {
142
+ expectType<Error | undefined>(err)
143
+ expectResponse(res)
144
+ })
145
+
146
+ inject(httpDispatch, { method: 'get', url: '/', payloadAsStream: true }, (err, res) => {
147
+ expectType<Error | undefined>(err)
148
+ expectResponse(res)
149
+ })
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2015 Filip Skokan
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.