@sima-land/isomorph 11.0.0-alpha.0 → 11.0.0-alpha.3

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 (220) hide show
  1. package/{dist/cache → cache}/types.d.ts +0 -0
  2. package/{dist/utils/webpack/module-federation → cache}/types.js +0 -0
  3. package/{dist/cache → cache}/types.js.map +0 -0
  4. package/{dist/config → config}/browser.d.ts +0 -0
  5. package/{dist/config → config}/browser.js +0 -0
  6. package/{dist/config → config}/browser.js.map +0 -0
  7. package/{dist/config → config}/index.d.ts +0 -0
  8. package/{dist/config → config}/index.js +0 -0
  9. package/{dist/config → config}/index.js.map +0 -0
  10. package/{dist/config → config}/node.d.ts +0 -0
  11. package/{dist/config → config}/node.js +0 -0
  12. package/{dist/config → config}/node.js.map +0 -0
  13. package/{dist/config → config}/types.d.ts +0 -0
  14. package/{dist/tracer → config}/types.js +0 -0
  15. package/{dist/config → config}/types.js.map +0 -0
  16. package/{dist/config → config}/utils.d.ts +0 -0
  17. package/{dist/config → config}/utils.js +0 -0
  18. package/{dist/config → config}/utils.js.map +0 -0
  19. package/{dist/container → container}/application.d.ts +0 -0
  20. package/{dist/container → container}/application.js +0 -0
  21. package/{dist/container → container}/application.js.map +0 -0
  22. package/{dist/container → container}/index.d.ts +0 -0
  23. package/{dist/container → container}/index.js +0 -0
  24. package/{dist/container → container}/index.js.map +0 -0
  25. package/{dist/container → container}/types.d.ts +0 -0
  26. package/{dist/saga-runner → container}/types.js +0 -0
  27. package/{dist/container → container}/types.js.map +0 -0
  28. package/{dist/error-tracker → error-tracker}/browser.d.ts +0 -0
  29. package/{dist/error-tracker → error-tracker}/browser.js +0 -0
  30. package/{dist/error-tracker → error-tracker}/browser.js.map +0 -0
  31. package/{dist/error-tracker → error-tracker}/node.d.ts +0 -0
  32. package/{dist/error-tracker → error-tracker}/node.js +0 -0
  33. package/{dist/error-tracker → error-tracker}/node.js.map +0 -0
  34. package/{dist/error-tracker → error-tracker}/types.d.ts +0 -0
  35. package/{dist/preset → error-tracker}/types.js +0 -0
  36. package/{dist/error-tracker → error-tracker}/types.js.map +0 -0
  37. package/{dist/error-tracker → error-tracker}/utils.d.ts +0 -0
  38. package/{dist/error-tracker → error-tracker}/utils.js +0 -0
  39. package/{dist/error-tracker → error-tracker}/utils.js.map +0 -0
  40. package/{dist/http-client → http-client}/middleware/cookie.d.ts +0 -0
  41. package/{dist/http-client → http-client}/middleware/cookie.js +0 -0
  42. package/{dist/http-client → http-client}/middleware/cookie.js.map +0 -0
  43. package/{dist/http-client → http-client}/middleware/tracing.d.ts +0 -0
  44. package/{dist/http-client → http-client}/middleware/tracing.js +0 -0
  45. package/{dist/http-client → http-client}/middleware/tracing.js.map +0 -0
  46. package/{dist/http-client/utils.d.ts → http-client/sauce/index.d.ts} +0 -9
  47. package/{dist/http-client/utils.js → http-client/sauce/index.js} +2 -18
  48. package/http-client/sauce/index.js.map +1 -0
  49. package/{dist/http-client → http-client}/types.d.ts +0 -0
  50. package/{dist/logger → http-client}/types.js +0 -0
  51. package/{dist/http-client → http-client}/types.js.map +0 -0
  52. package/http-client/utils.d.ts +9 -0
  53. package/http-client/utils.js +20 -0
  54. package/http-client/utils.js.map +1 -0
  55. package/{dist/http-server → http-server}/constants.d.ts +0 -0
  56. package/{dist/http-server → http-server}/constants.js +0 -0
  57. package/{dist/http-server → http-server}/constants.js.map +0 -0
  58. package/{dist/http-server → http-server}/handler/health-check.d.ts +0 -0
  59. package/{dist/http-server → http-server}/handler/health-check.js +0 -0
  60. package/{dist/http-server → http-server}/handler/health-check.js.map +0 -0
  61. package/{dist/http-server → http-server}/middleware/logging.d.ts +0 -0
  62. package/{dist/http-server → http-server}/middleware/logging.js +0 -0
  63. package/{dist/http-server → http-server}/middleware/logging.js.map +0 -0
  64. package/{dist/http-server → http-server}/middleware/metrics.d.ts +0 -0
  65. package/{dist/http-server → http-server}/middleware/metrics.js +0 -0
  66. package/{dist/http-server → http-server}/middleware/metrics.js.map +0 -0
  67. package/{dist/http-server → http-server}/middleware/tracing.d.ts +1 -1
  68. package/{dist/http-server → http-server}/middleware/tracing.js +3 -2
  69. package/http-server/middleware/tracing.js.map +1 -0
  70. package/http-server/template/index.d.ts +1 -0
  71. package/http-server/template/index.js +36 -0
  72. package/http-server/template/index.js.map +1 -0
  73. package/{dist/http-server → http-server}/types.d.ts +8 -0
  74. package/{dist/http-server → http-server}/types.js +0 -0
  75. package/{dist/http-server → http-server}/types.js.map +0 -0
  76. package/{dist/http-server → http-server}/utils.d.ts +5 -1
  77. package/{dist/http-server → http-server}/utils.js +16 -4
  78. package/http-server/utils.js.map +1 -0
  79. package/{dist/logger → logger}/handler/console.d.ts +0 -0
  80. package/{dist/logger → logger}/handler/console.js +0 -0
  81. package/{dist/logger → logger}/handler/console.js.map +0 -0
  82. package/{dist/logger → logger}/handler/sentry.d.ts +0 -0
  83. package/{dist/logger → logger}/handler/sentry.js +0 -0
  84. package/{dist/logger → logger}/handler/sentry.js.map +0 -0
  85. package/{dist/logger → logger}/index.d.ts +0 -0
  86. package/{dist/logger → logger}/index.js +0 -0
  87. package/{dist/logger → logger}/index.js.map +0 -0
  88. package/{dist/logger → logger}/types.d.ts +0 -0
  89. package/{dist/http-client → logger}/types.js +0 -0
  90. package/{dist/logger → logger}/types.js.map +0 -0
  91. package/{dist/metrics → metrics}/constants.d.ts +0 -0
  92. package/{dist/metrics → metrics}/constants.js +0 -0
  93. package/{dist/metrics → metrics}/constants.js.map +0 -0
  94. package/{dist/metrics → metrics}/node.d.ts +0 -0
  95. package/{dist/metrics → metrics}/node.js +0 -0
  96. package/{dist/metrics → metrics}/node.js.map +0 -0
  97. package/package.json +6 -11
  98. package/{dist/preset → preset}/index.d.ts +0 -0
  99. package/{dist/preset → preset}/index.js +5 -3
  100. package/preset/index.js.map +1 -0
  101. package/{dist/preset → preset}/node/index.d.ts +3 -0
  102. package/{dist/preset → preset}/node/index.js +47 -17
  103. package/preset/node/index.js.map +1 -0
  104. package/{dist/preset → preset}/node/response.d.ts +6 -1
  105. package/{dist/preset → preset}/node/response.js +28 -2
  106. package/preset/node/response.js.map +1 -0
  107. package/{dist/preset → preset}/types.d.ts +2 -2
  108. package/{dist/error-tracker → preset}/types.js +0 -0
  109. package/{dist/preset → preset}/types.js.map +0 -0
  110. package/{dist/saga-runner → saga-runner}/index.d.ts +0 -0
  111. package/{dist/saga-runner → saga-runner}/index.js +3 -1
  112. package/saga-runner/index.js.map +1 -0
  113. package/{dist/saga-runner → saga-runner}/types.d.ts +0 -0
  114. package/{dist/container → saga-runner}/types.js +0 -0
  115. package/{dist/saga-runner → saga-runner}/types.js.map +0 -0
  116. package/{dist/tokens.d.ts → tokens.d.ts} +9 -3
  117. package/{dist/tokens.js → tokens.js} +6 -1
  118. package/tokens.js.map +1 -0
  119. package/{dist/utils → utils}/browser/analytics/data-layer.d.ts +0 -0
  120. package/{dist/utils → utils}/browser/analytics/data-layer.js +0 -0
  121. package/{dist/utils → utils}/browser/analytics/data-layer.js.map +0 -0
  122. package/{dist/utils → utils}/browser/analytics/oko.d.ts +0 -0
  123. package/{dist/utils → utils}/browser/analytics/oko.js +0 -0
  124. package/{dist/utils → utils}/browser/analytics/oko.js.map +0 -0
  125. package/{dist/utils → utils}/browser/storage/index.d.ts +0 -0
  126. package/{dist/utils → utils}/browser/storage/index.js +0 -0
  127. package/{dist/utils → utils}/browser/storage/index.js.map +0 -0
  128. package/{dist/utils → utils}/number.d.ts +0 -0
  129. package/{dist/utils → utils}/number.js +0 -0
  130. package/{dist/utils → utils}/number.js.map +0 -0
  131. package/{dist/utils → utils}/react/error-handlers/index.d.ts +0 -0
  132. package/{dist/utils → utils}/react/error-handlers/index.js +0 -0
  133. package/{dist/utils → utils}/react/error-handlers/index.js.map +0 -0
  134. package/{dist/utils → utils}/redux/remote-data.d.ts +0 -0
  135. package/{dist/utils → utils}/redux/remote-data.js +0 -0
  136. package/{dist/utils → utils}/redux/remote-data.js.map +0 -0
  137. package/{dist/utils → utils}/redux-saga/take-chain.d.ts +0 -0
  138. package/{dist/utils → utils}/redux-saga/take-chain.js +0 -0
  139. package/{dist/utils → utils}/redux-saga/take-chain.js.map +0 -0
  140. package/{dist/utils → utils}/webpack/module-federation/index.d.ts +0 -0
  141. package/{dist/utils → utils}/webpack/module-federation/index.js +0 -0
  142. package/{dist/utils → utils}/webpack/module-federation/index.js.map +0 -0
  143. package/{dist/utils → utils}/webpack/module-federation/types.d.ts +0 -0
  144. package/{dist/config → utils/webpack/module-federation}/types.js +0 -0
  145. package/{dist/utils → utils}/webpack/module-federation/types.js.map +0 -0
  146. package/{dist/utils → utils}/webpack/module-federation/utils.d.ts +0 -0
  147. package/{dist/utils → utils}/webpack/module-federation/utils.js +0 -0
  148. package/{dist/utils → utils}/webpack/module-federation/utils.js.map +0 -0
  149. package/LICENSE +0 -201
  150. package/dist/cache/types.js +0 -3
  151. package/dist/http-client/utils.js.map +0 -1
  152. package/dist/http-server/middleware/tracing.js.map +0 -1
  153. package/dist/http-server/utils.js.map +0 -1
  154. package/dist/preset/index.js.map +0 -1
  155. package/dist/preset/node/index.js.map +0 -1
  156. package/dist/preset/node/response.js.map +0 -1
  157. package/dist/saga-runner/index.js.map +0 -1
  158. package/dist/tokens.js.map +0 -1
  159. package/dist/tracer/node.d.ts +0 -10
  160. package/dist/tracer/node.js +0 -38
  161. package/dist/tracer/node.js.map +0 -1
  162. package/dist/tracer/types.d.ts +0 -2
  163. package/dist/tracer/types.js.map +0 -1
  164. package/readme.md +0 -23
  165. package/src/cache/types.ts +0 -7
  166. package/src/config/browser.ts +0 -10
  167. package/src/config/index.ts +0 -18
  168. package/src/config/node.ts +0 -18
  169. package/src/config/types.ts +0 -9
  170. package/src/config/utils.ts +0 -7
  171. package/src/container/application.ts +0 -91
  172. package/src/container/index.ts +0 -79
  173. package/src/container/types.ts +0 -17
  174. package/src/error-tracker/browser.ts +0 -14
  175. package/src/error-tracker/node.ts +0 -14
  176. package/src/error-tracker/types.ts +0 -22
  177. package/src/error-tracker/utils.ts +0 -18
  178. package/src/http-client/middleware/cookie.ts +0 -73
  179. package/src/http-client/middleware/tracing.ts +0 -79
  180. package/src/http-client/types.ts +0 -8
  181. package/src/http-client/utils.ts +0 -76
  182. package/src/http-server/constants.ts +0 -4
  183. package/src/http-server/handler/health-check.ts +0 -13
  184. package/src/http-server/middleware/logging.ts +0 -34
  185. package/src/http-server/middleware/metrics.ts +0 -87
  186. package/src/http-server/middleware/tracing.ts +0 -35
  187. package/src/http-server/types.ts +0 -29
  188. package/src/http-server/utils.ts +0 -105
  189. package/src/logger/handler/console.ts +0 -35
  190. package/src/logger/handler/sentry.ts +0 -38
  191. package/src/logger/index.ts +0 -31
  192. package/src/logger/types.ts +0 -28
  193. package/src/metrics/constants.ts +0 -4
  194. package/src/metrics/node.ts +0 -54
  195. package/src/preset/index.ts +0 -24
  196. package/src/preset/node/index.ts +0 -101
  197. package/src/preset/node/response.ts +0 -57
  198. package/src/preset/types.ts +0 -9
  199. package/src/saga-runner/index.ts +0 -59
  200. package/src/saga-runner/types.ts +0 -13
  201. package/src/tokens.ts +0 -54
  202. package/src/tracer/node.ts +0 -40
  203. package/src/tracer/types.ts +0 -3
  204. package/src/utils/browser/analytics/__test__/data-layer.test.ts +0 -50
  205. package/src/utils/browser/analytics/__test__/oko.test.tsx +0 -143
  206. package/src/utils/browser/analytics/data-layer.ts +0 -12
  207. package/src/utils/browser/analytics/oko.ts +0 -44
  208. package/src/utils/browser/storage/index.ts +0 -75
  209. package/src/utils/number.ts +0 -8
  210. package/src/utils/react/error-handlers/__test__/__snapshots__/index.test.tsx.snap +0 -27
  211. package/src/utils/react/error-handlers/__test__/index.test.tsx +0 -64
  212. package/src/utils/react/error-handlers/index.tsx +0 -62
  213. package/src/utils/redux/__test__/remote-data.test.ts +0 -50
  214. package/src/utils/redux/remote-data.ts +0 -34
  215. package/src/utils/redux-saga/__test__/take-chain.test.ts +0 -141
  216. package/src/utils/redux-saga/take-chain.ts +0 -65
  217. package/src/utils/webpack/module-federation/__test__/index.test.ts +0 -246
  218. package/src/utils/webpack/module-federation/index.ts +0 -92
  219. package/src/utils/webpack/module-federation/types.ts +0 -44
  220. package/src/utils/webpack/module-federation/utils.ts +0 -43
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/http-server/utils.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/preset/index.ts"],"names":[],"mappings":";;;AAIA;;;;GAIG;AACH,SAAgB,YAAY,CAAC,QAAuB;IAClD,MAAM,QAAQ,GAAG,IAAI,GAAG,CAA4B,QAAQ,CAAC,CAAC;IAE9D,OAAO;QACL,QAAQ,EAAE,CAAI,KAAe,EAAE,QAAqB,EAAE,EAAE;YACtD,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAChC,CAAC;QAED,KAAK,EAAE,CAAC,SAAsB,EAAE,EAAE;YAChC,KAAK,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,QAAQ,EAAE;gBACxC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;aAC5C;QACH,CAAC;KACF,CAAC;AACJ,CAAC;AAdD,oCAcC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/preset/node/index.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"response.js","sourceRoot":"","sources":["../../../src/preset/node/response.ts"],"names":[],"mappings":";;;AAIA,yCAA0C;AAC1C,0BAAkC;AAClC,6CAAkD;AAClD,mDAAqD;AACrD,2DAA6D;AAC7D,mDAAuD;AAEvD;;;GAGG;AACH,SAAgB,cAAc;IAC5B,OAAO,IAAA,gBAAY,EAAC;QAClB,CAAC,mBAAU,CAAC,QAAQ,CAAC,UAAU,EAAE,yBAAiB,CAAC;QACnD,CAAC,mBAAU,CAAC,QAAQ,CAAC,MAAM,EAAE,qBAAa,CAAC;QAC3C,CAAC,mBAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,mBAAW,CAAC;KACxC,CAAC,CAAC;AACL,CAAC;AAND,wCAMC;AAEM,MAAM,iBAAiB,GAAyB,OAAO,CAAC,EAAE;IAC/D,MAAM,MAAM,GAAG,OAAO,CAAC,mBAAU,CAAC,MAAM,CAAC,CAAC;IAC1C,OAAO,IAAA,8BAAgB,EAAC,MAAM,CAAC,CAAC;AAClC,CAAC,CAAC;AAHW,QAAA,iBAAiB,qBAG5B;AAEK,MAAM,aAAa,GAA4D,OAAO,CAAC,EAAE;IAC9F,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,mBAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAErD,OAAO,SAAS,MAAM,CAAC,OAAoB;QACzC,GAAG,CAAC,IAAI,CAAC,0BAAc,CAAC,WAAW,CAAC,CAAC;QAErC,MAAM,MAAM,GAAG,IAAA,uBAAc,EAAC,OAAO,CAAC,CAAC;QAEvC,GAAG,CAAC,IAAI,CAAC,0BAAc,CAAC,YAAY,CAAC,CAAC;QAEtC,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;AACJ,CAAC,CAAC;AAZW,QAAA,aAAa,iBAYxB;AAEK,MAAM,WAAW,GAAyB,OAAO,CAAC,EAAE;IACzD,MAAM,OAAO,GAAG,OAAO,CAAC,mBAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACrD,MAAM,MAAM,GAAG,OAAO,CAAC,mBAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACnD,MAAM,OAAO,GAAG,OAAO,CAAC,mBAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACrD,MAAM,MAAM,GAAG,OAAO,CAAC,mBAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAEnD,OAAO,KAAK,UAAU,IAAI;QACxB,oBAAY,CAAC,MAAM,EAAE;aAClB,MAAM,CAAC,MAAM,MAAM,CAAC,MAAM,OAAO,EAAE,CAAC,CAAC;aACrC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;aACjB,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC;aACjB,MAAM,CAAC,oBAAY,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;aAC9C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC,CAAC;AACJ,CAAC,CAAC;AAdW,QAAA,WAAW,eActB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/saga-runner/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,yDAA6D;AAC7D,kDAAqD;AAErD;;;;GAIG;AACH,SAAgB,gBAAgB,CAAC,MAAc;IAC7C,MAAM,UAAU,GAAG,IAAA,oBAAoB,EAAC;QACtC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE;YAChC,MAAM,CAAC,KAAK,CACV,IAAI,mBAAW,CAAC,KAAK,CAAC,OAAO,EAAE;gBAC7B,KAAK,EAAE,EAAE,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS,EAAE;aAC9C,CAAC,CACH,CAAC;QACJ,CAAC;KACF,CAAC,CAAC;IAEH,OAAO;QACL,UAAU;QAEV,8DAA8D;QAC9D,OAAO,CAAC,KAAY,EAAE,EAAE,OAAO,KAA2B,EAAE;YAC1D,OAAO;gBACL,8DAA8D;gBAC9D,KAAK,CAAC,GAAG,CAAiB,IAAO,EAAE,GAAG,IAAmB;oBACvD,IAAI,KAAK,GAAG,KAAK,CAAC;oBAElB,MAAM,OAAO,CAAC,IAAI,CAAC;wBACjB,4BAA4B;wBAC5B,UAAU;6BACP,GAAG,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC;6BAClB,SAAS,EAAE;6BACX,IAAI,CAAC,GAAG,EAAE;4BACT,KAAK,GAAG,IAAI,CAAC;wBACf,CAAC,CAAC;wBAEJ,2DAA2D;wBAC3D,OAAO,OAAO,KAAK,QAAQ;4BACzB,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC;4BACxB,IAAI,OAAO,CAAO,OAAO,CAAC,EAAE;gCAC1B,UAAU,CAAC,GAAG,EAAE;oCACd,IAAI,CAAC,KAAK,EAAE;wCACV,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC,CAAC;wCACjD,KAAK,CAAC,QAAQ,CAAC,gBAAG,CAAC,CAAC;qCACrB;oCACD,OAAO,EAAE,CAAC;gCACZ,CAAC,EAAE,OAAO,CAAC,CAAC;4BACd,CAAC,CAAC;qBACL,CAAC,CAAC;gBACL,CAAC;aACF,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC;AA/CD,4CA+CC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"tokens.js","sourceRoot":"","sources":["../src/tokens.ts"],"names":[],"mappings":";;;AAAA,2CAA0C;AAU7B,QAAA,UAAU,GAAG;IACxB,SAAS;IACT,MAAM,EAAE;QACN,MAAM,EAAE,IAAA,uBAAW,EAAe,eAAe,CAAC;QAClD,IAAI,EAAE,IAAA,uBAAW,EAAa,aAAa,CAAC;KAC7C;IAED,QAAQ;IACR,KAAK,EAAE,IAAA,uBAAW,EAAQ,OAAO,CAAC;IAElC,UAAU;IACV,MAAM,EAAE,IAAA,uBAAW,EAAS,QAAQ,CAAC;IAErC,UAAU;IACV,MAAM,EAAE,IAAA,uBAAW,EAAS,QAAQ,CAAC;IAErC,UAAU;IACV,OAAO,EAAE;QACP,OAAO,EAAE,IAAA,uBAAW,EAAc,kBAAkB,CAAC;KACtD;IAED,OAAO;IACP,IAAI,EAAE;QACJ,MAAM,EAAE;YACN,OAAO,EAAE,IAAA,uBAAW,EAAoB,qBAAqB,CAAC;SAC/D;QACD,MAAM,EAAE;YACN,OAAO,EAAE,IAAA,uBAAW,EAAoB,qBAAqB,CAAC;YAC9D,QAAQ,EAAE;gBACR,UAAU,EAAE,IAAA,uBAAW,EAAoB,iCAAiC,CAAC;aAC9E;SACF;KACF;IAED,uBAAuB;IACvB,QAAQ,EAAE;QACR,OAAO,EAAE,IAAA,uBAAW,EAAkB,kBAAkB,CAAC;QACzD,MAAM,EAAE,IAAA,uBAAW,EAAa,iBAAiB,CAAC;QAClD,OAAO,EAAE,IAAA,uBAAW,EAA2C,kBAAkB,CAAC;QAClF,MAAM,EAAE,IAAA,uBAAW,EAAqD,iBAAiB,CAAC;QAC1F,IAAI,EAAE,IAAA,uBAAW,EAAa,eAAe,CAAC;QAC9C,UAAU,EAAE,IAAA,uBAAW,EAAa,sBAAsB,CAAC;KAC5D;CACO,CAAC"}
@@ -1,10 +0,0 @@
1
- import type { Tracer } from './types';
2
- import type { BaseConfig } from '../config/types';
3
- import { SpanExporter } from '@opentelemetry/tracing';
4
- /**
5
- * Возвращает новый tracer - объект для трассировки стадий различных процессов.
6
- * @param config Конфиг.
7
- * @param exporter Экспортер данных трассировки.
8
- * @return Tracer.
9
- */
10
- export declare function createTracer(config: BaseConfig, exporter: SpanExporter): Tracer;
@@ -1,38 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createTracer = void 0;
4
- const sdk_trace_node_1 = require("@opentelemetry/sdk-trace-node");
5
- const tracing_1 = require("@opentelemetry/tracing");
6
- const semantic_conventions_1 = require("@opentelemetry/semantic-conventions");
7
- const instrumentation_1 = require("@opentelemetry/instrumentation");
8
- const instrumentation_express_1 = require("@opentelemetry/instrumentation-express");
9
- const instrumentation_http_1 = require("@opentelemetry/instrumentation-http");
10
- const resources_1 = require("@opentelemetry/resources");
11
- const propagator_jaeger_1 = require("@opentelemetry/propagator-jaeger");
12
- /**
13
- * Возвращает новый tracer - объект для трассировки стадий различных процессов.
14
- * @param config Конфиг.
15
- * @param exporter Экспортер данных трассировки.
16
- * @return Tracer.
17
- */
18
- function createTracer(config, exporter) {
19
- // @todo доделать по инструкции: https://selvaganesh93.medium.com/tracing-node-js-application-with-opentelemetry-jaeger-ui-9523c0ac8453
20
- const provider = new sdk_trace_node_1.NodeTracerProvider({
21
- resource: new resources_1.Resource({
22
- [semantic_conventions_1.SemanticResourceAttributes.SERVICE_NAME]: config.appName,
23
- [semantic_conventions_1.SemanticResourceAttributes.SERVICE_VERSION]: config.appVersion,
24
- [semantic_conventions_1.SemanticResourceAttributes.DEPLOYMENT_ENVIRONMENT]: config.env,
25
- }),
26
- });
27
- // @todo выяснить, почему не сходятся типы и приходится оставлять as any
28
- provider.addSpanProcessor(new tracing_1.BatchSpanProcessor(exporter));
29
- provider.register({
30
- propagator: new propagator_jaeger_1.JaegerPropagator(),
31
- });
32
- (0, instrumentation_1.registerInstrumentations)({
33
- instrumentations: [new instrumentation_express_1.ExpressInstrumentation(), new instrumentation_http_1.HttpInstrumentation()],
34
- });
35
- return provider.getTracer(config.appName, config.appVersion);
36
- }
37
- exports.createTracer = createTracer;
38
- //# sourceMappingURL=node.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"node.js","sourceRoot":"","sources":["../../src/tracer/node.ts"],"names":[],"mappings":";;;AAEA,kEAAmE;AACnE,oDAA0E;AAC1E,8EAAiF;AACjF,oEAA0E;AAC1E,oFAAgF;AAChF,8EAA0E;AAC1E,wDAAoD;AACpD,wEAAoE;AAEpE;;;;;GAKG;AACH,SAAgB,YAAY,CAAC,MAAkB,EAAE,QAAsB;IACrE,uIAAuI;IACvI,MAAM,QAAQ,GAAG,IAAI,mCAAkB,CAAC;QACtC,QAAQ,EAAE,IAAI,oBAAQ,CAAC;YACrB,CAAC,iDAA0B,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC,OAAO;YACzD,CAAC,iDAA0B,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC,UAAU;YAC/D,CAAC,iDAA0B,CAAC,sBAAsB,CAAC,EAAE,MAAM,CAAC,GAAG;SAChE,CAAC;KACH,CAAC,CAAC;IAEH,wEAAwE;IACxE,QAAQ,CAAC,gBAAgB,CAAC,IAAI,4BAAkB,CAAC,QAAQ,CAAQ,CAAC,CAAC;IAEnE,QAAQ,CAAC,QAAQ,CAAC;QAChB,UAAU,EAAE,IAAI,oCAAgB,EAAE;KACnC,CAAC,CAAC;IAEH,IAAA,0CAAwB,EAAC;QACvB,gBAAgB,EAAE,CAAC,IAAI,gDAAsB,EAAE,EAAE,IAAI,0CAAmB,EAAE,CAAC;KAC5E,CAAC,CAAC;IAEH,OAAO,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;AAC/D,CAAC;AAtBD,oCAsBC"}
@@ -1,2 +0,0 @@
1
- import type { Tracer } from '@opentelemetry/api';
2
- export type { Tracer };
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/tracer/types.ts"],"names":[],"mappings":""}
package/readme.md DELETED
@@ -1,23 +0,0 @@
1
- # Isomorph
2
-
3
- Минималистичный фреймворк для быстрого старта frontend-микросервисов.
4
-
5
- ## Архитектура
6
-
7
- ### Исходные данные
8
-
9
- - Не используем `reflect-metadata`, так как эта надстройка много весит и медленно работает
10
- - Не используем декораторы, так как они пока не попали в стандарт
11
-
12
- ### Термины
13
-
14
- **Токен** - уникальное значение, за которым можно закрепить произвольный интерфейс.
15
- Наличие токенов обусловлено тем что в TS/JS нет рефлексий.
16
-
17
- **Провайдер** - функция, которая занимается предоставлением реализации зависимостей, в том числе из контейнера.
18
- Обычно провайдер просто предоставляет зависимости для реализации но может также выбрать реализацию.
19
-
20
- ### Ограничения
21
-
22
- - Интерфейс и реализации должны находиться в разных файлах/модулях
23
- - Реализации не должны ничего знать про контейнер/токены
@@ -1,7 +0,0 @@
1
- export interface Cache {
2
- get: (key: string) => void;
3
- set: (key: string, value: any) => void;
4
- delete: (key: string) => void;
5
- clear: () => void;
6
- has: (key: string) => void;
7
- }
@@ -1,10 +0,0 @@
1
- import type { ConfigSource } from './types';
2
- import { Env } from '@humanwhocodes/env';
3
-
4
- /**
5
- * Возвращает "источник" для конфигурации.
6
- * @return Источник.
7
- */
8
- export function createConfigSource(): ConfigSource {
9
- return new Env(process.env);
10
- }
@@ -1,18 +0,0 @@
1
- import type { ConfigSource, BaseConfig } from './types';
2
-
3
- /**
4
- * Возвращает базовую конфигурацию.
5
- * @param source Источник.
6
- * @return Базовая конфигурация.
7
- */
8
- export function createBaseConfig(source: ConfigSource): BaseConfig {
9
- const env = source.require('NODE_ENV');
10
- const appName = source.require('APP_NAME');
11
- const appVersion = source.require('APP_VERSION');
12
-
13
- return {
14
- env,
15
- appName,
16
- appVersion,
17
- };
18
- }
@@ -1,18 +0,0 @@
1
- import type { ConfigSource } from './types';
2
- import { Env } from '@humanwhocodes/env';
3
- import { config } from 'dotenv';
4
- import { defineEnvironment } from './utils';
5
-
6
- /**
7
- * Возвращает "источник" для конфигурации.
8
- * @return Источник.
9
- */
10
- export function createConfigSource(): ConfigSource {
11
- // определяем среду
12
- const envName = defineEnvironment();
13
-
14
- // подключаем соответствующий среде файл со значениями по умолчанию
15
- config({ path: `./.env.${envName}` });
16
-
17
- return new Env(process.env);
18
- }
@@ -1,9 +0,0 @@
1
- import type { Env } from '@humanwhocodes/env';
2
-
3
- export type ConfigSource = Env;
4
-
5
- export interface BaseConfig {
6
- env: string;
7
- appName: string;
8
- appVersion: string;
9
- }
@@ -1,7 +0,0 @@
1
- /**
2
- * Возвращает значение process.env.NODE_ENV или "unknown".
3
- * @return Значение.
4
- */
5
- export function defineEnvironment(): string {
6
- return process.env.NODE_ENV || 'unknown';
7
- }
@@ -1,91 +0,0 @@
1
- /* eslint-disable require-jsdoc, jsdoc/require-jsdoc */
2
- import type { Container, Provider, Resolve, Token } from './types';
3
- import type { Preset } from '../preset/types';
4
- import { createContainer, createToken, NothingBoundError } from '.';
5
-
6
- type ExtractType<T extends readonly Token<any>[]> = {
7
- [index in keyof T]: T[index] extends T[number] ? ReturnType<T[index]['_resolve']> : never;
8
- };
9
-
10
- interface Binding<T> {
11
- toValue: (value: T) => void;
12
- toProvider: (provider: Provider<T>) => void;
13
- }
14
-
15
- export class Application {
16
- private container?: Container;
17
- private parent?: Application;
18
- private presets: Preset[];
19
- private providers: Map<Token<any>, Provider<any>>;
20
-
21
- static readonly self = createToken('application/self');
22
-
23
- constructor() {
24
- this.providers = new Map();
25
- this.presets = [];
26
- }
27
-
28
- bind<T>(token: Token<T>): Binding<T> {
29
- return {
30
- toValue: value => {
31
- this.providers.set(token, () => value);
32
- },
33
- toProvider: provider => {
34
- this.providers.set(token, provider);
35
- },
36
- };
37
- }
38
-
39
- get<T>(token: Token<T>): T {
40
- try {
41
- return this.getContainer().get(token);
42
- } catch (error) {
43
- if (error instanceof NothingBoundError && this.parent) {
44
- return this.parent.get(token);
45
- } else {
46
- throw error;
47
- }
48
- }
49
- }
50
-
51
- private getContainer(): Container {
52
- if (!this.container) {
53
- this.container = this.configureContainer();
54
- }
55
-
56
- return this.container;
57
- }
58
-
59
- private configureContainer(): Container {
60
- const container = createContainer();
61
-
62
- container.set(Application.self, () => this);
63
-
64
- for (const preset of this.presets) {
65
- preset.apply(this);
66
- }
67
-
68
- const resolve: Resolve = token => this.get(token);
69
-
70
- for (const [token, provider] of this.providers) {
71
- container.set(token, () => provider(resolve));
72
- }
73
-
74
- return container;
75
- }
76
-
77
- attach(parent: Application): void {
78
- this.parent = parent;
79
- }
80
-
81
- preset(preset: Preset): void {
82
- this.presets.push(preset);
83
- }
84
-
85
- invoke<Tokens extends readonly Token<any>[]>(
86
- tokens: [...Tokens],
87
- fn: (...args: ExtractType<Tokens>) => void,
88
- ): void {
89
- fn(...(tokens.map(token => this.get(token)) as any));
90
- }
91
- }
@@ -1,79 +0,0 @@
1
- /* eslint-disable require-jsdoc, jsdoc/require-jsdoc */
2
- import type { Container, Provider, Token } from './types';
3
-
4
- /**
5
- * Возвращает новый токен.
6
- * @param name Имя токена для отладки в случае ошибок.
7
- * @return Токен.
8
- */
9
- export function createToken<T = never>(name?: string): Token<T> {
10
- const key = Symbol(name);
11
-
12
- return {
13
- _key: key,
14
- _resolve: (registry: Map<symbol, any>) => registry.get(key) as T,
15
- };
16
- }
17
-
18
- export class NothingBoundError extends Error {
19
- constructor(key: symbol) {
20
- super(`Nothing bound to ${String(key)}`);
21
- this.name = 'NothingBoundError';
22
- }
23
- }
24
-
25
- export class CircularDependencyError extends Error {
26
- constructor(trace: Token<any>[]) {
27
- const names = trace.map(token => String(token._key)).join(' >> ');
28
- super(`Circular dependency found, trace: ${names}`);
29
- this.name = 'CircularDependencyError';
30
- }
31
- }
32
-
33
- /**
34
- * Возвращает новый DI-контейнер.
35
- * @return DI-контейнер.
36
- */
37
- export function createContainer(): Container {
38
- const cache = new Map<symbol, any>();
39
- const registry = new Map<symbol, Provider<any>>();
40
-
41
- function resolve<T>(token: Token<T>, chain: Token<any>[]): T {
42
- if (chain.includes(token)) {
43
- throw new CircularDependencyError([...chain, token]);
44
- } else {
45
- chain.push(token);
46
- }
47
-
48
- if (cache.has(token._key)) {
49
- return cache.get(token._key);
50
- } else if (registry.has(token._key)) {
51
- const provider = registry.get(token._key);
52
-
53
- if (typeof provider !== 'function') {
54
- throw new Error('Provider is not a function');
55
- }
56
-
57
- const value = provider(otherToken => resolve(otherToken, chain));
58
-
59
- // всегда как singleton
60
- cache.set(token._key, value);
61
-
62
- return value;
63
- } else {
64
- throw new NothingBoundError(token._key);
65
- }
66
- }
67
-
68
- const container = {
69
- set<T>(token: Token<T>, provider: Provider<T>): void {
70
- registry.set(token._key, provider);
71
- },
72
-
73
- get<T>(token: Token<T>): T {
74
- return resolve(token, []);
75
- },
76
- };
77
-
78
- return container;
79
- }
@@ -1,17 +0,0 @@
1
- export interface Token<T> {
2
- readonly _key: symbol;
3
- readonly _resolve: (registry: Map<symbol, any>) => T;
4
- }
5
-
6
- export interface Resolve {
7
- <T>(token: Token<T>): T;
8
- }
9
-
10
- export interface Provider<T> {
11
- (resolve: Resolve): T;
12
- }
13
-
14
- export interface Container {
15
- set: <T = never>(token: Token<T>, provider: Provider<T>) => void;
16
- get: Resolve;
17
- }
@@ -1,14 +0,0 @@
1
- import type { SentryLib } from './types';
2
- import * as Sentry from '@sentry/browser';
3
-
4
- /**
5
- * Возвращает новый набор из клиента Sentry и функций из пакета Sentry.
6
- * @param options Опции создания клиента.
7
- * @return Новый набор из клиента Sentry и функций из пакета Sentry.
8
- */
9
- export function createSentryLib(options: Sentry.BrowserOptions): SentryLib {
10
- return {
11
- client: new Sentry.BrowserClient(options),
12
- withScope: Sentry.withScope,
13
- };
14
- }
@@ -1,14 +0,0 @@
1
- import type { SentryLib } from './types';
2
- import * as Sentry from '@sentry/node';
3
-
4
- /**
5
- * Возвращает новый набор из клиента Sentry и функций из пакета Sentry.
6
- * @param options Опции создания клиента.
7
- * @return Новый набор из клиента Sentry и функций из пакета Sentry.
8
- */
9
- export function createSentryLib(options: Sentry.NodeOptions): SentryLib {
10
- return {
11
- client: new Sentry.NodeClient(options),
12
- withScope: Sentry.withScope,
13
- };
14
- }
@@ -1,22 +0,0 @@
1
- import type { Client, Severity, Context, Extra } from '@sentry/types';
2
- import type { withScope as withScopeBrowser } from '@sentry/browser';
3
- import type { withScope as withScopeNode } from '@sentry/node';
4
-
5
- export interface SentryLib {
6
- client: Client;
7
- withScope: typeof withScopeBrowser | typeof withScopeNode;
8
- }
9
-
10
- export interface SentryErrorData {
11
- level?: Severity;
12
-
13
- context?: {
14
- key: string;
15
- data: Context | null;
16
- };
17
-
18
- extra?: {
19
- key: string;
20
- data: Extra | null;
21
- };
22
- }
@@ -1,18 +0,0 @@
1
- import { SentryErrorData } from './types';
2
-
3
- /**
4
- * Ошибка с данными для Sentry.
5
- */
6
- export class SentryError extends Error {
7
- data: SentryErrorData;
8
-
9
- /**
10
- * @param message Сообщение.
11
- * @param data Данные.
12
- */
13
- constructor(message: string, data: SentryErrorData = {}) {
14
- super(message);
15
- this.data = data;
16
- this.name = 'SentryError';
17
- }
18
- }
@@ -1,73 +0,0 @@
1
- import type { Request, Response } from 'express';
2
- import type { Middleware } from 'middleware-axios';
3
-
4
- export interface CookieStore {
5
- set: (seCookie: string[]) => void;
6
- asHeader: () => string;
7
- }
8
-
9
- /**
10
- * Возвращает новый middleware для работы с cookie на сервере.
11
- * @param request Входящий запрос.
12
- * @param response Исходящий ответ.
13
- * @return Middleware.
14
- */
15
- export function collectCookieMiddleware(request: Request, response: Response): Middleware<any> {
16
- const store = createCookieStore(request.get('cookie'));
17
-
18
- return async function (config, next) {
19
- const result = await next({
20
- ...config,
21
- headers: {
22
- ...config.headers,
23
- Cookie: store.asHeader(),
24
- },
25
- });
26
-
27
- if (result.headers['set-cookie']) {
28
- store.set(result.headers['set-cookie']);
29
- response.setHeader('cookie', store.asHeader());
30
- }
31
- };
32
- }
33
-
34
- /**
35
- * Возвращает новое хранилище cookie.
36
- * @param initialCookie Начальное значение cookie.
37
- * @return Хранилище cookie.
38
- */
39
- export function createCookieStore(initialCookie?: string): CookieStore {
40
- const data: Record<string, { name: string; value: string }> = {};
41
-
42
- // eslint-disable-next-line require-jsdoc, jsdoc/require-jsdoc
43
- function setItem(cookieItem: string) {
44
- const [cookieName, cookieValue] = cookieItem.split('=').map(item => item.trim());
45
-
46
- if (cookieName && cookieValue) {
47
- data[cookieName] = { name: cookieName, value: cookieValue };
48
- }
49
- }
50
-
51
- if (initialCookie && initialCookie.length) {
52
- for (const item of initialCookie.split(';')) {
53
- setItem(item);
54
- }
55
- }
56
-
57
- // eslint-disable-next-line require-jsdoc, jsdoc/require-jsdoc
58
- function set(setCookieHeaderValues: string[]): void {
59
- for (const item of setCookieHeaderValues) {
60
- const [cookie] = item.split(';');
61
- setItem(cookie);
62
- }
63
- }
64
-
65
- // eslint-disable-next-line require-jsdoc, jsdoc/require-jsdoc
66
- function asHeader(): string {
67
- return Object.values(data)
68
- .map(cookie => `${cookie.name}=${cookie.value}`)
69
- .join(';');
70
- }
71
-
72
- return { set, asHeader };
73
- }
@@ -1,79 +0,0 @@
1
- import type { AxiosDefaults, AxiosRequestConfig } from 'axios';
2
- import type { Middleware } from 'middleware-axios';
3
- import { Context, Tracer, SpanStatusCode } from '@opentelemetry/api';
4
- import { SemanticAttributes } from '@opentelemetry/semantic-conventions';
5
-
6
- /**
7
- * Возвращает новый middleware для трассировки исходящих запросов.
8
- * @param tracer Трейсер.
9
- * @param rootContext Контекст.
10
- * @return Middleware.
11
- */
12
- export function tracingMiddleware(tracer: Tracer, rootContext: Context): Middleware<any> {
13
- return async function (config, next, defaults) {
14
- const { method, url, foundId } = getRequestInfo(config, defaults);
15
- const span = tracer.startSpan(`HTTP ${method} ${url}`, undefined, rootContext);
16
-
17
- span.setAttributes({
18
- [SemanticAttributes.HTTP_URL]: url,
19
- [SemanticAttributes.HTTP_METHOD]: method,
20
-
21
- // если нашли id - добавляем в теги
22
- ...(foundId && { 'request.id': foundId }),
23
- });
24
-
25
- try {
26
- await next(config);
27
- } catch (error) {
28
- span.setStatus({
29
- code: SpanStatusCode.ERROR,
30
- message: 'HTTP Request failed',
31
- });
32
-
33
- // не прячем ошибку
34
- throw error;
35
- }
36
-
37
- span.end();
38
- };
39
- }
40
-
41
- /**
42
- * Формирует базовые данные запроса.
43
- * Заменяет первое найденное число в url на "{id}", возвращая его в результате.
44
- * @param config Axios-конфиг запроса.
45
- * @param defaults Базовый конфиг экземпляра Axios.
46
- * @return Базовые данные запроса.
47
- */
48
- export const getRequestInfo = (
49
- config: AxiosRequestConfig,
50
- defaults: AxiosDefaults,
51
- ): {
52
- method: string;
53
- url: string;
54
- foundId?: number;
55
- } => {
56
- const method = (config.method || 'GET').toUpperCase();
57
- const baseURL = config.baseURL || defaults.baseURL || '';
58
-
59
- // ВАЖНО: абстрагируем id только в url игнорируя baseURL
60
- const [url, foundId] = hideFirstId(config.url || defaults.url || '');
61
- const readyUrl = `${baseURL}${url}`;
62
-
63
- return { method, url: readyUrl, foundId };
64
- };
65
-
66
- /**
67
- * Преобразует строку вида:
68
- * "/api/v2/something/123456/some-bff/123456"
69
- * в строку вида:
70
- * "/api/v2/something/{id}/some-bff/123456"
71
- * и возвращает кортеж с этой строкой и вырезанным числом в случае если оно найдено.
72
- * @param url Url.
73
- * @return Кортеж со строкой и результатом поиска числа.
74
- */
75
- export const hideFirstId = (url: string): [string, number | undefined] => {
76
- const found = /\d{2,}/.exec(url);
77
-
78
- return found ? [url.replace(found[0], '{id}'), Number(found[0])] : [url, undefined];
79
- };
@@ -1,8 +0,0 @@
1
- import type { AxiosRequestConfig } from 'axios';
2
- import type { AxiosInstanceWrapper } from 'middleware-axios';
3
-
4
- export type HttpClient = AxiosInstanceWrapper;
5
-
6
- export interface HttpClientFactory {
7
- (config: AxiosRequestConfig): HttpClient;
8
- }