@prosopo/api-express-router 3.3.3 → 3.3.5

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 (167) hide show
  1. package/.turbo/turbo-build$colon$cjs.log +1 -1
  2. package/.turbo/{turbo-build.log → turbo-build$colon$esm.log} +11 -12
  3. package/.turbo/turbo-build$colon$tsc.log +20 -20
  4. package/.turbo/turbo-build$colon$types.log +1 -0
  5. package/CHANGELOG.md +40 -0
  6. package/dist/cjs/middlewares/requestLoggerMiddleware.cjs +3 -0
  7. package/dist/{middlewares → esm/middlewares}/requestLoggerMiddleware.js +3 -0
  8. package/dist/tsc/apiExpressRouterFactory.d.ts.map +1 -0
  9. package/dist/tsc/apiExpressRouterFactory.js +20 -0
  10. package/dist/tsc/apiExpressRouterFactory.js.map +1 -0
  11. package/dist/tsc/endpointAdapter/apiExpressDefaultEndpointAdapter.d.ts.map +1 -0
  12. package/dist/tsc/endpointAdapter/apiExpressDefaultEndpointAdapter.js +41 -0
  13. package/dist/tsc/endpointAdapter/apiExpressDefaultEndpointAdapter.js.map +1 -0
  14. package/dist/tsc/endpointAdapter/apiExpressEndpointAdapter.d.ts.map +1 -0
  15. package/dist/tsc/endpointAdapter/apiExpressEndpointAdapter.js.map +1 -0
  16. package/dist/tsc/errorHandler.d.ts.map +1 -0
  17. package/dist/tsc/errorHandler.js +5 -0
  18. package/dist/tsc/errorHandler.js.map +1 -0
  19. package/dist/tsc/errorResponse.d.ts.map +1 -0
  20. package/dist/tsc/errorResponse.js +20 -0
  21. package/dist/tsc/errorResponse.js.map +1 -0
  22. package/dist/tsc/errorSites.d.ts.map +1 -0
  23. package/dist/{errorSites.js.map → tsc/errorSites.js.map} +1 -1
  24. package/dist/tsc/index.d.ts.map +1 -0
  25. package/dist/tsc/index.js +13 -0
  26. package/dist/tsc/index.js.map +1 -0
  27. package/dist/tsc/middlewares/authMiddleware.d.ts.map +1 -0
  28. package/dist/tsc/middlewares/authMiddleware.js +81 -0
  29. package/dist/tsc/middlewares/authMiddleware.js.map +1 -0
  30. package/dist/tsc/middlewares/jwtReplayGuard.d.ts.map +1 -0
  31. package/dist/tsc/middlewares/jwtReplayGuard.js +28 -0
  32. package/dist/tsc/middlewares/jwtReplayGuard.js.map +1 -0
  33. package/dist/tsc/middlewares/requestLoggerMiddleware.d.ts.map +1 -0
  34. package/dist/tsc/middlewares/requestLoggerMiddleware.js +62 -0
  35. package/dist/tsc/middlewares/requestLoggerMiddleware.js.map +1 -0
  36. package/dist/tsc/tests/apiExpressRouter.test-d.d.ts.map +1 -0
  37. package/dist/tsc/tests/apiExpressRouter.test-d.js.map +1 -0
  38. package/dist/tsc/tests/unit/apiExpressDefaultEndpointAdapter.unit.test.d.ts.map +1 -0
  39. package/dist/tsc/tests/unit/apiExpressDefaultEndpointAdapter.unit.test.js.map +1 -0
  40. package/dist/tsc/tests/unit/apiExpressRouterFactory.unit.test.d.ts.map +1 -0
  41. package/dist/tsc/tests/unit/apiExpressRouterFactory.unit.test.js.map +1 -0
  42. package/dist/tsc/tests/unit/errorHandler.unit.test.d.ts.map +1 -0
  43. package/dist/tsc/tests/unit/errorHandler.unit.test.js.map +1 -0
  44. package/dist/tsc/tests/unit/index.unit.test.d.ts.map +1 -0
  45. package/dist/tsc/tests/unit/index.unit.test.js.map +1 -0
  46. package/dist/tsc/tests/unit/middlewares/authMiddleware.unit.test.d.ts.map +1 -0
  47. package/dist/tsc/tests/unit/middlewares/authMiddleware.unit.test.js.map +1 -0
  48. package/dist/tsc/tests/unit/middlewares/jwtReplayGuard.unit.test.d.ts.map +1 -0
  49. package/dist/tsc/tests/unit/middlewares/jwtReplayGuard.unit.test.js.map +1 -0
  50. package/dist/tsc/tests/unit/middlewares/requestLoggerMiddleware.unit.test.d.ts.map +1 -0
  51. package/dist/{tests → tsc/tests}/unit/middlewares/requestLoggerMiddleware.unit.test.js +14 -0
  52. package/dist/tsc/tests/unit/middlewares/requestLoggerMiddleware.unit.test.js.map +1 -0
  53. package/dist/tsc/tests/unit/testDoubles.d.ts.map +1 -0
  54. package/dist/tsc/tests/unit/testDoubles.js.map +1 -0
  55. package/dist/types/apiExpressRouterFactory.d.ts +9 -0
  56. package/dist/types/apiExpressRouterFactory.d.ts.map +1 -0
  57. package/dist/types/endpointAdapter/apiExpressDefaultEndpointAdapter.d.ts +13 -0
  58. package/dist/types/endpointAdapter/apiExpressDefaultEndpointAdapter.d.ts.map +1 -0
  59. package/dist/types/endpointAdapter/apiExpressEndpointAdapter.d.ts +8 -0
  60. package/dist/types/endpointAdapter/apiExpressEndpointAdapter.d.ts.map +1 -0
  61. package/dist/types/errorHandler.d.ts +7 -0
  62. package/dist/types/errorHandler.d.ts.map +1 -0
  63. package/dist/types/errorResponse.d.ts +14 -0
  64. package/dist/types/errorResponse.d.ts.map +1 -0
  65. package/dist/types/errorSites.d.ts +14 -0
  66. package/dist/types/errorSites.d.ts.map +1 -0
  67. package/dist/types/index.d.ts +12 -0
  68. package/dist/types/index.d.ts.map +1 -0
  69. package/dist/types/middlewares/authMiddleware.d.ts +11 -0
  70. package/dist/types/middlewares/authMiddleware.d.ts.map +1 -0
  71. package/dist/types/middlewares/jwtReplayGuard.d.ts +5 -0
  72. package/dist/types/middlewares/jwtReplayGuard.d.ts.map +1 -0
  73. package/dist/types/middlewares/requestLoggerMiddleware.d.ts +4 -0
  74. package/dist/types/middlewares/requestLoggerMiddleware.d.ts.map +1 -0
  75. package/dist/types/tests/apiExpressRouter.test-d.d.ts +2 -0
  76. package/dist/types/tests/apiExpressRouter.test-d.d.ts.map +1 -0
  77. package/dist/types/tests/unit/apiExpressDefaultEndpointAdapter.unit.test.d.ts +2 -0
  78. package/dist/types/tests/unit/apiExpressDefaultEndpointAdapter.unit.test.d.ts.map +1 -0
  79. package/dist/types/tests/unit/apiExpressRouterFactory.unit.test.d.ts +2 -0
  80. package/dist/types/tests/unit/apiExpressRouterFactory.unit.test.d.ts.map +1 -0
  81. package/dist/types/tests/unit/errorHandler.unit.test.d.ts +2 -0
  82. package/dist/types/tests/unit/errorHandler.unit.test.d.ts.map +1 -0
  83. package/dist/types/tests/unit/index.unit.test.d.ts +2 -0
  84. package/dist/types/tests/unit/index.unit.test.d.ts.map +1 -0
  85. package/dist/types/tests/unit/middlewares/authMiddleware.unit.test.d.ts +2 -0
  86. package/dist/types/tests/unit/middlewares/authMiddleware.unit.test.d.ts.map +1 -0
  87. package/dist/types/tests/unit/middlewares/jwtReplayGuard.unit.test.d.ts +2 -0
  88. package/dist/types/tests/unit/middlewares/jwtReplayGuard.unit.test.d.ts.map +1 -0
  89. package/dist/types/tests/unit/middlewares/requestLoggerMiddleware.unit.test.d.ts +2 -0
  90. package/dist/types/tests/unit/middlewares/requestLoggerMiddleware.unit.test.d.ts.map +1 -0
  91. package/dist/types/tests/unit/testDoubles.d.ts +8 -0
  92. package/dist/types/tests/unit/testDoubles.d.ts.map +1 -0
  93. package/package.json +20 -21
  94. package/dist/apiExpressRouterFactory.d.ts.map +0 -1
  95. package/dist/apiExpressRouterFactory.js.map +0 -1
  96. package/dist/endpointAdapter/apiExpressDefaultEndpointAdapter.d.ts.map +0 -1
  97. package/dist/endpointAdapter/apiExpressDefaultEndpointAdapter.js.map +0 -1
  98. package/dist/endpointAdapter/apiExpressEndpointAdapter.d.ts.map +0 -1
  99. package/dist/endpointAdapter/apiExpressEndpointAdapter.js.map +0 -1
  100. package/dist/errorHandler.d.ts.map +0 -1
  101. package/dist/errorHandler.js.map +0 -1
  102. package/dist/errorResponse.d.ts.map +0 -1
  103. package/dist/errorResponse.js.map +0 -1
  104. package/dist/errorSites.d.ts.map +0 -1
  105. package/dist/index.d.ts.map +0 -1
  106. package/dist/index.js.map +0 -1
  107. package/dist/middlewares/authMiddleware.d.ts.map +0 -1
  108. package/dist/middlewares/authMiddleware.js.map +0 -1
  109. package/dist/middlewares/jwtReplayGuard.d.ts.map +0 -1
  110. package/dist/middlewares/jwtReplayGuard.js.map +0 -1
  111. package/dist/middlewares/requestLoggerMiddleware.d.ts.map +0 -1
  112. package/dist/middlewares/requestLoggerMiddleware.js.map +0 -1
  113. package/dist/tests/apiExpressRouter.test-d.d.ts.map +0 -1
  114. package/dist/tests/apiExpressRouter.test-d.js.map +0 -1
  115. package/dist/tests/unit/apiExpressDefaultEndpointAdapter.unit.test.d.ts.map +0 -1
  116. package/dist/tests/unit/apiExpressDefaultEndpointAdapter.unit.test.js.map +0 -1
  117. package/dist/tests/unit/apiExpressRouterFactory.unit.test.d.ts.map +0 -1
  118. package/dist/tests/unit/apiExpressRouterFactory.unit.test.js.map +0 -1
  119. package/dist/tests/unit/errorHandler.unit.test.d.ts.map +0 -1
  120. package/dist/tests/unit/errorHandler.unit.test.js.map +0 -1
  121. package/dist/tests/unit/index.unit.test.d.ts.map +0 -1
  122. package/dist/tests/unit/index.unit.test.js.map +0 -1
  123. package/dist/tests/unit/middlewares/authMiddleware.unit.test.d.ts.map +0 -1
  124. package/dist/tests/unit/middlewares/authMiddleware.unit.test.js.map +0 -1
  125. package/dist/tests/unit/middlewares/jwtReplayGuard.unit.test.d.ts.map +0 -1
  126. package/dist/tests/unit/middlewares/jwtReplayGuard.unit.test.js.map +0 -1
  127. package/dist/tests/unit/middlewares/requestLoggerMiddleware.unit.test.d.ts.map +0 -1
  128. package/dist/tests/unit/middlewares/requestLoggerMiddleware.unit.test.js.map +0 -1
  129. package/dist/tests/unit/testDoubles.d.ts.map +0 -1
  130. package/dist/tests/unit/testDoubles.js.map +0 -1
  131. /package/dist/{_virtual → esm/_virtual}/_rolldown/runtime.js +0 -0
  132. /package/dist/{apiExpressRouterFactory.js → esm/apiExpressRouterFactory.js} +0 -0
  133. /package/dist/{endpointAdapter → esm/endpointAdapter}/apiExpressDefaultEndpointAdapter.js +0 -0
  134. /package/dist/{errorHandler.js → esm/errorHandler.js} +0 -0
  135. /package/dist/{errorResponse.js → esm/errorResponse.js} +0 -0
  136. /package/dist/{index.js → esm/index.js} +0 -0
  137. /package/dist/{middlewares → esm/middlewares}/authMiddleware.js +0 -0
  138. /package/dist/{middlewares → esm/middlewares}/jwtReplayGuard.js +0 -0
  139. /package/dist/{apiExpressRouterFactory.d.ts → tsc/apiExpressRouterFactory.d.ts} +0 -0
  140. /package/dist/{endpointAdapter → tsc/endpointAdapter}/apiExpressDefaultEndpointAdapter.d.ts +0 -0
  141. /package/dist/{endpointAdapter → tsc/endpointAdapter}/apiExpressEndpointAdapter.d.ts +0 -0
  142. /package/dist/{endpointAdapter → tsc/endpointAdapter}/apiExpressEndpointAdapter.js +0 -0
  143. /package/dist/{errorHandler.d.ts → tsc/errorHandler.d.ts} +0 -0
  144. /package/dist/{errorResponse.d.ts → tsc/errorResponse.d.ts} +0 -0
  145. /package/dist/{errorSites.d.ts → tsc/errorSites.d.ts} +0 -0
  146. /package/dist/{errorSites.js → tsc/errorSites.js} +0 -0
  147. /package/dist/{index.d.ts → tsc/index.d.ts} +0 -0
  148. /package/dist/{middlewares → tsc/middlewares}/authMiddleware.d.ts +0 -0
  149. /package/dist/{middlewares → tsc/middlewares}/jwtReplayGuard.d.ts +0 -0
  150. /package/dist/{middlewares → tsc/middlewares}/requestLoggerMiddleware.d.ts +0 -0
  151. /package/dist/{tests → tsc/tests}/apiExpressRouter.test-d.d.ts +0 -0
  152. /package/dist/{tests → tsc/tests}/apiExpressRouter.test-d.js +0 -0
  153. /package/dist/{tests → tsc/tests}/unit/apiExpressDefaultEndpointAdapter.unit.test.d.ts +0 -0
  154. /package/dist/{tests → tsc/tests}/unit/apiExpressDefaultEndpointAdapter.unit.test.js +0 -0
  155. /package/dist/{tests → tsc/tests}/unit/apiExpressRouterFactory.unit.test.d.ts +0 -0
  156. /package/dist/{tests → tsc/tests}/unit/apiExpressRouterFactory.unit.test.js +0 -0
  157. /package/dist/{tests → tsc/tests}/unit/errorHandler.unit.test.d.ts +0 -0
  158. /package/dist/{tests → tsc/tests}/unit/errorHandler.unit.test.js +0 -0
  159. /package/dist/{tests → tsc/tests}/unit/index.unit.test.d.ts +0 -0
  160. /package/dist/{tests → tsc/tests}/unit/index.unit.test.js +0 -0
  161. /package/dist/{tests → tsc/tests}/unit/middlewares/authMiddleware.unit.test.d.ts +0 -0
  162. /package/dist/{tests → tsc/tests}/unit/middlewares/authMiddleware.unit.test.js +0 -0
  163. /package/dist/{tests → tsc/tests}/unit/middlewares/jwtReplayGuard.unit.test.d.ts +0 -0
  164. /package/dist/{tests → tsc/tests}/unit/middlewares/jwtReplayGuard.unit.test.js +0 -0
  165. /package/dist/{tests → tsc/tests}/unit/middlewares/requestLoggerMiddleware.unit.test.d.ts +0 -0
  166. /package/dist/{tests → tsc/tests}/unit/testDoubles.d.ts +0 -0
  167. /package/dist/{tests → tsc/tests}/unit/testDoubles.js +0 -0
