@dr.pogodin/react-utils 1.47.0-alpha.1 → 1.47.0-alpha.11

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 (306) hide show
  1. package/babel.config.js +1 -1
  2. package/babel.module.config.js +11 -0
  3. package/bin/build.js +8 -4
  4. package/bin/setup.js +2 -3
  5. package/build/development/client/getInj.js +57 -44
  6. package/build/development/client/getInj.js.map +1 -1
  7. package/build/development/client/index.js +15 -21
  8. package/build/development/client/index.js.map +1 -1
  9. package/build/development/client/init.js +2 -6
  10. package/build/development/client/init.js.map +1 -1
  11. package/build/development/index.js +3 -183
  12. package/build/development/index.js.map +1 -1
  13. package/build/development/server/Cache.js +1 -8
  14. package/build/development/server/Cache.js.map +1 -1
  15. package/build/development/server/index.js +22 -50
  16. package/build/development/server/index.js.map +1 -1
  17. package/build/development/server/renderer.js +83 -92
  18. package/build/development/server/renderer.js.map +1 -1
  19. package/build/development/server/server.js +58 -62
  20. package/build/development/server/server.js.map +1 -1
  21. package/build/development/server/utils/errors.js +8 -31
  22. package/build/development/server/utils/errors.js.map +1 -1
  23. package/build/development/server/utils/index.js +2 -9
  24. package/build/development/server/utils/index.js.map +1 -1
  25. package/build/development/shared/components/Button/index.js +9 -16
  26. package/build/development/shared/components/Button/index.js.map +1 -1
  27. package/build/development/shared/components/Checkbox/index.js +6 -13
  28. package/build/development/shared/components/Checkbox/index.js.map +1 -1
  29. package/build/development/shared/components/GenericLink/index.js +4 -10
  30. package/build/development/shared/components/GenericLink/index.js.map +1 -1
  31. package/build/development/shared/components/Input/index.js +11 -18
  32. package/build/development/shared/components/Input/index.js.map +1 -1
  33. package/build/development/shared/components/Link.js +6 -13
  34. package/build/development/shared/components/Link.js.map +1 -1
  35. package/build/development/shared/components/Modal/index.js +16 -22
  36. package/build/development/shared/components/Modal/index.js.map +1 -1
  37. package/build/development/shared/components/NavLink.js +6 -13
  38. package/build/development/shared/components/NavLink.js.map +1 -1
  39. package/build/development/shared/components/PageLayout/index.js +7 -14
  40. package/build/development/shared/components/PageLayout/index.js.map +1 -1
  41. package/build/development/shared/components/TextArea/index.js +15 -22
  42. package/build/development/shared/components/TextArea/index.js.map +1 -1
  43. package/build/development/shared/components/Throbber/index.js +7 -14
  44. package/build/development/shared/components/Throbber/index.js.map +1 -1
  45. package/build/development/shared/components/WithTooltip/Tooltip.js +12 -18
  46. package/build/development/shared/components/WithTooltip/Tooltip.js.map +1 -1
  47. package/build/development/shared/components/WithTooltip/index.js +16 -23
  48. package/build/development/shared/components/WithTooltip/index.js.map +1 -1
  49. package/build/development/shared/components/YouTubeVideo/index.js +10 -17
  50. package/build/development/shared/components/YouTubeVideo/index.js.map +1 -1
  51. package/build/development/shared/components/index.js +16 -130
  52. package/build/development/shared/components/index.js.map +1 -1
  53. package/build/development/shared/components/selectors/CustomDropdown/Options/index.js +18 -19
  54. package/build/development/shared/components/selectors/CustomDropdown/Options/index.js.map +1 -1
  55. package/build/development/shared/components/selectors/CustomDropdown/index.js +24 -28
  56. package/build/development/shared/components/selectors/CustomDropdown/index.js.map +1 -1
  57. package/build/development/shared/components/selectors/NativeDropdown/index.js +19 -19
  58. package/build/development/shared/components/selectors/NativeDropdown/index.js.map +1 -1
  59. package/build/development/shared/components/selectors/Switch/index.js +12 -17
  60. package/build/development/shared/components/selectors/Switch/index.js.map +1 -1
  61. package/build/development/shared/components/selectors/common.js +1 -7
  62. package/build/development/shared/components/selectors/common.js.map +1 -1
  63. package/build/development/shared/components/selectors/index.js +3 -27
  64. package/build/development/shared/components/selectors/index.js.map +1 -1
  65. package/build/development/shared/utils/config.js +40 -21
  66. package/build/development/shared/utils/config.js.map +1 -1
  67. package/build/development/shared/utils/globalState.js +3 -8
  68. package/build/development/shared/utils/globalState.js.map +1 -1
  69. package/build/development/shared/utils/index.js +12 -89
  70. package/build/development/shared/utils/index.js.map +1 -1
  71. package/build/development/shared/utils/isomorphy/buildInfo.js +2 -9
  72. package/build/development/shared/utils/isomorphy/buildInfo.js.map +1 -1
  73. package/build/development/shared/utils/isomorphy/environment-check.js +2 -8
  74. package/build/development/shared/utils/isomorphy/environment-check.js.map +1 -1
  75. package/build/development/shared/utils/isomorphy/index.js +7 -32
  76. package/build/development/shared/utils/isomorphy/index.js.map +1 -1
  77. package/build/development/shared/utils/jest/E2eSsrEnv.js +24 -31
  78. package/build/development/shared/utils/jest/E2eSsrEnv.js.map +1 -1
  79. package/build/development/shared/utils/jest/global.js +1 -7
  80. package/build/development/shared/utils/jest/global.js.map +1 -1
  81. package/build/development/shared/utils/jest/index.js +20 -44
  82. package/build/development/shared/utils/jest/index.js.map +1 -1
  83. package/build/development/shared/utils/splitComponent.js +54 -46
  84. package/build/development/shared/utils/splitComponent.js.map +1 -1
  85. package/build/development/shared/utils/time.js +22 -31
  86. package/build/development/shared/utils/time.js.map +1 -1
  87. package/build/development/shared/utils/webpack.js +17 -16
  88. package/build/development/shared/utils/webpack.js.map +1 -1
  89. package/build/production/client/getInj.js +13 -11
  90. package/build/production/client/getInj.js.map +1 -1
  91. package/build/production/client/index.js +3 -3
  92. package/build/production/client/index.js.map +1 -1
  93. package/build/production/client/init.js +2 -2
  94. package/build/production/client/init.js.map +1 -1
  95. package/build/production/index.js +2 -6
  96. package/build/production/index.js.map +1 -1
  97. package/build/production/server/Cache.js +3 -3
  98. package/build/production/server/Cache.js.map +1 -1
  99. package/build/production/server/index.js +8 -8
  100. package/build/production/server/index.js.map +1 -1
  101. package/build/production/server/renderer.js +24 -25
  102. package/build/production/server/renderer.js.map +1 -1
  103. package/build/production/server/server.js +9 -11
  104. package/build/production/server/server.js.map +1 -1
  105. package/build/production/server/utils/errors.js +9 -9
  106. package/build/production/server/utils/errors.js.map +1 -1
  107. package/build/production/server/utils/index.js +2 -1
  108. package/build/production/server/utils/index.js.map +1 -1
  109. package/build/production/shared/components/Button/index.js +4 -4
  110. package/build/production/shared/components/Button/index.js.map +1 -1
  111. package/build/production/shared/components/Checkbox/index.js +1 -1
  112. package/build/production/shared/components/Checkbox/index.js.map +1 -1
  113. package/build/production/shared/components/GenericLink/index.js +4 -4
  114. package/build/production/shared/components/GenericLink/index.js.map +1 -1
  115. package/build/production/shared/components/Input/index.js +5 -5
  116. package/build/production/shared/components/Input/index.js.map +1 -1
  117. package/build/production/shared/components/Link.js +3 -3
  118. package/build/production/shared/components/Link.js.map +1 -1
  119. package/build/production/shared/components/Modal/index.js +7 -7
  120. package/build/production/shared/components/Modal/index.js.map +1 -1
  121. package/build/production/shared/components/NavLink.js +2 -2
  122. package/build/production/shared/components/NavLink.js.map +1 -1
  123. package/build/production/shared/components/PageLayout/index.js +2 -2
  124. package/build/production/shared/components/PageLayout/index.js.map +1 -1
  125. package/build/production/shared/components/TextArea/index.js +5 -5
  126. package/build/production/shared/components/TextArea/index.js.map +1 -1
  127. package/build/production/shared/components/Throbber/index.js +2 -2
  128. package/build/production/shared/components/Throbber/index.js.map +1 -1
  129. package/build/production/shared/components/WithTooltip/Tooltip.js +4 -4
  130. package/build/production/shared/components/WithTooltip/Tooltip.js.map +1 -1
  131. package/build/production/shared/components/WithTooltip/index.js +4 -4
  132. package/build/production/shared/components/WithTooltip/index.js.map +1 -1
  133. package/build/production/shared/components/YouTubeVideo/index.js +4 -4
  134. package/build/production/shared/components/YouTubeVideo/index.js.map +1 -1
  135. package/build/production/shared/components/index.js +3 -1
  136. package/build/production/shared/components/index.js.map +1 -1
  137. package/build/production/shared/components/selectors/CustomDropdown/Options/index.js +2 -2
  138. package/build/production/shared/components/selectors/CustomDropdown/Options/index.js.map +1 -1
  139. package/build/production/shared/components/selectors/CustomDropdown/index.js +2 -2
  140. package/build/production/shared/components/selectors/CustomDropdown/index.js.map +1 -1
  141. package/build/production/shared/components/selectors/NativeDropdown/index.js +4 -4
  142. package/build/production/shared/components/selectors/NativeDropdown/index.js.map +1 -1
  143. package/build/production/shared/components/selectors/Switch/index.js +1 -1
  144. package/build/production/shared/components/selectors/Switch/index.js.map +1 -1
  145. package/build/production/shared/components/selectors/common.js +2 -2
  146. package/build/production/shared/components/selectors/common.js.map +1 -1
  147. package/build/production/shared/components/selectors/index.js +1 -1
  148. package/build/production/shared/components/selectors/index.js.map +1 -1
  149. package/build/production/shared/utils/config.js +8 -6
  150. package/build/production/shared/utils/config.js.map +1 -1
  151. package/build/production/shared/utils/globalState.js +2 -2
  152. package/build/production/shared/utils/globalState.js.map +1 -1
  153. package/build/production/shared/utils/index.js +1 -1
  154. package/build/production/shared/utils/index.js.map +1 -1
  155. package/build/production/shared/utils/isomorphy/buildInfo.js +3 -3
  156. package/build/production/shared/utils/isomorphy/buildInfo.js.map +1 -1
  157. package/build/production/shared/utils/isomorphy/environment-check.js +3 -3
  158. package/build/production/shared/utils/isomorphy/environment-check.js.map +1 -1
  159. package/build/production/shared/utils/isomorphy/index.js +4 -4
  160. package/build/production/shared/utils/isomorphy/index.js.map +1 -1
  161. package/build/production/shared/utils/jest/E2eSsrEnv.js +14 -14
  162. package/build/production/shared/utils/jest/E2eSsrEnv.js.map +1 -1
  163. package/build/production/shared/utils/jest/global.js +1 -1
  164. package/build/production/shared/utils/jest/global.js.map +1 -1
  165. package/build/production/shared/utils/jest/index.js +11 -11
  166. package/build/production/shared/utils/jest/index.js.map +1 -1
  167. package/build/production/shared/utils/splitComponent.js +11 -22
  168. package/build/production/shared/utils/splitComponent.js.map +1 -1
  169. package/build/production/shared/utils/time.js +3 -3
  170. package/build/production/shared/utils/time.js.map +1 -1
  171. package/build/production/shared/utils/webpack.js +6 -6
  172. package/build/production/shared/utils/webpack.js.map +1 -1
  173. package/build/types-code/client/getInj.d.ts +1 -2
  174. package/build/types-code/client/index.d.ts +1 -1
  175. package/build/types-code/index.d.ts +1 -7
  176. package/build/types-code/server/index.d.ts +6 -11
  177. package/build/types-code/server/utils/index.d.ts +1 -1
  178. package/build/types-code/shared/utils/config.d.ts +4 -2
  179. package/build/types-code/shared/utils/index.d.ts +2 -2
  180. package/build/types-code/shared/utils/splitComponent.d.ts +6 -4
  181. package/build/web/client/getInj.js +55 -44
  182. package/build/web/client/getInj.js.map +1 -1
  183. package/build/web/client/index.js +15 -21
  184. package/build/web/client/index.js.map +1 -1
  185. package/build/web/client/init.js +2 -4
  186. package/build/web/client/init.js.map +1 -1
  187. package/build/web/index.js +1 -15
  188. package/build/web/index.js.map +1 -1
  189. package/build/web/server/index.js +12 -21
  190. package/build/web/server/index.js.map +1 -1
  191. package/build/web/server/renderer.js +34 -40
  192. package/build/web/server/renderer.js.map +1 -1
  193. package/build/web/server/server.js +14 -11
  194. package/build/web/server/server.js.map +1 -1
  195. package/build/web/server/utils/index.js +1 -1
  196. package/build/web/server/utils/index.js.map +1 -1
  197. package/build/web/shared/components/Button/index.js +1 -1
  198. package/build/web/shared/components/Button/index.js.map +1 -1
  199. package/build/web/shared/components/Checkbox/index.js +1 -1
  200. package/build/web/shared/components/Checkbox/index.js.map +1 -1
  201. package/build/web/shared/components/Input/index.js +1 -1
  202. package/build/web/shared/components/Input/index.js.map +1 -1
  203. package/build/web/shared/components/Modal/index.js +3 -3
  204. package/build/web/shared/components/Modal/index.js.map +1 -1
  205. package/build/web/shared/components/PageLayout/index.js +1 -1
  206. package/build/web/shared/components/PageLayout/index.js.map +1 -1
  207. package/build/web/shared/components/TextArea/index.js +1 -1
  208. package/build/web/shared/components/TextArea/index.js.map +1 -1
  209. package/build/web/shared/components/Throbber/index.js +1 -1
  210. package/build/web/shared/components/Throbber/index.js.map +1 -1
  211. package/build/web/shared/components/WithTooltip/index.js +1 -1
  212. package/build/web/shared/components/WithTooltip/index.js.map +1 -1
  213. package/build/web/shared/components/YouTubeVideo/index.js +1 -1
  214. package/build/web/shared/components/YouTubeVideo/index.js.map +1 -1
  215. package/build/web/shared/components/selectors/CustomDropdown/Options/index.js +3 -0
  216. package/build/web/shared/components/selectors/CustomDropdown/Options/index.js.map +1 -1
  217. package/build/web/shared/components/selectors/CustomDropdown/index.js +3 -1
  218. package/build/web/shared/components/selectors/CustomDropdown/index.js.map +1 -1
  219. package/build/web/shared/components/selectors/NativeDropdown/index.js +4 -1
  220. package/build/web/shared/components/selectors/NativeDropdown/index.js.map +1 -1
  221. package/build/web/shared/components/selectors/Switch/index.js +2 -1
  222. package/build/web/shared/components/selectors/Switch/index.js.map +1 -1
  223. package/build/web/shared/utils/config.js +38 -14
  224. package/build/web/shared/utils/config.js.map +1 -1
  225. package/build/web/shared/utils/index.js +2 -2
  226. package/build/web/shared/utils/index.js.map +1 -1
  227. package/build/web/shared/utils/jest/E2eSsrEnv.js +3 -2
  228. package/build/web/shared/utils/jest/E2eSsrEnv.js.map +1 -1
  229. package/build/web/shared/utils/splitComponent.js +27 -20
  230. package/build/web/shared/utils/splitComponent.js.map +1 -1
  231. package/build/web/shared/utils/webpack.js +13 -7
  232. package/build/web/shared/utils/webpack.js.map +1 -1
  233. package/config/babel/node-ssr.js +12 -6
  234. package/config/babel/webpack.js +6 -1
  235. package/config/jest/default.js +8 -2
  236. package/config/jest/setup.js +8 -1
  237. package/config/webpack/app-base.js +23 -15
  238. package/config/webpack/app-development.js +2 -3
  239. package/config/webpack/lib-base.js +1 -2
  240. package/package.json +35 -25
  241. package/types.d.ts +1 -6
  242. package/node-entry.js +0 -15
  243. package/src/client/getInj.ts +0 -51
  244. package/src/client/index.tsx +0 -43
  245. package/src/client/init.ts +0 -52
  246. package/src/index.ts +0 -79
  247. package/src/server/Cache.ts +0 -61
  248. package/src/server/index.ts +0 -249
  249. package/src/server/renderer.tsx +0 -653
  250. package/src/server/server.ts +0 -332
  251. package/src/server/utils/errors.ts +0 -122
  252. package/src/server/utils/index.ts +0 -3
  253. package/src/shared/components/Button/index.tsx +0 -130
  254. package/src/shared/components/Button/style.scss +0 -54
  255. package/src/shared/components/Checkbox/index.tsx +0 -53
  256. package/src/shared/components/Checkbox/theme.scss +0 -63
  257. package/src/shared/components/GenericLink/index.tsx +0 -141
  258. package/src/shared/components/GenericLink/style.scss +0 -3
  259. package/src/shared/components/Input/index.tsx +0 -96
  260. package/src/shared/components/Input/theme.scss +0 -52
  261. package/src/shared/components/Link.tsx +0 -25
  262. package/src/shared/components/Modal/base-theme.scss +0 -38
  263. package/src/shared/components/Modal/index.tsx +0 -177
  264. package/src/shared/components/Modal/styles.scss +0 -3
  265. package/src/shared/components/NavLink.tsx +0 -18
  266. package/src/shared/components/PageLayout/base-theme.scss +0 -30
  267. package/src/shared/components/PageLayout/index.tsx +0 -51
  268. package/src/shared/components/TextArea/index.tsx +0 -139
  269. package/src/shared/components/TextArea/style.scss +0 -68
  270. package/src/shared/components/Throbber/index.tsx +0 -28
  271. package/src/shared/components/Throbber/theme.scss +0 -26
  272. package/src/shared/components/WithTooltip/Tooltip.tsx +0 -274
  273. package/src/shared/components/WithTooltip/default-theme.scss +0 -36
  274. package/src/shared/components/WithTooltip/index.tsx +0 -186
  275. package/src/shared/components/YouTubeVideo/base.scss +0 -15
  276. package/src/shared/components/YouTubeVideo/index.tsx +0 -73
  277. package/src/shared/components/YouTubeVideo/throbber.scss +0 -11
  278. package/src/shared/components/index.ts +0 -20
  279. package/src/shared/components/selectors/CustomDropdown/Options/index.tsx +0 -124
  280. package/src/shared/components/selectors/CustomDropdown/Options/style.scss +0 -6
  281. package/src/shared/components/selectors/CustomDropdown/index.tsx +0 -146
  282. package/src/shared/components/selectors/CustomDropdown/theme.scss +0 -118
  283. package/src/shared/components/selectors/NativeDropdown/index.tsx +0 -90
  284. package/src/shared/components/selectors/NativeDropdown/theme.scss +0 -81
  285. package/src/shared/components/selectors/Switch/index.tsx +0 -74
  286. package/src/shared/components/selectors/Switch/theme.scss +0 -39
  287. package/src/shared/components/selectors/common.ts +0 -57
  288. package/src/shared/components/selectors/index.ts +0 -8
  289. package/src/shared/utils/config.ts +0 -28
  290. package/src/shared/utils/globalState.ts +0 -44
  291. package/src/shared/utils/index.ts +0 -45
  292. package/src/shared/utils/isomorphy/buildInfo.ts +0 -50
  293. package/src/shared/utils/isomorphy/environment-check.ts +0 -18
  294. package/src/shared/utils/isomorphy/index.ts +0 -36
  295. package/src/shared/utils/jest/E2eSsrEnv.ts +0 -305
  296. package/src/shared/utils/jest/global.ts +0 -17
  297. package/src/shared/utils/jest/index.ts +0 -215
  298. package/src/shared/utils/splitComponent.tsx +0 -275
  299. package/src/shared/utils/time.ts +0 -101
  300. package/src/shared/utils/webpack.ts +0 -74
  301. package/src/styles/_global/reset.css +0 -52
  302. package/src/styles/_mixins/fonts.scss +0 -40
  303. package/src/styles/_mixins/media.scss +0 -150
  304. package/src/styles/_mixins/typography.scss +0 -83
  305. package/src/styles/global.scss +0 -11
  306. package/src/styles/mixins.scss +0 -6
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.47.0-alpha.1",
2
+ "version": "1.47.0-alpha.11",
3
3
  "bin": {
4
4
  "react-utils-build": "bin/build.js",
5
5
  "react-utils-setup": "bin/setup.js"
@@ -12,31 +12,30 @@
12
12
  "@dr.pogodin/babel-plugin-react-css-modules": "^6.13.8",
13
13
  "@dr.pogodin/csurf": "^1.16.6",
14
14
  "@dr.pogodin/js-utils": "^0.1.4",
15
- "@dr.pogodin/react-global-state": "^0.20.1",
15
+ "@dr.pogodin/react-global-state": "^0.21.1",
16
16
  "@dr.pogodin/react-helmet": "^3.0.4",
17
- "@dr.pogodin/react-themes": "^1.9.3",
17
+ "@dr.pogodin/react-themes": "^1.9.4",
18
18
  "@jest/environment": "^30.2.0",
19
- "axios": "^1.13.1",
19
+ "axios": "^1.13.2",
20
20
  "commander": "^14.0.2",
21
21
  "compression": "^1.8.1",
22
22
  "config": "^4.1.1",
23
23
  "cookie": "^1.0.2",
24
24
  "cookie-parser": "^1.4.7",
25
25
  "cross-env": "^10.1.0",
26
- "dayjs": "^1.11.18",
26
+ "dayjs": "^1.11.19",
27
27
  "express": "^5.1.0",
28
28
  "helmet": "^8.1.0",
29
29
  "http-status-codes": "^2.3.0",
30
- "lodash": "^4.17.21",
30
+ "lodash-es": "^4.17.21",
31
31
  "morgan": "^1.10.1",
32
- "node-forge": "^1.3.1",
33
32
  "qs": "^6.14.0",
34
33
  "raf": "^3.4.1",
35
34
  "react": "^19.2.0",
36
35
  "react-dom": "^19.2.0",
37
36
  "react-router": "^7.9.5",
38
37
  "request-ip": "^3.3.0",
39
- "rimraf": "^6.0.0",
38
+ "rimraf": "^6.1.0",
40
39
  "serialize-javascript": "^7.0.0",
41
40
  "serve-favicon": "^2.5.1",
42
41
  "source-map-support": "^0.5.21",
@@ -69,8 +68,8 @@
69
68
  "@types/express": "^5.0.5",
70
69
  "@types/jest": "^30.0.0",
71
70
  "@types/lodash": "^4.17.20",
71
+ "@types/lodash-es": "^4.17.12",
72
72
  "@types/morgan": "^1.9.10",
73
- "@types/node-forge": "^1.3.14",
74
73
  "@types/pretty": "^2.0.3",
75
74
  "@types/react": "^19.2.2",
76
75
  "@types/react-dom": "^19.2.2",
@@ -83,9 +82,9 @@
83
82
  "autoprefixer": "^10.4.21",
84
83
  "babel-jest": "^30.2.0",
85
84
  "babel-loader": "^10.0.0",
85
+ "babel-plugin-add-import-extension": "^1.6.0",
86
86
  "babel-plugin-module-resolver": "^5.0.2",
87
87
  "babel-plugin-transform-import-meta": "^2.3.3",
88
- "core-js": "^3.46.0",
89
88
  "css-loader": "^7.1.2",
90
89
  "css-minimizer-webpack-plugin": "^7.0.2",
91
90
  "identity-obj-proxy": "^3.0.0",
@@ -100,11 +99,10 @@
100
99
  "postcss-scss": "^4.0.9",
101
100
  "pretty": "^2.0.0",
102
101
  "react-refresh": "^0.18.0",
103
- "regenerator-runtime": "^0.14.1",
104
102
  "resolve-url-loader": "^5.0.0",
105
- "sass": "^1.93.2",
103
+ "sass": "^1.93.3",
106
104
  "sass-loader": "^16.0.6",
107
- "sitemap": "^8.0.2",
105
+ "sitemap": "^9.0.0",
108
106
  "source-map-loader": "^5.0.0",
109
107
  "stylelint": "^16.25.0",
110
108
  "stylelint-config-standard-scss": "^16.0.0",
@@ -122,30 +120,42 @@
122
120
  "workbox-webpack-plugin": "^7.3.0"
123
121
  },
