@flarum/cli 2.0.0-beta.8 → 3.0.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 (663) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +178 -48
  3. package/bin/run +2 -1
  4. package/bin/splitsh-lite-darwin +0 -0
  5. package/bin/splitsh-lite-linux +0 -0
  6. package/boilerplate/skeleton/extension/.gitattributes +16 -14
  7. package/boilerplate/skeleton/extension/.github/workflows/backend.yml +2 -6
  8. package/boilerplate/skeleton/extension/.github/workflows/frontend.yml +5 -6
  9. package/boilerplate/skeleton/extension/.github/workflows/phpstan.yml +12 -0
  10. package/boilerplate/skeleton/extension/LICENSE.md +1 -1
  11. package/boilerplate/skeleton/extension/README.md +1 -1
  12. package/boilerplate/skeleton/extension/composer.json +13 -7
  13. package/boilerplate/skeleton/extension/extend.php +2 -2
  14. package/boilerplate/skeleton/extension/gitignore +1 -0
  15. package/boilerplate/skeleton/extension/js/admin.ts +2 -0
  16. package/boilerplate/skeleton/extension/js/forum.ts +2 -0
  17. package/boilerplate/skeleton/extension/js/jest.config.cjs +1 -0
  18. package/boilerplate/skeleton/extension/js/package.json +11 -4
  19. package/boilerplate/skeleton/extension/js/src/admin/extend.js +8 -0
  20. package/boilerplate/skeleton/extension/js/src/admin/extend.ts +8 -0
  21. package/boilerplate/skeleton/extension/js/src/admin/index.js +2 -0
  22. package/boilerplate/skeleton/extension/js/src/admin/index.ts +7 -0
  23. package/boilerplate/skeleton/extension/js/src/common/extend.js +5 -0
  24. package/boilerplate/skeleton/extension/js/src/common/extend.ts +5 -0
  25. package/boilerplate/skeleton/extension/js/src/common/index.ts +5 -0
  26. package/boilerplate/skeleton/extension/js/src/forum/extend.js +8 -0
  27. package/boilerplate/skeleton/extension/js/src/forum/extend.ts +8 -0
  28. package/boilerplate/skeleton/extension/js/src/forum/index.js +2 -0
  29. package/boilerplate/skeleton/extension/js/src/forum/index.ts +7 -0
  30. package/boilerplate/skeleton/extension/js/tests/unit/.gitkeep +0 -0
  31. package/boilerplate/skeleton/extension/js/tsconfig.json +10 -2
  32. package/boilerplate/skeleton/extension/js/tsconfig.test.json +10 -0
  33. package/boilerplate/skeleton/extension/locale/en.yml +1 -1
  34. package/boilerplate/skeleton/extension/phpstan.neon +12 -0
  35. package/boilerplate/skeleton/extension/tests/phpunit.integration.xml +6 -7
  36. package/boilerplate/skeleton/extension/tests/phpunit.unit.xml +5 -10
  37. package/boilerplate/stubs/backend/advanced-api-resource.php +85 -0
  38. package/boilerplate/stubs/backend/api-resource.php +73 -0
  39. package/boilerplate/stubs/backend/command.php +2 -2
  40. package/boilerplate/stubs/backend/controller.php +19 -0
  41. package/boilerplate/stubs/backend/event-listener.php +1 -1
  42. package/boilerplate/stubs/backend/filter.php +25 -0
  43. package/boilerplate/stubs/backend/handler/command.php +6 -20
  44. package/boilerplate/stubs/backend/handler/handler.php +6 -14
  45. package/boilerplate/stubs/backend/integration-test.php +10 -7
  46. package/boilerplate/stubs/backend/job.php +6 -11
  47. package/boilerplate/stubs/backend/mail-driver.php +36 -0
  48. package/boilerplate/stubs/backend/middleware.php +19 -0
  49. package/boilerplate/stubs/backend/model.php +1 -1
  50. package/boilerplate/stubs/backend/notification-blueprint.php +42 -0
  51. package/boilerplate/stubs/backend/notification-driver.php +32 -0
  52. package/boilerplate/stubs/backend/policy.php +1 -1
  53. package/boilerplate/stubs/backend/post-type.php +35 -0
  54. package/boilerplate/stubs/backend/repository.php +2 -10
  55. package/boilerplate/stubs/backend/search/driver.php +13 -0
  56. package/boilerplate/stubs/backend/search/searcher.php +41 -0
  57. package/boilerplate/stubs/backend/service-provider.php +1 -1
  58. package/boilerplate/stubs/backend/validator.php +1 -1
  59. package/boilerplate/stubs/frontend/component.js +1 -1
  60. package/boilerplate/stubs/frontend/forum-page.js +68 -0
  61. package/boilerplate/stubs/frontend/gambit/boolean.js +12 -0
  62. package/boilerplate/stubs/frontend/gambit/key-value.js +16 -0
  63. package/boilerplate/stubs/frontend/modal.js +1 -1
  64. package/boilerplate/stubs/frontend/model.js +1 -1
  65. package/boilerplate/stubs/frontend/notification.js +22 -0
  66. package/boilerplate/stubs/frontend/post-type.js +13 -0
  67. package/boilerplate/stubs/migration.php +1 -1
  68. package/boilerplate/stubs/views/email/html/information.blade.php +8 -0
  69. package/boilerplate/stubs/views/email/html/notification.blade.php +8 -0
  70. package/boilerplate/stubs/views/email/plain/information.blade.php +7 -0
  71. package/boilerplate/stubs/views/email/plain/notification.blade.php +6 -0
  72. package/lib/base-command.d.ts +22 -6
  73. package/lib/base-command.js +114 -56
  74. package/lib/boilersmith/io.d.ts +33 -11
  75. package/lib/boilersmith/io.js +32 -17
  76. package/lib/boilersmith/paths.d.ts +3 -3
  77. package/lib/boilersmith/paths.js +7 -7
  78. package/lib/boilersmith/scaffolding/audit-step-factory.js +12 -12
  79. package/lib/boilersmith/scaffolding/infra-step-factory.js +2 -2
  80. package/lib/boilersmith/scaffolding/init-step-factory.js +5 -5
  81. package/lib/boilersmith/scaffolding/module.d.ts +30 -10
  82. package/lib/boilersmith/scaffolding/module.js +61 -19
  83. package/lib/boilersmith/scaffolding/scaffolder.d.ts +4 -1
  84. package/lib/boilersmith/scaffolding/scaffolder.js +33 -33
  85. package/lib/boilersmith/scaffolding/template-param.d.ts +2 -2
  86. package/lib/boilersmith/scaffolding/template-param.js +2 -2
  87. package/lib/boilersmith/step-manager.d.ts +15 -11
  88. package/lib/boilersmith/step-manager.js +45 -29
  89. package/lib/boilersmith/steps/stub-base.js +4 -4
  90. package/lib/boilersmith/utils/clone-and-fill.js +1 -1
  91. package/lib/boilersmith/utils/commit-async.d.ts +2 -0
  92. package/lib/boilersmith/utils/commit-async.js +15 -0
  93. package/lib/boilersmith/utils/json-leaf-paths.d.ts +2 -2
  94. package/lib/boilersmith/utils/read-tpl.js +2 -2
  95. package/lib/commands/audit/infra.d.ts +2 -5
  96. package/lib/commands/audit/infra.js +31 -9
  97. package/lib/commands/infra.d.ts +2 -10
  98. package/lib/commands/infra.js +20 -14
  99. package/lib/commands/init.d.ts +2 -5
  100. package/lib/commands/init.js +7 -5
  101. package/lib/commands/make/backend/{api-serializer.d.ts → api-resource.d.ts} +2 -5
  102. package/lib/commands/make/backend/api-resource.js +26 -0
  103. package/lib/commands/make/backend/command.d.ts +1 -4
  104. package/lib/commands/make/backend/command.js +3 -4
  105. package/lib/commands/make/backend/{api-controller.d.ts → controller.d.ts} +2 -5
  106. package/lib/commands/make/backend/controller.js +31 -0
  107. package/lib/commands/make/backend/event-listener.d.ts +1 -4
  108. package/lib/commands/make/backend/event-listener.js +2 -3
  109. package/lib/commands/make/backend/{api-serializer-attributes.d.ts → filter.d.ts} +3 -6
  110. package/lib/commands/make/backend/filter.js +26 -0
  111. package/lib/commands/make/backend/handler.d.ts +2 -5
  112. package/lib/commands/make/backend/handler.js +8 -11
  113. package/lib/commands/make/backend/integration-test.d.ts +1 -4
  114. package/lib/commands/make/backend/integration-test.js +4 -6
  115. package/lib/commands/make/backend/job.d.ts +1 -4
  116. package/lib/commands/make/backend/job.js +2 -2
  117. package/lib/commands/make/backend/mail-driver.d.ts +12 -0
  118. package/lib/commands/make/backend/mail-driver.js +29 -0
  119. package/lib/commands/make/backend/middleware.d.ts +11 -0
  120. package/lib/commands/make/backend/middleware.js +26 -0
  121. package/lib/commands/make/backend/migration.d.ts +1 -4
  122. package/lib/commands/make/backend/migration.js +10 -4
  123. package/lib/commands/make/backend/model.d.ts +6 -7
  124. package/lib/commands/make/backend/model.js +69 -449
  125. package/lib/commands/make/backend/notification-blueprint.d.ts +12 -0
  126. package/lib/commands/make/backend/notification-blueprint.js +29 -0
  127. package/lib/commands/make/backend/notification-driver.d.ts +12 -0
  128. package/lib/commands/make/backend/notification-driver.js +29 -0
  129. package/lib/commands/make/backend/policy.d.ts +1 -4
  130. package/lib/commands/make/backend/policy.js +2 -3
  131. package/lib/commands/make/backend/post-type.d.ts +12 -0
  132. package/lib/commands/make/backend/post-type.js +29 -0
  133. package/lib/commands/make/backend/repository.d.ts +1 -4
  134. package/lib/commands/make/backend/repository.js +1 -1
  135. package/lib/commands/make/backend/route.d.ts +1 -4
  136. package/lib/commands/make/backend/route.js +2 -3
  137. package/lib/commands/make/backend/search-driver.d.ts +11 -0
  138. package/lib/commands/make/backend/search-driver.js +51 -0
  139. package/lib/commands/make/backend/service-provider.d.ts +1 -4
  140. package/lib/commands/make/backend/service-provider.js +3 -4
  141. package/lib/commands/make/backend/validator.d.ts +1 -4
  142. package/lib/commands/make/backend/validator.js +2 -2
  143. package/lib/commands/make/frontend/component.d.ts +4 -5
  144. package/lib/commands/make/frontend/component.js +7 -2
  145. package/lib/commands/make/frontend/forum-page.d.ts +11 -0
  146. package/lib/commands/make/frontend/forum-page.js +92 -0
  147. package/lib/commands/make/frontend/gambit.d.ts +11 -0
  148. package/lib/commands/make/frontend/gambit.js +30 -0
  149. package/lib/commands/make/frontend/modal.d.ts +1 -4
  150. package/lib/commands/make/frontend/modal.js +3 -2
  151. package/lib/commands/make/frontend/model.d.ts +6 -7
  152. package/lib/commands/make/frontend/model.js +27 -28
  153. package/lib/commands/make/frontend/notification.d.ts +12 -0
  154. package/lib/commands/make/frontend/notification.js +62 -0
  155. package/lib/commands/make/frontend/post-type.d.ts +12 -0
  156. package/lib/commands/make/frontend/post-type.js +59 -0
  157. package/lib/commands/make/locale.d.ts +11 -0
  158. package/lib/commands/make/locale.js +27 -0
  159. package/lib/commands/make/model.d.ts +12 -0
  160. package/lib/commands/make/model.js +29 -0
  161. package/lib/commands/make/notification.d.ts +11 -0
  162. package/lib/commands/make/notification.js +33 -0
  163. package/lib/commands/make/post-type.d.ts +11 -0
  164. package/lib/commands/make/post-type.js +31 -0
  165. package/lib/commands/monorepo/create.d.ts +12 -0
  166. package/lib/commands/monorepo/create.js +20 -0
  167. package/lib/commands/monorepo/split.d.ts +12 -0
  168. package/lib/commands/monorepo/split.js +19 -0
  169. package/lib/commands/update/js-imports.d.ts +1 -4
  170. package/lib/commands/update/js-imports.js +2 -3
  171. package/lib/commands/upgrade/2.0.d.ts +17 -0
  172. package/lib/commands/upgrade/2.0.js +113 -0
  173. package/lib/help.js +2 -2
  174. package/lib/providers/php-provider.d.ts +7 -1
  175. package/lib/providers/php-provider.js +18 -5
  176. package/lib/steps/extenders/{api-serializer.d.ts → api-resource.d.ts} +1 -1
  177. package/lib/steps/extenders/api-resource.js +38 -0
  178. package/lib/steps/extenders/base.d.ts +1 -1
  179. package/lib/steps/extenders/base.js +13 -1
  180. package/lib/steps/extenders/console-command.js +1 -1
  181. package/lib/steps/extenders/event.js +1 -1
  182. package/lib/steps/extenders/mail-driver.d.ts +5 -0
  183. package/lib/steps/extenders/mail-driver.js +58 -0
  184. package/lib/steps/extenders/middleware.d.ts +5 -0
  185. package/lib/steps/extenders/middleware.js +57 -0
  186. package/lib/steps/extenders/notification-driver.d.ts +5 -0
  187. package/lib/steps/extenders/notification-driver.js +58 -0
  188. package/lib/steps/extenders/notification-type.d.ts +5 -0
  189. package/lib/steps/extenders/notification-type.js +55 -0
  190. package/lib/steps/extenders/policy.js +1 -1
  191. package/lib/steps/extenders/post-type.d.ts +5 -0
  192. package/lib/steps/extenders/post-type.js +42 -0
  193. package/lib/steps/extenders/route.js +11 -2
  194. package/lib/steps/extenders/search-driver.d.ts +5 -0
  195. package/lib/steps/extenders/search-driver.js +38 -0
  196. package/lib/steps/extenders/search-filter.d.ts +5 -0
  197. package/lib/steps/extenders/search-filter.js +67 -0
  198. package/lib/steps/extenders/service-provider.js +1 -1
  199. package/lib/steps/gen-ext-scaffolder.d.ts +4 -4
  200. package/lib/steps/gen-ext-scaffolder.js +264 -58
  201. package/lib/steps/js/base.d.ts +14 -5
  202. package/lib/steps/js/base.js +101 -27
  203. package/lib/steps/js/model.d.ts +4 -7
  204. package/lib/steps/js/model.js +45 -19
  205. package/lib/steps/js/notification.d.ts +7 -0
  206. package/lib/steps/js/notification.js +58 -0
  207. package/lib/steps/js/post-type.d.ts +8 -0
  208. package/lib/steps/js/post-type.js +60 -0
  209. package/lib/steps/js/routes.d.ts +7 -0
  210. package/lib/steps/js/routes.js +63 -0
  211. package/lib/steps/js/search-driver-locale.d.ts +8 -0
  212. package/lib/steps/js/search-driver-locale.js +36 -0
  213. package/lib/steps/js/search-gambit.d.ts +7 -0
  214. package/lib/steps/js/search-gambit.js +51 -0
  215. package/lib/steps/locale/base.d.ts +32 -0
  216. package/lib/steps/locale/base.js +97 -0
  217. package/lib/steps/misc/composer.js +2 -2
  218. package/lib/steps/misc/git.d.ts +1 -1
  219. package/lib/steps/misc/git.js +3 -3
  220. package/lib/steps/misc/npm.d.ts +11 -0
  221. package/lib/steps/misc/npm.js +19 -0
  222. package/lib/steps/misc/yarn.js +2 -2
  223. package/lib/steps/monorepo/create.d.ts +19 -0
  224. package/lib/steps/monorepo/create.js +187 -0
  225. package/lib/steps/monorepo/split.d.ts +14 -0
  226. package/lib/steps/monorepo/split.js +99 -0
  227. package/lib/steps/stubs/backend/advanced-api-resource.d.ts +13 -0
  228. package/lib/steps/stubs/backend/advanced-api-resource.js +81 -0
  229. package/lib/steps/stubs/backend/{api-serializer.d.ts → api-resource.d.ts} +2 -2
  230. package/lib/steps/stubs/backend/{api-serializer.js → api-resource.js} +12 -9
  231. package/lib/steps/stubs/backend/command.d.ts +2 -21
  232. package/lib/steps/stubs/backend/command.js +15 -1
  233. package/lib/steps/stubs/backend/{api-controller.d.ts → controller.d.ts} +4 -14
  234. package/lib/steps/stubs/backend/controller.js +40 -0
  235. package/lib/steps/stubs/backend/event-listener.d.ts +1 -1
  236. package/lib/steps/stubs/backend/event-listener.js +3 -1
  237. package/lib/steps/stubs/backend/filter.d.ts +8 -0
  238. package/lib/steps/stubs/backend/filter.js +44 -0
  239. package/lib/steps/stubs/backend/handler-command.d.ts +2 -27
  240. package/lib/steps/stubs/backend/handler-command.js +3 -1
  241. package/lib/steps/stubs/backend/handler.d.ts +1 -1
  242. package/lib/steps/stubs/backend/handler.js +5 -1
  243. package/lib/steps/stubs/backend/integration-test.d.ts +1 -1
  244. package/lib/steps/stubs/backend/integration-test.js +1 -4
  245. package/lib/steps/stubs/backend/job.d.ts +1 -1
  246. package/lib/steps/stubs/backend/job.js +1 -0
  247. package/lib/steps/stubs/backend/mail-driver.d.ts +7 -0
  248. package/lib/steps/stubs/backend/mail-driver.js +30 -0
  249. package/lib/steps/stubs/backend/middleware.d.ts +22 -0
  250. package/lib/steps/stubs/backend/middleware.js +31 -0
  251. package/lib/steps/stubs/backend/migration.js +6 -3
  252. package/lib/steps/stubs/backend/model.d.ts +2 -24
  253. package/lib/steps/stubs/backend/model.js +3 -5
  254. package/lib/steps/stubs/backend/notification-blueprint.d.ts +7 -0
  255. package/lib/steps/stubs/backend/notification-blueprint.js +44 -0
  256. package/lib/steps/stubs/backend/notification-driver.d.ts +7 -0
  257. package/lib/steps/stubs/backend/notification-driver.js +30 -0
  258. package/lib/steps/stubs/backend/policy.d.ts +1 -1
  259. package/lib/steps/stubs/backend/policy.js +3 -1
  260. package/lib/steps/stubs/backend/post-type.d.ts +7 -0
  261. package/lib/steps/stubs/backend/post-type.js +44 -0
  262. package/lib/steps/stubs/backend/repository.d.ts +1 -1
  263. package/lib/steps/stubs/backend/repository.js +3 -1
  264. package/lib/steps/stubs/backend/search-driver-searcher.d.ts +24 -0
  265. package/lib/steps/stubs/backend/search-driver-searcher.js +32 -0
  266. package/lib/steps/stubs/backend/search-driver.d.ts +8 -0
  267. package/lib/steps/stubs/backend/search-driver.js +49 -0
  268. package/lib/steps/stubs/backend/service-provider.d.ts +1 -1
  269. package/lib/steps/stubs/backend/service-provider.js +1 -0
  270. package/lib/steps/stubs/backend/validator.d.ts +1 -1
  271. package/lib/steps/stubs/backend/validator.js +1 -0
  272. package/lib/steps/stubs/flarum-base.js +1 -1
  273. package/lib/steps/stubs/frontend/component.d.ts +0 -5
  274. package/lib/steps/stubs/frontend/component.js +1 -0
  275. package/lib/steps/stubs/frontend/forum-page.d.ts +25 -0
  276. package/lib/steps/stubs/frontend/forum-page.js +37 -0
  277. package/lib/steps/stubs/frontend/gambit.d.ts +7 -0
  278. package/lib/steps/stubs/frontend/gambit.js +50 -0
  279. package/lib/steps/stubs/frontend/modal.d.ts +0 -5
  280. package/lib/steps/stubs/frontend/modal.js +1 -0
  281. package/lib/steps/stubs/frontend/model.d.ts +8 -1
  282. package/lib/steps/stubs/frontend/model.js +6 -0
  283. package/lib/steps/stubs/frontend/notification.d.ts +11 -0
  284. package/lib/steps/stubs/frontend/notification.js +48 -0
  285. package/lib/steps/stubs/frontend/post-type.d.ts +11 -0
  286. package/lib/steps/stubs/frontend/post-type.js +48 -0
  287. package/lib/steps/stubs/js-base.js +12 -5
  288. package/lib/steps/stubs/php-base.js +13 -9
  289. package/lib/steps/update/js-imports.js +9 -3
  290. package/lib/steps/upgrade/twopointoh/backend/email-views.d.ts +18 -0
  291. package/lib/steps/upgrade/twopointoh/backend/email-views.js +81 -0
  292. package/lib/steps/upgrade/twopointoh/backend/filesystem.d.ts +8 -0
  293. package/lib/steps/upgrade/twopointoh/backend/filesystem.js +40 -0
  294. package/lib/steps/upgrade/twopointoh/backend/intervention-image.d.ts +8 -0
  295. package/lib/steps/upgrade/twopointoh/backend/intervention-image.js +44 -0
  296. package/lib/steps/upgrade/twopointoh/backend/json-api.d.ts +12 -0
  297. package/lib/steps/upgrade/twopointoh/backend/json-api.js +111 -0
  298. package/lib/steps/upgrade/twopointoh/backend/mailer.d.ts +8 -0
  299. package/lib/steps/upgrade/twopointoh/backend/mailer.js +37 -0
  300. package/lib/steps/upgrade/twopointoh/backend/misc.d.ts +8 -0
  301. package/lib/steps/upgrade/twopointoh/backend/misc.js +42 -0
  302. package/lib/steps/upgrade/twopointoh/backend/phpunit.d.ts +8 -0
  303. package/lib/steps/upgrade/twopointoh/backend/phpunit.js +52 -0
  304. package/lib/steps/upgrade/twopointoh/backend/search.d.ts +28 -0
  305. package/lib/steps/upgrade/twopointoh/backend/search.js +200 -0
  306. package/lib/steps/upgrade/twopointoh/base.d.ts +58 -0
  307. package/lib/steps/upgrade/twopointoh/base.js +284 -0
  308. package/lib/steps/upgrade/twopointoh/dependencies.d.ts +10 -0
  309. package/lib/steps/upgrade/twopointoh/dependencies.js +108 -0
  310. package/lib/steps/upgrade/twopointoh/frontend/code-splitting/usage-of-lazy-modules.d.ts +26 -0
  311. package/lib/steps/upgrade/twopointoh/frontend/code-splitting/usage-of-lazy-modules.js +418 -0
  312. package/lib/steps/upgrade/twopointoh/frontend/export-registry/compat.d.ts +12 -0
  313. package/lib/steps/upgrade/twopointoh/frontend/export-registry/compat.js +75 -0
  314. package/lib/steps/upgrade/twopointoh/frontend/export-registry/import-ext.d.ts +13 -0
  315. package/lib/steps/upgrade/twopointoh/frontend/export-registry/import-ext.js +126 -0
  316. package/lib/steps/upgrade/twopointoh/frontend/format.d.ts +8 -0
  317. package/lib/steps/upgrade/twopointoh/frontend/format.js +32 -0
  318. package/lib/steps/upgrade/twopointoh/frontend/misc.d.ts +17 -0
  319. package/lib/steps/upgrade/twopointoh/frontend/misc.js +433 -0
  320. package/lib/steps/upgrade/twopointoh/infra.d.ts +10 -0
  321. package/lib/steps/upgrade/twopointoh/infra.js +51 -0
  322. package/lib/steps/upgrade/twopointoh/less.d.ts +12 -0
  323. package/lib/steps/upgrade/twopointoh/less.js +217 -0
  324. package/lib/utils/add-extenders.d.ts +2 -0
  325. package/lib/utils/add-extenders.js +115 -0
  326. package/lib/utils/ast.d.ts +22 -0
  327. package/lib/utils/ast.js +235 -0
  328. package/lib/utils/composer.d.ts +2 -1
  329. package/lib/utils/migration.js +3 -1
  330. package/lib/utils/model-name.d.ts +1 -0
  331. package/lib/utils/model-name.js +7 -3
  332. package/lib/utils/monorepo.d.ts +24 -0
  333. package/lib/utils/monorepo.js +24 -0
  334. package/lib/utils/validation.d.ts +6 -1
  335. package/lib/utils/validation.js +15 -0
  336. package/oclif.manifest.json +1 -1
  337. package/package.json +27 -14
  338. package/php-subsystem/composer.json +11 -9
  339. package/php-subsystem/composer.lock +66 -71
  340. package/php-subsystem/index.php +41 -6
  341. package/php-subsystem/src/CustomPrettyPrinter.php +1 -1
  342. package/php-subsystem/src/ExtenderUtil.php +7 -13
  343. package/php-subsystem/src/NodeUtil.php +72 -0
  344. package/php-subsystem/src/NodeVisitors/AddExtender.php +28 -12
  345. package/php-subsystem/src/NodeVisitors/AddUses.php +24 -0
  346. package/php-subsystem/src/NodeVisitors/ChangeSignatures.php +200 -0
  347. package/php-subsystem/src/NodeVisitors/ReplaceUses.php +175 -0
  348. package/php-subsystem/src/Upgrade/Replacement.php +51 -0
  349. package/php-subsystem/src/Upgrade/ReplacementResult.php +17 -0
  350. package/php-subsystem/src/Upgrade/TwoPointOh/EmailViews.php +94 -0
  351. package/php-subsystem/src/Upgrade/TwoPointOh/Filesystem.php +88 -0
  352. package/php-subsystem/src/Upgrade/TwoPointOh/InterventionImage.php +86 -0
  353. package/php-subsystem/src/Upgrade/TwoPointOh/JsonApi.php +186 -0
  354. package/php-subsystem/src/Upgrade/TwoPointOh/Misc.php +564 -0
  355. package/php-subsystem/src/Upgrade/TwoPointOh/PhpUnit.php +241 -0
  356. package/php-subsystem/src/Upgrade/TwoPointOh/Search.php +589 -0
  357. package/php-subsystem/vendor/autoload.php +18 -0
  358. package/php-subsystem/vendor/bin/php-parse +119 -0
  359. package/php-subsystem/vendor/composer/ClassLoader.php +166 -32
  360. package/php-subsystem/vendor/composer/InstalledVersions.php +350 -209
  361. package/php-subsystem/vendor/composer/autoload_classmap.php +1 -1
  362. package/php-subsystem/vendor/composer/autoload_namespaces.php +1 -1
  363. package/php-subsystem/vendor/composer/autoload_psr4.php +1 -1
  364. package/php-subsystem/vendor/composer/autoload_real.php +3 -22
  365. package/php-subsystem/vendor/composer/installed.json +56 -61
  366. package/php-subsystem/vendor/composer/installed.php +29 -30
  367. package/php-subsystem/vendor/composer/platform_check.php +2 -2
  368. package/php-subsystem/vendor/nikic/php-parser/README.md +21 -13
  369. package/php-subsystem/vendor/nikic/php-parser/bin/php-parse +12 -11
  370. package/php-subsystem/vendor/nikic/php-parser/composer.json +41 -39
  371. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Builder/ClassConst.php +58 -11
  372. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Builder/Class_.php +54 -25
  373. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Builder/Declaration.php +11 -4
  374. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Builder/EnumCase.php +87 -0
  375. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Builder/Enum_.php +116 -0
  376. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Builder/FunctionLike.php +8 -9
  377. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Builder/Function_.php +22 -5
  378. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Builder/Interface_.php +26 -7
  379. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Builder/Method.php +31 -13
  380. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Builder/Namespace_.php +5 -5
  381. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Builder/Param.php +69 -26
  382. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Builder/Property.php +47 -18
  383. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Builder/TraitUse.php +6 -5
  384. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Builder/TraitUseAdaptation.php +25 -28
  385. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Builder/Trait_.php +31 -8
  386. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Builder/Use_.php +8 -8
  387. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Builder.php +2 -3
  388. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/BuilderFactory.php +85 -70
  389. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/BuilderHelpers.php +119 -71
  390. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Comment/Doc.php +1 -2
  391. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Comment.php +35 -67
  392. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/ConstExprEvaluationException.php +3 -3
  393. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/ConstExprEvaluator.php +17 -9
  394. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Error.php +24 -33
  395. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/ErrorHandler/Collecting.php +6 -9
  396. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/ErrorHandler/Throwing.php +2 -3
  397. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/ErrorHandler.php +2 -3
  398. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Internal/DiffElem.php +11 -7
  399. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Internal/Differ.php +36 -22
  400. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Internal/PrintableNewAnonClassNode.php +24 -14
  401. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Internal/TokenPolyfill.php +237 -0
  402. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Internal/TokenStream.php +63 -69
  403. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/JsonDecoder.php +15 -10
  404. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Lexer/Emulative.php +74 -92
  405. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/AttributeEmulator.php +11 -18
  406. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/EnumTokenEmulator.php +10 -15
  407. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ExplicitOctalEmulator.php +45 -0
  408. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/KeywordEmulator.php +19 -25
  409. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/MatchTokenEmulator.php +6 -10
  410. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/NullsafeTokenEmulator.php +22 -29
  411. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReadonlyFunctionTokenEmulator.php +31 -0
  412. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReadonlyTokenEmulator.php +31 -0
  413. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReverseEmulator.php +6 -5
  414. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/TokenEmulator.php +10 -5
  415. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Lexer.php +70 -491
  416. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Modifiers.php +69 -0
  417. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/NameContext.php +23 -24
  418. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Arg.php +13 -14
  419. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/ArrayItem.php +43 -0
  420. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Attribute.php +9 -10
  421. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/AttributeGroup.php +5 -7
  422. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/ClosureUse.php +36 -0
  423. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/ComplexType.php +13 -0
  424. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Const_.php +12 -13
  425. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/DeclareItem.php +37 -0
  426. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayDimFetch.php +10 -11
  427. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayItem.php +1 -39
  428. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Array_.php +11 -11
  429. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ArrowFunction.php +35 -30
  430. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Assign.php +9 -10
  431. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseAnd.php +2 -3
  432. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseOr.php +2 -3
  433. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseXor.php +2 -3
  434. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Coalesce.php +2 -3
  435. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Concat.php +2 -3
  436. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Div.php +2 -3
  437. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Minus.php +2 -3
  438. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Mod.php +2 -3
  439. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Mul.php +2 -3
  440. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Plus.php +2 -3
  441. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Pow.php +2 -3
  442. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/ShiftLeft.php +2 -3
  443. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/ShiftRight.php +2 -3
  444. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp.php +7 -8
  445. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignRef.php +9 -10
  446. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseAnd.php +4 -5
  447. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseOr.php +4 -5
  448. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseXor.php +4 -5
  449. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BooleanAnd.php +4 -5
  450. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BooleanOr.php +4 -5
  451. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Coalesce.php +4 -5
  452. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Concat.php +4 -5
  453. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Div.php +4 -5
  454. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Equal.php +4 -5
  455. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Greater.php +4 -5
  456. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/GreaterOrEqual.php +4 -5
  457. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Identical.php +4 -5
  458. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalAnd.php +4 -5
  459. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalOr.php +4 -5
  460. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalXor.php +4 -5
  461. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Minus.php +4 -5
  462. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Mod.php +4 -5
  463. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Mul.php +4 -5
  464. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/NotEqual.php +4 -5
  465. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/NotIdentical.php +4 -5
  466. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Plus.php +4 -5
  467. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Pow.php +4 -5
  468. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/ShiftLeft.php +4 -5
  469. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/ShiftRight.php +4 -5
  470. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Smaller.php +4 -5
  471. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/SmallerOrEqual.php +4 -5
  472. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Spaceship.php +4 -5
  473. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp.php +8 -11
  474. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BitwiseNot.php +7 -8
  475. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BooleanNot.php +7 -8
  476. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/CallLike.php +35 -0
  477. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Array_.php +2 -3
  478. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Bool_.php +2 -3
  479. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Double.php +5 -6
  480. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Int_.php +2 -3
  481. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Object_.php +2 -3
  482. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/String_.php +2 -3
  483. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Unset_.php +2 -3
  484. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast.php +5 -6
  485. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ClassConstFetch.php +12 -12
  486. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Clone_.php +7 -8
  487. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Closure.php +34 -27
  488. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ClosureUse.php +1 -32
  489. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ConstFetch.php +7 -8
  490. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Empty_.php +7 -8
  491. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Error.php +5 -6
  492. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ErrorSuppress.php +7 -8
  493. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Eval_.php +7 -8
  494. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Exit_.php +10 -11
  495. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/FuncCall.php +15 -12
  496. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Include_.php +13 -14
  497. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Instanceof_.php +11 -11
  498. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Isset_.php +7 -8
  499. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/List_.php +12 -8
  500. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Match_.php +8 -7
  501. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/MethodCall.php +18 -13
  502. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/New_.php +17 -12
  503. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafeMethodCall.php +18 -13
  504. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafePropertyFetch.php +10 -10
  505. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PostDec.php +7 -8
  506. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PostInc.php +7 -8
  507. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PreDec.php +6 -7
  508. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PreInc.php +7 -8
  509. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Print_.php +7 -8
  510. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PropertyFetch.php +10 -10
  511. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ShellExec.php +9 -9
  512. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/StaticCall.php +19 -14
  513. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/StaticPropertyFetch.php +11 -11
  514. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Ternary.php +12 -13
  515. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Throw_.php +6 -7
  516. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryMinus.php +7 -8
  517. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryPlus.php +7 -8
  518. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Variable.php +6 -7
  519. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/YieldFrom.php +7 -8
  520. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Yield_.php +10 -11
  521. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr.php +1 -2
  522. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/FunctionLike.php +6 -9
  523. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Identifier.php +13 -13
  524. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/InterpolatedStringPart.php +32 -0
  525. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/IntersectionType.php +27 -0
  526. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/MatchArm.php +8 -9
  527. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Name/FullyQualified.php +8 -9
  528. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Name/Relative.php +8 -9
  529. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Name.php +80 -53
  530. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/NullableType.php +10 -11
  531. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Param.php +47 -23
  532. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/PropertyItem.php +37 -0
  533. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/DNumber.php +1 -68
  534. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/Encapsed.php +1 -29
  535. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/EncapsedStringPart.php +1 -28
  536. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/Float_.php +78 -0
  537. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/Int_.php +82 -0
  538. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/InterpolatedString.php +34 -0
  539. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/LNumber.php +1 -71
  540. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Class_.php +4 -5
  541. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Dir.php +4 -5
  542. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/File.php +4 -5
  543. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Function_.php +4 -5
  544. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Line.php +4 -5
  545. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Method.php +4 -5
  546. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Namespace_.php +4 -5
  547. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Trait_.php +4 -5
  548. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst.php +4 -5
  549. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/String_.php +44 -24
  550. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar.php +1 -2
  551. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/StaticVar.php +39 -0
  552. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Block.php +29 -0
  553. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Break_.php +8 -9
  554. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Case_.php +10 -11
  555. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Catch_.php +11 -12
  556. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassConst.php +33 -27
  557. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassLike.php +15 -15
  558. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassMethod.php +66 -71
  559. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Class_.php +48 -61
  560. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Const_.php +7 -8
  561. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Continue_.php +8 -9
  562. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/DeclareDeclare.php +1 -32
  563. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Declare_.php +12 -12
  564. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Do_.php +9 -10
  565. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Echo_.php +7 -8
  566. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ElseIf_.php +9 -10
  567. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Else_.php +7 -8
  568. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/EnumCase.php +11 -12
  569. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Enum_.php +17 -13
  570. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Expression.php +7 -8
  571. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Finally_.php +7 -8
  572. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/For_.php +19 -15
  573. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Foreach_.php +20 -17
  574. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Function_.php +31 -27
  575. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Global_.php +7 -8
  576. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Goto_.php +7 -8
  577. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/GroupUse.php +16 -14
  578. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/HaltCompiler.php +7 -8
  579. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/If_.php +18 -15
  580. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/InlineHTML.php +7 -8
  581. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Interface_.php +13 -10
  582. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Label.php +7 -8
  583. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Namespace_.php +11 -12
  584. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Nop.php +4 -5
  585. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Property.php +35 -36
  586. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/PropertyProperty.php +1 -32
  587. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Return_.php +8 -9
  588. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/StaticVar.php +1 -35
  589. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Static_.php +8 -8
  590. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Switch_.php +9 -10
  591. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUse.php +8 -9
  592. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation/Alias.php +12 -13
  593. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation/Precedence.php +9 -10
  594. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation.php +3 -4
  595. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Trait_.php +10 -8
  596. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TryCatch.php +11 -12
  597. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Unset_.php +7 -8
  598. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/UseUse.php +1 -50
  599. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Use_.php +16 -16
  600. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/While_.php +9 -10
  601. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt.php +1 -2
  602. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/UnionType.php +8 -11
  603. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/UseItem.php +55 -0
  604. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/VarLikeIdentifier.php +2 -3
  605. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/VariadicPlaceholder.php +27 -0
  606. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node.php +24 -29
  607. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/NodeAbstract.php +20 -20
  608. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/NodeDumper.php +169 -82
  609. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/NodeFinder.php +28 -19
  610. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php +71 -84
  611. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/NodeTraverserInterface.php +4 -7
  612. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/CloningVisitor.php +1 -2
  613. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/CommentAnnotatingVisitor.php +82 -0
  614. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/FindingVisitor.php +4 -5
  615. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/FirstFindingVisitor.php +6 -7
  616. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/NameResolver.php +40 -24
  617. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/NodeConnectingVisitor.php +2 -3
  618. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/ParentConnectingVisitor.php +8 -11
  619. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor.php +59 -7
  620. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/NodeVisitorAbstract.php +1 -2
  621. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Parser/Php7.php +2011 -2058
  622. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Parser/Php8.php +2717 -0
  623. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Parser.php +9 -3
  624. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/ParserAbstract.php +466 -248
  625. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/ParserFactory.php +31 -33
  626. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/PhpVersion.php +164 -0
  627. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/PrettyPrinter/Standard.php +419 -338
  628. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/PrettyPrinter.php +51 -0
  629. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/PrettyPrinterAbstract.php +587 -431
  630. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Token.php +18 -0
  631. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/compatibility_tokens.php +63 -0
  632. package/boilerplate/stubs/backend/api-controller/create.php +0 -53
  633. package/boilerplate/stubs/backend/api-controller/delete.php +0 -52
  634. package/boilerplate/stubs/backend/api-controller/list.php +0 -61
  635. package/boilerplate/stubs/backend/api-controller/normal.php +0 -29
  636. package/boilerplate/stubs/backend/api-controller/show.php +0 -48
  637. package/boilerplate/stubs/backend/api-controller/update.php +0 -54
  638. package/boilerplate/stubs/backend/api-serializer.php +0 -36
  639. package/lib/commands/make/backend/api-controller.js +0 -27
  640. package/lib/commands/make/backend/api-serializer-attributes.js +0 -15
  641. package/lib/commands/make/backend/api-serializer.js +0 -15
  642. package/lib/steps/extenders/api-serializer.js +0 -77
  643. package/lib/steps/stubs/backend/api-controller.js +0 -62
  644. package/lib/steps/stubs/frontend/migration.js +0 -1
  645. package/php-subsystem/vendor/nikic/php-parser/.editorconfig +0 -9
  646. package/php-subsystem/vendor/nikic/php-parser/grammar/README.md +0 -30
  647. package/php-subsystem/vendor/nikic/php-parser/grammar/parser.template +0 -106
  648. package/php-subsystem/vendor/nikic/php-parser/grammar/php5.y +0 -1026
  649. package/php-subsystem/vendor/nikic/php-parser/grammar/php7.y +0 -1152
  650. package/php-subsystem/vendor/nikic/php-parser/grammar/phpyLang.php +0 -192
  651. package/php-subsystem/vendor/nikic/php-parser/grammar/rebuildParsers.php +0 -81
  652. package/php-subsystem/vendor/nikic/php-parser/grammar/tokens.template +0 -17
  653. package/php-subsystem/vendor/nikic/php-parser/grammar/tokens.y +0 -115
  654. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/CoaleseEqualTokenEmulator.php +0 -47
  655. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/FlexibleDocStringEmulator.php +0 -76
  656. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/FnTokenEmulator.php +0 -23
  657. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/NumericLiteralSeparatorEmulator.php +0 -105
  658. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Throw_.php +0 -30
  659. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Parser/Multiple.php +0 -55
  660. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Parser/Php5.php +0 -2630
  661. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Parser/Tokens.php +0 -145
  662. /package/{lib/steps/stubs/frontend/migration.d.ts → boilerplate/skeleton/extension/js/tests/integration/.gitkeep} +0 -0
  663. /package/boilerplate/skeleton/extension/js/{webpack.config.js → webpack.config.cjs} +0 -0
