@tramvai/cli 5.53.80 → 6.62.0

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 (401) hide show
  1. package/bin/spawn.js +8 -2
  2. package/lib/api/start/application.experimental.d.ts +7 -0
  3. package/lib/api/start/application.experimental.d.ts.map +1 -0
  4. package/lib/api/start/application.experimental.js +275 -0
  5. package/lib/api/start/application.experimental.js.map +1 -0
  6. package/lib/api/start/index.d.ts +1 -0
  7. package/lib/api/start/index.d.ts.map +1 -1
  8. package/lib/api/start/index.js +17 -6
  9. package/lib/api/start/index.js.map +1 -1
  10. package/lib/builder/webpack/devServer/setup.d.ts.map +1 -1
  11. package/lib/builder/webpack/devServer/setup.js +3 -1
  12. package/lib/builder/webpack/devServer/setup.js.map +1 -1
  13. package/lib/builder/webpack/providers/analyze/shared.d.ts.map +1 -1
  14. package/lib/builder/webpack/providers/analyze/shared.js +5 -9
  15. package/lib/builder/webpack/providers/analyze/shared.js.map +1 -1
  16. package/lib/builder/webpack/providers/client.d.ts.map +1 -1
  17. package/lib/builder/webpack/providers/client.js +10 -9
  18. package/lib/builder/webpack/providers/client.js.map +1 -1
  19. package/lib/builder/webpack/providers/server.d.ts.map +1 -1
  20. package/lib/builder/webpack/providers/server.js +10 -9
  21. package/lib/builder/webpack/providers/server.js.map +1 -1
  22. package/lib/cli/CLI.d.ts +1 -1
  23. package/lib/cli/CLI.d.ts.map +1 -1
  24. package/lib/cli/CLI.js.map +1 -1
  25. package/lib/cli/bin-init.js +0 -2
  26. package/lib/cli/bin-init.js.map +1 -1
  27. package/lib/cli/index.d.ts.map +1 -1
  28. package/lib/cli/index.js +1 -12
  29. package/lib/cli/index.js.map +1 -1
  30. package/lib/cli/runCLI.d.ts.map +1 -1
  31. package/lib/cli/runCLI.js.map +1 -1
  32. package/lib/commands/add/command.d.ts +1 -4
  33. package/lib/commands/add/command.d.ts.map +1 -1
  34. package/lib/commands/add/command.js +3 -2
  35. package/lib/commands/add/command.js.map +1 -1
  36. package/lib/commands/analyze/command.d.ts +1 -1
  37. package/lib/commands/analyze/command.d.ts.map +1 -1
  38. package/lib/commands/analyze/command.js +11 -13
  39. package/lib/commands/analyze/command.js.map +1 -1
  40. package/lib/commands/benchmark/command.d.ts +1 -1
  41. package/lib/commands/benchmark/command.d.ts.map +1 -1
  42. package/lib/commands/benchmark/command.js +8 -9
  43. package/lib/commands/benchmark/command.js.map +1 -1
  44. package/lib/commands/build/build.d.ts.map +1 -1
  45. package/lib/commands/build/build.js +1 -0
  46. package/lib/commands/build/build.js.map +1 -1
  47. package/lib/commands/build/command.d.ts +1 -1
  48. package/lib/commands/build/command.d.ts.map +1 -1
  49. package/lib/commands/build/command.js +12 -15
  50. package/lib/commands/build/command.js.map +1 -1
  51. package/lib/commands/generate/command.d.ts +1 -1
  52. package/lib/commands/generate/command.d.ts.map +1 -1
  53. package/lib/commands/generate/command.js +3 -2
  54. package/lib/commands/generate/command.js.map +1 -1
  55. package/lib/commands/lint/command.d.ts +1 -1
  56. package/lib/commands/lint/command.d.ts.map +1 -1
  57. package/lib/commands/lint/command.js +3 -2
  58. package/lib/commands/lint/command.js.map +1 -1
  59. package/lib/commands/new/command.d.ts +0 -1
  60. package/lib/commands/new/command.d.ts.map +1 -1
  61. package/lib/commands/new/command.js +0 -1
  62. package/lib/commands/new/command.js.map +1 -1
  63. package/lib/commands/new/steps/installDependencies.js +3 -3
  64. package/lib/commands/new/steps/installDependencies.js.map +1 -1
  65. package/lib/commands/start/command.d.ts +1 -1
  66. package/lib/commands/start/command.d.ts.map +1 -1
  67. package/lib/commands/start/command.js +18 -15
  68. package/lib/commands/start/command.js.map +1 -1
  69. package/lib/commands/start-prod/command.d.ts +1 -1
  70. package/lib/commands/start-prod/command.d.ts.map +1 -1
  71. package/lib/commands/start-prod/command.js +11 -13
  72. package/lib/commands/start-prod/command.js.map +1 -1
  73. package/lib/commands/static/command.d.ts +1 -1
  74. package/lib/commands/static/command.d.ts.map +1 -1
  75. package/lib/commands/static/command.js +7 -3
  76. package/lib/commands/static/command.js.map +1 -1
  77. package/lib/commands/update/command.d.ts +1 -4
  78. package/lib/commands/update/command.d.ts.map +1 -1
  79. package/lib/commands/update/command.js +3 -2
  80. package/lib/commands/update/command.js.map +1 -1
  81. package/lib/external/config.d.ts.map +1 -1
  82. package/lib/external/config.js.map +1 -1
  83. package/lib/library/babel/index.d.ts +3 -9
  84. package/lib/library/babel/index.d.ts.map +1 -1
  85. package/lib/library/babel/index.js +3 -132
  86. package/lib/library/babel/index.js.map +1 -1
  87. package/lib/library/swc/index.d.ts +3 -3
  88. package/lib/library/swc/index.d.ts.map +1 -1
  89. package/lib/library/swc/index.js +4 -114
  90. package/lib/library/swc/index.js.map +1 -1
  91. package/lib/library/webpack/application/client/common.d.ts.map +1 -1
  92. package/lib/library/webpack/application/client/common.js +10 -9
  93. package/lib/library/webpack/application/client/common.js.map +1 -1
  94. package/lib/library/webpack/application/common.d.ts.map +1 -1
  95. package/lib/library/webpack/application/common.js +3 -4
  96. package/lib/library/webpack/application/common.js.map +1 -1
  97. package/lib/library/webpack/blocks/pwa/client.d.ts.map +1 -1
  98. package/lib/library/webpack/blocks/pwa/client.js +9 -58
  99. package/lib/library/webpack/blocks/pwa/client.js.map +1 -1
  100. package/lib/library/webpack/blocks/resolve.d.ts.map +1 -1
  101. package/lib/library/webpack/blocks/resolve.js +1 -0
  102. package/lib/library/webpack/blocks/resolve.js.map +1 -1
  103. package/lib/library/webpack/child-app/client/common.d.ts.map +1 -1
  104. package/lib/library/webpack/child-app/client/common.js +2 -2
  105. package/lib/library/webpack/child-app/client/common.js.map +1 -1
  106. package/lib/library/webpack/child-app/common.d.ts.map +1 -1
  107. package/lib/library/webpack/child-app/common.js +3 -4
  108. package/lib/library/webpack/child-app/common.js.map +1 -1
  109. package/lib/library/webpack/utils/threadLoader.d.ts.map +1 -1
  110. package/lib/library/webpack/utils/threadLoader.js +20 -3
  111. package/lib/library/webpack/utils/threadLoader.js.map +1 -1
  112. package/lib/library/webpack/utils/transpiler.js +1 -1
  113. package/lib/library/webpack/utils/transpiler.js.map +1 -1
  114. package/lib/models/analytics/utils.d.ts +2 -1
  115. package/lib/models/analytics/utils.d.ts.map +1 -1
  116. package/lib/models/analytics/utils.js +3 -0
  117. package/lib/models/analytics/utils.js.map +1 -1
  118. package/lib/models/command.d.ts +1 -1
  119. package/lib/models/command.d.ts.map +1 -1
  120. package/lib/models/command.js +1 -1
  121. package/lib/models/command.js.map +1 -1
  122. package/lib/models/context.d.ts +1 -1
  123. package/lib/models/context.d.ts.map +1 -1
  124. package/lib/models/logger.d.ts +0 -1
  125. package/lib/models/logger.d.ts.map +1 -1
  126. package/lib/models/logger.js +2 -3
  127. package/lib/models/logger.js.map +1 -1
  128. package/lib/schema/autogeneratedSchema.json +15 -15
  129. package/lib/typings/configEntry/application.d.ts +1 -1
  130. package/lib/typings/configEntry/application.d.ts.map +1 -1
  131. package/lib/typings/public.d.ts +0 -1
  132. package/lib/typings/public.d.ts.map +1 -1
  133. package/lib/typings/public.js +0 -2
  134. package/lib/typings/public.js.map +1 -1
  135. package/lib/utils/cpu-profile.d.ts.map +1 -1
  136. package/lib/utils/cpu-profile.js +0 -1
  137. package/lib/utils/cpu-profile.js.map +1 -1
  138. package/package.json +23 -27
  139. package/schema.json +15 -15
  140. package/src/api/start/__integration__/start.test.ts +8 -0
  141. package/src/api/start/application.experimental.ts +305 -0
  142. package/src/api/start/index.ts +20 -4
  143. package/src/builder/webpack/devServer/setup.ts +1 -0
  144. package/src/builder/webpack/providers/analyze/shared.ts +6 -10
  145. package/src/builder/webpack/providers/client.ts +15 -10
  146. package/src/builder/webpack/providers/server.ts +15 -10
  147. package/src/cli/CLI.ts +1 -1
  148. package/src/cli/bin-init.ts +0 -2
  149. package/src/cli/index.ts +4 -11
  150. package/src/cli/runCLI.ts +0 -1
  151. package/src/commands/add/command.ts +3 -2
  152. package/src/commands/analyze/command.ts +12 -14
  153. package/src/commands/benchmark/command.ts +9 -10
  154. package/src/commands/build/build.ts +2 -0
  155. package/src/commands/build/command.ts +13 -16
  156. package/src/commands/generate/command.ts +3 -2
  157. package/src/commands/lint/command.ts +3 -2
  158. package/src/commands/new/command.ts +0 -2
  159. package/src/commands/new/steps/installDependencies.ts +3 -3
  160. package/src/commands/new/templates/shared/_prettierrc.js.hbs +1 -1
  161. package/src/commands/start/command.ts +20 -16
  162. package/src/commands/start-prod/command.ts +12 -14
  163. package/src/commands/static/command.ts +7 -3
  164. package/src/commands/update/command.ts +3 -2
  165. package/src/external/config.ts +1 -0
  166. package/src/library/babel/index.ts +3 -160
  167. package/src/library/swc/__integration__/__snapshots__/swc.build.test.ts.snap +46 -28
  168. package/src/library/swc/__integration__/__snapshots__/swc.start.test.ts.snap +12 -8
  169. package/src/library/swc/__integration__/swc.start.test.ts +4 -4
  170. package/src/library/swc/index.ts +3 -139
  171. package/src/library/webpack/application/client/common.ts +12 -7
  172. package/src/library/webpack/application/common.ts +8 -4
  173. package/src/library/webpack/blocks/pwa/client.ts +13 -64
  174. package/src/library/webpack/blocks/resolve.ts +1 -0
  175. package/src/library/webpack/child-app/client/common.ts +2 -2
  176. package/src/library/webpack/child-app/common.ts +7 -5
  177. package/src/library/webpack/utils/threadLoader.ts +21 -0
  178. package/src/library/webpack/utils/transpiler.ts +2 -2
  179. package/src/models/analytics/utils.ts +6 -2
  180. package/src/models/command.ts +3 -4
  181. package/src/models/context.ts +1 -1
  182. package/src/models/logger.ts +1 -3
  183. package/src/schema/autogeneratedSchema.json +15 -15
  184. package/src/typings/configEntry/application.ts +5 -1
  185. package/src/typings/public.ts +0 -2
  186. package/src/utils/cpu-profile.ts +0 -1
  187. package/lib/library/babel/plugins/create-token-pure.d.ts +0 -7
  188. package/lib/library/babel/plugins/create-token-pure.d.ts.map +0 -1
  189. package/lib/library/babel/plugins/create-token-pure.js +0 -39
  190. package/lib/library/babel/plugins/create-token-pure.js.map +0 -1
  191. package/lib/library/babel/plugins/fill-action-name.d.ts +0 -3
  192. package/lib/library/babel/plugins/fill-action-name.d.ts.map +0 -1
  193. package/lib/library/babel/plugins/fill-action-name.js +0 -107
  194. package/lib/library/babel/plugins/fill-action-name.js.map +0 -1
  195. package/lib/library/babel/plugins/fill-declare-action-name.d.ts +0 -6
  196. package/lib/library/babel/plugins/fill-declare-action-name.d.ts.map +0 -1
  197. package/lib/library/babel/plugins/fill-declare-action-name.js +0 -94
  198. package/lib/library/babel/plugins/fill-declare-action-name.js.map +0 -1
  199. package/lib/library/babel/plugins/lazy-component/lazy-component.d.ts +0 -7
  200. package/lib/library/babel/plugins/lazy-component/lazy-component.d.ts.map +0 -1
  201. package/lib/library/babel/plugins/lazy-component/lazy-component.js +0 -75
  202. package/lib/library/babel/plugins/lazy-component/lazy-component.js.map +0 -1
  203. package/lib/library/babel/plugins/lazy-component/legacy-universal-replace.d.ts +0 -14
  204. package/lib/library/babel/plugins/lazy-component/legacy-universal-replace.d.ts.map +0 -1
  205. package/lib/library/babel/plugins/lazy-component/legacy-universal-replace.js +0 -53
  206. package/lib/library/babel/plugins/lazy-component/legacy-universal-replace.js.map +0 -1
  207. package/lib/library/babel/plugins/lazy-component/properties/chunkName.d.ts +0 -3
  208. package/lib/library/babel/plugins/lazy-component/properties/chunkName.d.ts.map +0 -1
  209. package/lib/library/babel/plugins/lazy-component/properties/chunkName.js +0 -133
  210. package/lib/library/babel/plugins/lazy-component/properties/chunkName.js.map +0 -1
  211. package/lib/library/babel/plugins/lazy-component/properties/importAsync.d.ts +0 -3
  212. package/lib/library/babel/plugins/lazy-component/properties/importAsync.d.ts.map +0 -1
  213. package/lib/library/babel/plugins/lazy-component/properties/importAsync.js +0 -11
  214. package/lib/library/babel/plugins/lazy-component/properties/importAsync.js.map +0 -1
  215. package/lib/library/babel/plugins/lazy-component/properties/isReady.d.ts +0 -3
  216. package/lib/library/babel/plugins/lazy-component/properties/isReady.d.ts.map +0 -1
  217. package/lib/library/babel/plugins/lazy-component/properties/isReady.js +0 -14
  218. package/lib/library/babel/plugins/lazy-component/properties/isReady.js.map +0 -1
  219. package/lib/library/babel/plugins/lazy-component/properties/requireAsync.d.ts +0 -3
  220. package/lib/library/babel/plugins/lazy-component/properties/requireAsync.d.ts.map +0 -1
  221. package/lib/library/babel/plugins/lazy-component/properties/requireAsync.js +0 -15
  222. package/lib/library/babel/plugins/lazy-component/properties/requireAsync.js.map +0 -1
  223. package/lib/library/babel/plugins/lazy-component/properties/requireSync.d.ts +0 -3
  224. package/lib/library/babel/plugins/lazy-component/properties/requireSync.d.ts.map +0 -1
  225. package/lib/library/babel/plugins/lazy-component/properties/requireSync.js +0 -16
  226. package/lib/library/babel/plugins/lazy-component/properties/requireSync.js.map +0 -1
  227. package/lib/library/babel/plugins/lazy-component/properties/resolve.d.ts +0 -3
  228. package/lib/library/babel/plugins/lazy-component/properties/resolve.d.ts.map +0 -1
  229. package/lib/library/babel/plugins/lazy-component/properties/resolve.js +0 -14
  230. package/lib/library/babel/plugins/lazy-component/properties/resolve.js.map +0 -1
  231. package/lib/library/babel/plugins/lazy-component/properties/types.d.ts +0 -14
  232. package/lib/library/babel/plugins/lazy-component/properties/types.d.ts.map +0 -1
  233. package/lib/library/babel/plugins/lazy-component/properties/types.js +0 -3
  234. package/lib/library/babel/plugins/lazy-component/properties/types.js.map +0 -1
  235. package/lib/library/babel/plugins/lazy-component/properties/utils/webpackComments.d.ts +0 -14
  236. package/lib/library/babel/plugins/lazy-component/properties/utils/webpackComments.d.ts.map +0 -1
  237. package/lib/library/babel/plugins/lazy-component/properties/utils/webpackComments.js +0 -57
  238. package/lib/library/babel/plugins/lazy-component/properties/utils/webpackComments.js.map +0 -1
  239. package/lib/library/babel/plugins/provider-stack.d.ts +0 -4
  240. package/lib/library/babel/plugins/provider-stack.d.ts.map +0 -1
  241. package/lib/library/babel/plugins/provider-stack.js +0 -63
  242. package/lib/library/babel/plugins/provider-stack.js.map +0 -1
  243. package/lib/library/babel/plugins/react-compiler.d.ts +0 -13
  244. package/lib/library/babel/plugins/react-compiler.d.ts.map +0 -1
  245. package/lib/library/babel/plugins/react-compiler.js +0 -27
  246. package/lib/library/babel/plugins/react-compiler.js.map +0 -1
  247. package/lib/library/babel/plugins/react-element-info-unique.d.ts +0 -26
  248. package/lib/library/babel/plugins/react-element-info-unique.d.ts.map +0 -1
  249. package/lib/library/babel/plugins/react-element-info-unique.js +0 -112
  250. package/lib/library/babel/plugins/react-element-info-unique.js.map +0 -1
  251. package/lib/library/babel/plugins/types.h.d.ts +0 -7
  252. package/lib/library/babel/plugins/types.h.d.ts.map +0 -1
  253. package/lib/library/babel/plugins/types.h.js +0 -3
  254. package/lib/library/babel/plugins/types.h.js.map +0 -1
  255. package/lib/library/webpack/plugins/AssetsIntegritiesPlugin.d.ts +0 -8
  256. package/lib/library/webpack/plugins/AssetsIntegritiesPlugin.d.ts.map +0 -1
  257. package/lib/library/webpack/plugins/AssetsIntegritiesPlugin.js +0 -29
  258. package/lib/library/webpack/plugins/AssetsIntegritiesPlugin.js.map +0 -1
  259. package/lib/library/webpack/plugins/AutoPublicPathPlugin.d.ts +0 -4
  260. package/lib/library/webpack/plugins/AutoPublicPathPlugin.d.ts.map +0 -1
  261. package/lib/library/webpack/plugins/AutoPublicPathPlugin.js +0 -23
  262. package/lib/library/webpack/plugins/AutoPublicPathPlugin.js.map +0 -1
  263. package/lib/library/webpack/plugins/ModuleFederationFixRange.d.ts +0 -24
  264. package/lib/library/webpack/plugins/ModuleFederationFixRange.d.ts.map +0 -1
  265. package/lib/library/webpack/plugins/ModuleFederationFixRange.js +0 -127
  266. package/lib/library/webpack/plugins/ModuleFederationFixRange.js.map +0 -1
  267. package/lib/library/webpack/plugins/ModuleFederationIgnoreEntries.d.ts +0 -15
  268. package/lib/library/webpack/plugins/ModuleFederationIgnoreEntries.d.ts.map +0 -1
  269. package/lib/library/webpack/plugins/ModuleFederationIgnoreEntries.js +0 -49
  270. package/lib/library/webpack/plugins/ModuleFederationIgnoreEntries.js.map +0 -1
  271. package/lib/library/webpack/plugins/PolyfillCondition.d.ts +0 -8
  272. package/lib/library/webpack/plugins/PolyfillCondition.d.ts.map +0 -1
  273. package/lib/library/webpack/plugins/PolyfillCondition.js +0 -46
  274. package/lib/library/webpack/plugins/PolyfillCondition.js.map +0 -1
  275. package/lib/library/webpack/plugins/PurifyStatsPlugin.d.ts +0 -15
  276. package/lib/library/webpack/plugins/PurifyStatsPlugin.d.ts.map +0 -1
  277. package/lib/library/webpack/plugins/PurifyStatsPlugin.js +0 -47
  278. package/lib/library/webpack/plugins/PurifyStatsPlugin.js.map +0 -1
  279. package/lib/library/webpack/plugins/PwaIconsPlugin.d.ts +0 -12
  280. package/lib/library/webpack/plugins/PwaIconsPlugin.d.ts.map +0 -1
  281. package/lib/library/webpack/plugins/PwaIconsPlugin.js +0 -78
  282. package/lib/library/webpack/plugins/PwaIconsPlugin.js.map +0 -1
  283. package/lib/library/webpack/plugins/WebManifestPlugin.d.ts +0 -13
  284. package/lib/library/webpack/plugins/WebManifestPlugin.d.ts.map +0 -1
  285. package/lib/library/webpack/plugins/WebManifestPlugin.js +0 -47
  286. package/lib/library/webpack/plugins/WebManifestPlugin.js.map +0 -1
  287. package/lib/library/webpack/utils/polyfills/const.d.ts +0 -3
  288. package/lib/library/webpack/utils/polyfills/const.d.ts.map +0 -1
  289. package/lib/library/webpack/utils/polyfills/const.js +0 -49
  290. package/lib/library/webpack/utils/polyfills/const.js.map +0 -1
  291. package/lib/library/webpack/utils/polyfills/polyfillCondition.d.ts +0 -8
  292. package/lib/library/webpack/utils/polyfills/polyfillCondition.d.ts.map +0 -1
  293. package/lib/library/webpack/utils/polyfills/polyfillCondition.js +0 -51
  294. package/lib/library/webpack/utils/polyfills/polyfillCondition.js.map +0 -1
  295. package/lib/library/webpack/utils/polyfills/specToFeature.d.ts +0 -7
  296. package/lib/library/webpack/utils/polyfills/specToFeature.d.ts.map +0 -1
  297. package/lib/library/webpack/utils/polyfills/specToFeature.js +0 -207
  298. package/lib/library/webpack/utils/polyfills/specToFeature.js.map +0 -1
  299. package/lib/models/analytics/analytics.d.ts +0 -156
  300. package/lib/models/analytics/analytics.d.ts.map +0 -1
  301. package/lib/models/analytics/analytics.js +0 -259
  302. package/lib/models/analytics/analytics.js.map +0 -1
  303. package/lib/models/analytics/analytics.worker.d.ts +0 -5
  304. package/lib/models/analytics/analytics.worker.d.ts.map +0 -1
  305. package/lib/models/analytics/analytics.worker.js +0 -87
  306. package/lib/models/analytics/analytics.worker.js.map +0 -1
  307. package/lib/typings/pwa/index.d.ts +0 -80
  308. package/lib/typings/pwa/index.d.ts.map +0 -1
  309. package/lib/typings/pwa/index.js +0 -3
  310. package/lib/typings/pwa/index.js.map +0 -1
  311. package/lib/utils/errors.d.ts +0 -7
  312. package/lib/utils/errors.d.ts.map +0 -1
  313. package/lib/utils/errors.js +0 -43
  314. package/lib/utils/errors.js.map +0 -1
  315. package/lib/utils/memoryUsage.d.ts +0 -20
  316. package/lib/utils/memoryUsage.d.ts.map +0 -1
  317. package/lib/utils/memoryUsage.js +0 -51
  318. package/lib/utils/memoryUsage.js.map +0 -1
  319. package/lib/utils/sentry.d.ts +0 -2
  320. package/lib/utils/sentry.d.ts.map +0 -1
  321. package/lib/utils/sentry.js +0 -27
  322. package/lib/utils/sentry.js.map +0 -1
  323. package/src/library/babel/plugins/__fixtures__/create-token-pure/already-has-comment.ts +0 -5
  324. package/src/library/babel/plugins/__fixtures__/create-token-pure/do-nothing.ts +0 -10
  325. package/src/library/babel/plugins/__fixtures__/create-token-pure/from-core.ts +0 -5
  326. package/src/library/babel/plugins/__fixtures__/create-token-pure/from-dippy.ts +0 -5
  327. package/src/library/babel/plugins/__fixtures__/create-token-pure/many-imports.ts +0 -9
  328. package/src/library/babel/plugins/__fixtures__/fill-declare-action-name/import-mixed.ts +0 -17
  329. package/src/library/babel/plugins/__fixtures__/fill-declare-action-name/import-with-name.ts +0 -28
  330. package/src/library/babel/plugins/__fixtures__/fill-declare-action-name/import-without-name.ts +0 -25
  331. package/src/library/babel/plugins/__fixtures__/fill-declare-action-name/require-with-name.ts +0 -21
  332. package/src/library/babel/plugins/__fixtures__/fill-declare-action-name/require-without-name.ts +0 -19
  333. package/src/library/babel/plugins/__fixtures__/lazy-component/base.ts +0 -3
  334. package/src/library/babel/plugins/__fixtures__/lazy-component/cmp.tsx +0 -7
  335. package/src/library/babel/plugins/__fixtures__/lazy-component/comments.ts +0 -7
  336. package/src/library/babel/plugins/__fixtures__/lazy-component/dynamic.ts +0 -3
  337. package/src/library/babel/plugins/__fixtures__/lazy-component/inner/first.tsx +0 -7
  338. package/src/library/babel/plugins/__fixtures__/lazy-component/inner/path/cmp.tsx +0 -7
  339. package/src/library/babel/plugins/__fixtures__/lazy-component/inner/second.tsx +0 -7
  340. package/src/library/babel/plugins/__fixtures__/lazy-component/inner/third.tsx +0 -7
  341. package/src/library/babel/plugins/__fixtures__/lazy-component/lazy+hmr.ts +0 -3
  342. package/src/library/babel/plugins/__fixtures__/lazy-component/long-import.ts +0 -3
  343. package/src/library/babel/plugins/__fixtures__/lazy-component/not-lazy-import.ts +0 -7
  344. package/src/library/babel/plugins/__fixtures__/lazy-component/not-lazy.ts +0 -8
  345. package/src/library/babel/plugins/__fixtures__/legacy-universal-replace/cmp.tsx +0 -7
  346. package/src/library/babel/plugins/__fixtures__/legacy-universal-replace/not-universal.ts +0 -8
  347. package/src/library/babel/plugins/__fixtures__/legacy-universal-replace/platform-legacy.ts +0 -5
  348. package/src/library/babel/plugins/__fixtures__/legacy-universal-replace/react-universal.ts +0 -3
  349. package/src/library/babel/plugins/__fixtures__/legacy-universal-replace/tramvai/react/index.es.ts +0 -3
  350. package/src/library/babel/plugins/__fixtures__/provider-stack/add-stack.ts +0 -22
  351. package/src/library/babel/plugins/__fixtures__/provider-stack/check-function-name.ts +0 -10
  352. package/src/library/babel/plugins/__fixtures__/provider-stack/do-nothing.ts +0 -16
  353. package/src/library/babel/plugins/__fixtures__/provider-stack/error-in-scope.ts +0 -24
  354. package/src/library/babel/plugins/__fixtures__/provider-stack/inside-await.ts +0 -12
  355. package/src/library/babel/plugins/__fixtures__/provider-stack/module-decorator.ts +0 -27
  356. package/src/library/babel/plugins/__snapshots__/create-token-pure.spec.ts.snap +0 -108
  357. package/src/library/babel/plugins/__snapshots__/fill-declare-action-name.spec.ts.snap +0 -264
  358. package/src/library/babel/plugins/__snapshots__/provider-stack.spec.ts.snap +0 -362
  359. package/src/library/babel/plugins/create-token-pure.spec.ts +0 -39
  360. package/src/library/babel/plugins/create-token-pure.ts +0 -47
  361. package/src/library/babel/plugins/fill-action-name.ts +0 -126
  362. package/src/library/babel/plugins/fill-declare-action-name.spec.ts +0 -37
  363. package/src/library/babel/plugins/fill-declare-action-name.ts +0 -110
  364. package/src/library/babel/plugins/lazy-component/__snapshots__/lazy-component.spec.ts.snap +0 -313
  365. package/src/library/babel/plugins/lazy-component/__snapshots__/legacy-universal-replace.spec.ts.snap +0 -114
  366. package/src/library/babel/plugins/lazy-component/lazy-component.spec.ts +0 -46
  367. package/src/library/babel/plugins/lazy-component/lazy-component.ts +0 -91
  368. package/src/library/babel/plugins/lazy-component/legacy-universal-replace.spec.ts +0 -33
  369. package/src/library/babel/plugins/lazy-component/legacy-universal-replace.ts +0 -88
  370. package/src/library/babel/plugins/lazy-component/properties/chunkName.ts +0 -185
  371. package/src/library/babel/plugins/lazy-component/properties/importAsync.ts +0 -8
  372. package/src/library/babel/plugins/lazy-component/properties/isReady.ts +0 -19
  373. package/src/library/babel/plugins/lazy-component/properties/requireAsync.ts +0 -20
  374. package/src/library/babel/plugins/lazy-component/properties/requireSync.ts +0 -21
  375. package/src/library/babel/plugins/lazy-component/properties/resolve.ts +0 -21
  376. package/src/library/babel/plugins/lazy-component/properties/types.ts +0 -20
  377. package/src/library/babel/plugins/lazy-component/properties/utils/webpackComments.ts +0 -61
  378. package/src/library/babel/plugins/provider-stack.spec.ts +0 -55
  379. package/src/library/babel/plugins/provider-stack.ts +0 -88
  380. package/src/library/babel/plugins/react-compiler.ts +0 -39
  381. package/src/library/babel/plugins/react-element-info-unique.ts +0 -144
  382. package/src/library/babel/plugins/types.h.ts +0 -8
  383. package/src/library/webpack/plugins/AssetsIntegritiesPlugin.ts +0 -34
  384. package/src/library/webpack/plugins/AutoPublicPathPlugin.ts +0 -23
  385. package/src/library/webpack/plugins/ModuleFederationFixRange.ts +0 -181
  386. package/src/library/webpack/plugins/ModuleFederationIgnoreEntries.ts +0 -59
  387. package/src/library/webpack/plugins/PolyfillCondition.ts +0 -62
  388. package/src/library/webpack/plugins/PurifyStatsPlugin.ts +0 -57
  389. package/src/library/webpack/plugins/PwaIconsPlugin.ts +0 -94
  390. package/src/library/webpack/plugins/WebManifestPlugin.ts +0 -62
  391. package/src/library/webpack/utils/polyfills/__integration__/__snapshots__/condition.test.ts.snap +0 -1348
  392. package/src/library/webpack/utils/polyfills/__integration__/condition.test.ts +0 -128
  393. package/src/library/webpack/utils/polyfills/const.ts +0 -46
  394. package/src/library/webpack/utils/polyfills/polyfillCondition.ts +0 -63
  395. package/src/library/webpack/utils/polyfills/specToFeature.ts +0 -243
  396. package/src/models/analytics/analytics.ts +0 -488
  397. package/src/models/analytics/analytics.worker.ts +0 -102
  398. package/src/typings/pwa/index.ts +0 -83
  399. package/src/utils/errors.ts +0 -39
  400. package/src/utils/memoryUsage.ts +0 -58
  401. package/src/utils/sentry.ts +0 -25
