@sima-land/isomorph 11.0.0-alpha.45 → 11.0.0-alpha.47

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 (232) hide show
  1. package/README.md +1 -0
  2. package/dist/cjs/config/source.js +2 -0
  3. package/dist/cjs/config/source.js.map +1 -1
  4. package/dist/cjs/config/types.js.map +1 -1
  5. package/dist/cjs/http/index.js +6 -12
  6. package/dist/cjs/http/index.js.map +1 -1
  7. package/dist/cjs/http/types.js.map +1 -1
  8. package/dist/cjs/log/errors.js.map +1 -1
  9. package/dist/cjs/package.json +4 -3
  10. package/dist/cjs/preset/bun/index.js +3 -2
  11. package/dist/cjs/preset/bun/index.js.map +1 -1
  12. package/dist/cjs/preset/bun/providers/serve-middleware.js +1 -1
  13. package/dist/cjs/preset/bun/providers/serve-middleware.js.map +1 -1
  14. package/dist/cjs/preset/bun-handler/index.js +0 -2
  15. package/dist/cjs/preset/bun-handler/index.js.map +1 -1
  16. package/dist/cjs/preset/bun-handler/providers/fetch-middleware.js +1 -2
  17. package/dist/cjs/preset/bun-handler/providers/fetch-middleware.js.map +1 -1
  18. package/dist/cjs/preset/bun-handler/providers/handler-main.js +6 -24
  19. package/dist/cjs/preset/bun-handler/providers/handler-main.js.map +1 -1
  20. package/dist/cjs/preset/node/index.js +9 -2
  21. package/dist/cjs/preset/node/index.js.map +1 -1
  22. package/dist/cjs/preset/node/providers/express-metrics-middleware.js +1 -1
  23. package/dist/cjs/preset/node/providers/express-metrics-middleware.js.map +1 -1
  24. package/dist/cjs/preset/node/providers/main-express-app.js +62 -0
  25. package/dist/cjs/preset/node/providers/main-express-app.js.map +1 -0
  26. package/dist/cjs/preset/node/providers/{metrics-http-app.js → metrics-express-app.js} +3 -3
  27. package/dist/cjs/preset/node/providers/metrics-express-app.js.map +1 -0
  28. package/dist/cjs/preset/node/types.js.map +1 -1
  29. package/dist/cjs/preset/{server → node}/utils/get-fetch-tracing.js +2 -2
  30. package/dist/cjs/preset/node/utils/get-fetch-tracing.js.map +1 -0
  31. package/dist/cjs/preset/node/utils/get-handler-metrics.js.map +1 -0
  32. package/dist/cjs/preset/node/utils/get-page-response-format.js +1 -0
  33. package/dist/cjs/preset/node/utils/get-page-response-format.js.map +1 -1
  34. package/dist/cjs/preset/{server → node}/utils/get-serve-measuring.js +1 -1
  35. package/dist/cjs/preset/node/utils/get-serve-measuring.js.map +1 -0
  36. package/dist/cjs/preset/node-handler/index.js +2 -2
  37. package/dist/cjs/preset/node-handler/index.js.map +1 -1
  38. package/dist/cjs/preset/node-handler/providers/axios-middleware.js +1 -2
  39. package/dist/cjs/preset/node-handler/providers/axios-middleware.js.map +1 -1
  40. package/dist/cjs/preset/node-handler/providers/fetch-middleware.js +2 -3
  41. package/dist/cjs/preset/node-handler/providers/fetch-middleware.js.map +1 -1
  42. package/dist/cjs/preset/node-handler/providers/handler-main.js +1 -14
  43. package/dist/cjs/preset/node-handler/providers/handler-main.js.map +1 -1
  44. package/dist/cjs/preset/server/index.js +6 -0
  45. package/dist/cjs/preset/server/index.js.map +1 -1
  46. package/dist/cjs/preset/server/providers/fetch-middleware.js.map +1 -0
  47. package/dist/cjs/preset/server/providers/format-page-response.js +4 -1
  48. package/dist/cjs/preset/server/providers/format-page-response.js.map +1 -1
  49. package/dist/cjs/preset/server/providers/serve.js +47 -0
  50. package/dist/cjs/preset/server/providers/serve.js.map +1 -0
  51. package/dist/cjs/preset/server/types.js.map +1 -1
  52. package/dist/cjs/preset/server/utils/get-forwarded-headers.js +6 -0
  53. package/dist/cjs/preset/server/utils/get-forwarded-headers.js.map +1 -1
  54. package/dist/cjs/preset/server/utils/get-page-response-format.js +1 -0
  55. package/dist/cjs/preset/server/utils/get-page-response-format.js.map +1 -1
  56. package/dist/cjs/preset/server/utils/get-serve-error-logging.js +2 -2
  57. package/dist/cjs/preset/server/utils/get-serve-error-logging.js.map +1 -1
  58. package/dist/cjs/preset/server/utils/get-serve-logging.js +3 -4
  59. package/dist/cjs/preset/server/utils/get-serve-logging.js.map +1 -1
  60. package/dist/cjs/preset/web/providers/axios-middleware.js.map +1 -1
  61. package/dist/cjs/tokens.js +16 -5
  62. package/dist/cjs/tokens.js.map +1 -1
  63. package/dist/cjs/utils/axios/index.js +0 -7
  64. package/dist/cjs/utils/axios/index.js.map +1 -1
  65. package/dist/cjs/utils/express/handler/health-check.js.map +1 -1
  66. package/dist/cjs/utils/express/utils/index.js.map +1 -1
  67. package/dist/esm/config/source.js +1 -0
  68. package/dist/esm/config/source.js.map +1 -1
  69. package/dist/esm/config/types.js.map +1 -1
  70. package/dist/esm/http/index.js +2 -2
  71. package/dist/esm/http/index.js.map +1 -1
  72. package/dist/esm/http/types.js.map +1 -1
  73. package/dist/esm/log/errors.js.map +1 -1
  74. package/dist/esm/package.json +4 -3
  75. package/dist/esm/preset/bun/index.js +3 -2
  76. package/dist/esm/preset/bun/index.js.map +1 -1
  77. package/dist/esm/preset/bun/providers/serve-middleware.js +1 -1
  78. package/dist/esm/preset/bun/providers/serve-middleware.js.map +1 -1
  79. package/dist/esm/preset/bun-handler/index.js +0 -2
  80. package/dist/esm/preset/bun-handler/index.js.map +1 -1
  81. package/dist/esm/preset/bun-handler/providers/fetch-middleware.js +2 -3
  82. package/dist/esm/preset/bun-handler/providers/fetch-middleware.js.map +1 -1
  83. package/dist/esm/preset/bun-handler/providers/handler-main.js +6 -24
  84. package/dist/esm/preset/bun-handler/providers/handler-main.js.map +1 -1
  85. package/dist/esm/preset/node/index.js +9 -4
  86. package/dist/esm/preset/node/index.js.map +1 -1
  87. package/dist/esm/preset/node/providers/express-metrics-middleware.js +1 -1
  88. package/dist/esm/preset/node/providers/express-metrics-middleware.js.map +1 -1
  89. package/dist/esm/preset/node/providers/main-express-app.js +56 -0
  90. package/dist/esm/preset/node/providers/main-express-app.js.map +1 -0
  91. package/dist/esm/preset/node/providers/{metrics-http-app.js → metrics-express-app.js} +2 -2
  92. package/dist/esm/preset/node/providers/metrics-express-app.js.map +1 -0
  93. package/dist/esm/preset/node/types.js.map +1 -1
  94. package/dist/esm/preset/{server → node}/utils/get-fetch-tracing.js +2 -2
  95. package/dist/esm/preset/node/utils/get-fetch-tracing.js.map +1 -0
  96. package/dist/esm/preset/node/utils/get-handler-metrics.js.map +1 -0
  97. package/dist/esm/preset/node/utils/get-page-response-format.js +1 -0
  98. package/dist/esm/preset/node/utils/get-page-response-format.js.map +1 -1
  99. package/dist/esm/preset/{server → node}/utils/get-serve-measuring.js +1 -1
  100. package/dist/esm/preset/node/utils/get-serve-measuring.js.map +1 -0
  101. package/dist/esm/preset/node-handler/index.js +2 -2
  102. package/dist/esm/preset/node-handler/index.js.map +1 -1
  103. package/dist/esm/preset/node-handler/providers/axios-middleware.js +2 -3
  104. package/dist/esm/preset/node-handler/providers/axios-middleware.js.map +1 -1
  105. package/dist/esm/preset/node-handler/providers/fetch-middleware.js +3 -4
  106. package/dist/esm/preset/node-handler/providers/fetch-middleware.js.map +1 -1
  107. package/dist/esm/preset/node-handler/providers/handler-main.js +1 -14
  108. package/dist/esm/preset/node-handler/providers/handler-main.js.map +1 -1
  109. package/dist/esm/preset/server/index.js +1 -1
  110. package/dist/esm/preset/server/index.js.map +1 -1
  111. package/dist/esm/preset/server/providers/fetch-middleware.js.map +1 -0
  112. package/dist/esm/preset/server/providers/format-page-response.js +4 -1
  113. package/dist/esm/preset/server/providers/format-page-response.js.map +1 -1
  114. package/dist/esm/preset/server/providers/serve.js +41 -0
  115. package/dist/esm/preset/server/providers/serve.js.map +1 -0
  116. package/dist/esm/preset/server/types.js.map +1 -1
  117. package/dist/esm/preset/server/utils/get-forwarded-headers.js +6 -0
  118. package/dist/esm/preset/server/utils/get-forwarded-headers.js.map +1 -1
  119. package/dist/esm/preset/server/utils/get-page-response-format.js +1 -0
  120. package/dist/esm/preset/server/utils/get-page-response-format.js.map +1 -1
  121. package/dist/esm/preset/server/utils/get-serve-error-logging.js +2 -2
  122. package/dist/esm/preset/server/utils/get-serve-error-logging.js.map +1 -1
  123. package/dist/esm/preset/server/utils/get-serve-logging.js +3 -4
  124. package/dist/esm/preset/server/utils/get-serve-logging.js.map +1 -1
  125. package/dist/esm/preset/web/providers/axios-middleware.js.map +1 -1
  126. package/dist/esm/tokens.js +16 -5
  127. package/dist/esm/tokens.js.map +1 -1
  128. package/dist/esm/utils/axios/index.js +0 -1
  129. package/dist/esm/utils/axios/index.js.map +1 -1
  130. package/dist/esm/utils/express/handler/health-check.js.map +1 -1
  131. package/dist/esm/utils/express/utils/index.js.map +1 -1
  132. package/dist/types/config/source.d.ts.map +1 -1
  133. package/dist/types/config/types.d.ts.map +1 -1
  134. package/dist/types/http/index.d.ts +3 -3
  135. package/dist/types/http/index.d.ts.map +1 -1
  136. package/dist/types/http/types.d.ts +3 -3
  137. package/dist/types/http/types.d.ts.map +1 -1
  138. package/dist/types/log/errors.d.ts +1 -1
  139. package/dist/types/log/errors.d.ts.map +1 -1
  140. package/dist/types/preset/bun/index.d.ts.map +1 -1
  141. package/dist/types/preset/bun-handler/index.d.ts.map +1 -1
  142. package/dist/types/preset/bun-handler/providers/fetch-middleware.d.ts.map +1 -1
  143. package/dist/types/preset/bun-handler/providers/handler-main.d.ts +1 -1
  144. package/dist/types/preset/bun-handler/providers/handler-main.d.ts.map +1 -1
  145. package/dist/types/preset/node/index.d.ts +1 -0
  146. package/dist/types/preset/node/index.d.ts.map +1 -1
  147. package/dist/types/preset/node/providers/main-express-app.d.ts +9 -0
  148. package/dist/types/preset/node/providers/main-express-app.d.ts.map +1 -0
  149. package/dist/types/preset/node/providers/{metrics-http-app.d.ts → metrics-express-app.d.ts} +2 -2
  150. package/dist/types/preset/node/providers/metrics-express-app.d.ts.map +1 -0
  151. package/dist/types/preset/node/types.d.ts +6 -4
  152. package/dist/types/preset/node/types.d.ts.map +1 -1
  153. package/dist/types/preset/node/utils/get-fetch-tracing.d.ts.map +1 -0
  154. package/dist/types/preset/node/utils/get-handler-metrics.d.ts.map +1 -0
  155. package/dist/types/preset/node/utils/get-page-response-format.d.ts +1 -0
  156. package/dist/types/preset/node/utils/get-page-response-format.d.ts.map +1 -1
  157. package/dist/types/preset/{server → node}/utils/get-serve-measuring.d.ts +1 -1
  158. package/dist/types/preset/node/utils/get-serve-measuring.d.ts.map +1 -0
  159. package/dist/types/preset/node-handler/providers/axios-middleware.d.ts.map +1 -1
  160. package/dist/types/preset/node-handler/providers/fetch-middleware.d.ts.map +1 -1
  161. package/dist/types/preset/node-handler/providers/handler-main.d.ts.map +1 -1
  162. package/dist/types/preset/server/index.d.ts +2 -2
  163. package/dist/types/preset/server/index.d.ts.map +1 -1
  164. package/dist/types/preset/server/providers/fetch-middleware.d.ts.map +1 -0
  165. package/dist/types/preset/server/providers/format-page-response.d.ts.map +1 -1
  166. package/dist/types/preset/server/providers/serve.d.ts.map +1 -0
  167. package/dist/types/preset/server/types.d.ts +6 -1
  168. package/dist/types/preset/server/types.d.ts.map +1 -1
  169. package/dist/types/preset/server/utils/get-forwarded-headers.d.ts.map +1 -1
  170. package/dist/types/preset/server/utils/get-page-response-format.d.ts +1 -0
  171. package/dist/types/preset/server/utils/get-page-response-format.d.ts.map +1 -1
  172. package/dist/types/preset/server/utils/get-serve-error-logging.d.ts.map +1 -1
  173. package/dist/types/preset/server/utils/get-serve-logging.d.ts.map +1 -1
  174. package/dist/types/preset/web/providers/axios-middleware.d.ts +3 -2
  175. package/dist/types/preset/web/providers/axios-middleware.d.ts.map +1 -1
  176. package/dist/types/preset/web/providers/fetch-middleware.d.ts +1 -1
  177. package/dist/types/preset/web/providers/fetch-middleware.d.ts.map +1 -1
  178. package/dist/types/tokens.d.ts +21 -10
  179. package/dist/types/tokens.d.ts.map +1 -1
  180. package/dist/types/utils/axios/index.d.ts +0 -1
  181. package/dist/types/utils/axios/index.d.ts.map +1 -1
  182. package/dist/types/utils/express/handler/health-check.d.ts +2 -2
  183. package/dist/types/utils/express/handler/health-check.d.ts.map +1 -1
  184. package/dist/types/utils/express/utils/index.d.ts +2 -2
  185. package/dist/types/utils/express/utils/index.d.ts.map +1 -1
  186. package/package.json +4 -3
  187. package/dist/cjs/preset/bun/providers/fetch-middleware.js.map +0 -1
  188. package/dist/cjs/preset/bun/providers/serve.js +0 -33
  189. package/dist/cjs/preset/bun/providers/serve.js.map +0 -1
  190. package/dist/cjs/preset/bun-handler/providers/cookie-store.js +0 -15
  191. package/dist/cjs/preset/bun-handler/providers/cookie-store.js.map +0 -1
  192. package/dist/cjs/preset/node/providers/metrics-http-app.js.map +0 -1
  193. package/dist/cjs/preset/node-handler/providers/cookie-store.js +0 -18
  194. package/dist/cjs/preset/node-handler/providers/cookie-store.js.map +0 -1
  195. package/dist/cjs/preset/server/utils/get-fetch-tracing.js.map +0 -1
  196. package/dist/cjs/preset/server/utils/get-handler-metrics.js.map +0 -1
  197. package/dist/cjs/preset/server/utils/get-serve-measuring.js.map +0 -1
  198. package/dist/cjs/utils/axios/middleware/cookie.js +0 -28
  199. package/dist/cjs/utils/axios/middleware/cookie.js.map +0 -1
  200. package/dist/esm/preset/bun/providers/fetch-middleware.js.map +0 -1
  201. package/dist/esm/preset/bun/providers/serve.js +0 -27
  202. package/dist/esm/preset/bun/providers/serve.js.map +0 -1
  203. package/dist/esm/preset/bun-handler/providers/cookie-store.js +0 -9
  204. package/dist/esm/preset/bun-handler/providers/cookie-store.js.map +0 -1
  205. package/dist/esm/preset/node/providers/metrics-http-app.js.map +0 -1
  206. package/dist/esm/preset/node-handler/providers/cookie-store.js +0 -13
  207. package/dist/esm/preset/node-handler/providers/cookie-store.js.map +0 -1
  208. package/dist/esm/preset/server/utils/get-fetch-tracing.js.map +0 -1
  209. package/dist/esm/preset/server/utils/get-handler-metrics.js.map +0 -1
  210. package/dist/esm/preset/server/utils/get-serve-measuring.js.map +0 -1
  211. package/dist/esm/utils/axios/middleware/cookie.js +0 -22
  212. package/dist/esm/utils/axios/middleware/cookie.js.map +0 -1
  213. package/dist/types/preset/bun/providers/fetch-middleware.d.ts.map +0 -1
  214. package/dist/types/preset/bun/providers/serve.d.ts.map +0 -1
  215. package/dist/types/preset/bun-handler/providers/cookie-store.d.ts +0 -4
  216. package/dist/types/preset/bun-handler/providers/cookie-store.d.ts.map +0 -1
  217. package/dist/types/preset/node/providers/metrics-http-app.d.ts.map +0 -1
  218. package/dist/types/preset/node-handler/providers/cookie-store.d.ts +0 -9
  219. package/dist/types/preset/node-handler/providers/cookie-store.d.ts.map +0 -1
  220. package/dist/types/preset/server/utils/get-fetch-tracing.d.ts.map +0 -1
  221. package/dist/types/preset/server/utils/get-handler-metrics.d.ts.map +0 -1
  222. package/dist/types/preset/server/utils/get-serve-measuring.d.ts.map +0 -1
  223. package/dist/types/utils/axios/middleware/cookie.d.ts +0 -9
  224. package/dist/types/utils/axios/middleware/cookie.d.ts.map +0 -1
  225. /package/dist/cjs/preset/{server → node}/utils/get-handler-metrics.js +0 -0
  226. /package/dist/cjs/preset/{bun → server}/providers/fetch-middleware.js +0 -0
  227. /package/dist/esm/preset/{server → node}/utils/get-handler-metrics.js +0 -0
  228. /package/dist/esm/preset/{bun → server}/providers/fetch-middleware.js +0 -0
  229. /package/dist/types/preset/{server → node}/utils/get-fetch-tracing.d.ts +0 -0
  230. /package/dist/types/preset/{server → node}/utils/get-handler-metrics.d.ts +0 -0
  231. /package/dist/types/preset/{bun → server}/providers/fetch-middleware.d.ts +0 -0
  232. /package/dist/types/preset/{bun → server}/providers/serve.d.ts +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"handler-main.js","names":["KnownToken","applyMiddleware","HelmetContext","formatHandlerError","provideHandlerMain","resolve","config","Config","base","logger","assetsInit","Http","Handler","Page","assets","render","extras","Response","specificExtras","Helmet","helmet","abortController","Fetch","formatResponse","getAssets","handler","meta","getMeta","jsx","React","createElement","Provider","value","title","appName","body","headers","error","response","log","level","status","redirectLocation","Location","enhancer","request","next","abort"],"sources":["../../../../../src/preset/bun-handler/providers/handler-main.tsx"],"sourcesContent":["/* eslint-disable require-jsdoc, jsdoc/require-jsdoc */\nimport { Resolve } from '../../../di';\nimport { KnownToken } from '../../../tokens';\nimport { applyMiddleware } from '../../../http';\nimport { HelmetContext } from '../../server/utils/regular-helmet';\nimport { formatHandlerError } from '../../server/utils/format-handler-error';\n\nexport function provideHandlerMain(resolve: Resolve) {\n const config = resolve(KnownToken.Config.base);\n const logger = resolve(KnownToken.logger);\n const assetsInit = resolve(KnownToken.Http.Handler.Page.assets);\n const render = resolve(KnownToken.Http.Handler.Page.render);\n const extras = resolve(KnownToken.Http.Handler.Response.specificExtras);\n const Helmet = resolve(KnownToken.Http.Handler.Page.helmet);\n const abortController = resolve(KnownToken.Http.Fetch.abortController);\n const formatResponse = resolve(KnownToken.Http.Handler.Page.formatResponse);\n\n // @todo https://github.com/sima-land/isomorph/issues/69\n // const cookieStore = resolve(KnownToken.Http.Fetch.cookieStore);\n // const forwardedSetCookie: string[] = [];\n // const unsubscribeCookieStore = cookieStore.subscribe(setCookieList => {\n // forwardedSetCookie.push(...setCookieList);\n // });\n\n const getAssets = typeof assetsInit === 'function' ? assetsInit : () => assetsInit;\n\n const handler = async (): Promise<Response> => {\n try {\n const assets = await getAssets();\n const meta = extras.getMeta();\n\n const jsx = (\n <HelmetContext.Provider value={{ title: config.appName, assets }}>\n <Helmet>{await render()}</Helmet>\n </HelmetContext.Provider>\n );\n\n const { body, headers } = await formatResponse(jsx, assets, meta);\n\n return new Response(body, { headers });\n } catch (error) {\n const { response, log } = formatHandlerError(error);\n\n if (log.level && logger[log.level]) {\n logger[log.level](error);\n }\n\n if (response.status > 299 && response.status < 400 && response.redirectLocation) {\n return new Response(null, {\n status: response.status,\n headers: {\n Location: response.redirectLocation,\n },\n });\n } else {\n return new Response(response.body, {\n status: response.status,\n });\n }\n }\n };\n\n const enhancer = applyMiddleware(\n // @todo https://github.com/sima-land/isomorph/issues/69\n // async (request, next) => {\n // const response = await next(request);\n // for (const item of forwardedSetCookie) {\n // response.headers.append('set-cookie', item);\n // }\n // unsubscribeCookieStore();\n // return response;\n // },\n\n // ВАЖНО: прерываем исходящие в рамках обработчика http-запросы\n async (request, next) => {\n const response = await next(request);\n\n abortController.abort();\n\n return response;\n },\n );\n\n return enhancer(handler);\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"handler-main.js","names":["KnownToken","applyMiddleware","HelmetContext","formatHandlerError","provideHandlerMain","resolve","config","Config","base","logger","assetsInit","Http","Handler","Page","assets","render","Helmet","helmet","abortController","Fetch","formatResponse","getAssets","handler","jsx","React","createElement","Provider","value","title","appName","body","headers","Response","error","response","log","level","status","redirectLocation","Location","enhancer","request","next","abort"],"sources":["../../../../../src/preset/bun-handler/providers/handler-main.tsx"],"sourcesContent":["/* eslint-disable require-jsdoc, jsdoc/require-jsdoc */\nimport { Resolve } from '../../../di';\nimport { KnownToken } from '../../../tokens';\nimport { applyMiddleware } from '../../../http';\nimport { HelmetContext } from '../../server/utils/regular-helmet';\nimport { formatHandlerError } from '../../server/utils/format-handler-error';\n\nexport function provideHandlerMain(resolve: Resolve) {\n const config = resolve(KnownToken.Config.base);\n const logger = resolve(KnownToken.logger);\n const assetsInit = resolve(KnownToken.Http.Handler.Page.assets);\n const render = resolve(KnownToken.Http.Handler.Page.render);\n const Helmet = resolve(KnownToken.Http.Handler.Page.helmet);\n const abortController = resolve(KnownToken.Http.Fetch.abortController);\n const formatResponse = resolve(KnownToken.Http.Handler.Page.formatResponse);\n\n const getAssets = typeof assetsInit === 'function' ? assetsInit : () => assetsInit;\n\n const handler = async (): Promise<Response> => {\n try {\n const assets = await getAssets();\n\n const jsx = (\n <HelmetContext.Provider value={{ title: config.appName, assets }}>\n <Helmet>{await render()}</Helmet>\n </HelmetContext.Provider>\n );\n\n const { body, headers } = await formatResponse(jsx, assets);\n\n return new Response(body, { headers });\n } catch (error) {\n const { response, log } = formatHandlerError(error);\n\n if (log.level && logger[log.level]) {\n logger[log.level](error);\n }\n\n if (response.status > 299 && response.status < 400 && response.redirectLocation) {\n return new Response(null, {\n status: response.status,\n headers: {\n Location: response.redirectLocation,\n },\n });\n } else {\n return new Response(response.body, {\n status: response.status,\n });\n }\n }\n };\n\n const enhancer = applyMiddleware(\n // ВАЖНО: прерываем исходящие в рамках обработчика http-запросы\n async (request, next) => {\n try {\n return await next(request);\n } finally {\n abortController.abort();\n }\n },\n );\n\n return enhancer(handler);\n}\n"],"mappings":"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"}
@@ -13,13 +13,13 @@ import { provideExpressRequestMiddleware } from "./providers/express-request-mid
13
13
  import { provideExpressTracingMiddleware } from "./providers/express-tracing-middleware.js";
14
14
  import { provideKnownHttpApiHosts } from "../server/providers/known-http-api-hosts.js";
15
15
  import { provideLogger } from "./providers/logger.js";
16
- import { provideMetricsHttpApp } from "./providers/metrics-http-app.js";
16
+ import { provideMetricsExpressApp } from "./providers/metrics-express-app.js";
17
17
  import { provideSpanExporter } from "./providers/span-exporter.js";
18
18
  import { provideSsrBridgeServerSide } from "../server/providers/ssr-bridge-server-side.js";
19
19
  import { provideTracer } from "./providers/tracer.js";
20
20
  import { provideTracerProvider } from "./providers/tracer-provider.js";
21
21
  import { provideTracerProviderResource } from "./providers/tracer-provider-resource.js";
22
-
22
+ import { provideMainExpressApp } from "./providers/main-express-app.js";
23
23
  /**
24
24
  * Возвращает preset с зависимостями по умолчанию для frontend-микросервисов на Node.js.
25
25
  * @param customize Получит функцию с помощью которой можно переопределить предустановленные провайдеры.
@@ -43,17 +43,23 @@ export function PresetNode(customize) {
43
43
  preset.set(KnownToken.Tracing.tracerProviderResource, provideTracerProviderResource);
44
44
 
45
45
  // metrics
46
- preset.set(KnownToken.Metrics.httpApp, provideMetricsHttpApp);
46
+ preset.set(KnownToken.Metrics.expressApp, provideMetricsExpressApp);
47
47
 
48
48
  // fetch
49
49
  preset.set(KnownToken.Http.fetch, provideFetch);
50
50
  preset.set(KnownToken.Http.Fetch.middleware, () => []);
51
+ preset.set(KnownToken.Http.Serve.Proxy.config, () => null);
51
52
 
52
53
  // axios
53
54
  preset.set(KnownToken.Axios.factory, provideAxiosFactory);
54
55
  preset.set(KnownToken.Axios.middleware, () => []);
55
56
 
56
57
  // express
58
+ preset.set(KnownToken.Express.app, provideMainExpressApp);
59
+ preset.set(KnownToken.Express.pageRoutes, () => []);
60
+ preset.set(KnownToken.Express.serviceRoutes, resolve => [['/healthcheck', resolve(KnownToken.Express.Handlers.healthCheck)]]);
61
+ preset.set(KnownToken.Express.middleware, resolve => [resolve(KnownToken.Express.Middleware.request), resolve(KnownToken.Express.Middleware.log), resolve(KnownToken.Express.Middleware.metrics), resolve(KnownToken.Express.Middleware.tracing)]);
62
+ preset.set(KnownToken.Express.endMiddleware, resolve => [resolve(KnownToken.Express.Middleware.error)]);
57
63
  preset.set(KnownToken.Express.factory, provideExpressFactory);
58
64
  preset.set(KnownToken.Express.Handlers.healthCheck, healthCheck);
59
65
  preset.set(KnownToken.Express.Middleware.request, provideExpressRequestMiddleware);
@@ -74,7 +80,6 @@ export function PresetNode(customize) {
74
80
  }
75
81
  return preset;
76
82
  }
77
-
78
83
  // доступные утилиты
79
84
  export { getClientIp } from "./utils/get-client-ip.js";
80
85
  export { getForwardedHeaders } from "./utils/get-forwarded-headers.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["KnownToken","provideAxiosFactory","provideFetch","provideBaseConfig","createPreset","healthCheck","provideConfigSource","provideExpressErrorMiddleware","provideExpressFactory","provideExpressLogMiddleware","provideExpressMetricsMiddleware","provideExpressRequestMiddleware","provideExpressTracingMiddleware","provideKnownHttpApiHosts","provideLogger","provideMetricsHttpApp","provideSpanExporter","provideSsrBridgeServerSide","provideTracer","provideTracerProvider","provideTracerProviderResource","PresetNode","customize","preset","set","Config","source","base","logger","Tracing","tracer","spanExporter","tracerProvider","tracerProviderResource","Metrics","httpApp","Http","fetch","Fetch","middleware","Axios","factory","Express","Handlers","Middleware","request","log","metrics","tracing","error","Api","knownHosts","SsrBridge","serverSide","override","bind","getClientIp","getForwardedHeaders","getPageResponseFormat","HandlerProvider"],"sources":["../../../../src/preset/node/index.ts"],"sourcesContent":["import { KnownToken } from '../../tokens';\nimport { provideAxiosFactory } from '../isomorphic/providers/axios-factory';\nimport { provideFetch } from '../isomorphic/providers/fetch';\nimport { provideBaseConfig } from '../isomorphic/providers/base-config';\nimport { Preset, createPreset } from '../../di';\nimport { PresetTuner } from '../isomorphic/types';\nimport { healthCheck } from '../../utils/express/handler/health-check';\nimport { provideConfigSource } from './providers/config-source';\nimport { provideExpressErrorMiddleware } from './providers/express-error-middleware';\nimport { provideExpressFactory } from './providers/express-factory';\nimport { provideExpressLogMiddleware } from './providers/express-log-middleware';\nimport { provideExpressMetricsMiddleware } from './providers/express-metrics-middleware';\nimport { provideExpressRequestMiddleware } from './providers/express-request-middleware';\nimport { provideExpressTracingMiddleware } from './providers/express-tracing-middleware';\nimport { provideKnownHttpApiHosts } from '../server/providers/known-http-api-hosts';\nimport { provideLogger } from './providers/logger';\nimport { provideMetricsHttpApp } from './providers/metrics-http-app';\nimport { provideSpanExporter } from './providers/span-exporter';\nimport { provideSsrBridgeServerSide } from '../server/providers/ssr-bridge-server-side';\nimport { provideTracer } from './providers/tracer';\nimport { provideTracerProvider } from './providers/tracer-provider';\nimport { provideTracerProviderResource } from './providers/tracer-provider-resource';\n\n/**\n * Возвращает preset с зависимостями по умолчанию для frontend-микросервисов на Node.js.\n * @param customize Получит функцию с помощью которой можно переопределить предустановленные провайдеры.\n * @return Preset.\n */\nexport function PresetNode(customize?: PresetTuner): Preset {\n // ВАЖНО: используем .set() вместо аргумента defaults функции createPreset из-за скорости\n const preset = createPreset();\n\n // config\n preset.set(KnownToken.Config.source, provideConfigSource);\n preset.set(KnownToken.Config.base, provideBaseConfig);\n\n // log\n preset.set(KnownToken.logger, provideLogger);\n\n // tracing\n preset.set(KnownToken.Tracing.tracer, provideTracer);\n preset.set(KnownToken.Tracing.spanExporter, provideSpanExporter);\n preset.set(KnownToken.Tracing.tracerProvider, provideTracerProvider);\n preset.set(KnownToken.Tracing.tracerProviderResource, provideTracerProviderResource);\n\n // metrics\n preset.set(KnownToken.Metrics.httpApp, provideMetricsHttpApp);\n\n // fetch\n preset.set(KnownToken.Http.fetch, provideFetch);\n preset.set(KnownToken.Http.Fetch.middleware, () => []);\n\n // axios\n preset.set(KnownToken.Axios.factory, provideAxiosFactory);\n preset.set(KnownToken.Axios.middleware, () => []);\n\n // express\n preset.set(KnownToken.Express.factory, provideExpressFactory);\n preset.set(KnownToken.Express.Handlers.healthCheck, healthCheck);\n preset.set(KnownToken.Express.Middleware.request, provideExpressRequestMiddleware);\n preset.set(KnownToken.Express.Middleware.log, provideExpressLogMiddleware);\n preset.set(KnownToken.Express.Middleware.metrics, provideExpressMetricsMiddleware);\n preset.set(KnownToken.Express.Middleware.tracing, provideExpressTracingMiddleware);\n preset.set(KnownToken.Express.Middleware.error, provideExpressErrorMiddleware);\n\n // http api\n preset.set(KnownToken.Http.Api.knownHosts, provideKnownHttpApiHosts);\n\n // ssr bridge\n preset.set(KnownToken.SsrBridge.serverSide, provideSsrBridgeServerSide);\n\n if (customize) {\n customize({ override: preset.set.bind(preset) });\n }\n\n return preset;\n}\n\n// доступные утилиты\nexport { getClientIp } from './utils/get-client-ip';\nexport { getForwardedHeaders } from './utils/get-forwarded-headers';\nexport { getPageResponseFormat } from './utils/get-page-response-format';\nexport { HandlerProvider } from './utils/handler-provider';\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["KnownToken","provideAxiosFactory","provideFetch","provideBaseConfig","createPreset","healthCheck","provideConfigSource","provideExpressErrorMiddleware","provideExpressFactory","provideExpressLogMiddleware","provideExpressMetricsMiddleware","provideExpressRequestMiddleware","provideExpressTracingMiddleware","provideKnownHttpApiHosts","provideLogger","provideMetricsExpressApp","provideSpanExporter","provideSsrBridgeServerSide","provideTracer","provideTracerProvider","provideTracerProviderResource","provideMainExpressApp","PresetNode","customize","preset","set","Config","source","base","logger","Tracing","tracer","spanExporter","tracerProvider","tracerProviderResource","Metrics","expressApp","Http","fetch","Fetch","middleware","Serve","Proxy","config","Axios","factory","Express","app","pageRoutes","serviceRoutes","resolve","Handlers","Middleware","request","log","metrics","tracing","endMiddleware","error","Api","knownHosts","SsrBridge","serverSide","override","bind","getClientIp","getForwardedHeaders","getPageResponseFormat","HandlerProvider"],"sources":["../../../../src/preset/node/index.ts"],"sourcesContent":["import { KnownToken } from '../../tokens';\nimport { provideAxiosFactory } from '../isomorphic/providers/axios-factory';\nimport { provideFetch } from '../isomorphic/providers/fetch';\nimport { provideBaseConfig } from '../isomorphic/providers/base-config';\nimport { Preset, createPreset } from '../../di';\nimport { PresetTuner } from '../isomorphic/types';\nimport { healthCheck } from '../../utils/express/handler/health-check';\nimport { provideConfigSource } from './providers/config-source';\nimport { provideExpressErrorMiddleware } from './providers/express-error-middleware';\nimport { provideExpressFactory } from './providers/express-factory';\nimport { provideExpressLogMiddleware } from './providers/express-log-middleware';\nimport { provideExpressMetricsMiddleware } from './providers/express-metrics-middleware';\nimport { provideExpressRequestMiddleware } from './providers/express-request-middleware';\nimport { provideExpressTracingMiddleware } from './providers/express-tracing-middleware';\nimport { provideKnownHttpApiHosts } from '../server/providers/known-http-api-hosts';\nimport { provideLogger } from './providers/logger';\nimport { provideMetricsExpressApp } from './providers/metrics-express-app';\nimport { provideSpanExporter } from './providers/span-exporter';\nimport { provideSsrBridgeServerSide } from '../server/providers/ssr-bridge-server-side';\nimport { provideTracer } from './providers/tracer';\nimport { provideTracerProvider } from './providers/tracer-provider';\nimport { provideTracerProviderResource } from './providers/tracer-provider-resource';\nimport { provideMainExpressApp } from './providers/main-express-app';\nimport { ExpressRouteList } from './types';\n\n/**\n * Возвращает preset с зависимостями по умолчанию для frontend-микросервисов на Node.js.\n * @param customize Получит функцию с помощью которой можно переопределить предустановленные провайдеры.\n * @return Preset.\n */\nexport function PresetNode(customize?: PresetTuner): Preset {\n // ВАЖНО: используем .set() вместо аргумента defaults функции createPreset из-за скорости\n const preset = createPreset();\n\n // config\n preset.set(KnownToken.Config.source, provideConfigSource);\n preset.set(KnownToken.Config.base, provideBaseConfig);\n\n // log\n preset.set(KnownToken.logger, provideLogger);\n\n // tracing\n preset.set(KnownToken.Tracing.tracer, provideTracer);\n preset.set(KnownToken.Tracing.spanExporter, provideSpanExporter);\n preset.set(KnownToken.Tracing.tracerProvider, provideTracerProvider);\n preset.set(KnownToken.Tracing.tracerProviderResource, provideTracerProviderResource);\n\n // metrics\n preset.set(KnownToken.Metrics.expressApp, provideMetricsExpressApp);\n\n // fetch\n preset.set(KnownToken.Http.fetch, provideFetch);\n preset.set(KnownToken.Http.Fetch.middleware, () => []);\n preset.set(KnownToken.Http.Serve.Proxy.config, () => null);\n\n // axios\n preset.set(KnownToken.Axios.factory, provideAxiosFactory);\n preset.set(KnownToken.Axios.middleware, () => []);\n\n // express\n preset.set(KnownToken.Express.app, provideMainExpressApp);\n preset.set(KnownToken.Express.pageRoutes, () => []);\n preset.set(\n KnownToken.Express.serviceRoutes,\n (resolve): ExpressRouteList => [\n ['/healthcheck', resolve(KnownToken.Express.Handlers.healthCheck)],\n ],\n );\n preset.set(KnownToken.Express.middleware, resolve => [\n resolve(KnownToken.Express.Middleware.request),\n resolve(KnownToken.Express.Middleware.log),\n resolve(KnownToken.Express.Middleware.metrics),\n resolve(KnownToken.Express.Middleware.tracing),\n ]);\n preset.set(KnownToken.Express.endMiddleware, resolve => [\n resolve(KnownToken.Express.Middleware.error),\n ]);\n preset.set(KnownToken.Express.factory, provideExpressFactory);\n preset.set(KnownToken.Express.Handlers.healthCheck, healthCheck);\n preset.set(KnownToken.Express.Middleware.request, provideExpressRequestMiddleware);\n preset.set(KnownToken.Express.Middleware.log, provideExpressLogMiddleware);\n preset.set(KnownToken.Express.Middleware.metrics, provideExpressMetricsMiddleware);\n preset.set(KnownToken.Express.Middleware.tracing, provideExpressTracingMiddleware);\n preset.set(KnownToken.Express.Middleware.error, provideExpressErrorMiddleware);\n\n // http api\n preset.set(KnownToken.Http.Api.knownHosts, provideKnownHttpApiHosts);\n\n // ssr bridge\n preset.set(KnownToken.SsrBridge.serverSide, provideSsrBridgeServerSide);\n\n if (customize) {\n customize({ override: preset.set.bind(preset) });\n }\n\n return preset;\n}\n\nexport type { ExpressHandlerContext, ExpressRouteList } from './types';\n\n// доступные утилиты\nexport { getClientIp } from './utils/get-client-ip';\nexport { getForwardedHeaders } from './utils/get-forwarded-headers';\nexport { getPageResponseFormat } from './utils/get-page-response-format';\nexport { HandlerProvider } from './utils/handler-provider';\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { getHandlerMetrics } from "../../server/utils/get-handler-metrics.js";
1
+ import { getHandlerMetrics } from "../utils/get-handler-metrics.js";
2
2
  import { KnownToken } from "../../../tokens.js";
3
3
  import { PAGE_HANDLER_EVENT_TYPE } from "./../../server/index.js";
4
4
  import { toMilliseconds } from "./../../../utils/index.js";
@@ -1 +1 @@
1
- {"version":3,"file":"express-metrics-middleware.js","names":["getHandlerMetrics","KnownToken","PAGE_HANDLER_EVENT_TYPE","toMilliseconds","provideExpressMetricsMiddleware","resolve","config","Config","base","requestCount","renderDuration","responseDuration","getLabels","req","res","version","appVersion","route","baseUrl","path","code","statusCode","method","getRenderLabels","request","url","next","responseStart","process","hrtime","bigint","inc","once","renderStart","renderFinish","observe","responseFinish"],"sources":["../../../../../src/preset/node/providers/express-metrics-middleware.ts"],"sourcesContent":["import type express from 'express';\nimport type { Resolve } from '../../../di';\nimport { LABEL_NAMES, getHandlerMetrics } from '../../server/utils/get-handler-metrics';\nimport { KnownToken } from '../../../tokens';\nimport { PAGE_HANDLER_EVENT_TYPE } from '../../server';\nimport { toMilliseconds } from '../../../utils';\n\n/**\n * Провайдер промежуточного слоя сбора метрик входящих http-запросов.\n * @param resolve Функция для получения зависимости по токену.\n * @return Промежуточный слой.\n */\nexport function provideExpressMetricsMiddleware(resolve: Resolve): express.Handler {\n const config = resolve(KnownToken.Config.base);\n const { requestCount, renderDuration, responseDuration } = getHandlerMetrics();\n\n /**\n * Функция формирования labels.\n * @param req Request.\n * @param res Response.\n * @return Labels.\n */\n const getLabels = (\n req: express.Request,\n res: express.Response,\n ): Record<(typeof LABEL_NAMES.httpResponse)[number], string | number> => ({\n version: config.appVersion,\n route: req.baseUrl + req.path,\n code: res.statusCode,\n method: req.method,\n });\n\n /** @inheritdoc */\n const getRenderLabels = (request: express.Request) =>\n ({\n version: config.appVersion,\n method: request.method,\n route: request.url,\n }) satisfies Record<(typeof LABEL_NAMES.pageRender)[number], string | number>;\n\n return (req, res, next) => {\n const responseStart = process.hrtime.bigint();\n\n requestCount.inc(getLabels(req, res), 1);\n\n res.once(PAGE_HANDLER_EVENT_TYPE.renderStart, () => {\n const renderStart = process.hrtime.bigint();\n\n res.once(PAGE_HANDLER_EVENT_TYPE.renderFinish, () => {\n const renderFinish = process.hrtime.bigint();\n\n renderDuration.observe(getRenderLabels(req), toMilliseconds(renderFinish - renderStart));\n });\n });\n\n res.once('finish', () => {\n const responseFinish = process.hrtime.bigint();\n\n responseDuration.observe(getLabels(req, res), toMilliseconds(responseFinish - responseStart));\n });\n\n next();\n };\n}\n"],"mappings":"AAEA,SAAsBA,iBAAiB,QAAQ,2CAAwC;AACvF,SAASC,UAAU,QAAQ,oBAAiB;AAC5C,SAASC,uBAAuB,QAAQ,yBAAc;AACtD,SAASC,cAAc,QAAQ,2BAAgB;;AAE/C;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,+BAA+BA,CAACC,OAAgB,EAAmB;EACjF,MAAMC,MAAM,GAAGD,OAAO,CAACJ,UAAU,CAACM,MAAM,CAACC,IAAI,CAAC;EAC9C,MAAM;IAAEC,YAAY;IAAEC,cAAc;IAAEC;EAAiB,CAAC,GAAGX,iBAAiB,CAAC,CAAC;;EAE9E;AACF;AACA;AACA;AACA;AACA;EACE,MAAMY,SAAS,GAAGA,CAChBC,GAAoB,EACpBC,GAAqB,MACmD;IACxEC,OAAO,EAAET,MAAM,CAACU,UAAU;IAC1BC,KAAK,EAAEJ,GAAG,CAACK,OAAO,GAAGL,GAAG,CAACM,IAAI;IAC7BC,IAAI,EAAEN,GAAG,CAACO,UAAU;IACpBC,MAAM,EAAET,GAAG,CAACS;EACd,CAAC,CAAC;;EAEF;EACA,MAAMC,eAAe,GAAIC,OAAwB,KAC9C;IACCT,OAAO,EAAET,MAAM,CAACU,UAAU;IAC1BM,MAAM,EAAEE,OAAO,CAACF,MAAM;IACtBL,KAAK,EAAEO,OAAO,CAACC;EACjB,CAAC,CAA4E;EAE/E,OAAO,CAACZ,GAAG,EAAEC,GAAG,EAAEY,IAAI,KAAK;IACzB,MAAMC,aAAa,GAAGC,OAAO,CAACC,MAAM,CAACC,MAAM,CAAC,CAAC;IAE7CrB,YAAY,CAACsB,GAAG,CAACnB,SAAS,CAACC,GAAG,EAAEC,GAAG,CAAC,EAAE,CAAC,CAAC;IAExCA,GAAG,CAACkB,IAAI,CAAC9B,uBAAuB,CAAC+B,WAAW,EAAE,MAAM;MAClD,MAAMA,WAAW,GAAGL,OAAO,CAACC,MAAM,CAACC,MAAM,CAAC,CAAC;MAE3ChB,GAAG,CAACkB,IAAI,CAAC9B,uBAAuB,CAACgC,YAAY,EAAE,MAAM;QACnD,MAAMA,YAAY,GAAGN,OAAO,CAACC,MAAM,CAACC,MAAM,CAAC,CAAC;QAE5CpB,cAAc,CAACyB,OAAO,CAACZ,eAAe,CAACV,GAAG,CAAC,EAAEV,cAAc,CAAC+B,YAAY,GAAGD,WAAW,CAAC,CAAC;MAC1F,CAAC,CAAC;IACJ,CAAC,CAAC;IAEFnB,GAAG,CAACkB,IAAI,CAAC,QAAQ,EAAE,MAAM;MACvB,MAAMI,cAAc,GAAGR,OAAO,CAACC,MAAM,CAACC,MAAM,CAAC,CAAC;MAE9CnB,gBAAgB,CAACwB,OAAO,CAACvB,SAAS,CAACC,GAAG,EAAEC,GAAG,CAAC,EAAEX,cAAc,CAACiC,cAAc,GAAGT,aAAa,CAAC,CAAC;IAC/F,CAAC,CAAC;IAEFD,IAAI,CAAC,CAAC;EACR,CAAC;AACH"}
1
+ {"version":3,"file":"express-metrics-middleware.js","names":["getHandlerMetrics","KnownToken","PAGE_HANDLER_EVENT_TYPE","toMilliseconds","provideExpressMetricsMiddleware","resolve","config","Config","base","requestCount","renderDuration","responseDuration","getLabels","req","res","version","appVersion","route","baseUrl","path","code","statusCode","method","getRenderLabels","request","url","next","responseStart","process","hrtime","bigint","inc","once","renderStart","renderFinish","observe","responseFinish"],"sources":["../../../../../src/preset/node/providers/express-metrics-middleware.ts"],"sourcesContent":["import type express from 'express';\nimport type { Resolve } from '../../../di';\nimport { LABEL_NAMES, getHandlerMetrics } from '../utils/get-handler-metrics';\nimport { KnownToken } from '../../../tokens';\nimport { PAGE_HANDLER_EVENT_TYPE } from '../../server';\nimport { toMilliseconds } from '../../../utils';\n\n/**\n * Провайдер промежуточного слоя сбора метрик входящих http-запросов.\n * @param resolve Функция для получения зависимости по токену.\n * @return Промежуточный слой.\n */\nexport function provideExpressMetricsMiddleware(resolve: Resolve): express.Handler {\n const config = resolve(KnownToken.Config.base);\n const { requestCount, renderDuration, responseDuration } = getHandlerMetrics();\n\n /**\n * Функция формирования labels.\n * @param req Request.\n * @param res Response.\n * @return Labels.\n */\n const getLabels = (\n req: express.Request,\n res: express.Response,\n ): Record<(typeof LABEL_NAMES.httpResponse)[number], string | number> => ({\n version: config.appVersion,\n route: req.baseUrl + req.path,\n code: res.statusCode,\n method: req.method,\n });\n\n /** @inheritdoc */\n const getRenderLabels = (request: express.Request) =>\n ({\n version: config.appVersion,\n method: request.method,\n route: request.url,\n }) satisfies Record<(typeof LABEL_NAMES.pageRender)[number], string | number>;\n\n return (req, res, next) => {\n const responseStart = process.hrtime.bigint();\n\n requestCount.inc(getLabels(req, res), 1);\n\n res.once(PAGE_HANDLER_EVENT_TYPE.renderStart, () => {\n const renderStart = process.hrtime.bigint();\n\n res.once(PAGE_HANDLER_EVENT_TYPE.renderFinish, () => {\n const renderFinish = process.hrtime.bigint();\n\n renderDuration.observe(getRenderLabels(req), toMilliseconds(renderFinish - renderStart));\n });\n });\n\n res.once('finish', () => {\n const responseFinish = process.hrtime.bigint();\n\n responseDuration.observe(getLabels(req, res), toMilliseconds(responseFinish - responseStart));\n });\n\n next();\n };\n}\n"],"mappings":"AAEA,SAAsBA,iBAAiB,QAAQ,iCAA8B;AAC7E,SAASC,UAAU,QAAQ,oBAAiB;AAC5C,SAASC,uBAAuB,QAAQ,yBAAc;AACtD,SAASC,cAAc,QAAQ,2BAAgB;;AAE/C;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,+BAA+BA,CAACC,OAAgB,EAAmB;EACjF,MAAMC,MAAM,GAAGD,OAAO,CAACJ,UAAU,CAACM,MAAM,CAACC,IAAI,CAAC;EAC9C,MAAM;IAAEC,YAAY;IAAEC,cAAc;IAAEC;EAAiB,CAAC,GAAGX,iBAAiB,CAAC,CAAC;;EAE9E;AACF;AACA;AACA;AACA;AACA;EACE,MAAMY,SAAS,GAAGA,CAChBC,GAAoB,EACpBC,GAAqB,MACmD;IACxEC,OAAO,EAAET,MAAM,CAACU,UAAU;IAC1BC,KAAK,EAAEJ,GAAG,CAACK,OAAO,GAAGL,GAAG,CAACM,IAAI;IAC7BC,IAAI,EAAEN,GAAG,CAACO,UAAU;IACpBC,MAAM,EAAET,GAAG,CAACS;EACd,CAAC,CAAC;;EAEF;EACA,MAAMC,eAAe,GAAIC,OAAwB,KAC9C;IACCT,OAAO,EAAET,MAAM,CAACU,UAAU;IAC1BM,MAAM,EAAEE,OAAO,CAACF,MAAM;IACtBL,KAAK,EAAEO,OAAO,CAACC;EACjB,CAAC,CAA4E;EAE/E,OAAO,CAACZ,GAAG,EAAEC,GAAG,EAAEY,IAAI,KAAK;IACzB,MAAMC,aAAa,GAAGC,OAAO,CAACC,MAAM,CAACC,MAAM,CAAC,CAAC;IAE7CrB,YAAY,CAACsB,GAAG,CAACnB,SAAS,CAACC,GAAG,EAAEC,GAAG,CAAC,EAAE,CAAC,CAAC;IAExCA,GAAG,CAACkB,IAAI,CAAC9B,uBAAuB,CAAC+B,WAAW,EAAE,MAAM;MAClD,MAAMA,WAAW,GAAGL,OAAO,CAACC,MAAM,CAACC,MAAM,CAAC,CAAC;MAE3ChB,GAAG,CAACkB,IAAI,CAAC9B,uBAAuB,CAACgC,YAAY,EAAE,MAAM;QACnD,MAAMA,YAAY,GAAGN,OAAO,CAACC,MAAM,CAACC,MAAM,CAAC,CAAC;QAE5CpB,cAAc,CAACyB,OAAO,CAACZ,eAAe,CAACV,GAAG,CAAC,EAAEV,cAAc,CAAC+B,YAAY,GAAGD,WAAW,CAAC,CAAC;MAC1F,CAAC,CAAC;IACJ,CAAC,CAAC;IAEFnB,GAAG,CAACkB,IAAI,CAAC,QAAQ,EAAE,MAAM;MACvB,MAAMI,cAAc,GAAGR,OAAO,CAACC,MAAM,CAACC,MAAM,CAAC,CAAC;MAE9CnB,gBAAgB,CAACwB,OAAO,CAACvB,SAAS,CAACC,GAAG,EAAEC,GAAG,CAAC,EAAEX,cAAc,CAACiC,cAAc,GAAGT,aAAa,CAAC,CAAC;IAC/F,CAAC,CAAC;IAEFD,IAAI,CAAC,CAAC;EACR,CAAC;AACH"}
@@ -0,0 +1,56 @@
1
+ import { KnownToken } from "../../../tokens.js";
2
+ import express from 'express';
3
+ import { createProxyMiddleware } from 'http-proxy-middleware';
4
+
5
+ /**
6
+ * Провайдер основного express-приложения.
7
+ * @param resolve Функция для получения зависимости по токену.
8
+ * @return Основное express-приложение.
9
+ */
10
+ export function provideMainExpressApp(resolve) {
11
+ const config = resolve(KnownToken.Config.base);
12
+ const pageRoutes = resolve(KnownToken.Express.pageRoutes);
13
+ const serviceRoutes = resolve(KnownToken.Express.serviceRoutes);
14
+ const middleware = resolve(KnownToken.Express.middleware);
15
+ const endMiddleware = resolve(KnownToken.Express.endMiddleware);
16
+ const proxyConfig = resolve(KnownToken.Http.Serve.Proxy.config);
17
+ const app = express();
18
+ if (config.env === 'development' && proxyConfig) {
19
+ const proxyConfigs = Array.isArray(proxyConfig) ? proxyConfig : [proxyConfig];
20
+ for (const {
21
+ target,
22
+ filter
23
+ } of proxyConfigs) {
24
+ // ВАЖНО: так как не можем предоставить web-интерфейс Request бросаем ошибку
25
+ if (typeof filter === 'function') {
26
+ throw new Error('Currently function is not supported for proxy "filter"');
27
+ }
28
+ const proxyPaths = Array.isArray(filter) ? filter : [filter];
29
+ app.use(createProxyMiddleware({
30
+ target,
31
+ changeOrigin: true,
32
+ pathFilter: inputPath => proxyPaths.some(proxyPath => inputPath.startsWith(proxyPath))
33
+ }));
34
+ }
35
+ }
36
+
37
+ // маршруты страниц
38
+ for (const [routePath, routeHandler] of pageRoutes) {
39
+ const path = typeof routePath === 'string' ? routePath : routePath.path;
40
+ const method = typeof routePath === 'string' ? 'get' : routePath.method;
41
+ app.use(path, middleware);
42
+ app[method](path, routeHandler);
43
+ app.use(path, endMiddleware);
44
+ }
45
+
46
+ // служебные маршруты (к ним не применяются промежуточные слои)
47
+ for (const [routePath, routeHandler] of serviceRoutes) {
48
+ const path = typeof routePath === 'string' ? routePath : routePath.path;
49
+ const method = typeof routePath === 'string' ? 'get' : routePath.method;
50
+ app[method](path, routeHandler);
51
+ }
52
+
53
+ // @todo также добавить apiRoutes?
54
+ return app;
55
+ }
56
+ //# sourceMappingURL=main-express-app.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main-express-app.js","names":["KnownToken","express","createProxyMiddleware","provideMainExpressApp","resolve","config","Config","base","pageRoutes","Express","serviceRoutes","middleware","endMiddleware","proxyConfig","Http","Serve","Proxy","app","env","proxyConfigs","Array","isArray","target","filter","Error","proxyPaths","use","changeOrigin","pathFilter","inputPath","some","proxyPath","startsWith","routePath","routeHandler","path","method"],"sources":["../../../../../src/preset/node/providers/main-express-app.ts"],"sourcesContent":["import type { Resolve } from '../../../di';\nimport { KnownToken } from '../../../tokens';\nimport express from 'express';\nimport { createProxyMiddleware } from 'http-proxy-middleware';\n\n/**\n * Провайдер основного express-приложения.\n * @param resolve Функция для получения зависимости по токену.\n * @return Основное express-приложение.\n */\nexport function provideMainExpressApp(resolve: Resolve): express.Application {\n const config = resolve(KnownToken.Config.base);\n const pageRoutes = resolve(KnownToken.Express.pageRoutes);\n const serviceRoutes = resolve(KnownToken.Express.serviceRoutes);\n const middleware = resolve(KnownToken.Express.middleware);\n const endMiddleware = resolve(KnownToken.Express.endMiddleware);\n const proxyConfig = resolve(KnownToken.Http.Serve.Proxy.config);\n\n const app = express();\n\n if (config.env === 'development' && proxyConfig) {\n const proxyConfigs = Array.isArray(proxyConfig) ? proxyConfig : [proxyConfig];\n\n for (const { target, filter } of proxyConfigs) {\n // ВАЖНО: так как не можем предоставить web-интерфейс Request бросаем ошибку\n if (typeof filter === 'function') {\n throw new Error('Currently function is not supported for proxy \"filter\"');\n }\n\n const proxyPaths = Array.isArray(filter) ? filter : [filter];\n\n app.use(\n createProxyMiddleware({\n target,\n changeOrigin: true,\n pathFilter: inputPath => proxyPaths.some(proxyPath => inputPath.startsWith(proxyPath)),\n }),\n );\n }\n }\n\n // маршруты страниц\n for (const [routePath, routeHandler] of pageRoutes) {\n const path = typeof routePath === 'string' ? routePath : routePath.path;\n const method = typeof routePath === 'string' ? 'get' : routePath.method;\n\n app.use(path, middleware);\n app[method](path, routeHandler);\n app.use(path, endMiddleware);\n }\n\n // служебные маршруты (к ним не применяются промежуточные слои)\n for (const [routePath, routeHandler] of serviceRoutes) {\n const path = typeof routePath === 'string' ? routePath : routePath.path;\n const method = typeof routePath === 'string' ? 'get' : routePath.method;\n\n app[method](path, routeHandler);\n }\n\n // @todo также добавить apiRoutes?\n return app;\n}\n"],"mappings":"AACA,SAASA,UAAU,QAAQ,oBAAiB;AAC5C,OAAOC,OAAO,MAAM,SAAS;AAC7B,SAASC,qBAAqB,QAAQ,uBAAuB;;AAE7D;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,qBAAqBA,CAACC,OAAgB,EAAuB;EAC3E,MAAMC,MAAM,GAAGD,OAAO,CAACJ,UAAU,CAACM,MAAM,CAACC,IAAI,CAAC;EAC9C,MAAMC,UAAU,GAAGJ,OAAO,CAACJ,UAAU,CAACS,OAAO,CAACD,UAAU,CAAC;EACzD,MAAME,aAAa,GAAGN,OAAO,CAACJ,UAAU,CAACS,OAAO,CAACC,aAAa,CAAC;EAC/D,MAAMC,UAAU,GAAGP,OAAO,CAACJ,UAAU,CAACS,OAAO,CAACE,UAAU,CAAC;EACzD,MAAMC,aAAa,GAAGR,OAAO,CAACJ,UAAU,CAACS,OAAO,CAACG,aAAa,CAAC;EAC/D,MAAMC,WAAW,GAAGT,OAAO,CAACJ,UAAU,CAACc,IAAI,CAACC,KAAK,CAACC,KAAK,CAACX,MAAM,CAAC;EAE/D,MAAMY,GAAG,GAAGhB,OAAO,CAAC,CAAC;EAErB,IAAII,MAAM,CAACa,GAAG,KAAK,aAAa,IAAIL,WAAW,EAAE;IAC/C,MAAMM,YAAY,GAAGC,KAAK,CAACC,OAAO,CAACR,WAAW,CAAC,GAAGA,WAAW,GAAG,CAACA,WAAW,CAAC;IAE7E,KAAK,MAAM;MAAES,MAAM;MAAEC;IAAO,CAAC,IAAIJ,YAAY,EAAE;MAC7C;MACA,IAAI,OAAOI,MAAM,KAAK,UAAU,EAAE;QAChC,MAAM,IAAIC,KAAK,CAAC,wDAAwD,CAAC;MAC3E;MAEA,MAAMC,UAAU,GAAGL,KAAK,CAACC,OAAO,CAACE,MAAM,CAAC,GAAGA,MAAM,GAAG,CAACA,MAAM,CAAC;MAE5DN,GAAG,CAACS,GAAG,CACLxB,qBAAqB,CAAC;QACpBoB,MAAM;QACNK,YAAY,EAAE,IAAI;QAClBC,UAAU,EAAEC,SAAS,IAAIJ,UAAU,CAACK,IAAI,CAACC,SAAS,IAAIF,SAAS,CAACG,UAAU,CAACD,SAAS,CAAC;MACvF,CAAC,CACH,CAAC;IACH;EACF;;EAEA;EACA,KAAK,MAAM,CAACE,SAAS,EAAEC,YAAY,CAAC,IAAI1B,UAAU,EAAE;IAClD,MAAM2B,IAAI,GAAG,OAAOF,SAAS,KAAK,QAAQ,GAAGA,SAAS,GAAGA,SAAS,CAACE,IAAI;IACvE,MAAMC,MAAM,GAAG,OAAOH,SAAS,KAAK,QAAQ,GAAG,KAAK,GAAGA,SAAS,CAACG,MAAM;IAEvEnB,GAAG,CAACS,GAAG,CAACS,IAAI,EAAExB,UAAU,CAAC;IACzBM,GAAG,CAACmB,MAAM,CAAC,CAACD,IAAI,EAAED,YAAY,CAAC;IAC/BjB,GAAG,CAACS,GAAG,CAACS,IAAI,EAAEvB,aAAa,CAAC;EAC9B;;EAEA;EACA,KAAK,MAAM,CAACqB,SAAS,EAAEC,YAAY,CAAC,IAAIxB,aAAa,EAAE;IACrD,MAAMyB,IAAI,GAAG,OAAOF,SAAS,KAAK,QAAQ,GAAGA,SAAS,GAAGA,SAAS,CAACE,IAAI;IACvE,MAAMC,MAAM,GAAG,OAAOH,SAAS,KAAK,QAAQ,GAAG,KAAK,GAAGA,SAAS,CAACG,MAAM;IAEvEnB,GAAG,CAACmB,MAAM,CAAC,CAACD,IAAI,EAAED,YAAY,CAAC;EACjC;;EAEA;EACA,OAAOjB,GAAG;AACZ"}
@@ -5,7 +5,7 @@ import express from 'express';
5
5
  * Провайдер express-приложения метрик.
6
6
  * @return Пул известных http-хостов.
7
7
  */
8
- export function provideMetricsHttpApp() {
8
+ export function provideMetricsExpressApp() {
9
9
  PromClient.collectDefaultMetrics();
10
10
  const app = express();
11
11
  app.get('/', async function (req, res) {
@@ -15,4 +15,4 @@ export function provideMetricsHttpApp() {
15
15
  });
16
16
  return app;
17
17
  }
18
- //# sourceMappingURL=metrics-http-app.js.map
18
+ //# sourceMappingURL=metrics-express-app.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metrics-express-app.js","names":["PromClient","express","provideMetricsExpressApp","collectDefaultMetrics","app","get","req","res","metrics","register","setHeader","contentType","send"],"sources":["../../../../../src/preset/node/providers/metrics-express-app.ts"],"sourcesContent":["import * as PromClient from 'prom-client';\nimport express from 'express';\n\n/**\n * Провайдер express-приложения метрик.\n * @return Пул известных http-хостов.\n */\nexport function provideMetricsExpressApp(): express.Application {\n PromClient.collectDefaultMetrics();\n\n const app = express();\n\n app.get('/', async function (req, res) {\n const metrics = await PromClient.register.metrics();\n\n res.setHeader('Content-Type', PromClient.register.contentType);\n res.send(metrics);\n });\n\n return app;\n}\n"],"mappings":"AAAA,OAAO,KAAKA,UAAU,MAAM,aAAa;AACzC,OAAOC,OAAO,MAAM,SAAS;;AAE7B;AACA;AACA;AACA;AACA,OAAO,SAASC,wBAAwBA,CAAA,EAAwB;EAC9DF,UAAU,CAACG,qBAAqB,CAAC,CAAC;EAElC,MAAMC,GAAG,GAAGH,OAAO,CAAC,CAAC;EAErBG,GAAG,CAACC,GAAG,CAAC,GAAG,EAAE,gBAAgBC,GAAG,EAAEC,GAAG,EAAE;IACrC,MAAMC,OAAO,GAAG,MAAMR,UAAU,CAACS,QAAQ,CAACD,OAAO,CAAC,CAAC;IAEnDD,GAAG,CAACG,SAAS,CAAC,cAAc,EAAEV,UAAU,CAACS,QAAQ,CAACE,WAAW,CAAC;IAC9DJ,GAAG,CAACK,IAAI,CAACJ,OAAO,CAAC;EACnB,CAAC,CAAC;EAEF,OAAOJ,GAAG;AACZ"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","names":[],"sources":["../../../../src/preset/node/types.ts"],"sourcesContent":["import type { Request, Response, NextFunction } from 'express';\n\n/**\n * Контекст обработчика express.\n */\nexport interface ExpressHandlerContext {\n readonly req: Request;\n readonly res: Response;\n readonly next: NextFunction;\n}\n"],"mappings":""}
1
+ {"version":3,"file":"types.js","names":[],"sources":["../../../../src/preset/node/types.ts"],"sourcesContent":["import type express from 'express';\nimport type { RouteInfo } from '../server/types';\n\n/**\n * Контекст обработчика express.\n */\nexport interface ExpressHandlerContext {\n readonly req: express.Request;\n readonly res: express.Response;\n readonly next: express.NextFunction;\n}\n\nexport type ExpressRouteList = Array<[string | RouteInfo, express.Handler]>;\n"],"mappings":""}
@@ -10,7 +10,7 @@ import { hideFirstId } from "../../isomorphic/utils/hide-first-id.js";
10
10
  */
11
11
  export function getFetchTracing(tracer, rootContext) {
12
12
  return async (request, next) => {
13
- const [url, foundId] = hideFirstId(new URL(request.url).pathname);
13
+ const [url, foundId] = hideFirstId(new URL(request.url).pathname); // @todo тут бы помог URLPattern
14
14
  const span = tracer.startSpan(`HTTP ${request.method} ${url}`, undefined, rootContext);
15
15
  span.setAttributes({
16
16
  [SemanticAttributes.HTTP_URL]: url,
@@ -33,7 +33,7 @@ export function getFetchTracing(tracer, rootContext) {
33
33
  });
34
34
  span.end();
35
35
 
36
- // не прячем ошибку
36
+ // ВАЖНО: не прячем ошибку
37
37
  throw error;
38
38
  }
39
39
  };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-fetch-tracing.js","names":["SpanStatusCode","SemanticAttributes","hideFirstId","getFetchTracing","tracer","rootContext","request","next","url","foundId","URL","pathname","span","startSpan","method","undefined","setAttributes","HTTP_URL","HTTP_METHOD","JSON","stringify","searchParams","headers","response","end","error","setStatus","code","ERROR","message"],"sources":["../../../../../src/preset/node/utils/get-fetch-tracing.ts"],"sourcesContent":["import type { Middleware } from '../../../http';\nimport { SpanStatusCode, type Context, type Tracer } from '@opentelemetry/api';\nimport { SemanticAttributes } from '@opentelemetry/semantic-conventions';\nimport { hideFirstId } from '../../isomorphic/utils/hide-first-id';\n\n/**\n * Вернет новый промежуточный слой трассировки для fetch.\n * @param tracer Трассировщик.\n * @param rootContext Контекст.\n * @return Промежуточный слой трассировки.\n */\nexport function getFetchTracing(tracer: Tracer, rootContext: Context): Middleware {\n return async (request, next) => {\n const [url, foundId] = hideFirstId(new URL(request.url).pathname); // @todo тут бы помог URLPattern\n const span = tracer.startSpan(`HTTP ${request.method} ${url}`, undefined, rootContext);\n\n span.setAttributes({\n [SemanticAttributes.HTTP_URL]: url,\n [SemanticAttributes.HTTP_METHOD]: request.method,\n 'request.params': JSON.stringify(new URL(request.url).searchParams),\n 'request.headers': JSON.stringify(request.headers),\n\n // если нашли id - добавляем в теги\n ...(foundId && { 'request.id': foundId }),\n });\n\n try {\n const response = await next(request);\n\n span.end();\n\n return response;\n } catch (error) {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: 'HTTP Request failed',\n });\n\n span.end();\n\n // ВАЖНО: не прячем ошибку\n throw error;\n }\n };\n}\n"],"mappings":"AACA,SAASA,cAAc,QAAmC,oBAAoB;AAC9E,SAASC,kBAAkB,QAAQ,qCAAqC;AACxE,SAASC,WAAW,QAAQ,yCAAsC;;AAElE;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,eAAeA,CAACC,MAAc,EAAEC,WAAoB,EAAc;EAChF,OAAO,OAAOC,OAAO,EAAEC,IAAI,KAAK;IAC9B,MAAM,CAACC,GAAG,EAAEC,OAAO,CAAC,GAAGP,WAAW,CAAC,IAAIQ,GAAG,CAACJ,OAAO,CAACE,GAAG,CAAC,CAACG,QAAQ,CAAC,CAAC,CAAC;IACnE,MAAMC,IAAI,GAAGR,MAAM,CAACS,SAAS,CAAE,QAAOP,OAAO,CAACQ,MAAO,IAAGN,GAAI,EAAC,EAAEO,SAAS,EAAEV,WAAW,CAAC;IAEtFO,IAAI,CAACI,aAAa,CAAC;MACjB,CAACf,kBAAkB,CAACgB,QAAQ,GAAGT,GAAG;MAClC,CAACP,kBAAkB,CAACiB,WAAW,GAAGZ,OAAO,CAACQ,MAAM;MAChD,gBAAgB,EAAEK,IAAI,CAACC,SAAS,CAAC,IAAIV,GAAG,CAACJ,OAAO,CAACE,GAAG,CAAC,CAACa,YAAY,CAAC;MACnE,iBAAiB,EAAEF,IAAI,CAACC,SAAS,CAACd,OAAO,CAACgB,OAAO,CAAC;MAElD;MACA,IAAIb,OAAO,IAAI;QAAE,YAAY,EAAEA;MAAQ,CAAC;IAC1C,CAAC,CAAC;IAEF,IAAI;MACF,MAAMc,QAAQ,GAAG,MAAMhB,IAAI,CAACD,OAAO,CAAC;MAEpCM,IAAI,CAACY,GAAG,CAAC,CAAC;MAEV,OAAOD,QAAQ;IACjB,CAAC,CAAC,OAAOE,KAAK,EAAE;MACdb,IAAI,CAACc,SAAS,CAAC;QACbC,IAAI,EAAE3B,cAAc,CAAC4B,KAAK;QAC1BC,OAAO,EAAE;MACX,CAAC,CAAC;MAEFjB,IAAI,CAACY,GAAG,CAAC,CAAC;;MAEV;MACA,MAAMC,KAAK;IACb;EACF,CAAC;AACH"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-handler-metrics.js","names":["PromClient","LABEL_NAMES","httpResponse","pageRender","getHandlerMetrics","requestCount","Counter","name","help","labelNames","responseDuration","Histogram","buckets","renderDuration"],"sources":["../../../../../src/preset/node/utils/get-handler-metrics.ts"],"sourcesContent":["import PromClient from 'prom-client';\n\nexport const LABEL_NAMES = {\n httpResponse: ['version', 'route', 'code', 'method'],\n pageRender: ['version', 'route', 'method'],\n} as const;\n\n/**\n * Возвращает метрики обработки входящего http-запроса.\n * @return Метрики.\n */\nexport function getHandlerMetrics() {\n const requestCount = new PromClient.Counter({\n name: 'http_request_count',\n help: 'Incoming HTTP request count',\n labelNames: LABEL_NAMES.httpResponse,\n });\n\n const responseDuration = new PromClient.Histogram({\n name: 'http_response_duration_ms',\n help: 'Duration of incoming HTTP requests in ms',\n labelNames: LABEL_NAMES.httpResponse,\n buckets: [30, 100, 200, 500, 1000, 2500, 5000, 10000],\n });\n\n const renderDuration = new PromClient.Histogram({\n name: 'render_duration_ms',\n help: 'Duration of SSR ms',\n labelNames: LABEL_NAMES.pageRender,\n buckets: [0.1, 15, 50, 100, 250, 500, 800, 1500],\n });\n\n return {\n requestCount,\n renderDuration,\n responseDuration,\n };\n}\n"],"mappings":"AAAA,OAAOA,UAAU,MAAM,aAAa;AAEpC,OAAO,MAAMC,WAAW,GAAG;EACzBC,YAAY,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC;EACpDC,UAAU,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ;AAC3C,CAAU;;AAEV;AACA;AACA;AACA;AACA,OAAO,SAASC,iBAAiBA,CAAA,EAAG;EAClC,MAAMC,YAAY,GAAG,IAAIL,UAAU,CAACM,OAAO,CAAC;IAC1CC,IAAI,EAAE,oBAAoB;IAC1BC,IAAI,EAAE,6BAA6B;IACnCC,UAAU,EAAER,WAAW,CAACC;EAC1B,CAAC,CAAC;EAEF,MAAMQ,gBAAgB,GAAG,IAAIV,UAAU,CAACW,SAAS,CAAC;IAChDJ,IAAI,EAAE,2BAA2B;IACjCC,IAAI,EAAE,0CAA0C;IAChDC,UAAU,EAAER,WAAW,CAACC,YAAY;IACpCU,OAAO,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK;EACtD,CAAC,CAAC;EAEF,MAAMC,cAAc,GAAG,IAAIb,UAAU,CAACW,SAAS,CAAC;IAC9CJ,IAAI,EAAE,oBAAoB;IAC1BC,IAAI,EAAE,oBAAoB;IAC1BC,UAAU,EAAER,WAAW,CAACE,UAAU;IAClCS,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI;EACjD,CAAC,CAAC;EAEF,OAAO;IACLP,YAAY;IACZQ,cAAc;IACdH;EACF,CAAC;AACH"}
@@ -3,6 +3,7 @@
3
3
  * @param req Запрос.
4
4
  * @return Формат.
5
5
  * @todo Перенести в preset/node (или в preset/server но с именем getPageResponseFormatExpress?).
6
+ * @deprecated Стоит использовать npm:accepts.
6
7
  */
7
8
  export function getPageResponseFormat(req) {
8
9
  let result = 'html';
@@ -1 +1 @@
1
- {"version":3,"file":"get-page-response-format.js","names":["getPageResponseFormat","req","result","header","toLowerCase","includes"],"sources":["../../../../../src/preset/node/utils/get-page-response-format.tsx"],"sourcesContent":["import type express from 'express';\n\n/**\n * Определит формат ответа.\n * @param req Запрос.\n * @return Формат.\n * @todo Перенести в preset/node (или в preset/server но с именем getPageResponseFormatExpress?).\n */\nexport function getPageResponseFormat(req: express.Request): 'html' | 'json' {\n let result: 'html' | 'json' = 'html';\n\n if ((req.header('accept') || '').toLowerCase().includes('application/json')) {\n result = 'json';\n }\n\n return result;\n}\n"],"mappings":"AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASA,qBAAqBA,CAACC,GAAoB,EAAmB;EAC3E,IAAIC,MAAuB,GAAG,MAAM;EAEpC,IAAI,CAACD,GAAG,CAACE,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAEC,WAAW,CAAC,CAAC,CAACC,QAAQ,CAAC,kBAAkB,CAAC,EAAE;IAC3EH,MAAM,GAAG,MAAM;EACjB;EAEA,OAAOA,MAAM;AACf"}
1
+ {"version":3,"file":"get-page-response-format.js","names":["getPageResponseFormat","req","result","header","toLowerCase","includes"],"sources":["../../../../../src/preset/node/utils/get-page-response-format.tsx"],"sourcesContent":["import type express from 'express';\n\n/**\n * Определит формат ответа.\n * @param req Запрос.\n * @return Формат.\n * @todo Перенести в preset/node (или в preset/server но с именем getPageResponseFormatExpress?).\n * @deprecated Стоит использовать npm:accepts.\n */\nexport function getPageResponseFormat(req: express.Request): 'html' | 'json' {\n let result: 'html' | 'json' = 'html';\n\n if ((req.header('accept') || '').toLowerCase().includes('application/json')) {\n result = 'json';\n }\n\n return result;\n}\n"],"mappings":"AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASA,qBAAqBA,CAACC,GAAoB,EAAmB;EAC3E,IAAIC,MAAuB,GAAG,MAAM;EAEpC,IAAI,CAACD,GAAG,CAACE,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAEC,WAAW,CAAC,CAAC,CAACC,QAAQ,CAAC,kBAAkB,CAAC,EAAE;IAC3EH,MAAM,GAAG,MAAM;EACjB;EAEA,OAAOA,MAAM;AACf"}
@@ -1,4 +1,4 @@
1
- import { PAGE_HANDLER_EVENT_TYPE } from "../constants.js";
1
+ import { PAGE_HANDLER_EVENT_TYPE } from "../../server/constants.js";
2
2
  import { toMilliseconds } from "./../../../utils/index.js";
3
3
  import { getHandlerMetrics } from "./get-handler-metrics.js";
4
4
 
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-serve-measuring.js","names":["PAGE_HANDLER_EVENT_TYPE","toMilliseconds","getHandlerMetrics","getServeMeasuring","config","requestCount","renderDuration","responseDuration","getResponseLabels","req","res","version","appVersion","route","url","code","status","method","getRenderLabels","request","next","context","responseStart","process","hrtime","bigint","renderStart","events","addEventListener","once","renderFinish","observe","response","responseFinish","inc"],"sources":["../../../../../src/preset/node/utils/get-serve-measuring.ts"],"sourcesContent":["import type { BaseConfig } from '../../../config';\nimport type { ServerMiddleware } from '../../server/types';\nimport { PAGE_HANDLER_EVENT_TYPE } from '../../server/constants';\nimport { toMilliseconds } from '../../../utils';\nimport { LABEL_NAMES, getHandlerMetrics } from './get-handler-metrics';\n\n/**\n * Возвращает новый промежуточный слой метрки входящего http-запроса.\n * @param config Конфигурация.\n * @return Промежуточный слой.\n */\nexport function getServeMeasuring(config: BaseConfig): ServerMiddleware {\n const { requestCount, renderDuration, responseDuration } = getHandlerMetrics();\n\n /** @inheritdoc */\n const getResponseLabels = (req: Request, res: Response) =>\n ({\n version: config.appVersion,\n route: req.url,\n code: res.status,\n method: req.method,\n }) satisfies Record<(typeof LABEL_NAMES.httpResponse)[number], string | number>;\n\n /** @inheritdoc */\n const getRenderLabels = (request: Request) =>\n ({\n version: config.appVersion,\n method: request.method,\n route: request.url,\n }) satisfies Record<(typeof LABEL_NAMES.pageRender)[number], string | number>;\n\n return async (request, next, context) => {\n const responseStart = process.hrtime.bigint();\n let renderStart = 0n;\n\n context.events.addEventListener(\n PAGE_HANDLER_EVENT_TYPE.renderStart,\n () => {\n renderStart = process.hrtime.bigint();\n },\n { once: true },\n );\n\n context.events.addEventListener(\n PAGE_HANDLER_EVENT_TYPE.renderFinish,\n () => {\n const renderFinish = process.hrtime.bigint();\n\n renderDuration.observe(\n getRenderLabels(request),\n toMilliseconds(renderFinish - renderStart),\n );\n },\n { once: true },\n );\n\n const response = await next(request);\n const responseFinish = process.hrtime.bigint();\n\n responseDuration.observe(\n getResponseLabels(request, response),\n toMilliseconds(responseFinish - responseStart),\n );\n\n requestCount.inc(getResponseLabels(request, response), 1);\n\n return response;\n };\n}\n"],"mappings":"AAEA,SAASA,uBAAuB,QAAQ,2BAAwB;AAChE,SAASC,cAAc,QAAQ,2BAAgB;AAC/C,SAAsBC,iBAAiB,QAAQ,0BAAuB;;AAEtE;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,iBAAiBA,CAACC,MAAkB,EAAoB;EACtE,MAAM;IAAEC,YAAY;IAAEC,cAAc;IAAEC;EAAiB,CAAC,GAAGL,iBAAiB,CAAC,CAAC;;EAE9E;EACA,MAAMM,iBAAiB,GAAGA,CAACC,GAAY,EAAEC,GAAa,MACnD;IACCC,OAAO,EAAEP,MAAM,CAACQ,UAAU;IAC1BC,KAAK,EAAEJ,GAAG,CAACK,GAAG;IACdC,IAAI,EAAEL,GAAG,CAACM,MAAM;IAChBC,MAAM,EAAER,GAAG,CAACQ;EACd,CAAC,CAA8E;;EAEjF;EACA,MAAMC,eAAe,GAAIC,OAAgB,KACtC;IACCR,OAAO,EAAEP,MAAM,CAACQ,UAAU;IAC1BK,MAAM,EAAEE,OAAO,CAACF,MAAM;IACtBJ,KAAK,EAAEM,OAAO,CAACL;EACjB,CAAC,CAA4E;EAE/E,OAAO,OAAOK,OAAO,EAAEC,IAAI,EAAEC,OAAO,KAAK;IACvC,MAAMC,aAAa,GAAGC,OAAO,CAACC,MAAM,CAACC,MAAM,CAAC,CAAC;IAC7C,IAAIC,WAAW,GAAG,EAAE;IAEpBL,OAAO,CAACM,MAAM,CAACC,gBAAgB,CAC7B5B,uBAAuB,CAAC0B,WAAW,EACnC,MAAM;MACJA,WAAW,GAAGH,OAAO,CAACC,MAAM,CAACC,MAAM,CAAC,CAAC;IACvC,CAAC,EACD;MAAEI,IAAI,EAAE;IAAK,CACf,CAAC;IAEDR,OAAO,CAACM,MAAM,CAACC,gBAAgB,CAC7B5B,uBAAuB,CAAC8B,YAAY,EACpC,MAAM;MACJ,MAAMA,YAAY,GAAGP,OAAO,CAACC,MAAM,CAACC,MAAM,CAAC,CAAC;MAE5CnB,cAAc,CAACyB,OAAO,CACpBb,eAAe,CAACC,OAAO,CAAC,EACxBlB,cAAc,CAAC6B,YAAY,GAAGJ,WAAW,CAC3C,CAAC;IACH,CAAC,EACD;MAAEG,IAAI,EAAE;IAAK,CACf,CAAC;IAED,MAAMG,QAAQ,GAAG,MAAMZ,IAAI,CAACD,OAAO,CAAC;IACpC,MAAMc,cAAc,GAAGV,OAAO,CAACC,MAAM,CAACC,MAAM,CAAC,CAAC;IAE9ClB,gBAAgB,CAACwB,OAAO,CACtBvB,iBAAiB,CAACW,OAAO,EAAEa,QAAQ,CAAC,EACpC/B,cAAc,CAACgC,cAAc,GAAGX,aAAa,CAC/C,CAAC;IAEDjB,YAAY,CAAC6B,GAAG,CAAC1B,iBAAiB,CAACW,OAAO,EAAEa,QAAQ,CAAC,EAAE,CAAC,CAAC;IAEzD,OAAOA,QAAQ;EACjB,CAAC;AACH"}
@@ -13,10 +13,10 @@ import { providePageHelmet } from "../server/providers/page-helmet.js";
13
13
  import { providePageRender } from "../server/providers/page-render.js";
14
14
  import { provideFetchMiddleware } from "./providers/fetch-middleware.js";
15
15
  import { provideFetchLogHandler } from "../server/providers/fetch-log-handler.js";
16
- import { provideCookieStore } from "./providers/cookie-store.js";
17
16
  import { SpecificExtras } from "../server/utils/specific-extras.js";
18
17
  import { provideAcceptType } from "./providers/accepts-type.js";
19
18
  import { provideResponseEvents } from "./providers/response-events.js";
19
+ import { provideAxiosFactory } from "../isomorphic/providers/axios-factory.js";
20
20
 
21
21
  /**
22
22
  * Возвращает preset с зависимостями по умолчанию для работы в рамках ответа на http-запрос.
@@ -31,7 +31,6 @@ export function PresetHandler(customize) {
31
31
  // fetch
32
32
  preset.set(KnownToken.Http.fetch, provideFetch);
33
33
  preset.set(KnownToken.Http.Fetch.middleware, provideFetchMiddleware);
34
- preset.set(KnownToken.Http.Fetch.cookieStore, provideCookieStore);
35
34
  preset.set(KnownToken.Http.Fetch.abortController, provideAbortController);
36
35
  preset.set(KnownToken.Http.Fetch.Middleware.Log.handler, provideFetchLogHandler);
37
36
 
@@ -39,6 +38,7 @@ export function PresetHandler(customize) {
39
38
  preset.set(KnownToken.Redux.Middleware.saga, provideReduxMiddlewareSaga);
40
39
 
41
40
  // axios
41
+ preset.set(KnownToken.Axios.factory, provideAxiosFactory);
42
42
  preset.set(KnownToken.Axios.middleware, provideAxiosMiddleware);
43
43
  preset.set(KnownToken.Axios.Middleware.Log.handler, provideAxiosLogHandler);
44
44
 
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["createPreset","KnownToken","provideReduxMiddlewareSaga","provideFetch","provideAbortController","provideFormatPageResponse","provideElementToString","provideAxiosMiddleware","provideAxiosLogHandler","provideHandlerMain","provideSpecificParams","providePageHelmet","providePageRender","provideFetchMiddleware","provideFetchLogHandler","provideCookieStore","SpecificExtras","provideAcceptType","provideResponseEvents","PresetHandler","customize","preset","set","Http","fetch","Fetch","middleware","cookieStore","abortController","Middleware","Log","handler","Redux","saga","Axios","ExpressHandler","main","Handler","Request","acceptType","specificParams","Response","specificExtras","events","Page","assets","js","css","helmet","render","elementToString","formatResponse","override","bind"],"sources":["../../../../src/preset/node-handler/index.ts"],"sourcesContent":["import { Preset, createPreset } from '../../di';\nimport { KnownToken } from '../../tokens';\nimport { provideReduxMiddlewareSaga } from '../isomorphic/providers/redux-middleware-saga';\nimport { provideFetch } from '../isomorphic/providers/fetch';\nimport { provideAbortController } from '../isomorphic/providers/abort-controller';\nimport { PresetTuner } from '../isomorphic/types';\nimport { provideFormatPageResponse } from '../server/providers/format-page-response';\nimport { provideElementToString } from '../server/providers/element-to-string';\nimport { provideAxiosMiddleware } from './providers/axios-middleware';\nimport { provideAxiosLogHandler } from './providers/axios-log-handler';\nimport { provideHandlerMain } from './providers/handler-main';\nimport { provideSpecificParams } from './providers/specific-params';\nimport { providePageHelmet } from '../server/providers/page-helmet';\nimport { providePageRender } from '../server/providers/page-render';\nimport { provideFetchMiddleware } from './providers/fetch-middleware';\nimport { provideFetchLogHandler } from '../server/providers/fetch-log-handler';\nimport { provideCookieStore } from './providers/cookie-store';\nimport { SpecificExtras } from '../server/utils/specific-extras';\nimport { provideAcceptType } from './providers/accepts-type';\nimport { provideResponseEvents } from './providers/response-events';\n\n/**\n * Возвращает preset с зависимостями по умолчанию для работы в рамках ответа на http-запрос.\n * @param customize Получит функцию с помощью которой можно переопределить предустановленные провайдеры.\n * @todo Возможно стоит переименовать в PresetPageHandler.\n * @return Preset.\n */\nexport function PresetHandler(customize?: PresetTuner): Preset {\n // ВАЖНО: используем .set() вместо аргумента defaults функции createPreset из-за скорости\n const preset = createPreset();\n\n // fetch\n preset.set(KnownToken.Http.fetch, provideFetch);\n preset.set(KnownToken.Http.Fetch.middleware, provideFetchMiddleware);\n preset.set(KnownToken.Http.Fetch.cookieStore, provideCookieStore);\n preset.set(KnownToken.Http.Fetch.abortController, provideAbortController);\n preset.set(KnownToken.Http.Fetch.Middleware.Log.handler, provideFetchLogHandler);\n\n // saga\n preset.set(KnownToken.Redux.Middleware.saga, provideReduxMiddlewareSaga);\n\n // axios\n preset.set(KnownToken.Axios.middleware, provideAxiosMiddleware);\n preset.set(KnownToken.Axios.Middleware.Log.handler, provideAxiosLogHandler);\n\n // express handler\n preset.set(KnownToken.ExpressHandler.main, provideHandlerMain);\n\n // http handler\n preset.set(KnownToken.Http.Handler.Request.acceptType, provideAcceptType);\n preset.set(KnownToken.Http.Handler.Request.specificParams, provideSpecificParams);\n preset.set(KnownToken.Http.Handler.Response.specificExtras, () => new SpecificExtras());\n preset.set(KnownToken.Http.Handler.Response.events, provideResponseEvents);\n preset.set(KnownToken.Http.Handler.Page.assets, () => ({ js: '', css: '' }));\n preset.set(KnownToken.Http.Handler.Page.helmet, providePageHelmet);\n preset.set(KnownToken.Http.Handler.Page.render, providePageRender);\n preset.set(KnownToken.Http.Handler.Page.elementToString, provideElementToString);\n preset.set(KnownToken.Http.Handler.Page.formatResponse, provideFormatPageResponse);\n\n if (customize) {\n customize({ override: preset.set.bind(preset) });\n }\n\n return preset;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["createPreset","KnownToken","provideReduxMiddlewareSaga","provideFetch","provideAbortController","provideFormatPageResponse","provideElementToString","provideAxiosMiddleware","provideAxiosLogHandler","provideHandlerMain","provideSpecificParams","providePageHelmet","providePageRender","provideFetchMiddleware","provideFetchLogHandler","SpecificExtras","provideAcceptType","provideResponseEvents","provideAxiosFactory","PresetHandler","customize","preset","set","Http","fetch","Fetch","middleware","abortController","Middleware","Log","handler","Redux","saga","Axios","factory","ExpressHandler","main","Handler","Request","acceptType","specificParams","Response","specificExtras","events","Page","assets","js","css","helmet","render","elementToString","formatResponse","override","bind"],"sources":["../../../../src/preset/node-handler/index.ts"],"sourcesContent":["import { Preset, createPreset } from '../../di';\nimport { KnownToken } from '../../tokens';\nimport { provideReduxMiddlewareSaga } from '../isomorphic/providers/redux-middleware-saga';\nimport { provideFetch } from '../isomorphic/providers/fetch';\nimport { provideAbortController } from '../isomorphic/providers/abort-controller';\nimport { PresetTuner } from '../isomorphic/types';\nimport { provideFormatPageResponse } from '../server/providers/format-page-response';\nimport { provideElementToString } from '../server/providers/element-to-string';\nimport { provideAxiosMiddleware } from './providers/axios-middleware';\nimport { provideAxiosLogHandler } from './providers/axios-log-handler';\nimport { provideHandlerMain } from './providers/handler-main';\nimport { provideSpecificParams } from './providers/specific-params';\nimport { providePageHelmet } from '../server/providers/page-helmet';\nimport { providePageRender } from '../server/providers/page-render';\nimport { provideFetchMiddleware } from './providers/fetch-middleware';\nimport { provideFetchLogHandler } from '../server/providers/fetch-log-handler';\nimport { SpecificExtras } from '../server/utils/specific-extras';\nimport { provideAcceptType } from './providers/accepts-type';\nimport { provideResponseEvents } from './providers/response-events';\nimport { provideAxiosFactory } from '../isomorphic/providers/axios-factory';\n\n/**\n * Возвращает preset с зависимостями по умолчанию для работы в рамках ответа на http-запрос.\n * @param customize Получит функцию с помощью которой можно переопределить предустановленные провайдеры.\n * @todo Возможно стоит переименовать в PresetPageHandler.\n * @return Preset.\n */\nexport function PresetHandler(customize?: PresetTuner): Preset {\n // ВАЖНО: используем .set() вместо аргумента defaults функции createPreset из-за скорости\n const preset = createPreset();\n\n // fetch\n preset.set(KnownToken.Http.fetch, provideFetch);\n preset.set(KnownToken.Http.Fetch.middleware, provideFetchMiddleware);\n preset.set(KnownToken.Http.Fetch.abortController, provideAbortController);\n preset.set(KnownToken.Http.Fetch.Middleware.Log.handler, provideFetchLogHandler);\n\n // saga\n preset.set(KnownToken.Redux.Middleware.saga, provideReduxMiddlewareSaga);\n\n // axios\n preset.set(KnownToken.Axios.factory, provideAxiosFactory);\n preset.set(KnownToken.Axios.middleware, provideAxiosMiddleware);\n preset.set(KnownToken.Axios.Middleware.Log.handler, provideAxiosLogHandler);\n\n // express handler\n preset.set(KnownToken.ExpressHandler.main, provideHandlerMain);\n\n // http handler\n preset.set(KnownToken.Http.Handler.Request.acceptType, provideAcceptType);\n preset.set(KnownToken.Http.Handler.Request.specificParams, provideSpecificParams);\n preset.set(KnownToken.Http.Handler.Response.specificExtras, () => new SpecificExtras());\n preset.set(KnownToken.Http.Handler.Response.events, provideResponseEvents);\n preset.set(KnownToken.Http.Handler.Page.assets, () => ({ js: '', css: '' }));\n preset.set(KnownToken.Http.Handler.Page.helmet, providePageHelmet);\n preset.set(KnownToken.Http.Handler.Page.render, providePageRender);\n preset.set(KnownToken.Http.Handler.Page.elementToString, provideElementToString);\n preset.set(KnownToken.Http.Handler.Page.formatResponse, provideFormatPageResponse);\n\n if (customize) {\n customize({ override: preset.set.bind(preset) });\n }\n\n return preset;\n}\n"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { KnownToken } from "../../../tokens.js";
2
2
  import { HttpStatus } from "../../isomorphic/utils/http-status.js";
3
3
  import { axiosTracingMiddleware } from "../../node/utils/axios-tracing-middleware.js";
4
- import { cookieMiddleware, logMiddleware } from "./../../../utils/axios/index.js";
4
+ import { logMiddleware } from "./../../../utils/axios/index.js";
5
5
  import { getForwardedHeaders } from "../../node/utils/get-forwarded-headers.js";
6
6
 
7
7
  /**
@@ -14,7 +14,6 @@ export function provideAxiosMiddleware(resolve) {
14
14
  const tracer = resolve(KnownToken.Tracing.tracer);
15
15
  const context = resolve(KnownToken.ExpressHandler.context);
16
16
  const logHandler = resolve(KnownToken.Axios.Middleware.Log.handler);
17
- const cookieStore = resolve(KnownToken.Http.Fetch.cookieStore);
18
17
  const abortController = resolve(KnownToken.Http.Fetch.abortController);
19
18
  return [
20
19
  // пробрасываемые заголовки по соглашению
@@ -45,6 +44,6 @@ export function provideAxiosMiddleware(resolve) {
45
44
  ...config,
46
45
  signal: innerController.signal
47
46
  });
48
- }, HttpStatus.axiosMiddleware(), axiosTracingMiddleware(tracer, context.res.locals.tracing.rootContext), logMiddleware(logHandler), cookieMiddleware(cookieStore)];
47
+ }, HttpStatus.axiosMiddleware(), axiosTracingMiddleware(tracer, context.res.locals.tracing.rootContext), logMiddleware(logHandler)];
49
48
  }
50
49
  //# sourceMappingURL=axios-middleware.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"axios-middleware.js","names":["KnownToken","HttpStatus","axiosTracingMiddleware","cookieMiddleware","logMiddleware","getForwardedHeaders","provideAxiosMiddleware","resolve","appConfig","Config","base","tracer","Tracing","context","ExpressHandler","logHandler","Axios","Middleware","Log","handler","cookieStore","Http","Fetch","abortController","config","next","headers","req","innerController","AbortController","signal","addEventListener","abort","once","axiosMiddleware","res","locals","tracing","rootContext"],"sources":["../../../../../src/preset/node-handler/providers/axios-middleware.ts"],"sourcesContent":["import { Middleware } from 'middleware-axios';\nimport { Resolve } from '../../../di';\nimport { KnownToken } from '../../../tokens';\nimport { HttpStatus } from '../../isomorphic/utils/http-status';\nimport { axiosTracingMiddleware } from '../../node/utils/axios-tracing-middleware';\nimport { cookieMiddleware, logMiddleware } from '../../../utils/axios';\nimport { getForwardedHeaders } from '../../node/utils/get-forwarded-headers';\n\n/**\n * Провайдер фабрики http-клиентов.\n * @param resolve Функция для получения зависимости по токену.\n * @return Фабрика.\n */\nexport function provideAxiosMiddleware(resolve: Resolve): Middleware<any>[] {\n const appConfig = resolve(KnownToken.Config.base);\n const tracer = resolve(KnownToken.Tracing.tracer);\n const context = resolve(KnownToken.ExpressHandler.context);\n const logHandler = resolve(KnownToken.Axios.Middleware.Log.handler);\n const cookieStore = resolve(KnownToken.Http.Fetch.cookieStore);\n const abortController = resolve(KnownToken.Http.Fetch.abortController);\n\n return [\n // пробрасываемые заголовки по соглашению\n async (config, next) => {\n await next({\n ...config,\n headers: {\n ...getForwardedHeaders(appConfig, context.req),\n\n // ВАЖНО: заголовки из конфига важнее, поэтому идут в конце\n ...config.headers,\n },\n });\n },\n\n // обрывание по сигналу из обработчика входящего запроса и по сигналу из конфига исходящего запроса\n async (config, next) => {\n const innerController = new AbortController();\n\n abortController.signal.addEventListener(\n 'abort',\n () => {\n innerController.abort();\n },\n { once: true },\n );\n\n config.signal?.addEventListener?.(\n 'abort',\n () => {\n innerController.abort();\n },\n { once: true },\n );\n\n await next({ ...config, signal: innerController.signal });\n },\n\n HttpStatus.axiosMiddleware(),\n axiosTracingMiddleware(tracer, context.res.locals.tracing.rootContext),\n logMiddleware(logHandler),\n cookieMiddleware(cookieStore),\n ];\n}\n"],"mappings":"AAEA,SAASA,UAAU,QAAQ,oBAAiB;AAC5C,SAASC,UAAU,QAAQ,uCAAoC;AAC/D,SAASC,sBAAsB,QAAQ,8CAA2C;AAClF,SAASC,gBAAgB,EAAEC,aAAa,QAAQ,iCAAsB;AACtE,SAASC,mBAAmB,QAAQ,2CAAwC;;AAE5E;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,sBAAsBA,CAACC,OAAgB,EAAqB;EAC1E,MAAMC,SAAS,GAAGD,OAAO,CAACP,UAAU,CAACS,MAAM,CAACC,IAAI,CAAC;EACjD,MAAMC,MAAM,GAAGJ,OAAO,CAACP,UAAU,CAACY,OAAO,CAACD,MAAM,CAAC;EACjD,MAAME,OAAO,GAAGN,OAAO,CAACP,UAAU,CAACc,cAAc,CAACD,OAAO,CAAC;EAC1D,MAAME,UAAU,GAAGR,OAAO,CAACP,UAAU,CAACgB,KAAK,CAACC,UAAU,CAACC,GAAG,CAACC,OAAO,CAAC;EACnE,MAAMC,WAAW,GAAGb,OAAO,CAACP,UAAU,CAACqB,IAAI,CAACC,KAAK,CAACF,WAAW,CAAC;EAC9D,MAAMG,eAAe,GAAGhB,OAAO,CAACP,UAAU,CAACqB,IAAI,CAACC,KAAK,CAACC,eAAe,CAAC;EAEtE,OAAO;EACL;EACA,OAAOC,MAAM,EAAEC,IAAI,KAAK;IACtB,MAAMA,IAAI,CAAC;MACT,GAAGD,MAAM;MACTE,OAAO,EAAE;QACP,GAAGrB,mBAAmB,CAACG,SAAS,EAAEK,OAAO,CAACc,GAAG,CAAC;QAE9C;QACA,GAAGH,MAAM,CAACE;MACZ;IACF,CAAC,CAAC;EACJ,CAAC;EAED;EACA,OAAOF,MAAM,EAAEC,IAAI,KAAK;IACtB,MAAMG,eAAe,GAAG,IAAIC,eAAe,CAAC,CAAC;IAE7CN,eAAe,CAACO,MAAM,CAACC,gBAAgB,CACrC,OAAO,EACP,MAAM;MACJH,eAAe,CAACI,KAAK,CAAC,CAAC;IACzB,CAAC,EACD;MAAEC,IAAI,EAAE;IAAK,CACf,CAAC;IAEDT,MAAM,CAACM,MAAM,EAAEC,gBAAgB,GAC7B,OAAO,EACP,MAAM;MACJH,eAAe,CAACI,KAAK,CAAC,CAAC;IACzB,CAAC,EACD;MAAEC,IAAI,EAAE;IAAK,CACf,CAAC;IAED,MAAMR,IAAI,CAAC;MAAE,GAAGD,MAAM;MAAEM,MAAM,EAAEF,eAAe,CAACE;IAAO,CAAC,CAAC;EAC3D,CAAC,EAED7B,UAAU,CAACiC,eAAe,CAAC,CAAC,EAC5BhC,sBAAsB,CAACS,MAAM,EAAEE,OAAO,CAACsB,GAAG,CAACC,MAAM,CAACC,OAAO,CAACC,WAAW,CAAC,EACtElC,aAAa,CAACW,UAAU,CAAC,EACzBZ,gBAAgB,CAACiB,WAAW,CAAC,CAC9B;AACH"}
1
+ {"version":3,"file":"axios-middleware.js","names":["KnownToken","HttpStatus","axiosTracingMiddleware","logMiddleware","getForwardedHeaders","provideAxiosMiddleware","resolve","appConfig","Config","base","tracer","Tracing","context","ExpressHandler","logHandler","Axios","Middleware","Log","handler","abortController","Http","Fetch","config","next","headers","req","innerController","AbortController","signal","addEventListener","abort","once","axiosMiddleware","res","locals","tracing","rootContext"],"sources":["../../../../../src/preset/node-handler/providers/axios-middleware.ts"],"sourcesContent":["import { Middleware } from 'middleware-axios';\nimport { Resolve } from '../../../di';\nimport { KnownToken } from '../../../tokens';\nimport { HttpStatus } from '../../isomorphic/utils/http-status';\nimport { axiosTracingMiddleware } from '../../node/utils/axios-tracing-middleware';\nimport { logMiddleware } from '../../../utils/axios';\nimport { getForwardedHeaders } from '../../node/utils/get-forwarded-headers';\n\n/**\n * Провайдер фабрики http-клиентов.\n * @param resolve Функция для получения зависимости по токену.\n * @return Фабрика.\n */\nexport function provideAxiosMiddleware(resolve: Resolve): Middleware<any>[] {\n const appConfig = resolve(KnownToken.Config.base);\n const tracer = resolve(KnownToken.Tracing.tracer);\n const context = resolve(KnownToken.ExpressHandler.context);\n const logHandler = resolve(KnownToken.Axios.Middleware.Log.handler);\n const abortController = resolve(KnownToken.Http.Fetch.abortController);\n\n return [\n // пробрасываемые заголовки по соглашению\n async (config, next) => {\n await next({\n ...config,\n headers: {\n ...getForwardedHeaders(appConfig, context.req),\n\n // ВАЖНО: заголовки из конфига важнее, поэтому идут в конце\n ...config.headers,\n },\n });\n },\n\n // обрывание по сигналу из обработчика входящего запроса и по сигналу из конфига исходящего запроса\n async (config, next) => {\n const innerController = new AbortController();\n\n abortController.signal.addEventListener(\n 'abort',\n () => {\n innerController.abort();\n },\n { once: true },\n );\n\n config.signal?.addEventListener?.(\n 'abort',\n () => {\n innerController.abort();\n },\n { once: true },\n );\n\n await next({ ...config, signal: innerController.signal });\n },\n\n HttpStatus.axiosMiddleware(),\n axiosTracingMiddleware(tracer, context.res.locals.tracing.rootContext),\n logMiddleware(logHandler),\n ];\n}\n"],"mappings":"AAEA,SAASA,UAAU,QAAQ,oBAAiB;AAC5C,SAASC,UAAU,QAAQ,uCAAoC;AAC/D,SAASC,sBAAsB,QAAQ,8CAA2C;AAClF,SAASC,aAAa,QAAQ,iCAAsB;AACpD,SAASC,mBAAmB,QAAQ,2CAAwC;;AAE5E;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,sBAAsBA,CAACC,OAAgB,EAAqB;EAC1E,MAAMC,SAAS,GAAGD,OAAO,CAACN,UAAU,CAACQ,MAAM,CAACC,IAAI,CAAC;EACjD,MAAMC,MAAM,GAAGJ,OAAO,CAACN,UAAU,CAACW,OAAO,CAACD,MAAM,CAAC;EACjD,MAAME,OAAO,GAAGN,OAAO,CAACN,UAAU,CAACa,cAAc,CAACD,OAAO,CAAC;EAC1D,MAAME,UAAU,GAAGR,OAAO,CAACN,UAAU,CAACe,KAAK,CAACC,UAAU,CAACC,GAAG,CAACC,OAAO,CAAC;EACnE,MAAMC,eAAe,GAAGb,OAAO,CAACN,UAAU,CAACoB,IAAI,CAACC,KAAK,CAACF,eAAe,CAAC;EAEtE,OAAO;EACL;EACA,OAAOG,MAAM,EAAEC,IAAI,KAAK;IACtB,MAAMA,IAAI,CAAC;MACT,GAAGD,MAAM;MACTE,OAAO,EAAE;QACP,GAAGpB,mBAAmB,CAACG,SAAS,EAAEK,OAAO,CAACa,GAAG,CAAC;QAE9C;QACA,GAAGH,MAAM,CAACE;MACZ;IACF,CAAC,CAAC;EACJ,CAAC;EAED;EACA,OAAOF,MAAM,EAAEC,IAAI,KAAK;IACtB,MAAMG,eAAe,GAAG,IAAIC,eAAe,CAAC,CAAC;IAE7CR,eAAe,CAACS,MAAM,CAACC,gBAAgB,CACrC,OAAO,EACP,MAAM;MACJH,eAAe,CAACI,KAAK,CAAC,CAAC;IACzB,CAAC,EACD;MAAEC,IAAI,EAAE;IAAK,CACf,CAAC;IAEDT,MAAM,CAACM,MAAM,EAAEC,gBAAgB,GAC7B,OAAO,EACP,MAAM;MACJH,eAAe,CAACI,KAAK,CAAC,CAAC;IACzB,CAAC,EACD;MAAEC,IAAI,EAAE;IAAK,CACf,CAAC;IAED,MAAMR,IAAI,CAAC;MAAE,GAAGD,MAAM;MAAEM,MAAM,EAAEF,eAAe,CAACE;IAAO,CAAC,CAAC;EAC3D,CAAC,EAED3B,UAAU,CAAC+B,eAAe,CAAC,CAAC,EAC5B9B,sBAAsB,CAACQ,MAAM,EAAEE,OAAO,CAACqB,GAAG,CAACC,MAAM,CAACC,OAAO,CAACC,WAAW,CAAC,EACtEjC,aAAa,CAACW,UAAU,CAAC,CAC1B;AACH"}
@@ -1,9 +1,9 @@
1
- import { cookie, defaultHeaders } from "./../../../http/index.js";
1
+ import { defaultHeaders } from "./../../../http/index.js";
2
2
  import { KnownToken } from "../../../tokens.js";
3
3
  import { getFetchErrorLogging } from "../../isomorphic/utils/get-fetch-error-logging.js";
4
4
  import { getFetchExtraAborting } from "../../isomorphic/utils/get-fetch-extra-aborting.js";
5
5
  import { getFetchLogging } from "../../isomorphic/utils/get-fetch-logging.js";
6
- import { getFetchTracing } from "../../server/utils/get-fetch-tracing.js";
6
+ import { getFetchTracing } from "../../node/utils/get-fetch-tracing.js";
7
7
  import { getForwardedHeaders } from "../../node/utils/get-forwarded-headers.js";
8
8
 
9
9
  /**
@@ -16,7 +16,6 @@ export function provideFetchMiddleware(resolve) {
16
16
  const tracer = resolve(KnownToken.Tracing.tracer);
17
17
  const context = resolve(KnownToken.ExpressHandler.context);
18
18
  const logHandler = resolve(KnownToken.Http.Fetch.Middleware.Log.handler);
19
- const cookieStore = resolve(KnownToken.Http.Fetch.cookieStore);
20
19
  const abortController = resolve(KnownToken.Http.Fetch.abortController);
21
20
  return [
22
21
  // ВАЖНО: слой логирования ошибки ПЕРЕД остальными слоями чтобы не упустить ошибки выше
@@ -24,7 +23,7 @@ export function provideFetchMiddleware(resolve) {
24
23
  // пробрасываемые заголовки по соглашению
25
24
  defaultHeaders(getForwardedHeaders(config, context.req)),
26
25
  // обрывание по сигналу из обработчика входящего запроса и по сигналу из конфига исходящего запроса
27
- getFetchExtraAborting(abortController), cookie(cookieStore), getFetchTracing(tracer, context.res.locals.tracing.rootContext),
26
+ getFetchExtraAborting(abortController), getFetchTracing(tracer, context.res.locals.tracing.rootContext),
28
27
  // ВАЖНО: слой логирования запроса и ответа ПОСЛЕ остальных слоев чтобы использовать актуальные данные
29
28
  getFetchLogging(logHandler)];
30
29
  }
@@ -1 +1 @@
1
- {"version":3,"file":"fetch-middleware.js","names":["cookie","defaultHeaders","KnownToken","getFetchErrorLogging","getFetchExtraAborting","getFetchLogging","getFetchTracing","getForwardedHeaders","provideFetchMiddleware","resolve","config","Config","base","tracer","Tracing","context","ExpressHandler","logHandler","Http","Fetch","Middleware","Log","handler","cookieStore","abortController","req","res","locals","tracing","rootContext"],"sources":["../../../../../src/preset/node-handler/providers/fetch-middleware.ts"],"sourcesContent":["import { Resolve } from '../../../di';\nimport { Middleware, cookie, defaultHeaders } from '../../../http';\nimport { KnownToken } from '../../../tokens';\nimport { getFetchErrorLogging } from '../../isomorphic/utils/get-fetch-error-logging';\nimport { getFetchExtraAborting } from '../../isomorphic/utils/get-fetch-extra-aborting';\nimport { getFetchLogging } from '../../isomorphic/utils/get-fetch-logging';\nimport { getFetchTracing } from '../../server/utils/get-fetch-tracing';\nimport { getForwardedHeaders } from '../../node/utils/get-forwarded-headers';\n\n/**\n * Провайдер промежуточных слоев для fetch.\n * @param resolve Функция для получения зависимости по токену.\n * @return Массив промежуточных слоев.\n */\nexport function provideFetchMiddleware(resolve: Resolve): Middleware[] {\n const config = resolve(KnownToken.Config.base);\n const tracer = resolve(KnownToken.Tracing.tracer);\n const context = resolve(KnownToken.ExpressHandler.context);\n const logHandler = resolve(KnownToken.Http.Fetch.Middleware.Log.handler);\n const cookieStore = resolve(KnownToken.Http.Fetch.cookieStore);\n const abortController = resolve(KnownToken.Http.Fetch.abortController);\n\n return [\n // ВАЖНО: слой логирования ошибки ПЕРЕД остальными слоями чтобы не упустить ошибки выше\n getFetchErrorLogging(logHandler),\n\n // пробрасываемые заголовки по соглашению\n defaultHeaders(getForwardedHeaders(config, context.req)),\n\n // обрывание по сигналу из обработчика входящего запроса и по сигналу из конфига исходящего запроса\n getFetchExtraAborting(abortController),\n\n cookie(cookieStore),\n\n getFetchTracing(tracer, context.res.locals.tracing.rootContext),\n\n // ВАЖНО: слой логирования запроса и ответа ПОСЛЕ остальных слоев чтобы использовать актуальные данные\n getFetchLogging(logHandler),\n ];\n}\n"],"mappings":"AACA,SAAqBA,MAAM,EAAEC,cAAc,QAAQ,0BAAe;AAClE,SAASC,UAAU,QAAQ,oBAAiB;AAC5C,SAASC,oBAAoB,QAAQ,mDAAgD;AACrF,SAASC,qBAAqB,QAAQ,oDAAiD;AACvF,SAASC,eAAe,QAAQ,6CAA0C;AAC1E,SAASC,eAAe,QAAQ,yCAAsC;AACtE,SAASC,mBAAmB,QAAQ,2CAAwC;;AAE5E;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,sBAAsBA,CAACC,OAAgB,EAAgB;EACrE,MAAMC,MAAM,GAAGD,OAAO,CAACP,UAAU,CAACS,MAAM,CAACC,IAAI,CAAC;EAC9C,MAAMC,MAAM,GAAGJ,OAAO,CAACP,UAAU,CAACY,OAAO,CAACD,MAAM,CAAC;EACjD,MAAME,OAAO,GAAGN,OAAO,CAACP,UAAU,CAACc,cAAc,CAACD,OAAO,CAAC;EAC1D,MAAME,UAAU,GAAGR,OAAO,CAACP,UAAU,CAACgB,IAAI,CAACC,KAAK,CAACC,UAAU,CAACC,GAAG,CAACC,OAAO,CAAC;EACxE,MAAMC,WAAW,GAAGd,OAAO,CAACP,UAAU,CAACgB,IAAI,CAACC,KAAK,CAACI,WAAW,CAAC;EAC9D,MAAMC,eAAe,GAAGf,OAAO,CAACP,UAAU,CAACgB,IAAI,CAACC,KAAK,CAACK,eAAe,CAAC;EAEtE,OAAO;EACL;EACArB,oBAAoB,CAACc,UAAU,CAAC;EAEhC;EACAhB,cAAc,CAACM,mBAAmB,CAACG,MAAM,EAAEK,OAAO,CAACU,GAAG,CAAC,CAAC;EAExD;EACArB,qBAAqB,CAACoB,eAAe,CAAC,EAEtCxB,MAAM,CAACuB,WAAW,CAAC,EAEnBjB,eAAe,CAACO,MAAM,EAAEE,OAAO,CAACW,GAAG,CAACC,MAAM,CAACC,OAAO,CAACC,WAAW,CAAC;EAE/D;EACAxB,eAAe,CAACY,UAAU,CAAC,CAC5B;AACH"}
1
+ {"version":3,"file":"fetch-middleware.js","names":["defaultHeaders","KnownToken","getFetchErrorLogging","getFetchExtraAborting","getFetchLogging","getFetchTracing","getForwardedHeaders","provideFetchMiddleware","resolve","config","Config","base","tracer","Tracing","context","ExpressHandler","logHandler","Http","Fetch","Middleware","Log","handler","abortController","req","res","locals","tracing","rootContext"],"sources":["../../../../../src/preset/node-handler/providers/fetch-middleware.ts"],"sourcesContent":["import { Resolve } from '../../../di';\nimport { Middleware, defaultHeaders } from '../../../http';\nimport { KnownToken } from '../../../tokens';\nimport { getFetchErrorLogging } from '../../isomorphic/utils/get-fetch-error-logging';\nimport { getFetchExtraAborting } from '../../isomorphic/utils/get-fetch-extra-aborting';\nimport { getFetchLogging } from '../../isomorphic/utils/get-fetch-logging';\nimport { getFetchTracing } from '../../node/utils/get-fetch-tracing';\nimport { getForwardedHeaders } from '../../node/utils/get-forwarded-headers';\n\n/**\n * Провайдер промежуточных слоев для fetch.\n * @param resolve Функция для получения зависимости по токену.\n * @return Массив промежуточных слоев.\n */\nexport function provideFetchMiddleware(resolve: Resolve): Middleware[] {\n const config = resolve(KnownToken.Config.base);\n const tracer = resolve(KnownToken.Tracing.tracer);\n const context = resolve(KnownToken.ExpressHandler.context);\n const logHandler = resolve(KnownToken.Http.Fetch.Middleware.Log.handler);\n const abortController = resolve(KnownToken.Http.Fetch.abortController);\n\n return [\n // ВАЖНО: слой логирования ошибки ПЕРЕД остальными слоями чтобы не упустить ошибки выше\n getFetchErrorLogging(logHandler),\n\n // пробрасываемые заголовки по соглашению\n defaultHeaders(getForwardedHeaders(config, context.req)),\n\n // обрывание по сигналу из обработчика входящего запроса и по сигналу из конфига исходящего запроса\n getFetchExtraAborting(abortController),\n\n getFetchTracing(tracer, context.res.locals.tracing.rootContext),\n\n // ВАЖНО: слой логирования запроса и ответа ПОСЛЕ остальных слоев чтобы использовать актуальные данные\n getFetchLogging(logHandler),\n ];\n}\n"],"mappings":"AACA,SAAqBA,cAAc,QAAQ,0BAAe;AAC1D,SAASC,UAAU,QAAQ,oBAAiB;AAC5C,SAASC,oBAAoB,QAAQ,mDAAgD;AACrF,SAASC,qBAAqB,QAAQ,oDAAiD;AACvF,SAASC,eAAe,QAAQ,6CAA0C;AAC1E,SAASC,eAAe,QAAQ,uCAAoC;AACpE,SAASC,mBAAmB,QAAQ,2CAAwC;;AAE5E;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,sBAAsBA,CAACC,OAAgB,EAAgB;EACrE,MAAMC,MAAM,GAAGD,OAAO,CAACP,UAAU,CAACS,MAAM,CAACC,IAAI,CAAC;EAC9C,MAAMC,MAAM,GAAGJ,OAAO,CAACP,UAAU,CAACY,OAAO,CAACD,MAAM,CAAC;EACjD,MAAME,OAAO,GAAGN,OAAO,CAACP,UAAU,CAACc,cAAc,CAACD,OAAO,CAAC;EAC1D,MAAME,UAAU,GAAGR,OAAO,CAACP,UAAU,CAACgB,IAAI,CAACC,KAAK,CAACC,UAAU,CAACC,GAAG,CAACC,OAAO,CAAC;EACxE,MAAMC,eAAe,GAAGd,OAAO,CAACP,UAAU,CAACgB,IAAI,CAACC,KAAK,CAACI,eAAe,CAAC;EAEtE,OAAO;EACL;EACApB,oBAAoB,CAACc,UAAU,CAAC;EAEhC;EACAhB,cAAc,CAACM,mBAAmB,CAACG,MAAM,EAAEK,OAAO,CAACS,GAAG,CAAC,CAAC;EAExD;EACApB,qBAAqB,CAACmB,eAAe,CAAC,EAEtCjB,eAAe,CAACO,MAAM,EAAEE,OAAO,CAACU,GAAG,CAACC,MAAM,CAACC,OAAO,CAACC,WAAW,CAAC;EAE/D;EACAvB,eAAe,CAACY,UAAU,CAAC,CAC5B;AACH"}
@@ -14,26 +14,13 @@ export function provideHandlerMain(resolve) {
14
14
  const context = resolve(KnownToken.ExpressHandler.context);
15
15
  const render = resolve(KnownToken.Http.Handler.Page.render);
16
16
  const assetsInit = resolve(KnownToken.Http.Handler.Page.assets);
17
- const extras = resolve(KnownToken.Http.Handler.Response.specificExtras);
18
17
  const Helmet = resolve(KnownToken.Http.Handler.Page.helmet);
19
18
  const abortController = resolve(KnownToken.Http.Fetch.abortController);
20
19
  const formatResponse = resolve(KnownToken.Http.Handler.Page.formatResponse);
21
20
  const getAssets = typeof assetsInit === 'function' ? assetsInit : () => assetsInit;
22
-
23
- // @todo https://github.com/sima-land/isomorph/issues/69
24
- // const cookieStore = resolve(KnownToken.Http.Fetch.cookieStore);
25
- // cookieStore.subscribe(setCookieList => {
26
- // for (const setCookie of setCookieList) {
27
- // const parsed = parseSetCookieHeader(setCookie);
28
-
29
- // parsed && res.cookie(parsed.name, parsed.value, parsed.attrs);
30
- // }
31
- // });
32
-
33
21
  return async () => {
34
22
  try {
35
23
  const assets = await getAssets();
36
- const meta = extras.getMeta();
37
24
  const jsx = /*#__PURE__*/React.createElement(HelmetContext.Provider, {
38
25
  value: {
39
26
  title: config.appName,
@@ -43,7 +30,7 @@ export function provideHandlerMain(resolve) {
43
30
  const {
44
31
  body,
45
32
  headers
46
- } = await formatResponse(jsx, assets, meta);
33
+ } = await formatResponse(jsx, assets);
47
34
  headers.forEach((hValue, hName) => context.res.setHeader(hName, hValue));
48
35
  context.res.send(body);
49
36
  } catch (error) {