124
122
  "engines": {
125
- "node": ">=20",
126
- "npm": ">=10"
123
+ "node": ">=22.21",
124
+ "npm": ">=10.9"
127
125
  },
128
- "main": "./node-entry.js",
129
- "source": "./src/index.ts",
126
+ "main": "./build/production/index.js",
130
127
  "types": "./build/types-code/index.d.ts",
131
128
  "exports": {
132
129
  ".": {
133
- "browser": "./build/web/index.js",
130
+ "types": "./build/types-code/index.d.ts",
131
+ "webpack": "./build/web/index.js",
134
132
  "node": {
135
- "webpack": "./build/web/index.js",
136
- "default": "./node-entry.js"
133
+ "development": "./build/development/index.js",
134
+ "default": "./build/production/index.js"
137
135
  },
138
136
  "react-native": {
139
- "default": "./node-entry.js",
137
+ "default": "./build/production/index.js",
140
138
  "types": "./build/types-code/index.d.ts"
141
139
  }
142
140
  },
141
+ "./client": {
142
+ "types": "./build/types-code/client/index.d.ts",
143
+ "default": "./build/web/client/index.js"
144
+ },
143
145
  "./config/*": "./config/*.js",
144
146
  "./config/eslint/*": "./config/eslint/*.mjs",
145
147
  "./config/*.json": "./config/*.json",
146
- "./global-styles": "./build/web/styles/global.scss",
147
- "./jest": "./build/production/shared/utils/jest/index.js",
148
+ "./global-styles.scss": "./build/web/styles/global.scss",
149
+ "./jest": {
150
+ "types": "./build/types-code/shared/utils/jest/index.d.ts",
151
+ "default": "./build/production/shared/utils/jest/index.js"
152
+ },
148
153
  "./mixins": "./build/web/styles/mixins.scss",
154
+ "./server": {
155
+ "types": "./build/types-code/server/index.d.ts",
156
+ "development": "./build/development/server/index.js",
157
+ "default": "./build/production/server/index.js"
158
+ },
149
159
  "./build/development/client/init": "./build/development/client/init.js",
150
160
  "./build/production/client/init": "./build/production/client/init.js",
151
161
  "./jest-e2e-ssr-env": "./build/production/shared/utils/jest/E2eSsrEnv.js"
@@ -176,8 +186,8 @@
176
186
  "scripts": {
177
187
  "build": "rimraf build && npm run build:configs && npm run build:types-scss && npm run build:types-code && npm run build:web && npm run build:dev && npm run build:prod",
178
188
  "build:configs": "tsc --project tsconfig.configs.json",
179
- "build:dev": "node bin/build -i build/web -t development --lib --webpack-config webpack.config.ts --no-webpack",
180
- "build:prod": "node bin/build -i build/web -t production --lib --webpack-config webpack.config.ts --no-webpack",
189
+ "build:dev": "node bin/build -i build/web -t development --lib --babel-config babel.module.config.js --webpack-config webpack.config.ts --no-webpack",
190
+ "build:prod": "node bin/build -i build/web -t production --lib --babel-config babel.module.config.js --webpack-config webpack.config.ts --no-webpack",
181
191
  "build:types-code": "rimraf build/types-code && tsc --project tsconfig.types.json && tsc-alias -p tsconfig.types.json",
182
192
  "build:types-scss": "rimraf build/types-scss && typed-scss-modules .",
183
193
  "build:web": "rimraf build/web && babel ./src --config-file ./babel.libweb.config.js --out-dir build/web -x .js,.jsx,.ts,.tsx --source-maps --copy-files",
package/types.d.ts CHANGED
@@ -4,6 +4,7 @@ declare var IS_REACT_ACT_ENVIRONMENT: boolean | undefined;
4
4
  declare var REACT_UTILS_WEBPACK_BUNDLE: boolean | undefined;
5
5
  declare var REACT_UTILS_LIBRARY_LOADED: boolean | undefined;
6
6
  declare var REACT_UTILS_FORCE_CLIENT_SIDE: boolean | undefined;
7
+ declare var SCENE_INIT_PROMISE: Promise<void> | undefined;
7
8
  /* eslint-enable no-var */
8
9
 
9
10
  declare module '@babel/register/experimental-worker' {
@@ -19,12 +20,6 @@ declare module '@babel/register/experimental-worker' {
19
20
  export default register;
20
21
  }
21
22
 
22
- declare module 'node-forge/lib/forge' {
23
- import F from 'node-forge';
24
-
25
- export default F;
26
- }
27
-
28
23
  declare module '*.png' {
29
24
  const path: string;
30
25
  export default path;
package/node-entry.js DELETED
@@ -1,15 +0,0 @@
1
- // TODO: We should re-visit, if this can be simplified / optimized?
2
- /* global global, module, process, require */
3
-
4
- // This permits to load the library in react-native, or other environment that
5
- // does not have __dirname global. It probably breaks a few node-specific lib
6
- // pieces, but that does not seem to prevent more relevant parts from working.
7
- if (typeof __dirname === 'undefined') {
8
- global.__dirname = ''; // eslint-disable-line no-underscore-dangle
9
- }
10
-
11
- // Again, for react-native, and maybe some other environments, we need
12
- // to have no dynamic requires below (i.e. can't do require(`./build/${env}`)).
13
- // eslint-disable-next-line import/no-commonjs
14
- module.exports = process.env.NODE_ENV === 'production'
15
- ? require('./build/production') : require('./build/development');
@@ -1,51 +0,0 @@
1
- // Encapsulates retrieval of server-side data injection into HTML template.
2
-
3
- /* global document */
4
-
5
- // Note: this way, only required part of "node-forge": AES, and some utils,
6
- // is bundled into client-side code.
7
- import forge from 'node-forge/lib/forge';
8
-
9
- // eslint-disable-next-line import/no-unassigned-import
10
- import 'node-forge/lib/aes';
11
-
12
- import type { InjT } from 'utils/globalState';
13
-
14
- import { getBuildInfo } from 'utils/isomorphy/buildInfo';
15
-
16
- // Safeguard is needed here, because the server-side version of Docusaurus docs
17
- // is compiled (at least now) with settings suggesting it is a client-side
18
- // environment, but there is no document.
19
- let inj: InjT = {};
20
-
21
- const metaElement: HTMLMetaElement | null = typeof document === 'undefined'
22
- ? null : document.querySelector('meta[itemprop="drpruinj"]');
23
-
24
- if (metaElement) {
25
- metaElement.remove();
26
- let data = forge.util.decode64(metaElement.content);
27
-
28
- const { key } = getBuildInfo();
29
- const d = forge.cipher.createDecipher('AES-CBC', key);
30
- d.start({ iv: data.slice(0, key.length) });
31
- d.update(forge.util.createBuffer(data.slice(key.length)));
32
- d.finish();
33
-
34
- data = forge.util.decodeUtf8(d.output.data);
35
-
36
- // TODO: Double-check, if there is a safer alternative to parse it?
37
- // eslint-disable-next-line no-eval
38
- inj = eval(`(${data})`) as InjT;
39
- } else if (typeof window !== 'undefined' && window.REACT_UTILS_INJECTION) {
40
- inj = window.REACT_UTILS_INJECTION;
41
- delete window.REACT_UTILS_INJECTION;
42
- } else {
43
- // Otherwise, a bunch of dependent stuff will easily fail in non-standard
44
- // environments, where no client-side initialization is performed. Like tests,
45
- // Docusaurus examples, etc.
46
- inj = {};
47
- }
48
-
49
- export default function getInj(): InjT {
50
- return inj;
51
- }
@@ -1,43 +0,0 @@
1
- // Initialization of client-side code.
2
- /* global document */
3
-
4
- import type { ComponentType } from 'react';
5
- import { createRoot, hydrateRoot } from 'react-dom/client';
6
- import { HelmetProvider } from '@dr.pogodin/react-helmet';
7
- import { BrowserRouter } from 'react-router';
8
-
9
- import { GlobalStateProvider } from '@dr.pogodin/react-global-state';
10
-
11
- import getInj from './getInj';
12
-
13
- type OptionsT = {
14
- dontHydrate?: boolean;
15
- initialState?: unknown;
16
- };
17
-
18
- /**
19
- * Prepares and launches the app at client side.
20
- * @param Application Root application component
21
- * @param [options={}] Optional. Additional settings.
22
- */
23
- export default function Launch(
24
- Application: ComponentType,
25
- options: OptionsT = {},
26
- ): void {
27
- const container = document.getElementById('react-view');
28
- if (!container) throw Error('Failed to find container for React app');
29
- const scene = (
30
- <GlobalStateProvider initialState={getInj().ISTATE ?? options.initialState}>
31
- <BrowserRouter>
32
- <HelmetProvider>
33
- <Application />
34
- </HelmetProvider>
35
- </BrowserRouter>
36
- </GlobalStateProvider>
37
- );
38
-
39
- if (options.dontHydrate) {
40
- const root = createRoot(container);
41
- root.render(scene);
42
- } else hydrateRoot(container, scene);
43
- }
@@ -1,52 +0,0 @@
1
- /**
2
- * Initialization of client-side environment.
3
- */
4
-
5
- /* global window */
6
-
7
- import { type BuildInfoT, getBuildInfo } from 'utils/isomorphy/buildInfo';
8
-
9
- const buildInfo = getBuildInfo();
10
-
11
- // TODO: Should be moved into buildInfo module?
12
- declare global {
13
- // eslint-disable-next-line @typescript-eslint/consistent-type-definitions
14
- interface Window {
15
- __DEV_BUILD_INFO__: BuildInfoT | undefined;
16
- }
17
- }
18
-
19
- declare const BUILD_INFO: BuildInfoT | undefined;
20
-
21
- if (process.env.NODE_ENV !== 'production') {
22
- // eslint-disable-next-line no-console
23
- console.warn('Dev mode: "BUILD_INFO" attached to the global "window"');
24
-
25
- // eslint-disable-next-line no-underscore-dangle
26
- window.__DEV_BUILD_INFO__ = BUILD_INFO;
27
- }
28
-
29
- /* TODO: A proper logger should be moved to `@dr.pogodin/react-utils`. */
30
- const { useServiceWorker } = buildInfo;
31
- if (useServiceWorker) {
32
- const { navigator } = window;
33
- if ('serviceWorker' in navigator) {
34
- window.addEventListener('load', () => {
35
- void (async () => {
36
- try {
37
- // Note: no matter the "publicPath", we want to serve the service worker
38
- // from the web app root, to allow it control any and all pages of the
39
- // web app (otherwise, it will be restricted to the scope of its path).
40
- // The server takes it into account.
41
- const reg = await navigator
42
- .serviceWorker.register('/__service-worker.js');
43
- // eslint-disable-next-line no-console
44
- console.log('SW registered:', reg);
45
- } catch (err) {
46
- // eslint-disable-next-line no-console
47
- console.log('SW registration failed:', err);
48
- }
49
- })();
50
- });
51
- }
52
- }
package/src/index.ts DELETED
@@ -1,79 +0,0 @@
1
- import 'styles/global.scss';
2
-
3
- import { webpack } from 'utils';
4
-
5
- import type * as ClientM from './client';
6
- import type * as ServerFactoryM from './server';
7
-
8
- // It is a safeguard against multiple instances / versions of the library
9
- // being loaded into environment by mistake (e.g. because of different
10
- // packages pinning down different exact versions of the lib, thus preventing
11
- // a proper dedupe and using a single common library version).
12
- if (global.REACT_UTILS_LIBRARY_LOADED) {
13
- throw Error('React utils library is already loaded');
14
- } else global.REACT_UTILS_LIBRARY_LOADED = true;
15
-
16
- // TODO: This is a rapid workaround to get rid of __dirname. I guess, later
17
- // we'll re-implement requireWeak() to accept import.meta.url directly, and
18
- // this workaround won't be needed.
19
- let dirname = import.meta.url;
20
- dirname = dirname.slice(5, dirname.lastIndexOf('/'));
21
-
22
- const server = webpack.requireWeak<typeof ServerFactoryM>('./server', dirname);
23
-
24
- const client = server
25
- ? undefined
26
-
27
- // eslint-disable-next-line @typescript-eslint/no-require-imports
28
- : (require('./client') as typeof ClientM).default;
29
-
30
- export {
31
- type AsyncCollectionT,
32
- type AsyncCollectionLoaderT,
33
- type AsyncDataEnvelopeT,
34
- type AsyncDataLoaderT,
35
- type ForceT,
36
- type UseAsyncDataOptionsT,
37
- type UseAsyncDataResT,
38
- type UseGlobalStateResT,
39
- type ValueOrInitializerT,
40
- getGlobalState,
41
- GlobalStateProvider,
42
- newAsyncDataEnvelope,
43
- useAsyncCollection,
44
- useAsyncData,
45
- useGlobalState,
46
- withGlobalStateType,
47
- } from '@dr.pogodin/react-global-state';
48
-
49
- export * from 'components';
50
-
51
- export {
52
- type BeforeRenderResT,
53
- type BeforeRenderT,
54
- type ConfigT,
55
- type ServerSsrContext,
56
- type ServerT,
57
- } from './server';
58
-
59
- export {
60
- assertEmptyObject,
61
- config,
62
- Barrier,
63
- Cached,
64
- Emitter,
65
- isomorphy,
66
- getSsrContext,
67
- type Listener,
68
- type ObjectKey,
69
- Semaphore,
70
- splitComponent,
71
- type Theme,
72
- themed,
73
- ThemeProvider,
74
- time,
75
- webpack,
76
- withRetries,
77
- } from 'utils';
78
-
79
- export { client, server };
@@ -1,61 +0,0 @@
1
- type CachedItemT<DatumT> = {
2
- data: DatumT;
3
- size: number;
4
- timestamp: number;
5
- };
6
-
7
- /**
8
- * Implements the static cache.
9
- */
10
- export default class Cache<DatumT> {
11
- private items: Record<string, CachedItemT<DatumT>> = {};
12
-
13
- private size = 0;
14
-
15
- constructor(private maxSize: number) { }
16
-
17
- /**
18
- * Cache lookup.
19
- * @param key Item key to look for.
20
- * @param [maxage=Number.MAX_VALUE] Optional. The maximum age of
21
- * cached item to serve. Default to infinite.
22
- * @returns Cached item, or null if the item is absent in cache,
23
- * or stale.
24
- */
25
- get({
26
- key,
27
- maxage = Number.MAX_VALUE,
28
- }: {
29
- key: string;
30
- maxage?: number;
31
- }): DatumT | null {
32
- const item = this.items[key];
33
- return item && Date.now() - item.timestamp < maxage ? item.data : null;
34
- }
35
-
36
- /**
37
- * Adds item to cache.
38
- * @param data Item to add.
39
- * @param key Key to store the item at.
40
- * @param size Byte size of the item.
41
- */
42
- add(data: DatumT, key: string, size: number): void {
43
- const cached = this.items[key];
44
- if (cached) this.size -= cached.size;
45
-
46
- this.items[key] = { data, size, timestamp: Date.now() };
47
- this.size += size;
48
-
49
- if (this.size > this.maxSize) {
50
- const entries = Object.entries(this.items);
51
- entries.sort((a, b) => a[1].timestamp - b[1].timestamp);
52
-
53
- for (const entry of entries) {
54
- const [itemKey, item] = entry;
55
- delete this.items[itemKey];
56
- this.size -= item.size;
57
- if (this.size < this.maxSize / 2) break;
58
- }
59
- }
60
- }
61
- }