@@ -1,128 +0,0 @@
1
- import fs from 'node:fs';
2
- import { fastify } from 'fastify';
3
- import { getPort } from '@tramvai/internal-test-utils/utils/getPort';
4
- import { initPlaywright } from '@tramvai/test-pw';
5
- import { getMaxBrowserVersionsByFeatures, getPolyfillCondition } from '../polyfillCondition';
6
- import { getSpecToFeatureDict } from '../specToFeature';
7
-
8
- const polyfillEntryPath = require.resolve('@tinkoff/pack-polyfills');
9
- const polyfillsEntryContent = fs.readFileSync(polyfillEntryPath, 'utf-8');
10
-
11
- // import 'core-js/modules/es.array.at'; => 'es.array.at'
12
- const usedFeatures = [...polyfillsEntryContent.matchAll(/core-js\/modules\/(.*)'/gm)].map(
13
- (item) => item[1]
14
- );
15
-
16
- jest.setTimeout(3 * 60 * 1000);
17
-
18
- describe('polyfills', () => {
19
- let server;
20
- let port;
21
- let testUrl;
22
-
23
- beforeAll(async () => {
24
- server = fastify();
25
- port = await getPort();
26
- testUrl = `http://localhost:${port}`;
27
-
28
- server.get('*', () => '<html></html>');
29
- server.listen({ port });
30
- });
31
-
32
- afterAll(() => {
33
- server.close();
34
- });
35
-
36
- describe('spec to feature generator', () => {
37
- it('should generate feature: expression dictionary', () => {
38
- const specToFeatureDict = getSpecToFeatureDict();
39
-
40
- expect(specToFeatureDict).toMatchSnapshot('featureDict');
41
- });
42
-
43
- it('all feature expresssion should be valid', async () => {
44
- const specToFeatureDict = getSpecToFeatureDict();
45
- const { getPageWrapper, browser } = await initPlaywright(testUrl);
46
-
47
- const { page } = await getPageWrapper(testUrl);
48
-
49
- const specExpressionsResult = await page.evaluate(
50
- ([specDict]) => {
51
- const evalResult: Record<string, string> = {};
52
-
53
- for (const featureName in specDict) {
54
- const expression = specDict[featureName];
55
- try {
56
- // eslint-disable-next-line no-eval
57
- const result = eval(`Boolean(${expression})`);
58
- evalResult[featureName] = result;
59
- } catch (err) {
60
- evalResult[featureName] = '';
61
- }
62
- }
63
-
64
- return evalResult;
65
- },
66
- [specToFeatureDict]
67
- );
68
-
69
- expect(specExpressionsResult).toMatchSnapshot('expressionsResult');
70
-
71
- const failedSpecExpressions = [];
72
-
73
- // Неподдерживаемые в браузерах спецификации
74
- const ignoredSpecs = [
75
- 'es.async-disposable-stack',
76
- 'es.disposable-stack',
77
- 'es.suppressed-error',
78
- 'es.web.immediate',
79
- 'web.immediate',
80
- 'es.observable',
81
- ];
82
-
83
- // Проверяем что не прошли проверку только esnext фичи и несколько исключений
84
- for (const specName in specExpressionsResult) {
85
- const specResult = specExpressionsResult[specName];
86
-
87
- if (!specResult && !specName.includes('esnext') && !ignoredSpecs.includes(specName)) {
88
- failedSpecExpressions.push(`${specName} - ${specToFeatureDict[specName]}`);
89
- }
90
- }
91
-
92
- expect(failedSpecExpressions.length).toBe(0);
93
-
94
- await browser.close();
95
- });
96
- });
97
-
98
- describe('polyfill condition', () => {
99
- it('should generate max browser versions dict', () => {
100
- const browserVersions = getMaxBrowserVersionsByFeatures(usedFeatures);
101
-
102
- expect(browserVersions).toMatchSnapshot('browserVersions');
103
- });
104
-
105
- it('should generate valid polyfill condition', async () => {
106
- const browserVersions = getMaxBrowserVersionsByFeatures(usedFeatures);
107
- const polyfillCondition = getPolyfillCondition(browserVersions);
108
-
109
- expect(polyfillCondition).toMatchSnapshot('polyfillCondition');
110
-
111
- const { getPageWrapper, browser } = await initPlaywright(testUrl);
112
-
113
- const { page } = await getPageWrapper(testUrl);
114
-
115
- const polyfillConditionResult = await page.evaluate(
116
- ([expression]) => {
117
- // eslint-disable-next-line no-eval
118
- return eval(expression);
119
- },
120
- [polyfillCondition]
121
- );
122
-
123
- expect(polyfillConditionResult).toBe(false);
124
-
125
- browser.close();
126
- });
127
- });
128
- });
@@ -1,46 +0,0 @@
1
- // List of ignore polyfills
2
- // they are impossible or very difficult to support check in the browser
3
- export const ignoredPolyfills = [
4
- 'es.json.to-string-tag',
5
- 'es.error.to-string',
6
- 'es.aggregate-error.cause',
7
- 'es.iterator',
8
- 'es.object.to-string',
9
- 'es.array.species',
10
- 'es.date.to-primitive',
11
- 'es.function.has-instance',
12
- 'es.string.at-alternative',
13
- 'es.math.to-string-tag',
14
- 'esnext.math.to-string-tag',
15
- 'es.reflect.to-string-tag',
16
- 'esnext.reflect.to-string-tag',
17
- 'esnext.function.metadata',
18
- 'esnext.composite-key',
19
- 'esnext.composite-symbol',
20
- 'web.dom-collections.for-each',
21
- 'web.dom-collections.iterator',
22
- 'web.dom-exception.to-string-tag',
23
- 'web.dom-exception.stack',
24
- 'es.array.unscopables.flat-map',
25
- 'es.array.unscopables.flat',
26
- 'es.array.push',
27
- 'es.set.difference.v2',
28
- 'es.set.intersection.v2',
29
- 'es.set.is-disjoint-from.v2',
30
- 'es.set.is-subset-of.v2',
31
- 'es.set.is-superset-of.v2',
32
- 'es.set.symmetric-difference.v2',
33
- 'es.set.union.v2',
34
- ];
35
-
36
- export const browsers = [
37
- 'chrome',
38
- 'safari',
39
- 'firefox',
40
- 'opera',
41
- 'edge',
42
- 'chrome-android',
43
- 'ios',
44
- 'opera_mobile',
45
- 'samsung',
46
- ];
@@ -1,63 +0,0 @@
1
- import compat from 'core-js-compat';
2
- import { coerce, compare } from 'semver';
3
- import { getSpecToFeatureDict } from './specToFeature';
4
- import { ignoredPolyfills, browsers } from './const';
5
-
6
- type BrowserVersions = Record<string, { version: string; spec: string }>;
7
-
8
- export function getMaxBrowserVersionsByFeatures(usedFeatures: string[]) {
9
- const { data } = compat;
10
- const browserVersions: BrowserVersions = {};
11
-
12
- usedFeatures.forEach((spec) => {
13
- if (ignoredPolyfills.includes(spec)) {
14
- return;
15
- }
16
-
17
- const specBrowsers = data[spec];
18
-
19
- if (!specBrowsers) {
20
- return;
21
- }
22
-
23
- browsers.forEach((browserName) => {
24
- const maxBrowserVersion = specBrowsers[browserName];
25
-
26
- if (
27
- maxBrowserVersion &&
28
- (!browserVersions[browserName] ||
29
- compare(coerce(browserVersions[browserName].version), coerce(maxBrowserVersion)) === -1)
30
- ) {
31
- browserVersions[browserName] = { version: maxBrowserVersion, spec };
32
- }
33
- });
34
- });
35
-
36
- return browserVersions;
37
- }
38
-
39
- export function getPolyfillCondition(browserVersions: BrowserVersions) {
40
- const supportConditions = new Set();
41
-
42
- Object.values(browserVersions).forEach(({ spec }) =>
43
- supportConditions.add(`!(${getSpecToFeature(spec)})`)
44
- );
45
-
46
- const polyfillCondition = [...supportConditions].join(' || ');
47
-
48
- return polyfillCondition;
49
- }
50
-
51
- /**
52
- * Converting the name of the specification into an expression for checking support in runtime
53
- * es.string.at => String.prototype.at
54
- * es.object.assign => Object.assign
55
- */
56
- let specToFeatureDictCache;
57
- function getSpecToFeature(spec) {
58
- if (!specToFeatureDictCache) {
59
- specToFeatureDictCache = getSpecToFeatureDict();
60
- }
61
-
62
- return specToFeatureDictCache[spec];
63
- }
@@ -1,243 +0,0 @@
1
- import path from 'node:path';
2
- import camelCaseName from '@tinkoff/utils/string/camelCaseName';
3
- import { ignoredPolyfills } from './const';
4
-
5
- // built-in-definitions.js file is not listed in the package.json exports of package, so it cannot be imported
6
- // workaround this by using require with an absolute path to file
7
- const pathToDep = require.resolve('babel-plugin-polyfill-corejs3/package.json');
8
- const definitions = require(path.join(path.dirname(pathToDep), '/lib/built-in-definitions.js'));
9
-
10
- // A list of new primitives, their support in browsers was added recently
11
- const newPrimitivies = {
12
- 'weak-map': 'window.WeakMap',
13
- 'weak-set': 'window.WeakSet',
14
- 'async-disposable-stack': 'window.AsyncDisposableStack',
15
- 'disposable-stack': 'window.DisposableStack',
16
- 'suppressed-error': 'window.SuppressedError',
17
- 'web.immediate': 'window.setImmediate',
18
- observable: 'window.Observable',
19
- };
20
-
21
- // A list of primitives for which there are no polyfills, but they are needed as a base for methods like JSON.stringify
22
- const missingBuiltIns = {
23
- ...newPrimitivies,
24
- 'typed-array': 'window.Int8Array',
25
- 'uint8-array': 'window.Uint8Array',
26
- string: 'window.String',
27
- array: 'window.Array',
28
- object: 'window.Object',
29
- math: 'window.Math',
30
- function: 'window.Function',
31
- json: 'window.JSON',
32
- };
33
-
34
- // Exclude fetch builtin, because its treated as object.constructor
35
- const excludedBuiltIns = ['fetch'];
36
- const isBuiltInExcluded = (builtInName) => excludedBuiltIns.includes(builtInName);
37
-
38
- // Exclude iterators
39
- // we do not provide polyfills for them and their support check is much more complicated
40
- // es.iterator, es.async-iterator, esnext.async-iterator, esnext.iterator
41
- const isSpecExcluded = (specName) =>
42
- /(es(next)?)?\.(async-)?iterator/.test(specName) || ignoredPolyfills.includes(specName);
43
-
44
- const specToFeatureDict = {};
45
- function _addFeature(specName: string, primitive: string, method: string, isInstance: boolean) {
46
- if (specToFeatureDict[specName]) {
47
- return;
48
- }
49
-
50
- let checkExpression = isInstance
51
- ? `'${method}' in ${primitive}.prototype`
52
- : `${primitive}.${method}`;
53
-
54
- // For new primitives, we add a check for the existence of the primitive itself.
55
- // for example WeakMap && WeakMap.from
56
- // since WeakMap itself may not be supported in the browser, WeakMap check support may also be required
57
- const isPrimitiveNew = Boolean(Object.values(newPrimitivies).includes(primitive));
58
- if (isPrimitiveNew) {
59
- checkExpression = `${primitive} && ${checkExpression}`;
60
- }
61
-
62
- specToFeatureDict[specName] = checkExpression;
63
- specToFeatureDict[specName.replace('es.', 'esnext.')] = checkExpression;
64
- }
65
-
66
- const addStaticFeature = (specName: string, primitive: string, method: string) =>
67
- _addFeature(specName, primitive, method, false);
68
- const addInstanceFeature = (specName: string, primitive: string, method: string) =>
69
- _addFeature(specName, primitive, method, true);
70
-
71
- const methods = {};
72
- function addMethod(specName, expression) {
73
- methods[specName] = expression;
74
- }
75
-
76
- const instanceMethods = new Set(['web.url.to-json']);
77
- const globals = new Set();
78
- function _addGlobal(globalList: string[], isInstance: boolean) {
79
- globalList.forEach((globalSpecName) => {
80
- globals.add(globalSpecName);
81
-
82
- if (isInstance) {
83
- instanceMethods.add(globalSpecName);
84
- }
85
- });
86
- }
87
- const addInstanceGlobal = (globalList: string[]) => _addGlobal(globalList, true);
88
- const addGlobal = (globalList: string[]) => _addGlobal(globalList, false);
89
-
90
- /**
91
- * For conversion, a dictionary of the form `spec: feature` needs to be created
92
- * we use a file from babel-plugin-polyfill-corejs3 for this - https://github.com/babel/babel-polyfills/blob/main/packages/babel-plugin-polyfill-corejs3/src/built-in-definitions.ts
93
- * as a result we get dictinary like { 'es.array.at: 'Array.prototype.at', 'es.object.assign': 'Object.assign' }
94
- */
95
- export function getSpecToFeatureDict(): Record<string, string> {
96
- const { BuiltIns, InstanceProperties, StaticProperties } = definitions;
97
-
98
- // JS primitives: Number, Reflect, Set, Map...
99
- const builtIns = Object.keys(BuiltIns).reduce((acc, builtInKey) => {
100
- const { name: builtInName, global } = BuiltIns[builtInKey];
101
-
102
- if (isBuiltInExcluded(builtInKey)) return acc;
103
-
104
- addGlobal(global);
105
-
106
- const removeBaseMethodNames = (builtInName) =>
107
- builtInName.replace('.constructor', '').replace('.to-string', '');
108
-
109
- acc[removeBaseMethodNames(builtInName)] = `window.${builtInKey}`;
110
- acc[removeBaseMethodNames(builtInName).replace('es.', 'esnext.')] = `window.${builtInKey}`;
111
-
112
- return acc;
113
- }, {});
114
-
115
- // Some primitives are missing, so we add them manually
116
- Object.keys(missingBuiltIns).forEach((missingBuiltInName) => {
117
- builtIns[`es.${missingBuiltInName}`] = `${missingBuiltIns[missingBuiltInName]}`;
118
- builtIns[`esnext.${missingBuiltInName}`] = `${missingBuiltIns[missingBuiltInName]}`;
119
- });
120
-
121
- function parseSpec(spec: string) {
122
- // es.string.push
123
- const splitName = spec.split('.');
124
- // es.string
125
- const builtInName = splitName.slice(0, -1).join('.');
126
- // String
127
- const primitiveExpr = builtIns[builtInName];
128
- // push
129
- const methodName = splitName.at(-1);
130
-
131
- return {
132
- builtInName,
133
- primitiveExpr,
134
- methodName,
135
- };
136
- }
137
-
138
- // Instance methods, for example [1, 2, 3].at(), 'some_string'.toLowerCase()...
139
- Object.keys(InstanceProperties).forEach((instancePropertyName) => {
140
- const { name: instanceSpecName, global } = InstanceProperties[instancePropertyName];
141
- if (isSpecExcluded(instanceSpecName)) return;
142
-
143
- const { primitiveExpr, methodName } = parseSpec(instanceSpecName);
144
-
145
- addMethod(methodName, instancePropertyName);
146
- addInstanceGlobal(global);
147
-
148
- // Some instance methods have no parent
149
- // for example Symbol.constructor is es.Symbol
150
- if (!primitiveExpr) return;
151
-
152
- addInstanceFeature(instanceSpecName, primitiveExpr, instancePropertyName);
153
- });
154
-
155
- // Static methods for example Object.assign(), RegExp.escape()...
156
- Object.keys(StaticProperties).forEach((primitiveName) => {
157
- const staticPrimitiveProperties = StaticProperties[primitiveName];
158
-
159
- Object.keys(staticPrimitiveProperties).forEach((staticPropertyName) => {
160
- const { name: staticSpecName, global } = staticPrimitiveProperties[staticPropertyName];
161
- if (isSpecExcluded(staticSpecName)) return;
162
-
163
- const { methodName } = parseSpec(staticSpecName);
164
- addGlobal(global);
165
- addMethod(methodName, staticPropertyName);
166
-
167
- // For some reason, several static properties have names that match a builtin
168
- // we ignore such properties since their support in browsers appeared at the same time as the builtin itself
169
- // for example Promise and Promise.all
170
- if (builtIns[staticSpecName]) return;
171
-
172
- addStaticFeature(staticSpecName, primitiveName, staticPropertyName);
173
- });
174
- });
175
-
176
- function isFeatureExists(specName) {
177
- return Boolean(builtIns[specName]) || Boolean(specToFeatureDict[specName]);
178
- }
179
-
180
- // Each spec has a list of globals, which also need to be converted into an expression for support check
181
- // but not all globals can have their method name determined unambiguously
182
- [...globals].forEach((globalSpecName: string) => {
183
- if (!isFeatureExists(globalSpecName)) {
184
- if (isSpecExcluded(globalSpecName)) return;
185
-
186
- const { methodName, primitiveExpr, builtInName } = parseSpec(globalSpecName);
187
-
188
- // es.array-buffer.from
189
- const globalNameSplit = globalSpecName.split('.');
190
-
191
- // Trying to find a support check expression for a method from the already bypassed spec
192
- // for example, array and typed-array have the findLastIndex method, but typed-array is listed in global
193
- const featureMethod = methodName === 'constructor' ? 'constructor' : methods[methodName];
194
-
195
- // We consider a method to be simple if its name does not contain a '-'
196
- // every, filter, map can be left as it is, the method in the language is called the same way
197
- const isMethodSimple = !/-/.test(methodName);
198
-
199
- // Primitives don't have a method, so its length is 2
200
- // for example es.symbol или es.string
201
- const isPrimitive = globalNameSplit.length === 2;
202
- if (isPrimitive) {
203
- builtIns[globalSpecName] = `${BuiltIns[globalSpecName]}`;
204
- return;
205
- }
206
-
207
- // Trying to determine the type of method from global static or instance
208
- const globalInstancePrimitives = [
209
- 'es.array-buffer',
210
- 'es.typed-array',
211
- 'es.symbol',
212
- 'web.url-search-params',
213
- 'esnext.weak-map',
214
- 'esnext.weak-set',
215
- 'uint8-array',
216
- ];
217
- const isInstanceMethod =
218
- globalInstancePrimitives.includes(builtInName) || instanceMethods.has(globalSpecName);
219
-
220
- let method: string;
221
- if (featureMethod) {
222
- method = featureMethod;
223
- } else if (isMethodSimple) {
224
- method = methodName;
225
- } else if (primitiveExpr) {
226
- // couldn't find a similar method in the original list and it contains '-'
227
- // speculatively translating it to camelCase web.url.can-parse => URL.canParse
228
- method = camelCaseName(methodName);
229
- }
230
-
231
- isInstanceMethod
232
- ? addInstanceFeature(globalSpecName, primitiveExpr, method)
233
- : addStaticFeature(globalSpecName, primitiveExpr, method);
234
- }
235
- });
236
-
237
- return fixBrokenSpec({ ...builtIns, ...specToFeatureDict });
238
- }
239
-
240
- function fixBrokenSpec(specs: Record<string, string>) {
241
- specs['es.string.italics'] = "'italics' in window.String.prototype";
242
- return specs;
243
- }