@@ -5,25 +5,27 @@ namespace PhpParser;
5
5
  use PhpParser\NodeVisitor\FindingVisitor;
6
6
  use PhpParser\NodeVisitor\FirstFindingVisitor;
7
7
 
8
- class NodeFinder
9
- {
8
+ class NodeFinder {
10
9
  /**
11
10
  * Find all nodes satisfying a filter callback.
12
11
  *
13
- * @param Node|Node[] $nodes Single node or array of nodes to search in
14
- * @param callable $filter Filter callback: function(Node $node) : bool
12
+ * @param Node|Node[] $nodes Single node or array of nodes to search in
13
+ * @param callable $filter Filter callback: function(Node $node) : bool
15
14
  *
16
15
  * @return Node[] Found nodes satisfying the filter callback
17
16
  */
18
- public function find($nodes, callable $filter) : array {
17
+ public function find($nodes, callable $filter): array {
18
+ if ($nodes === []) {
19
+ return [];
20
+ }
21
+
19
22
  if (!is_array($nodes)) {
20
23
  $nodes = [$nodes];
21
24
  }
22
25
 
23
26
  $visitor = new FindingVisitor($filter);
24
27
 
25
- $traverser = new NodeTraverser;
26
- $traverser->addVisitor($visitor);
28
+ $traverser = new NodeTraverser($visitor);
27
29
  $traverser->traverse($nodes);
28
30
 
29
31
  return $visitor->getFoundNodes();
@@ -31,13 +33,15 @@ class NodeFinder
31
33
 
32
34
  /**
33
35
  * Find all nodes that are instances of a certain class.
36
+
37
+ * @template TNode as Node
34
38
  *
35
39
  * @param Node|Node[] $nodes Single node or array of nodes to search in
36
- * @param string $class Class name
40
+ * @param class-string<TNode> $class Class name
37
41
  *
38
- * @return Node[] Found nodes (all instances of $class)
42
+ * @return TNode[] Found nodes (all instances of $class)
39
43
  */
40
- public function findInstanceOf($nodes, string $class) : array {
44
+ public function findInstanceOf($nodes, string $class): array {
41
45
  return $this->find($nodes, function ($node) use ($class) {
42
46
  return $node instanceof $class;
43
47
  });
@@ -46,20 +50,23 @@ class NodeFinder
46
50
  /**
47
51
  * Find first node satisfying a filter callback.
48
52
  *
49
- * @param Node|Node[] $nodes Single node or array of nodes to search in
50
- * @param callable $filter Filter callback: function(Node $node) : bool
53
+ * @param Node|Node[] $nodes Single node or array of nodes to search in
54
+ * @param callable $filter Filter callback: function(Node $node) : bool
51
55
  *
52
56
  * @return null|Node Found node (or null if none found)
53
57
  */
54
- public function findFirst($nodes, callable $filter) {
58
+ public function findFirst($nodes, callable $filter): ?Node {
59
+ if ($nodes === []) {
60
+ return null;
61
+ }
62
+
55
63
  if (!is_array($nodes)) {
56
64
  $nodes = [$nodes];
57
65
  }
58
66
 
59
67
  $visitor = new FirstFindingVisitor($filter);
60
68
 
61
- $traverser = new NodeTraverser;
62
- $traverser->addVisitor($visitor);
69
+ $traverser = new NodeTraverser($visitor);
63
70
  $traverser->traverse($nodes);
64
71
 
65
72
  return $visitor->getFoundNode();
@@ -68,12 +75,14 @@ class NodeFinder
68
75
  /**
69
76
  * Find first node that is an instance of a certain class.
70
77
  *
71
- * @param Node|Node[] $nodes Single node or array of nodes to search in
72
- * @param string $class Class name
78
+ * @template TNode as Node
79
+ *
80
+ * @param Node|Node[] $nodes Single node or array of nodes to search in
81
+ * @param class-string<TNode> $class Class name
73
82
  *
74
- * @return null|Node Found node, which is an instance of $class (or null if none found)
83
+ * @return null|TNode Found node, which is an instance of $class (or null if none found)
75
84
  */
76
- public function findFirstInstanceOf($nodes, string $class) {
85
+ public function findFirstInstanceOf($nodes, string $class): ?Node {
77
86
  return $this->findFirst($nodes, function ($node) use ($class) {
78
87
  return $node instanceof $class;
79
88
  });
@@ -2,51 +2,40 @@
2
2
 
3
3
  namespace PhpParser;
4
4
 
5
- class NodeTraverser implements NodeTraverserInterface
6
- {
5
+ class NodeTraverser implements NodeTraverserInterface {
7
6
  /**
8
- * If NodeVisitor::enterNode() returns DONT_TRAVERSE_CHILDREN, child nodes
9
- * of the current node will not be traversed for any visitors.
10
- *
11
- * For subsequent visitors enterNode() will still be called on the current
12
- * node and leaveNode() will also be invoked for the current node.
7
+ * @deprecated Use NodeVisitor::DONT_TRAVERSE_CHILDREN instead.
13
8
  */
14
- const DONT_TRAVERSE_CHILDREN = 1;
9
+ public const DONT_TRAVERSE_CHILDREN = NodeVisitor::DONT_TRAVERSE_CHILDREN;
15
10
 
16
11
  /**
17
- * If NodeVisitor::enterNode() or NodeVisitor::leaveNode() returns
18
- * STOP_TRAVERSAL, traversal is aborted.
19
- *
20
- * The afterTraverse() method will still be invoked.
12
+ * @deprecated Use NodeVisitor::STOP_TRAVERSAL instead.
21
13
  */
22
- const STOP_TRAVERSAL = 2;
14
+ public const STOP_TRAVERSAL = NodeVisitor::STOP_TRAVERSAL;
23
15
 
24
16
  /**
25
- * If NodeVisitor::leaveNode() returns REMOVE_NODE for a node that occurs
26
- * in an array, it will be removed from the array.
27
- *
28
- * For subsequent visitors leaveNode() will still be invoked for the
29
- * removed node.
17
+ * @deprecated Use NodeVisitor::REMOVE_NODE instead.
30
18
  */
31
- const REMOVE_NODE = 3;
19
+ public const REMOVE_NODE = NodeVisitor::REMOVE_NODE;
32
20
 
33
21
  /**
34
- * If NodeVisitor::enterNode() returns DONT_TRAVERSE_CURRENT_AND_CHILDREN, child nodes
35
- * of the current node will not be traversed for any visitors.
36
- *
37
- * For subsequent visitors enterNode() will not be called as well.
38
- * leaveNode() will be invoked for visitors that has enterNode() method invoked.
22
+ * @deprecated Use NodeVisitor::DONT_TRAVERSE_CURRENT_AND_CHILDREN instead.
39
23
  */
40
- const DONT_TRAVERSE_CURRENT_AND_CHILDREN = 4;
24
+ public const DONT_TRAVERSE_CURRENT_AND_CHILDREN = NodeVisitor::DONT_TRAVERSE_CURRENT_AND_CHILDREN;
41
25
 
42
- /** @var NodeVisitor[] Visitors */
43
- protected $visitors = [];
26
+ /** @var list<NodeVisitor> Visitors */
27
+ protected array $visitors = [];
44
28
 
45
29
  /** @var bool Whether traversal should be stopped */
46
- protected $stopTraversal;
30
+ protected bool $stopTraversal;
47
31
 
48
- public function __construct() {
49
- // for BC
32
+ /**
33
+ * Create a traverser with the given visitors.
34
+ *
35
+ * @param NodeVisitor ...$visitors Node visitors
36
+ */
37
+ public function __construct(NodeVisitor ...$visitors) {
38
+ $this->visitors = $visitors;
50
39
  }
51
40
 
52
41
  /**
@@ -54,21 +43,17 @@ class NodeTraverser implements NodeTraverserInterface
54
43
  *
55
44
  * @param NodeVisitor $visitor Visitor to add
56
45
  */
57
- public function addVisitor(NodeVisitor $visitor) {
46
+ public function addVisitor(NodeVisitor $visitor): void {
58
47
  $this->visitors[] = $visitor;
59
48
  }
60
49
 
61
50
  /**
62
51
  * Removes an added visitor.
63
- *
64
- * @param NodeVisitor $visitor
65
52
  */
66
- public function removeVisitor(NodeVisitor $visitor) {
67
- foreach ($this->visitors as $index => $storedVisitor) {
68
- if ($storedVisitor === $visitor) {
69
- unset($this->visitors[$index]);
70
- break;
71
- }
53
+ public function removeVisitor(NodeVisitor $visitor): void {
54
+ $index = array_search($visitor, $this->visitors);
55
+ if ($index !== false) {
56
+ array_splice($this->visitors, $index, 1, []);
72
57
  }
73
58
  }
74
59
 
@@ -79,7 +64,7 @@ class NodeTraverser implements NodeTraverserInterface
79
64
  *
80
65
  * @return Node[] Traversed array of nodes
81
66
  */
82
- public function traverse(array $nodes) : array {
67
+ public function traverse(array $nodes): array {
83
68
  $this->stopTraversal = false;
84
69
 
85
70
  foreach ($this->visitors as $visitor) {
@@ -90,7 +75,8 @@ class NodeTraverser implements NodeTraverserInterface
90
75
 
91
76
  $nodes = $this->traverseArray($nodes);
92
77
 
93
- foreach ($this->visitors as $visitor) {
78
+ for ($i = \count($this->visitors) - 1; $i >= 0; --$i) {
79
+ $visitor = $this->visitors[$i];
94
80
  if (null !== $return = $visitor->afterTraverse($nodes)) {
95
81
  $nodes = $return;
96
82
  }
@@ -103,37 +89,37 @@ class NodeTraverser implements NodeTraverserInterface
103
89
  * Recursively traverse a node.
104
90
  *
105
91
  * @param Node $node Node to traverse.
106
- *
107
- * @return Node Result of traversal (may be original node or new one)
108
92
  */
109
- protected function traverseNode(Node $node) : Node {
93
+ protected function traverseNode(Node $node): void {
110
94
  foreach ($node->getSubNodeNames() as $name) {
111
- $subNode =& $node->$name;
95
+ $subNode = $node->$name;
112
96
 
113
97
  if (\is_array($subNode)) {
114
- $subNode = $this->traverseArray($subNode);
98
+ $node->$name = $this->traverseArray($subNode);
115
99
  if ($this->stopTraversal) {
116
100
  break;
117
101
  }
118
102
  } elseif ($subNode instanceof Node) {
119
103
  $traverseChildren = true;
120
- $breakVisitorIndex = null;
104
+ $visitorIndex = -1;
121
105
 
122
106
  foreach ($this->visitors as $visitorIndex => $visitor) {
123
107
  $return = $visitor->enterNode($subNode);
124
108
  if (null !== $return) {
125
109
  if ($return instanceof Node) {
126
110
  $this->ensureReplacementReasonable($subNode, $return);
127
- $subNode = $return;
128
- } elseif (self::DONT_TRAVERSE_CHILDREN === $return) {
111
+ $subNode = $node->$name = $return;
112
+ } elseif (NodeVisitor::DONT_TRAVERSE_CHILDREN === $return) {
129
113
  $traverseChildren = false;
130
- } elseif (self::DONT_TRAVERSE_CURRENT_AND_CHILDREN === $return) {
114
+ } elseif (NodeVisitor::DONT_TRAVERSE_CURRENT_AND_CHILDREN === $return) {
131
115
  $traverseChildren = false;
132
- $breakVisitorIndex = $visitorIndex;
133
116
  break;
134
- } elseif (self::STOP_TRAVERSAL === $return) {
117
+ } elseif (NodeVisitor::STOP_TRAVERSAL === $return) {
135
118
  $this->stopTraversal = true;
136
119
  break 2;
120
+ } elseif (NodeVisitor::REPLACE_WITH_NULL === $return) {
121
+ $node->$name = null;
122
+ continue 2;
137
123
  } else {
138
124
  throw new \LogicException(
139
125
  'enterNode() returned invalid value of type ' . gettype($return)
@@ -143,22 +129,26 @@ class NodeTraverser implements NodeTraverserInterface
143
129
  }
144
130
 
145
131
  if ($traverseChildren) {
146
- $subNode = $this->traverseNode($subNode);
132
+ $this->traverseNode($subNode);
147
133
  if ($this->stopTraversal) {
148
134
  break;
149
135
  }
150
136
  }
151
137
 
152
- foreach ($this->visitors as $visitorIndex => $visitor) {
138
+ for (; $visitorIndex >= 0; --$visitorIndex) {
139
+ $visitor = $this->visitors[$visitorIndex];
153
140
  $return = $visitor->leaveNode($subNode);
154
141
 
155
142
  if (null !== $return) {
156
143
  if ($return instanceof Node) {
157
144
  $this->ensureReplacementReasonable($subNode, $return);
158
- $subNode = $return;
159
- } elseif (self::STOP_TRAVERSAL === $return) {
145
+ $subNode = $node->$name = $return;
146
+ } elseif (NodeVisitor::STOP_TRAVERSAL === $return) {
160
147
  $this->stopTraversal = true;
161
148
  break 2;
149
+ } elseif (NodeVisitor::REPLACE_WITH_NULL === $return) {
150
+ $node->$name = null;
151
+ break;
162
152
  } elseif (\is_array($return)) {
163
153
  throw new \LogicException(
164
154
  'leaveNode() may only return an array ' .
@@ -170,15 +160,9 @@ class NodeTraverser implements NodeTraverserInterface
170
160
  );
171
161
  }
172
162
  }
173
-
174
- if ($breakVisitorIndex === $visitorIndex) {
175
- break;
176
- }
177
163
  }
178
164
  }
179
165
  }
180
-
181
- return $node;
182
166
  }
183
167
 
184
168
  /**
@@ -188,29 +172,37 @@ class NodeTraverser implements NodeTraverserInterface
188
172
  *
189
173
  * @return array Result of traversal (may be original array or changed one)
190
174
  */
191
- protected function traverseArray(array $nodes) : array {
175
+ protected function traverseArray(array $nodes): array {
192
176
  $doNodes = [];
193
177
 
194
- foreach ($nodes as $i => &$node) {
178
+ foreach ($nodes as $i => $node) {
195
179
  if ($node instanceof Node) {
196
180
  $traverseChildren = true;
197
- $breakVisitorIndex = null;
181
+ $visitorIndex = -1;
198
182
 
199
183
  foreach ($this->visitors as $visitorIndex => $visitor) {
200
184
  $return = $visitor->enterNode($node);
201
185
  if (null !== $return) {
202
186
  if ($return instanceof Node) {
203
187
  $this->ensureReplacementReasonable($node, $return);
204
- $node = $return;
205
- } elseif (self::DONT_TRAVERSE_CHILDREN === $return) {
188
+ $nodes[$i] = $node = $return;
189
+ } elseif (\is_array($return)) {
190
+ $doNodes[] = [$i, $return];
191
+ continue 2;
192
+ } elseif (NodeVisitor::REMOVE_NODE === $return) {
193
+ $doNodes[] = [$i, []];
194
+ continue 2;
195
+ } elseif (NodeVisitor::DONT_TRAVERSE_CHILDREN === $return) {
206
196
  $traverseChildren = false;
207
- } elseif (self::DONT_TRAVERSE_CURRENT_AND_CHILDREN === $return) {
197
+ } elseif (NodeVisitor::DONT_TRAVERSE_CURRENT_AND_CHILDREN === $return) {
208
198
  $traverseChildren = false;
209
- $breakVisitorIndex = $visitorIndex;
210
199
  break;
211
- } elseif (self::STOP_TRAVERSAL === $return) {
200
+ } elseif (NodeVisitor::STOP_TRAVERSAL === $return) {
212
201
  $this->stopTraversal = true;
213
202
  break 2;
203
+ } elseif (NodeVisitor::REPLACE_WITH_NULL === $return) {
204
+ throw new \LogicException(
205
+ 'REPLACE_WITH_NULL can not be used if the parent structure is an array');
214
206
  } else {
215
207
  throw new \LogicException(
216
208
  'enterNode() returned invalid value of type ' . gettype($return)
@@ -220,43 +212,38 @@ class NodeTraverser implements NodeTraverserInterface
220
212
  }
221
213
 
222
214
  if ($traverseChildren) {
223
- $node = $this->traverseNode($node);
215
+ $this->traverseNode($node);
224
216
  if ($this->stopTraversal) {
225
217
  break;
226
218
  }
227
219
  }
228
220
 
229
- foreach ($this->visitors as $visitorIndex => $visitor) {
221
+ for (; $visitorIndex >= 0; --$visitorIndex) {
222
+ $visitor = $this->visitors[$visitorIndex];
230
223
  $return = $visitor->leaveNode($node);
231
224
 
232
225
  if (null !== $return) {
233
226
  if ($return instanceof Node) {
234
227
  $this->ensureReplacementReasonable($node, $return);
235
- $node = $return;
228
+ $nodes[$i] = $node = $return;
236
229
  } elseif (\is_array($return)) {
237
230
  $doNodes[] = [$i, $return];
238
231
  break;
239
- } elseif (self::REMOVE_NODE === $return) {
232
+ } elseif (NodeVisitor::REMOVE_NODE === $return) {
240
233
  $doNodes[] = [$i, []];
241
234
  break;
242
- } elseif (self::STOP_TRAVERSAL === $return) {
235
+ } elseif (NodeVisitor::STOP_TRAVERSAL === $return) {
243
236
  $this->stopTraversal = true;
244
237
  break 2;
245
- } elseif (false === $return) {
238
+ } elseif (NodeVisitor::REPLACE_WITH_NULL === $return) {
246
239
  throw new \LogicException(
247
- 'bool(false) return from leaveNode() no longer supported. ' .
248
- 'Return NodeTraverser::REMOVE_NODE instead'
249
- );
240
+ 'REPLACE_WITH_NULL can not be used if the parent structure is an array');
250
241
  } else {
251
242
  throw new \LogicException(
252
243
  'leaveNode() returned invalid value of type ' . gettype($return)
253
244
  );
254
245
  }
255
246
  }
256
-
257
- if ($breakVisitorIndex === $visitorIndex) {
258
- break;
259
- }
260
247
  }
261
248
  } elseif (\is_array($node)) {
262
249
  throw new \LogicException('Invalid node structure: Contains nested arrays');
@@ -272,7 +259,7 @@ class NodeTraverser implements NodeTraverserInterface
272
259
  return $nodes;
273
260
  }
274
261
 
275
- private function ensureReplacementReasonable($old, $new) {
262
+ private function ensureReplacementReasonable(Node $old, Node $new): void {
276
263
  if ($old instanceof Node\Stmt && $new instanceof Node\Expr) {
277
264
  throw new \LogicException(
278
265
  "Trying to replace statement ({$old->getType()}) " .
@@ -2,21 +2,18 @@
2
2
 
3
3
  namespace PhpParser;
4
4
 
5
- interface NodeTraverserInterface
6
- {
5
+ interface NodeTraverserInterface {
7
6
  /**
8
7
  * Adds a visitor.
9
8
  *
10
9
  * @param NodeVisitor $visitor Visitor to add
11
10
  */
12
- public function addVisitor(NodeVisitor $visitor);
11
+ public function addVisitor(NodeVisitor $visitor): void;
13
12
 
14
13
  /**
15
14
  * Removes an added visitor.
16
- *
17
- * @param NodeVisitor $visitor
18
15
  */
19
- public function removeVisitor(NodeVisitor $visitor);
16
+ public function removeVisitor(NodeVisitor $visitor): void;
20
17
 
21
18
  /**
22
19
  * Traverses an array of nodes using the registered visitors.
@@ -25,5 +22,5 @@ interface NodeTraverserInterface
25
22
  *
26
23
  * @return Node[] Traversed array of nodes
27
24
  */
28
- public function traverse(array $nodes) : array;
25
+ public function traverse(array $nodes): array;
29
26
  }
@@ -10,8 +10,7 @@ use PhpParser\NodeVisitorAbstract;
10
10
  *
11
11
  * This visitor is required to perform format-preserving pretty prints.
12
12
  */
13
- class CloningVisitor extends NodeVisitorAbstract
14
- {
13
+ class CloningVisitor extends NodeVisitorAbstract {
15
14
  public function enterNode(Node $origNode) {
16
15
  $node = clone $origNode;
17
16
  $node->setAttribute('origNode', $origNode);
@@ -0,0 +1,82 @@
1
+ <?php declare(strict_types=1);
2
+
3
+ namespace PhpParser\NodeVisitor;
4
+
5
+ use PhpParser\Comment;
6
+ use PhpParser\Node;
7
+ use PhpParser\NodeVisitorAbstract;
8
+ use PhpParser\Token;
9
+
10
+ class CommentAnnotatingVisitor extends NodeVisitorAbstract {
11
+ /** @var int Last seen token start position */
12
+ private int $pos = 0;
13
+ /** @var Token[] Token array */
14
+ private array $tokens;
15
+ /** @var list<int> Token positions of comments */
16
+ private array $commentPositions = [];
17
+
18
+ /**
19
+ * Create a comment annotation visitor.
20
+ *
21
+ * @param Token[] $tokens Token array
22
+ */
23
+ public function __construct(array $tokens) {
24
+ $this->tokens = $tokens;
25
+
26
+ // Collect positions of comments. We use this to avoid traversing parts of the AST where
27
+ // there are no comments.
28
+ foreach ($tokens as $i => $token) {
29
+ if ($token->id === \T_COMMENT || $token->id === \T_DOC_COMMENT) {
30
+ $this->commentPositions[] = $i;
31
+ }
32
+ }
33
+ }
34
+
35
+ public function enterNode(Node $node) {
36
+ $nextCommentPos = current($this->commentPositions);
37
+ if ($nextCommentPos === false) {
38
+ // No more comments.
39
+ return self::STOP_TRAVERSAL;
40
+ }
41
+
42
+ $oldPos = $this->pos;
43
+ $this->pos = $pos = $node->getStartTokenPos();
44
+ if ($nextCommentPos > $oldPos && $nextCommentPos < $pos) {
45
+ $comments = [];
46
+ while (--$pos >= $oldPos) {
47
+ $token = $this->tokens[$pos];
48
+ if ($token->id === \T_DOC_COMMENT) {
49
+ $comments[] = new Comment\Doc(
50
+ $token->text, $token->line, $token->pos, $pos,
51
+ $token->getEndLine(), $token->getEndPos() - 1, $pos);
52
+ continue;
53
+ }
54
+ if ($token->id === \T_COMMENT) {
55
+ $comments[] = new Comment(
56
+ $token->text, $token->line, $token->pos, $pos,
57
+ $token->getEndLine(), $token->getEndPos() - 1, $pos);
58
+ continue;
59
+ }
60
+ if ($token->id !== \T_WHITESPACE) {
61
+ break;
62
+ }
63
+ }
64
+ if (!empty($comments)) {
65
+ $node->setAttribute('comments', array_reverse($comments));
66
+ }
67
+
68
+ do {
69
+ $nextCommentPos = next($this->commentPositions);
70
+ } while ($nextCommentPos !== false && $nextCommentPos < $this->pos);
71
+ }
72
+
73
+ $endPos = $node->getEndTokenPos();
74
+ if ($nextCommentPos > $endPos) {
75
+ // Skip children if there are no comments located inside this node.
76
+ $this->pos = $endPos;
77
+ return self::DONT_TRAVERSE_CHILDREN;
78
+ }
79
+
80
+ return null;
81
+ }
82
+ }
@@ -9,12 +9,11 @@ use PhpParser\NodeVisitorAbstract;
9
9
  * This visitor can be used to find and collect all nodes satisfying some criterion determined by
10
10
  * a filter callback.
11
11
  */
12
- class FindingVisitor extends NodeVisitorAbstract
13
- {
12
+ class FindingVisitor extends NodeVisitorAbstract {
14
13
  /** @var callable Filter callback */
15
14
  protected $filterCallback;
16
15
  /** @var Node[] Found nodes */
17
- protected $foundNodes;
16
+ protected array $foundNodes;
18
17
 
19
18
  public function __construct(callable $filterCallback) {
20
19
  $this->filterCallback = $filterCallback;
@@ -27,11 +26,11 @@ class FindingVisitor extends NodeVisitorAbstract
27
26
  *
28
27
  * @return Node[] Found nodes
29
28
  */
30
- public function getFoundNodes() : array {
29
+ public function getFoundNodes(): array {
31
30
  return $this->foundNodes;
32
31
  }
33
32
 
34
- public function beforeTraverse(array $nodes) {
33
+ public function beforeTraverse(array $nodes): ?array {
35
34
  $this->foundNodes = [];
36
35
 
37
36
  return null;
@@ -3,19 +3,18 @@
3
3
  namespace PhpParser\NodeVisitor;
4
4
 
5
5
  use PhpParser\Node;
6
- use PhpParser\NodeTraverser;
6
+ use PhpParser\NodeVisitor;
7
7
  use PhpParser\NodeVisitorAbstract;
8
8
 
9
9
  /**
10
10
  * This visitor can be used to find the first node satisfying some criterion determined by
11
11
  * a filter callback.
12
12
  */
13
- class FirstFindingVisitor extends NodeVisitorAbstract
14
- {
13
+ class FirstFindingVisitor extends NodeVisitorAbstract {
15
14
  /** @var callable Filter callback */
16
15
  protected $filterCallback;
17
16
  /** @var null|Node Found node */
18
- protected $foundNode;
17
+ protected ?Node $foundNode;
19
18
 
20
19
  public function __construct(callable $filterCallback) {
21
20
  $this->filterCallback = $filterCallback;
@@ -28,11 +27,11 @@ class FirstFindingVisitor extends NodeVisitorAbstract
28
27
  *
29
28
  * @return null|Node Found node (or null if not found)
30
29
  */
31
- public function getFoundNode() {
30
+ public function getFoundNode(): ?Node {
32
31
  return $this->foundNode;
33
32
  }
34
33
 
35
- public function beforeTraverse(array $nodes) {
34
+ public function beforeTraverse(array $nodes): ?array {
36
35
  $this->foundNode = null;
37
36
 
38
37
  return null;
@@ -42,7 +41,7 @@ class FirstFindingVisitor extends NodeVisitorAbstract
42
41
  $filterCallback = $this->filterCallback;
43
42
  if ($filterCallback($node)) {
44
43
  $this->foundNode = $node;
45
- return NodeTraverser::STOP_TRAVERSAL;
44
+ return NodeVisitor::STOP_TRAVERSAL;
46
45
  }
47
46
 
48
47
  return null;