@@ -53,7 +53,7 @@ dist/cjs/middlewares/jwtReplayGuard.cjs 0.97 kB │ gzip:
53
53
  dist/cjs/errorResponse.cjs 1.20 kB │ gzip: 0.56 kB
54
54
  dist/cjs/endpointAdapter/apiExpressDefaultEndpointAdapter.cjs 1.36 kB │ gzip: 0.56 kB
55
55
  dist/cjs/index.cjs 1.55 kB │ gzip: 0.44 kB
56
- dist/cjs/middlewares/requestLoggerMiddleware.cjs 1.81 kB │ gzip: 0.78 kB
56
+ dist/cjs/middlewares/requestLoggerMiddleware.cjs 2.02 kB │ gzip: 0.84 kB
57
57
  dist/cjs/middlewares/authMiddleware.cjs 2.45 kB │ gzip: 0.95 kB
58
58
 
59
59
  ✓ built in 53ms
@@ -1,5 +1,4 @@
1
- $ pnpm run build:cross-env --mode ${NODE_ENV:-development}
2
- $ vite build --config vite.esm.config.ts --mode production
1
+ $ vite build --config vite.esm.config.ts --mode ${NODE_ENV:-development}
3
2
  ViteEsmConfig: .
4
3
  {
5
4
  tsConfigPaths: [
@@ -48,14 +47,14 @@ Bundle build started
48
47
  ✓ 9 modules transformed.
49
48
  rendering chunks...
50
49
  computing gzip size...
51
- dist/_virtual/_rolldown/runtime.js 0.04 kB │ gzip: 0.06 kB
52
- dist/errorHandler.js 0.24 kB │ gzip: 0.17 kB
53
- dist/apiExpressRouterFactory.js 0.71 kB │ gzip: 0.34 kB
54
- dist/middlewares/jwtReplayGuard.js 0.95 kB │ gzip: 0.53 kB
55
- dist/index.js 1.02 kB │ gzip: 0.36 kB
56
- dist/errorResponse.js 1.08 kB │ gzip: 0.55 kB
57
- dist/endpointAdapter/apiExpressDefaultEndpointAdapter.js 1.15 kB │ gzip: 0.52 kB
58
- dist/middlewares/requestLoggerMiddleware.js 1.75 kB │ gzip: 0.76 kB
59
- dist/middlewares/authMiddleware.js 2.31 kB │ gzip: 0.92 kB
50
+ dist/esm/_virtual/_rolldown/runtime.js 0.04 kB │ gzip: 0.06 kB
51
+ dist/esm/errorHandler.js 0.24 kB │ gzip: 0.17 kB
52
+ dist/esm/apiExpressRouterFactory.js 0.71 kB │ gzip: 0.34 kB
53
+ dist/esm/middlewares/jwtReplayGuard.js 0.95 kB │ gzip: 0.53 kB
54
+ dist/esm/index.js 1.02 kB │ gzip: 0.36 kB
55
+ dist/esm/errorResponse.js 1.08 kB │ gzip: 0.55 kB
56
+ dist/esm/endpointAdapter/apiExpressDefaultEndpointAdapter.js 1.15 kB │ gzip: 0.52 kB
57
+ dist/esm/middlewares/requestLoggerMiddleware.js 1.95 kB │ gzip: 0.83 kB
58
+ dist/esm/middlewares/authMiddleware.js 2.31 kB │ gzip: 0.92 kB
60
59
 
61
- ✓ built in 72ms
60
+ ✓ built in 33ms
@@ -1,5 +1,5 @@
1
1
  $ tsc --build --verbose
2
- 4:00:17 PM - Projects in this build:
2
+ 12:57:51 PM - Projects in this build:
3
3
  * ../../dev/config/tsconfig.json
4
4
  * ../util/tsconfig.json
5
5
  * ../logger/tsconfig.json
@@ -19,41 +19,41 @@ $ tsc --build --verbose
19
19
  * ../env/tsconfig.json
20
20
  * tsconfig.json
21
21
 
22
- 4:00:17 PM - Project '../../dev/config/tsconfig.json' is up to date because newest input '../../dev/config/src/webpack/webpack.config.ts' is older than output '../../dev/config/tsconfig.tsbuildinfo'
22
+ 12:57:51 PM - Project '../../dev/config/tsconfig.json' is up to date because newest input '../../dev/config/src/vite/vite.esm.config.ts' is older than output '../../dev/config/dist/tsc/tsconfig.tsbuildinfo'
23
23
 
24
- 4:00:17 PM - Project '../util/tsconfig.json' is up to date because newest input '../util/src/url.ts' is older than output '../util/tsconfig.tsbuildinfo'
24
+ 12:57:51 PM - Project '../util/tsconfig.json' is up to date because newest input '../util/src/url.ts' is older than output '../util/dist/tsc/tsconfig.tsbuildinfo'
25
25
 
26
- 4:00:17 PM - Project '../logger/tsconfig.json' is up to date because newest input '../logger/src/tests/loggerBrowser.unit.test.ts' is older than output '../logger/tsconfig.tsbuildinfo'
26
+ 12:57:51 PM - Project '../logger/tsconfig.json' is up to date because newest input '../logger/src/index.ts' is older than output '../logger/dist/tsc/tsconfig.tsbuildinfo'
27
27
 
28
- 4:00:17 PM - Project '../api-route/tsconfig.json' is up to date because newest input '../api-route/src/tests/apiRoute.unit.test.ts' is older than output '../api-route/tsconfig.tsbuildinfo'
28
+ 12:57:51 PM - Project '../api-route/tsconfig.json' is up to date because newest input '../api-route/src/apiRoutes.ts' is older than output '../api-route/dist/tsc/tsconfig.tsbuildinfo'
29
29
 
30
- 4:00:17 PM - Project '../locale/tsconfig.json' is up to date because newest input '../locale/src/process.ts' is older than output '../locale/tsconfig.tsbuildinfo'
30
+ 12:57:51 PM - Project '../locale/tsconfig.json' is up to date because newest input '../locale/src/translator.ts' is older than output '../locale/dist/tsc/tsconfig.tsbuildinfo'
31
31
 
32
- 4:00:17 PM - Project '../util-crypto/tsconfig.json' is up to date because newest input '../util-crypto/src/types.ts' is older than output '../util-crypto/tsconfig.tsbuildinfo'
32
+ 12:57:51 PM - Project '../util-crypto/tsconfig.json' is up to date because newest input '../util-crypto/src/types.ts' is older than output '../util-crypto/dist/tsc/tsconfig.tsbuildinfo'
33
33
 
34
- 4:00:17 PM - Project '../types/tsconfig.json' is up to date because newest input '../types/src/types.test-d.ts' is older than output '../types/tsconfig.tsbuildinfo'
34
+ 12:57:51 PM - Project '../types/tsconfig.json' is up to date because newest input '../types/src/types.test-d.ts' is older than output '../types/dist/tsc/tsconfig.tsbuildinfo'
35
35
 
36
- 4:00:17 PM - Project '../common/tsconfig.json' is up to date because newest input '../common/src/tests/errorSites.unit.test.ts' is older than output '../common/tsconfig.tsbuildinfo'
36
+ 12:57:51 PM - Project '../common/tsconfig.json' is up to date because newest input '../common/src/error.ts' is older than output '../common/dist/tsc/tsconfig.tsbuildinfo'
37
37
 
38
- 4:00:17 PM - Project '../ipinfo/tsconfig.json' is up to date because newest input '../ipinfo/src/IpInfoService.ts' is older than output '../ipinfo/tsconfig.tsbuildinfo'
38
+ 12:57:51 PM - Project '../ipinfo/tsconfig.json' is up to date because newest input '../ipinfo/src/index.ts' is older than output '../ipinfo/dist/tsc/tsconfig.tsbuildinfo'
39
39
 
40
- 4:00:17 PM - Project '../redis-client/tsconfig.json' is up to date because newest input '../redis-client/src/index.ts' is older than output '../redis-client/tsconfig.tsbuildinfo'
40
+ 12:57:51 PM - Project '../redis-client/tsconfig.json' is up to date because newest input '../redis-client/src/index.ts' is older than output '../redis-client/dist/tsc/tsconfig.tsbuildinfo'
41
41
 
42
- 4:00:17 PM - Project '../api/tsconfig.json' is up to date because newest input '../api/src/tests/apiHarness.ts' is older than output '../api/tsconfig.tsbuildinfo'
42
+ 12:57:51 PM - Project '../api/tsconfig.json' is up to date because newest input '../api/src/tests/apiHarness.ts' is older than output '../api/dist/tsc/tsconfig.tsbuildinfo'
43
43
 
44
- 4:00:18 PM - Project '../user-access-policy/tsconfig.json' is up to date because newest input '../user-access-policy/src/transformRule.ts' is older than output '../user-access-policy/tsconfig.tsbuildinfo'
44
+ 12:57:51 PM - Project '../user-access-policy/tsconfig.json' is up to date because newest input '../user-access-policy/src/transformRule.ts' is older than output '../user-access-policy/dist/tsc/tsconfig.tsbuildinfo'
45
45
 
46
- 4:00:18 PM - Project '../types-database/tsconfig.json' is up to date because newest input '../types-database/src/index.ts' is older than output '../types-database/tsconfig.tsbuildinfo'
46
+ 12:57:51 PM - Project '../types-database/tsconfig.json' is up to date because newest input '../types-database/src/types/provider.ts' is older than output '../types-database/dist/tsc/tsconfig.tsbuildinfo'
47
47
 
48
- 4:00:18 PM - Project '../database/tsconfig.json' is up to date because newest input '../database/src/tests/unit/captchaLabel.unit.test.ts' is older than output '../database/tsconfig.tsbuildinfo'
48
+ 12:57:51 PM - Project '../database/tsconfig.json' is up to date because newest input '../database/src/tests/mongoGlobalSetup.ts' is older than output '../database/dist/tsc/tsconfig.tsbuildinfo'
49
49
 
50
- 4:00:18 PM - Project '../keyring/tsconfig.json' is up to date because newest input '../keyring/src/keyring/keyring.test.ts' is older than output '../keyring/tsconfig.tsbuildinfo'
50
+ 12:57:52 PM - Project '../keyring/tsconfig.json' is up to date because newest input '../keyring/src/keyring/keyring.test.ts' is older than output '../keyring/dist/tsc/tsconfig.tsbuildinfo'
51
51
 
52
- 4:00:18 PM - Project '../types-env/tsconfig.json' is up to date because newest input '../types-env/src/index.ts' is older than output '../types-env/tsconfig.tsbuildinfo'
52
+ 12:57:52 PM - Project '../types-env/tsconfig.json' is up to date because newest input '../types-env/src/index.ts' is older than output '../types-env/dist/tsc/tsconfig.tsbuildinfo'
53
53
 
54
- 4:00:18 PM - Project '../env/tsconfig.json' is up to date because newest input '../env/src/env.ts' is older than output '../env/tsconfig.tsbuildinfo'
54
+ 12:57:52 PM - Project '../env/tsconfig.json' is up to date because newest input '../env/src/errorSites.ts' is older than output '../env/dist/tsc/tsconfig.tsbuildinfo'
55
55
 
56
- 4:00:18 PM - Project 'tsconfig.json' is out of date because output file 'tsconfig.tsbuildinfo' does not exist
56
+ 12:57:52 PM - Project 'tsconfig.json' is out of date because output file 'dist/tsc/tsconfig.tsbuildinfo' does not exist
57
57
 
58
- 4:00:18 PM - Building project '/home/runner/work/captcha/captcha/packages/api-express-router/tsconfig.json'...
58
+ 12:57:52 PM - Building project '/home/runner/work/captcha/captcha/packages/api-express-router/tsconfig.json'...
59
59
 
@@ -0,0 +1 @@
1
+ $ tsc --project tsconfig.types.json
package/CHANGELOG.md CHANGED
@@ -1,5 +1,45 @@
1
1
  # @prosopo/api-express-router
2
2
 
3
+ ## 3.3.5
4
+ ### Patch Changes
5
+
6
+ - 1966fc1: Bump the npm-minor-and-patch group across 1 directory with 15 updates
7
+ - 77bd891: The provider accepts an `x-prosopo-integration` request header, which names the platform that embedded the widget (e.g. `mc4wp`). It is saved on the session with the other request headers and added to the provider's request logs as `integration`. The widget does not send it yet; this has to be deployed to providers first, because browsers block a header the provider does not allow.
8
+ - Updated dependencies [1966fc1]
9
+ - Updated dependencies [c69b636]
10
+ - Updated dependencies [78107d9]
11
+ - Updated dependencies [d6cc6fe]
12
+ - Updated dependencies [f13677e]
13
+ - Updated dependencies [77bd891]
14
+ - Updated dependencies [76b6edd]
15
+ - @prosopo/api-route@2.6.67
16
+ - @prosopo/common@3.3.2
17
+ - @prosopo/locale@3.13.2
18
+ - @prosopo/logger@2.1.7
19
+ - @prosopo/types@5.20.0
20
+ - @prosopo/util@3.4.0
21
+ - @prosopo/util-crypto@13.6.3
22
+ - @prosopo/env@3.6.82
23
+
24
+ ## 3.3.4
25
+ ### Patch Changes
26
+
27
+ - 2086040: Each kind of build now writes to its own folder under dist: dist/esm (vite ESM), dist/cjs (vite CommonJS), dist/types (declarations), dist/tsc (plain tsc), dist/bundle and dist/bundle-webpack (bundles) and dist/native (the Rust addons). Turbo caches each folder separately, so building one variant no longer overwrites or invalidates another. Package exports point at the new folders; anything importing a file from dist by path has to add the variant folder.
28
+
29
+ The Rust addons are no longer committed. They are built into dist/native, in debug for development and tests and fully optimised when NODE_ENV=production, so building them now needs a Rust toolchain.
30
+
31
+ Code that found the repo root or its certificates by climbing a fixed number of folders up from its own file now starts from its package's folder instead (new `packageDir` in @prosopo/util/node). The fixed count stopped working once the build output moved one folder deeper.
32
+ - Updated dependencies [2086040]
33
+ - Updated dependencies [915f30b]
34
+ - @prosopo/api-route@2.6.66
35
+ - @prosopo/common@3.3.1
36
+ - @prosopo/env@3.6.81
37
+ - @prosopo/locale@3.13.1
38
+ - @prosopo/logger@2.1.6
39
+ - @prosopo/types@5.19.0
40
+ - @prosopo/util-crypto@13.6.2
41
+ - @prosopo/util@3.3.17
42
+
3
43
  ## 3.3.3
4
44
  ### Patch Changes
5
45
 
@@ -1,4 +1,5 @@
1
1
  let _prosopo_logger = require("@prosopo/logger");
2
+ let _prosopo_types = require("@prosopo/types");
2
3
  let uuid = require("uuid");
3
4
  //#region src/middlewares/requestLoggerMiddleware.ts
4
5
  var getHeaderValue = (req, headerName) => {
@@ -14,11 +15,13 @@ function requestLoggerMiddleware(env) {
14
15
  const requestId = req.headers["x-request-id"] || `e-${(0, uuid.v4)()}`;
15
16
  const user = getHeaderValue(req, "prosopo-user");
16
17
  const siteKey = getHeaderValue(req, "prosopo-site-key");
18
+ const integration = (0, _prosopo_types.normaliseIntegration)(getHeaderValue(req, _prosopo_types.INTEGRATION_HEADER));
17
19
  const sessionId = req.body?.sessionId ? req.body.sessionId : void 0;
18
20
  const logger = (0, _prosopo_logger.getLogger)((0, _prosopo_logger.parseLogLevel)(env.config.logLevel), "provider:request").with({
19
21
  requestId,
20
22
  ...user ? { user } : {},
21
23
  ...siteKey ? { siteKey } : {},
24
+ ...integration ? { integration } : {},
22
25
  ...sessionId ? { sessionId } : {}
23
26
  });
24
27
  req.logger = logger;
@@ -1,4 +1,5 @@
1
1
  import { getLogger, parseLogLevel } from "@prosopo/logger";
2
+ import { INTEGRATION_HEADER, normaliseIntegration } from "@prosopo/types";
2
3
  import { v4 } from "uuid";
3
4
  //#region src/middlewares/requestLoggerMiddleware.ts
4
5
  var getHeaderValue = (req, headerName) => {
@@ -14,11 +15,13 @@ function requestLoggerMiddleware(env) {
14
15
  const requestId = req.headers["x-request-id"] || `e-${v4()}`;
15
16
  const user = getHeaderValue(req, "prosopo-user");
16
17
  const siteKey = getHeaderValue(req, "prosopo-site-key");
18
+ const integration = normaliseIntegration(getHeaderValue(req, INTEGRATION_HEADER));
17
19
  const sessionId = req.body?.sessionId ? req.body.sessionId : void 0;
18
20
  const logger = getLogger(parseLogLevel(env.config.logLevel), "provider:request").with({
19
21
  requestId,
20
22
  ...user ? { user } : {},
21
23
  ...siteKey ? { siteKey } : {},
24
+ ...integration ? { integration } : {},
22
25
  ...sessionId ? { sessionId } : {}
23
26
  });
24
27
  req.logger = logger;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apiExpressRouterFactory.d.ts","sourceRoot":"","sources":["../../src/apiExpressRouterFactory.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvE,OAAO,EAIN,MAAM,EACN,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,gDAAgD,CAAC;AAGhG,cAAM,uBAAuB;IACrB,YAAY,CAClB,eAAe,EAAE,iBAAiB,EAClC,kBAAkB,EAAE,yBAAyB,GAC3C,MAAM;IAcT,SAAS,CAAC,cAAc,CACvB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,SAAS,EACjB,kBAAkB,EAAE,yBAAyB,GAC3C,IAAI;CAmBP;AAED,OAAO,EAAE,uBAAuB,EAAE,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { Router, } from "express";
2
+ import { handleErrors } from "./errorHandler.js";
3
+ class ApiExpressRouterFactory {
4
+ createRouter(routersProvider, apiEndpointAdapter) {
5
+ const router = Router();
6
+ const apiRoutes = routersProvider.getRoutes();
7
+ this.registerRoutes(router, apiRoutes, apiEndpointAdapter);
8
+ router.use(handleErrors);
9
+ return router;
10
+ }
11
+ registerRoutes(router, routes, apiEndpointAdapter) {
12
+ for (const [route, endpoint] of Object.entries(routes)) {
13
+ router.post(route, async (request, response, next) => {
14
+ return await apiEndpointAdapter.handleRequest(endpoint, request, response, next);
15
+ });
16
+ }
17
+ }
18
+ }
19
+ export { ApiExpressRouterFactory };
20
+ //# sourceMappingURL=apiExpressRouterFactory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apiExpressRouterFactory.js","sourceRoot":"","sources":["../../src/apiExpressRouterFactory.ts"],"names":[],"mappings":"AAeA,OAAO,EAIN,MAAM,GACN,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,MAAM,uBAAuB;IACrB,YAAY,CAClB,eAAkC,EAClC,kBAA6C;QAE7C,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC;QACxB,MAAM,SAAS,GAAG,eAAe,CAAC,SAAS,EAAE,CAAC;QAE9C,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,SAAS,EAAE,kBAAkB,CAAC,CAAC;QAK3D,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAEzB,OAAO,MAAM,CAAC;IACf,CAAC;IAES,cAAc,CACvB,MAAc,EACd,MAAiB,EACjB,kBAA6C;QAE7C,KAAK,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACxD,MAAM,CAAC,IAAI,CACV,KAAK,EACL,KAAK,EACJ,OAAgB,EAChB,QAAkB,EAClB,IAAkB,EACF,EAAE;gBAClB,OAAO,MAAM,kBAAkB,CAAC,aAAa,CAC5C,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,IAAI,CACJ,CAAC;YACH,CAAC,CACD,CAAC;QACH,CAAC;IACF,CAAC;CACD;AAED,OAAO,EAAE,uBAAuB,EAAE,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apiExpressDefaultEndpointAdapter.d.ts","sourceRoot":"","sources":["../../../src/endpointAdapter/apiExpressDefaultEndpointAdapter.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEtD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AAEnC,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAEhF,cAAM,gCAAiC,YAAW,yBAAyB;IAEzE,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,eAAe;gBADf,QAAQ,EAAE,QAAQ,EAClB,eAAe,EAAE,MAAM;IAG5B,aAAa,CACzB,QAAQ,EAAE,WAAW,CAAC,OAAO,GAAG,SAAS,CAAC,EAC1C,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,YAAY,GAChB,OAAO,CAAC,IAAI,CAAC;CAuChB;AAED,OAAO,EAAE,gCAAgC,EAAE,CAAC"}
@@ -0,0 +1,41 @@
1
+ import { ProsopoError, isProsopoError } from "@prosopo/common";
2
+ import { stringifyBigInts } from "@prosopo/util";
3
+ import { sendErrorResponse } from "../errorResponse.js";
4
+ class ApiExpressDefaultEndpointAdapter {
5
+ constructor(logLevel, errorStatusCode) {
6
+ this.logLevel = logLevel;
7
+ this.errorStatusCode = errorStatusCode;
8
+ }
9
+ async handleRequest(endpoint, request, response, next) {
10
+ let args;
11
+ try {
12
+ args = endpoint.getRequestArgsSchema()?.parse(request.body);
13
+ }
14
+ catch (error) {
15
+ return next(new ProsopoError({
16
+ code: "INVALID_REQUEST",
17
+ errorSite: "APIX-1",
18
+ message: "Error parsing request",
19
+ cause: error,
20
+ }));
21
+ }
22
+ try {
23
+ const apiEndpointResponse = await endpoint.processRequest(args, request.logger);
24
+ const responseObject = stringifyBigInts(apiEndpointResponse);
25
+ response.json(responseObject);
26
+ }
27
+ catch (error) {
28
+ const responseError = isProsopoError(error)
29
+ ? error
30
+ : new ProsopoError({
31
+ code: "UNEXPECTED",
32
+ errorSite: "APIX-2",
33
+ cause: error,
34
+ status: this.errorStatusCode,
35
+ });
36
+ sendErrorResponse(responseError, "APIX-6", response, request.logger);
37
+ }
38
+ }
39
+ }
40
+ export { ApiExpressDefaultEndpointAdapter };
41
+ //# sourceMappingURL=apiExpressDefaultEndpointAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apiExpressDefaultEndpointAdapter.js","sourceRoot":"","sources":["../../../src/endpointAdapter/apiExpressDefaultEndpointAdapter.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAE/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAGjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAGxD,MAAM,gCAAgC;IACrC,YACkB,QAAkB,EAClB,eAAuB;QADvB,aAAQ,GAAR,QAAQ,CAAU;QAClB,oBAAe,GAAf,eAAe,CAAQ;IACtC,CAAC;IAEG,KAAK,CAAC,aAAa,CACzB,QAA0C,EAC1C,OAAgB,EAChB,QAAkB,EAClB,IAAkB;QAElB,IAAI,IAAa,CAAC;QAClB,IAAI,CAAC;YACJ,IAAI,GAAG,QAAQ,CAAC,oBAAoB,EAAE,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC7D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,OAAO,IAAI,CACV,IAAI,YAAY,CAAC;gBAChB,IAAI,EAAE,iBAAiB;gBACvB,SAAS,EAAE,QAAQ;gBACnB,OAAO,EAAE,uBAAuB;gBAChC,KAAK,EAAE,KAAK;aACZ,CAAC,CACF,CAAC;QACH,CAAC;QAED,IAAI,CAAC;YACJ,MAAM,mBAAmB,GAAG,MAAM,QAAQ,CAAC,cAAc,CACxD,IAAI,EACJ,OAAO,CAAC,MAAM,CACd,CAAC;YAGF,MAAM,cAAc,GAAG,gBAAgB,CAAC,mBAAmB,CAAC,CAAC;YAE7D,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC/B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAGhB,MAAM,aAAa,GAAG,cAAc,CAAC,KAAK,CAAC;gBAC1C,CAAC,CAAC,KAAK;gBACP,CAAC,CAAC,IAAI,YAAY,CAAC;oBACjB,IAAI,EAAE,YAAY;oBAClB,SAAS,EAAE,QAAQ;oBACnB,KAAK,EAAE,KAAK;oBACZ,MAAM,EAAE,IAAI,CAAC,eAAe;iBAC5B,CAAC,CAAC;YACL,iBAAiB,CAAC,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QACtE,CAAC;IACF,CAAC;CACD;AAED,OAAO,EAAE,gCAAgC,EAAE,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apiExpressEndpointAdapter.d.ts","sourceRoot":"","sources":["../../../src/endpointAdapter/apiExpressEndpointAdapter.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AAEnC,UAAU,yBAAyB;IAClC,aAAa,CACZ,QAAQ,EAAE,WAAW,CAAC,OAAO,GAAG,SAAS,CAAC,EAC1C,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,YAAY,GAChB,OAAO,CAAC,IAAI,CAAC,CAAC;CACjB;AAED,YAAY,EAAE,yBAAyB,EAAE,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apiExpressEndpointAdapter.js","sourceRoot":"","sources":["../../../src/endpointAdapter/apiExpressEndpointAdapter.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errorHandler.d.ts","sourceRoot":"","sources":["../../src/errorHandler.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AACrD,OAAO,EAAE,KAAK,aAAa,EAAqB,MAAM,oBAAoB,CAAC;AAM3E,eAAO,MAAM,YAAY,QACnB,OAAO,WACH,OAAO,GAAG;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,YAC5B,aAAa,QACjB,YAAY,KAChB,IAEF,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { sendErrorResponse } from "./errorResponse.js";
2
+ export const handleErrors = (err, request, response, next) => {
3
+ sendErrorResponse(err, "APIX-7", response, request.logger);
4
+ };
5
+ //# sourceMappingURL=errorHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errorHandler.js","sourceRoot":"","sources":["../../src/errorHandler.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAsB,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAM3E,MAAM,CAAC,MAAM,YAAY,GAAG,CAC3B,GAAY,EACZ,OAAsC,EACtC,QAAuB,EACvB,IAAkB,EACX,EAAE;IACT,iBAAiB,CAAC,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;AAC5D,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errorResponse.d.ts","sourceRoot":"","sources":["../../src/errorResponse.ts"],"names":[],"mappings":"AAcA,OAAO,EACN,KAAK,SAAS,EACd,KAAK,YAAY,EAKjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAE9C,MAAM,WAAW,aAAa;IAC7B,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,CAAC;IACpC,IAAI,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;CAC7B;AAED,MAAM,WAAW,iBAAiB,CAAC,CAAC;IACnC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,CAAC;IACxB,IAAI,CAAC,IAAI,EAAE,OAAO,GAAG,CAAC,CAAC;CACvB;AAMD,eAAO,MAAM,gBAAgB,GAAI,CAAC,SAAS,iBAAiB,CAAC,CAAC,CAAC,YACpD,CAAC,SACJ,YAAY,KACjB,CAGsD,CAAC;AAO1D,eAAO,MAAM,iBAAiB,WACrB,MAAM,GAAG,SAAS,SACnB,YAAY,KACjB,IAOF,CAAC;AAEF,eAAO,MAAM,iBAAiB,QACxB,OAAO,gBACE,SAAS,YACb,aAAa,UACf,MAAM,GAAG,SAAS,KACxB,IAIF,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { describeError, isSevereError, toApiError, toPublicError, } from "@prosopo/common";
2
+ export const sendProsopoError = (response, error) => response
3
+ .status(error.status)
4
+ .json({ error: toPublicError(error, "BACKEND_ERROR") });
5
+ export const logUnhandledError = (logger, error) => {
6
+ const record = () => ({
7
+ msg: error.errorId,
8
+ data: { error: describeError(error) },
9
+ });
10
+ if (isSevereError(error))
11
+ logger?.error(record);
12
+ else
13
+ logger?.debug(record);
14
+ };
15
+ export const sendErrorResponse = (err, fallbackSite, response, logger) => {
16
+ const { error, status, body } = toApiError(err, fallbackSite);
17
+ logUnhandledError(logger, error);
18
+ response.status(status).json(body);
19
+ };
20
+ //# sourceMappingURL=errorResponse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errorResponse.js","sourceRoot":"","sources":["../../src/errorResponse.ts"],"names":[],"mappings":"AAcA,OAAO,EAGN,aAAa,EACb,aAAa,EACb,UAAU,EACV,aAAa,GACb,MAAM,iBAAiB,CAAC;AAiBzB,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC/B,QAAW,EACX,KAAmB,EACf,EAAE,CACN,QAAQ;KACN,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;KACpB,IAAI,CAAC,EAAE,KAAK,EAAE,aAAa,CAAC,KAAK,EAAE,eAAe,CAAC,EAAE,CAAC,CAAC;AAO1D,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAChC,MAA0B,EAC1B,KAAmB,EACZ,EAAE;IACT,MAAM,MAAM,GAAG,GAAG,EAAE,CAAC,CAAC;QACrB,GAAG,EAAE,KAAK,CAAC,OAAO;QAClB,IAAI,EAAE,EAAE,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,EAAE;KACrC,CAAC,CAAC;IACH,IAAI,aAAa,CAAC,KAAK,CAAC;QAAE,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;;QAC3C,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;AAC5B,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAChC,GAAY,EACZ,YAAuB,EACvB,QAAuB,EACvB,MAA0B,EACnB,EAAE;IACT,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;IAC9D,iBAAiB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACjC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACpC,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errorSites.d.ts","sourceRoot":"","sources":["../../src/errorSites.ts"],"names":[],"mappings":"AAcA,OAAO,QAAQ,iBAAiB,CAAC;IAChC,UAAU,UAAU;QACnB,QAAQ,EAAE,IAAI,CAAC;QACf,QAAQ,EAAE,IAAI,CAAC;QACf,QAAQ,EAAE,IAAI,CAAC;QACf,QAAQ,EAAE,IAAI,CAAC;QACf,QAAQ,EAAE,IAAI,CAAC;QACf,QAAQ,EAAE,IAAI,CAAC;QACf,QAAQ,EAAE,IAAI,CAAC;QACf,QAAQ,EAAE,IAAI,CAAC;KACf;CACD;AAED,OAAO,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"errorSites.js","sourceRoot":"","sources":["../src/errorSites.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"errorSites.js","sourceRoot":"","sources":["../../src/errorSites.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAEvE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,gDAAgD,CAAC;AAEhG,QAAA,MAAM,uBAAuB,yBAAgC,CAAC;AAE9D,QAAA,MAAM,sCAAsC,aACjC,QAAQ,+BAEhB,yBAEF,CAAC;AAEF,OAAO,EACN,uBAAuB,EACvB,sCAAsC,EACtC,KAAK,yBAAyB,GAC9B,CAAC;AAEF,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,KAAK,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC9E,cAAc,iCAAiC,CAAC;AAChD,cAAc,iCAAiC,CAAC;AAChD,cAAc,0CAA0C,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { ApiExpressRouterFactory } from "./apiExpressRouterFactory.js";
2
+ import { ApiExpressDefaultEndpointAdapter } from "./endpointAdapter/apiExpressDefaultEndpointAdapter.js";
3
+ const apiExpressRouterFactory = new ApiExpressRouterFactory();
4
+ const createApiExpressDefaultEndpointAdapter = (logLevel, errorStatusCode = 500) => {
5
+ return new ApiExpressDefaultEndpointAdapter(logLevel, errorStatusCode);
6
+ };
7
+ export { apiExpressRouterFactory, createApiExpressDefaultEndpointAdapter, };
8
+ export * from "./errorHandler.js";
9
+ export { sendProsopoError } from "./errorResponse.js";
10
+ export * from "./middlewares/authMiddleware.js";
11
+ export * from "./middlewares/jwtReplayGuard.js";
12
+ export * from "./middlewares/requestLoggerMiddleware.js";
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,gCAAgC,EAAE,MAAM,uDAAuD,CAAC;AAGzG,MAAM,uBAAuB,GAAG,IAAI,uBAAuB,EAAE,CAAC;AAE9D,MAAM,sCAAsC,GAAG,CAC9C,QAAkB,EAClB,eAAe,GAAG,GAAG,EACO,EAAE;IAC9B,OAAO,IAAI,gCAAgC,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;AACxE,CAAC,CAAC;AAEF,OAAO,EACN,uBAAuB,EACvB,sCAAsC,GAEtC,CAAC;AAEF,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAA0B,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC9E,cAAc,iCAAiC,CAAC;AAChD,cAAc,iCAAiC,CAAC;AAChD,cAAc,0CAA0C,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authMiddleware.d.ts","sourceRoot":"","sources":["../../../src/middlewares/authMiddleware.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAgB,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,KAAK,EAEX,gBAAgB,EAEhB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D,MAAM,MAAM,qBAAqB,GAAG;IAEnC,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAK1B,WAAW,CAAC,EAAE,cAAc,CAAC;CAC7B,CAAC;AA0BF,eAAO,MAAM,cAAc,SACpB,WAAW,GAAG,SAAS,gBACf,WAAW,GAAG,SAAS,YAC5B,qBAAqB,WAEX,OAAO,OAAO,QAAQ,QAAQ,YAAY,kBAoB7D,CAAC;AAwCF,eAAO,MAAM,eAAe,cAChB,MAAM,WACR,MAAM,QACT,WAAW,SAiBjB,CAAC"}
@@ -0,0 +1,81 @@
1
+ import { hexToU8a } from "@polkadot/util";
2
+ import { ProsopoError, isProsopoError, toPublicError } from "@prosopo/common";
3
+ const verifyWith = (key, jwt, options) => {
4
+ if (!key)
5
+ return undefined;
6
+ const result = key.jwtVerify(jwt, options.verify);
7
+ return result.isValid ? result : undefined;
8
+ };
9
+ const isReplay = (result, options) => {
10
+ const payload = result.payload;
11
+ if (!options.replayGuard || !payload || typeof payload.jti !== "string") {
12
+ return false;
13
+ }
14
+ return !options.replayGuard.claim(`${payload.sub}:${payload.jti}`, payload.exp);
15
+ };
16
+ export const authMiddleware = (pair, authAccount, options = {}) => {
17
+ return async (req, res, next) => {
18
+ try {
19
+ const jwt = extractJWT(req);
20
+ const verified = verifyWith(authAccount, jwt, options) ?? verifyWith(pair, jwt, options);
21
+ if (verified && !isReplay(verified, options)) {
22
+ next();
23
+ return;
24
+ }
25
+ unauthorized(res);
26
+ return;
27
+ }
28
+ catch (err) {
29
+ req.logger.debug(() => ({ err, msg: "Auth Middleware Error" }));
30
+ unauthorized(res, err);
31
+ return;
32
+ }
33
+ };
34
+ };
35
+ const unauthorized = (res, cause) => {
36
+ const error = isProsopoError(cause, "UNAUTHORIZED")
37
+ ? cause
38
+ : new ProsopoError({ code: "UNAUTHORIZED", errorSite: "APIX-8", cause });
39
+ const body = {
40
+ error: toPublicError(error, "BACKEND_ERROR"),
41
+ };
42
+ res.status(error.status).json(body);
43
+ };
44
+ const extractJWT = (req) => {
45
+ const authHeader = req.headers.Authorization || req.headers.authorization;
46
+ if (!authHeader || typeof authHeader !== "string") {
47
+ throw new ProsopoError({
48
+ code: "UNAUTHORIZED",
49
+ errorSite: "APIX-3",
50
+ message: "Missing authorization header",
51
+ context: { error: "Missing Authorization header" },
52
+ });
53
+ }
54
+ const jwt = authHeader.replace("Bearer ", "");
55
+ if (!jwt) {
56
+ throw new ProsopoError({
57
+ code: "UNAUTHORIZED",
58
+ errorSite: "APIX-4",
59
+ message: "Invalid JWT",
60
+ context: { error: "Missing JWT" },
61
+ });
62
+ }
63
+ return jwt;
64
+ };
65
+ export const verifySignature = (signature, message, pair) => {
66
+ const u8Sig = hexToU8a(signature);
67
+ if (!pair.verify(message, u8Sig, pair.publicKey)) {
68
+ throw new ProsopoError({
69
+ code: "UNAUTHORIZED",
70
+ errorSite: "APIX-5",
71
+ message: "Invalid signature",
72
+ context: {
73
+ error: "Signature verification failed",
74
+ account: pair.address,
75
+ message,
76
+ signature,
77
+ },
78
+ });
79
+ }
80
+ };
81
+ //# sourceMappingURL=authMiddleware.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authMiddleware.js","sourceRoot":"","sources":["../../../src/middlewares/authMiddleware.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jwtReplayGuard.d.ts","sourceRoot":"","sources":["../../../src/middlewares/jwtReplayGuard.ts"],"names":[],"mappings":"AAcA,MAAM,WAAW,cAAc;IAK9B,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC;CACrD;AAOD,eAAO,MAAM,0BAA0B,qCAE1B,MAAM,MAAM,KACtB,cAyBF,CAAC"}
@@ -0,0 +1,28 @@
1
+ export const createMemoryJwtReplayGuard = (maxEntries = 10_000, nowSeconds = () => Date.now() / 1000) => {
2
+ const seen = new Map();
3
+ const sweep = (now) => {
4
+ for (const [id, exp] of seen) {
5
+ if (exp < now)
6
+ seen.delete(id);
7
+ }
8
+ };
9
+ return {
10
+ claim(id, expiresAtSeconds) {
11
+ const now = nowSeconds();
12
+ const previous = seen.get(id);
13
+ if (previous !== undefined && previous >= now)
14
+ return false;
15
+ if (seen.size >= maxEntries) {
16
+ sweep(now);
17
+ if (seen.size >= maxEntries) {
18
+ const oldest = seen.keys().next();
19
+ if (!oldest.done)
20
+ seen.delete(oldest.value);
21
+ }
22
+ }
23
+ seen.set(id, expiresAtSeconds);
24
+ return true;
25
+ },
26
+ };
27
+ };
28
+ //# sourceMappingURL=jwtReplayGuard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jwtReplayGuard.js","sourceRoot":"","sources":["../../../src/middlewares/jwtReplayGuard.ts"],"names":[],"mappings":"AA2BA,MAAM,CAAC,MAAM,0BAA0B,GAAG,CACzC,UAAU,GAAG,MAAM,EACnB,aAA2B,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,EACjC,EAAE;IACnB,MAAM,IAAI,GAAG,IAAI,GAAG,EAAkB,CAAC;IAEvC,MAAM,KAAK,GAAG,CAAC,GAAW,EAAQ,EAAE;QACnC,KAAK,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;YAC9B,IAAI,GAAG,GAAG,GAAG;gBAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAChC,CAAC;IACF,CAAC,CAAC;IAEF,OAAO;QACN,KAAK,CAAC,EAAU,EAAE,gBAAwB;YACzC,MAAM,GAAG,GAAG,UAAU,EAAE,CAAC;YACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC9B,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,IAAI,GAAG;gBAAE,OAAO,KAAK,CAAC;YAC5D,IAAI,IAAI,CAAC,IAAI,IAAI,UAAU,EAAE,CAAC;gBAC7B,KAAK,CAAC,GAAG,CAAC,CAAC;gBACX,IAAI,IAAI,CAAC,IAAI,IAAI,UAAU,EAAE,CAAC;oBAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;oBAClC,IAAI,CAAC,MAAM,CAAC,IAAI;wBAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC7C,CAAC;YACF,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,gBAAgB,CAAC,CAAC;YAC/B,OAAO,IAAI,CAAC;QACb,CAAC;KACD,CAAC;AACH,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"requestLoggerMiddleware.d.ts","sourceRoot":"","sources":["../../../src/middlewares/requestLoggerMiddleware.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAGxD,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAe/D,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,mBAAmB,SAClD,OAAO,OAAO,QAAQ,QAAQ,YAAY,UA2EvD"}
@@ -0,0 +1,62 @@
1
+ import { getLogger, parseLogLevel } from "@prosopo/logger";
2
+ import { INTEGRATION_HEADER, normaliseIntegration } from "@prosopo/types";
3
+ import { v4 as uuidv4 } from "uuid";
4
+ const getHeaderValue = (req, headerName) => {
5
+ if (headerName in req.headers && req.headers[headerName]) {
6
+ return req.headers[headerName].toString();
7
+ }
8
+ return undefined;
9
+ };
10
+ const HEALTH_CHECK_PATHS = new Set(["/healthz", "/health", "/readyz"]);
11
+ export function requestLoggerMiddleware(env) {
12
+ return (req, res, next) => {
13
+ const requestId = req.headers["x-request-id"] || `e-${uuidv4()}`;
14
+ const user = getHeaderValue(req, "prosopo-user");
15
+ const siteKey = getHeaderValue(req, "prosopo-site-key");
16
+ const integration = normaliseIntegration(getHeaderValue(req, INTEGRATION_HEADER));
17
+ const sessionId = req.body?.sessionId ? req.body.sessionId : undefined;
18
+ const logger = getLogger(parseLogLevel(env.config.logLevel), "provider:request").with({
19
+ requestId,
20
+ ...(user ? { user } : {}),
21
+ ...(siteKey ? { siteKey } : {}),
22
+ ...(integration ? { integration } : {}),
23
+ ...(sessionId ? { sessionId } : {}),
24
+ });
25
+ req.logger = logger;
26
+ req.requestId = requestId;
27
+ res.setHeader("x-request-id", requestId);
28
+ if (HEALTH_CHECK_PATHS.has(req.path)) {
29
+ next();
30
+ return;
31
+ }
32
+ const startNs = process.hrtime.bigint();
33
+ logger.info(() => ({
34
+ msg: "Request received",
35
+ data: {
36
+ method: req.method,
37
+ path: req.path,
38
+ },
39
+ }));
40
+ let finished = false;
41
+ const emitFinish = (outcome) => {
42
+ if (finished)
43
+ return;
44
+ finished = true;
45
+ const durationMs = Number(process.hrtime.bigint() - startNs) / 1e6;
46
+ logger.info(() => ({
47
+ msg: "Response sent",
48
+ data: {
49
+ method: req.method,
50
+ path: req.path,
51
+ status: res.statusCode,
52
+ durationMs,
53
+ outcome,
54
+ },
55
+ }));
56
+ };
57
+ res.on("finish", () => emitFinish("finish"));
58
+ res.on("close", () => emitFinish("close"));
59
+ next();
60
+ };
61
+ }
62
+ //# sourceMappingURL=requestLoggerMiddleware.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"requestLoggerMiddleware.js","sourceRoot":"","sources":["../../../src/middlewares/requestLoggerMiddleware.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apiExpressRouter.test-d.d.ts","sourceRoot":"","sources":["../../../src/tests/apiExpressRouter.test-d.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apiExpressRouter.test-d.js","sourceRoot":"","sources":["../../../src/tests/apiExpressRouter.test-d.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apiExpressDefaultEndpointAdapter.unit.test.d.ts","sourceRoot":"","sources":["../../../../src/tests/unit/apiExpressDefaultEndpointAdapter.unit.test.ts"],"names":[],"mappings":""}