binary-collections 2.0.12 → 2.0.14

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 (418) hide show
  1. package/binaries/binary-executor.cjs +307 -162
  2. package/binaries/clean-nodemodule.cjs +307 -162
  3. package/binaries/clean-nodemodules.cjs +307 -162
  4. package/binaries/composer.cjs +323 -0
  5. package/binaries/composer.cmd +2 -0
  6. package/binaries/composer.phar +0 -0
  7. package/binaries/dev.cjs +307 -162
  8. package/binaries/empty.cjs +307 -162
  9. package/binaries/git-reduce-size.cjs +307 -162
  10. package/binaries/javakill.cjs +307 -162
  11. package/binaries/kill-process.cjs +307 -162
  12. package/binaries/nodekill.cjs +307 -162
  13. package/binaries/prod.cjs +307 -162
  14. package/binaries/py.cjs +307 -162
  15. package/binaries/rmfind.cjs +307 -162
  16. package/binaries/rmx.cjs +307 -162
  17. package/binaries/submodule-token.cjs +307 -162
  18. package/binaries/test-cjs.cjs +307 -162
  19. package/binaries/test-esm.cjs +307 -162
  20. package/binaries/yarn-clean.cjs +307 -162
  21. package/binaries/yc +22 -1
  22. package/binaries/yc.cjs +307 -162
  23. package/binaries/ycw +256 -0
  24. package/binaries/ycw.cjs +323 -0
  25. package/docs-src/binary-collections.md +34 -0
  26. package/docs-src/changelog.md +26 -0
  27. package/docs-src/clean-github-actions-caches.md +115 -0
  28. package/docs-src/copy-move-file.md +56 -0
  29. package/docs-src/del-gradle.md +17 -0
  30. package/docs-src/del-ps.md +28 -0
  31. package/docs-src/downloader.md +62 -0
  32. package/docs-src/env-helpers.md +29 -0
  33. package/docs-src/find-node-modules.md +17 -0
  34. package/docs-src/free-chatgpt.md +26 -0
  35. package/docs-src/generate-test-ci.md +56 -0
  36. package/docs-src/get-latest-workflow-status.md +100 -0
  37. package/docs-src/git-diff.md +33 -0
  38. package/docs-src/git-fix.md +34 -0
  39. package/docs-src/git-purge.md +17 -0
  40. package/docs-src/git-reduce-size.md +17 -0
  41. package/docs-src/git-undo.md +21 -0
  42. package/docs-src/kill-night-crows.md +26 -0
  43. package/docs-src/node-cache-cleaner.md +182 -0
  44. package/docs-src/node-executor.md +50 -0
  45. package/docs-src/node-package-packer.md +48 -0
  46. package/docs-src/npm-run-series.md +43 -0
  47. package/docs-src/opencode-cli.md +127 -0
  48. package/docs-src/package-resolutions-updater.md +22 -0
  49. package/docs-src/php-cs-fixer-staged.md +19 -0
  50. package/docs-src/print-directory-tree.md +35 -0
  51. package/docs-src/print-tarball-tree.md +55 -0
  52. package/docs-src/py.md +19 -0
  53. package/docs-src/remove-module.md +32 -0
  54. package/docs-src/rmfind-rmx.md +21 -0
  55. package/docs-src/rmpath.md +38 -0
  56. package/docs-src/run-by-checksum.md +87 -0
  57. package/docs-src/submodule-install.md +31 -0
  58. package/docs-src/submodule-remove.md +22 -0
  59. package/docs-src/submodule-token.md +17 -0
  60. package/docs-src/test-runners.md +21 -0
  61. package/docs-src/upload-backend.md +29 -0
  62. package/docs-src/vscode-cli.md +84 -0
  63. package/docs-src/workflow-badge.md +120 -0
  64. package/docs-src/yarn-install.md +31 -0
  65. package/docs-src/yarn-reinstall.md +27 -0
  66. package/lib/binary-collections/config.cjs +15 -3
  67. package/lib/binary-collections/config.d.cts +10 -0
  68. package/lib/binary-collections/config.mjs +2 -2
  69. package/lib/binary-collections/findScript.cjs +75 -28
  70. package/lib/binary-collections/findScript.mjs +2 -2
  71. package/lib/binary-collections/listScript.cjs +75 -28
  72. package/lib/binary-collections/listScript.mjs +2 -2
  73. package/lib/binary-collections.cjs +85 -43
  74. package/lib/binary-collections.mjs +8 -8
  75. package/lib/changelog.cjs +7 -12
  76. package/lib/changelog.mjs +2 -2
  77. package/lib/chunk-2SJKVOTN.mjs +146 -0
  78. package/lib/{chunk-SPTECFE5.mjs → chunk-3F6EIHYG.mjs} +87 -21
  79. package/lib/chunk-546KAIYT.mjs +113 -0
  80. package/lib/chunk-56BVU63B.mjs +86 -0
  81. package/lib/chunk-5WAOOOGZ.mjs +77 -0
  82. package/lib/{chunk-V2IBPCEV.mjs → chunk-6C7KTYGZ.mjs} +3 -1
  83. package/lib/{chunk-5RTXZVCW.mjs → chunk-6RK5UCTP.mjs} +5 -10
  84. package/lib/chunk-72XTQ3CK.mjs +45 -0
  85. package/lib/chunk-7N52Z4IJ.mjs +39 -0
  86. package/lib/chunk-7Q6YEUQF.mjs +246 -0
  87. package/lib/{chunk-ZOWVMII3.mjs → chunk-AJ3OIYYP.mjs} +75 -28
  88. package/lib/chunk-AQZ7LMFS.mjs +100 -0
  89. package/lib/chunk-BDCMTOZI.mjs +246 -0
  90. package/lib/chunk-BEUM4LH4.mjs +184 -0
  91. package/lib/{chunk-66KDU4TX.mjs → chunk-BO4TZS4Q.mjs} +39 -61
  92. package/lib/chunk-CM3IC5YC.mjs +226 -0
  93. package/lib/{chunk-6PU7BAHB.mjs → chunk-D42YBRZW.mjs} +1 -1
  94. package/lib/chunk-FR3DMHJC.mjs +146 -0
  95. package/lib/chunk-I3O5ZRYU.mjs +77 -0
  96. package/lib/chunk-J4M5EL5P.mjs +108 -0
  97. package/lib/chunk-JK3MG2KF.mjs +236 -0
  98. package/lib/chunk-JMUFQSPE.mjs +184 -0
  99. package/lib/chunk-JVMLKHD2.mjs +62 -0
  100. package/lib/chunk-KAT2JNLZ.mjs +146 -0
  101. package/lib/chunk-KLKAIFKI.mjs +40 -0
  102. package/lib/{chunk-FB2WKVJD.mjs → chunk-KRCPFWIF.mjs} +72 -37
  103. package/lib/chunk-LACQTD5V.mjs +225 -0
  104. package/lib/chunk-LVSPEFU2.mjs +86 -0
  105. package/lib/chunk-MCCMMZSM.mjs +60 -0
  106. package/lib/{chunk-2LSRSEXF.mjs → chunk-MGPYPKIE.mjs} +2 -2
  107. package/lib/chunk-OA2RKEY3.mjs +162 -0
  108. package/lib/{chunk-C6D2TTYU.mjs → chunk-OBXLTXFJ.mjs} +4 -2
  109. package/lib/{chunk-G5UUEWUO.mjs → chunk-PAZH45HS.mjs} +8 -2
  110. package/lib/chunk-QD4T255Z.mjs +40 -0
  111. package/lib/{chunk-XPJGCDOD.mjs → chunk-QII2EKCS.mjs} +14 -2
  112. package/lib/chunk-QZMGBDSA.mjs +32 -0
  113. package/lib/chunk-RDGDLSPD.mjs +76 -0
  114. package/lib/chunk-RJKTSUAX.mjs +123 -0
  115. package/lib/chunk-RKPIBGKE.mjs +61 -0
  116. package/lib/chunk-SARIXFHP.mjs +44 -0
  117. package/lib/chunk-SJYP66BO.mjs +62 -0
  118. package/lib/chunk-SWUAEY4H.mjs +44 -0
  119. package/lib/chunk-TP3O2JGW.mjs +88 -0
  120. package/lib/chunk-UAIF5VIA.mjs +89 -0
  121. package/lib/chunk-UDZBVKXH.mjs +94 -0
  122. package/lib/chunk-UEOWRYAN.mjs +32 -0
  123. package/lib/chunk-UHPFLJXH.mjs +227 -0
  124. package/lib/{chunk-M3YIYRHT.mjs → chunk-UY5VUEA3.mjs} +1 -1
  125. package/lib/chunk-UYNBNLV5.mjs +113 -0
  126. package/lib/chunk-WOC4FZ6F.mjs +164 -0
  127. package/lib/chunk-WSHVPGNM.mjs +44 -0
  128. package/lib/chunk-X7UVQ6ZC.mjs +183 -0
  129. package/lib/{chunk-NCZPTKDV.mjs → chunk-XI67TI46.mjs} +1 -1
  130. package/lib/chunk-XW5NZAKI.mjs +82 -0
  131. package/lib/chunk-YLV4QATP.mjs +86 -0
  132. package/lib/chunk-YWSLMAQ7.mjs +65 -0
  133. package/lib/chunk-ZB4IQ6VJ.mjs +46 -0
  134. package/lib/cross-env/command.cjs +2 -2
  135. package/lib/cross-env/command.js +2 -2
  136. package/lib/cross-env/command.mjs +2 -2
  137. package/lib/cross-env/index.cjs +2 -2
  138. package/lib/cross-env/index.mjs +5 -5
  139. package/lib/cross-env/variable.mjs +2 -2
  140. package/lib/del-gradle.cjs +7 -12
  141. package/lib/del-gradle.mjs +23 -17
  142. package/lib/del-node-modules.cjs +186 -4
  143. package/lib/del-node-modules.mjs +151 -142
  144. package/lib/{del-ps.cjs → del-ps-cli.cjs} +36 -41
  145. package/lib/del-ps-cli.mjs +44 -0
  146. package/lib/del-yarn-caches.cjs +6 -11
  147. package/lib/del-yarn-caches.mjs +1 -1
  148. package/lib/downloader-cli.cjs +256 -0
  149. package/lib/downloader-cli.mjs +90 -0
  150. package/lib/file/copy-cli.cjs +183 -2
  151. package/lib/file/copy-cli.mjs +6 -2
  152. package/lib/file/move-cli.cjs +183 -2
  153. package/lib/file/move-cli.mjs +6 -2
  154. package/lib/find-node-modules-cli.cjs +2 -2
  155. package/lib/find-node-modules-cli.mjs +11 -5
  156. package/lib/find-node-modules.cjs +1 -1
  157. package/lib/find-node-modules.mjs +1 -1
  158. package/lib/free-chatgpt.cjs +6 -11
  159. package/lib/free-chatgpt.mjs +1 -1
  160. package/lib/{git-diff-cli.cjs → git/git-diff-cli.cjs} +109 -36
  161. package/lib/{git-diff-cli.mjs → git/git-diff-cli.mjs} +7 -7
  162. package/lib/{git-diff.cjs → git/git-diff.cjs} +107 -34
  163. package/lib/{git-diff.js → git/git-diff.js} +88 -31
  164. package/lib/{git-diff.mjs → git/git-diff.mjs} +6 -6
  165. package/lib/{git-fix.cjs → git/git-fix.cjs} +140 -14
  166. package/lib/git/git-fix.d.cts +2 -0
  167. package/lib/{git-fix.mjs → git/git-fix.mjs} +19 -14
  168. package/lib/{git-purge.cjs → git/git-purge.cjs} +8 -13
  169. package/lib/{git-purge.mjs → git/git-purge.mjs} +5 -5
  170. package/lib/git/user-config.cjs +137 -12
  171. package/lib/git/user-config.mjs +4 -2
  172. package/lib/{clean-github-actions-caches-cli.cjs → github-workflows/clean-github-actions-caches-cli.cjs} +292 -222
  173. package/lib/{clean-github-actions-caches-cli.mjs → github-workflows/clean-github-actions-caches-cli.mjs} +30 -11
  174. package/lib/github-workflows/clean-github-actions-caches.cjs +473 -0
  175. package/lib/github-workflows/clean-github-actions-caches.d.cts +53 -0
  176. package/lib/{clean-github-actions-caches.mjs → github-workflows/clean-github-actions-caches.mjs} +5 -3
  177. package/lib/github-workflows/generate-test-ci-step-cli.cjs +240 -0
  178. package/lib/github-workflows/generate-test-ci-step-cli.d.mts +2 -0
  179. package/lib/github-workflows/generate-test-ci-step-cli.mjs +132 -0
  180. package/lib/github-workflows/get-latest-workflow-status-cli.cjs +541 -0
  181. package/lib/github-workflows/get-latest-workflow-status-cli.d.mts +2 -0
  182. package/lib/github-workflows/get-latest-workflow-status-cli.mjs +61 -0
  183. package/lib/github-workflows/get-latest-workflow-status.cjs +56 -0
  184. package/lib/github-workflows/get-latest-workflow-status.d.mts +1 -0
  185. package/lib/{ps/isWin.mjs → github-workflows/get-latest-workflow-status.mjs} +3 -5
  186. package/lib/github-workflows/utils.cjs +271 -0
  187. package/lib/github-workflows/utils.d.cts +76 -0
  188. package/lib/github-workflows/utils.mjs +8 -0
  189. package/lib/github-workflows/workflow-badge-cli.cjs +722 -0
  190. package/lib/github-workflows/workflow-badge-cli.d.mts +2 -0
  191. package/lib/github-workflows/workflow-badge-cli.mjs +98 -0
  192. package/lib/github-workflows/workflow-badge-generator.cjs +200 -0
  193. package/lib/github-workflows/workflow-badge-generator.d.mts +14 -0
  194. package/lib/github-workflows/workflow-badge-generator.mjs +8 -0
  195. package/lib/github-workflows/workflow-test-data.cjs +73 -0
  196. package/lib/github-workflows/workflow-test-data.d.cts +63 -0
  197. package/lib/github-workflows/workflow-test-data.mjs +6 -0
  198. package/lib/index.cjs +1 -1
  199. package/lib/index.mjs +1 -1
  200. package/lib/node-cache-cleaner-cli.cjs +185 -2
  201. package/lib/node-cache-cleaner-cli.js +2 -5
  202. package/lib/node-cache-cleaner-cli.mjs +8 -4
  203. package/lib/node-executor.cjs +183 -2
  204. package/lib/node-executor.mjs +5 -2
  205. package/lib/node-package-packer/build-readme.cjs +150 -0
  206. package/lib/node-package-packer/build-readme.d.mts +10 -0
  207. package/lib/node-package-packer/build-readme.mjs +10 -0
  208. package/lib/node-package-packer/build-tarball.cjs +495 -0
  209. package/lib/node-package-packer/build-tarball.d.mts +33 -0
  210. package/lib/node-package-packer/build-tarball.mjs +175 -0
  211. package/lib/node-package-packer-cli.cjs +525 -0
  212. package/lib/node-package-packer-cli.d.mts +1 -0
  213. package/lib/node-package-packer-cli.mjs +34 -0
  214. package/lib/npm-run-series.cjs +7 -12
  215. package/lib/npm-run-series.mjs +2 -2
  216. package/lib/opencode/cli/auth-rotate.cjs +143 -0
  217. package/lib/opencode/cli/auth-rotate.d.ts +1 -0
  218. package/lib/opencode/cli/auth-rotate.js +70 -0
  219. package/lib/opencode/cli/auth-rotate.mjs +10 -0
  220. package/lib/opencode/cli/list-projects.cjs +184 -0
  221. package/lib/opencode/cli/list-projects.d.ts +1 -0
  222. package/lib/opencode/cli/list-projects.js +32 -0
  223. package/lib/opencode/cli/list-projects.mjs +11 -0
  224. package/lib/opencode/cli/list-sessions.cjs +215 -0
  225. package/lib/opencode/cli/list-sessions.d.ts +1 -0
  226. package/lib/opencode/cli/list-sessions.js +45 -0
  227. package/lib/opencode/cli/list-sessions.mjs +11 -0
  228. package/lib/opencode/database.cjs +349 -0
  229. package/lib/opencode/database.d.ts +91 -0
  230. package/lib/opencode/database.js +252 -0
  231. package/lib/opencode/database.mjs +28 -0
  232. package/lib/opencode/database.runner.cjs +145 -0
  233. package/lib/opencode/database.runner.d.ts +1 -0
  234. package/lib/opencode/database.runner.js +56 -0
  235. package/lib/opencode/database.runner.mjs +37 -0
  236. package/lib/opencode/opencode-zen.runner.cjs +48 -0
  237. package/lib/opencode/opencode-zen.runner.d.mts +1 -0
  238. package/lib/opencode/opencode-zen.runner.mjs +31 -0
  239. package/lib/opencode/sqlite.cjs +114 -0
  240. package/lib/opencode/sqlite.d.ts +18 -0
  241. package/lib/opencode/sqlite.js +82 -0
  242. package/lib/opencode/sqlite.mjs +10 -0
  243. package/lib/opencode/storage.cjs +124 -0
  244. package/lib/opencode/storage.d.ts +27 -0
  245. package/lib/opencode/storage.js +101 -0
  246. package/lib/opencode/storage.mjs +38 -0
  247. package/lib/opencode/storage.runner.cjs +50 -0
  248. package/lib/opencode/storage.runner.d.ts +1 -0
  249. package/lib/opencode/storage.runner.js +13 -0
  250. package/lib/opencode/storage.runner.mjs +29 -0
  251. package/lib/{ps/isWin.cjs → opencode/types.cjs} +3 -12
  252. package/lib/opencode/types.d.ts +31 -0
  253. package/lib/{ps/isWin.js → opencode/types.js} +0 -2
  254. package/lib/opencode/types.mjs +7 -0
  255. package/lib/opencode/utils/check-api.cjs +59 -0
  256. package/lib/opencode/utils/check-api.d.ts +12 -0
  257. package/lib/opencode/utils/check-api.js +46 -0
  258. package/lib/opencode/utils/check-api.mjs +8 -0
  259. package/lib/opencode-cli.cjs +473 -0
  260. package/lib/opencode-cli.d.ts +2 -0
  261. package/lib/opencode-cli.js +115 -0
  262. package/lib/opencode-cli.mjs +111 -0
  263. package/lib/package-resolutions-updater-cli.cjs +218 -194
  264. package/lib/package-resolutions-updater-cli.mjs +6 -4
  265. package/lib/package-resolutions-updater.cjs +216 -192
  266. package/lib/package-resolutions-updater.d.mts +44 -1
  267. package/lib/package-resolutions-updater.mjs +5 -3
  268. package/lib/php-cs-fixer-staged.cjs +1 -1
  269. package/lib/php-cs-fixer-staged.mjs +1 -1
  270. package/lib/print-directory-tree.cjs +147 -21
  271. package/lib/print-directory-tree.mjs +17 -11
  272. package/lib/print-tarball-tree.cjs +262 -0
  273. package/lib/print-tarball-tree.d.mts +1 -0
  274. package/lib/print-tarball-tree.mjs +68 -0
  275. package/lib/ps/index.cjs +10 -10
  276. package/lib/ps/index.mjs +4 -4
  277. package/lib/ps/table-parser.d.ts +3 -4
  278. package/lib/ps/table-parser.js +9 -16
  279. package/lib/remove-module.cjs +17 -22
  280. package/lib/remove-module.mjs +2 -2
  281. package/lib/rm-node-module-cli.cjs +171 -4
  282. package/lib/rm-node-module-cli.mjs +7 -4
  283. package/lib/rmpath-cli.cjs +411 -0
  284. package/lib/rmpath-cli.d.mts +1 -0
  285. package/lib/rmpath-cli.mjs +25 -0
  286. package/lib/rmpath.cjs +113 -188
  287. package/lib/rmpath.mjs +7 -101
  288. package/lib/run-by-checksum/cache.cjs +69 -0
  289. package/lib/run-by-checksum/cache.d.ts +19 -0
  290. package/lib/run-by-checksum/cache.js +50 -0
  291. package/lib/run-by-checksum/cache.mjs +12 -0
  292. package/lib/run-by-checksum/hash.cjs +88 -0
  293. package/lib/run-by-checksum/hash.d.ts +17 -0
  294. package/lib/run-by-checksum/hash.js +119 -0
  295. package/lib/run-by-checksum/hash.mjs +10 -0
  296. package/lib/run-by-checksum/run.cjs +185 -0
  297. package/lib/run-by-checksum/run.d.ts +22 -0
  298. package/lib/run-by-checksum/run.js +93 -0
  299. package/lib/run-by-checksum/run.mjs +10 -0
  300. package/lib/run-by-checksum-cli.cjs +398 -0
  301. package/lib/run-by-checksum-cli.d.ts +2 -0
  302. package/lib/run-by-checksum-cli.js +43 -0
  303. package/lib/run-by-checksum-cli.mjs +56 -0
  304. package/lib/submodule-install.cjs +137 -16
  305. package/lib/submodule-install.mjs +7 -6
  306. package/lib/submodule-remove-cli.cjs +300 -7
  307. package/lib/submodule-remove-cli.js +2 -2
  308. package/lib/submodule-remove-cli.mjs +8 -3
  309. package/lib/submodule-remove.cjs +146 -5
  310. package/lib/submodule-remove.mjs +3 -1
  311. package/lib/utils/fetchResponse.cjs +24 -0
  312. package/lib/utils/fetchResponse.d.cts +25 -0
  313. package/lib/utils/fetchResponse.mjs +6 -0
  314. package/lib/utils/findEnvFiles.cjs +3 -0
  315. package/lib/utils/findEnvFiles.d.cts +2 -2
  316. package/lib/utils/findEnvFiles.mjs +1 -1
  317. package/lib/utils/index.cjs +5 -10
  318. package/lib/utils/index.d.cts +2 -9
  319. package/lib/utils/index.mjs +1 -1
  320. package/lib/utils/isWindows.mjs +3 -1
  321. package/lib/utils/runBash.cjs +1 -1
  322. package/lib/utils/runBash.mjs +1 -1
  323. package/lib/vscode/project.cjs +0 -0
  324. package/lib/vscode/project.d.ts +0 -0
  325. package/lib/vscode/project.js +1 -0
  326. package/lib/vscode/project.mjs +7 -0
  327. package/lib/vscode/storage.cjs +138 -0
  328. package/lib/vscode/storage.d.ts +51 -0
  329. package/lib/vscode/storage.js +169 -0
  330. package/lib/vscode/storage.mjs +42 -0
  331. package/lib/vscode/storage.runner.cjs +125 -0
  332. package/lib/vscode/storage.runner.d.ts +1 -0
  333. package/lib/vscode/storage.runner.js +47 -0
  334. package/lib/vscode/storage.runner.mjs +60 -0
  335. package/lib/vscode-cli.cjs +155 -0
  336. package/lib/vscode-cli.d.ts +2 -0
  337. package/lib/vscode-cli.js +80 -0
  338. package/lib/vscode-cli.mjs +71 -0
  339. package/lib/yarn-per-branch-lock-installer.cjs +202 -11
  340. package/lib/yarn-per-branch-lock-installer.mjs +24 -11
  341. package/lib/yarn-reinstall.cjs +6 -11
  342. package/lib/yarn-reinstall.mjs +1 -1
  343. package/package.json +75 -28
  344. package/readme.html +2 -2
  345. package/readme.md +44 -11
  346. package/releases/readme.md +6 -3
  347. package/src/github-workflows/generate-test-ci-step-cli.mjs +126 -0
  348. package/tmp/test-repo-runChecksum/test-complex-glob/README.md +1 -0
  349. package/tmp/test-repo-runChecksum/test-mixed-args/README.md +1 -0
  350. package/vendor/clue/ndjson-react/README.md +365 -0
  351. package/vendor/composer/pcre/README.md +189 -0
  352. package/vendor/composer/semver/README.md +99 -0
  353. package/vendor/composer/xdebug-handler/README.md +305 -0
  354. package/vendor/ergebnis/agent-detector/README.md +107 -0
  355. package/vendor/evenement/evenement/README.md +64 -0
  356. package/vendor/fidry/cpu-core-counter/README.md +138 -0
  357. package/vendor/friendsofphp/php-cs-fixer/README.md +97 -0
  358. package/vendor/psr/container/README.md +13 -0
  359. package/vendor/psr/event-dispatcher/README.md +6 -0
  360. package/vendor/psr/log/README.md +58 -0
  361. package/vendor/react/cache/README.md +367 -0
  362. package/vendor/react/child-process/README.md +619 -0
  363. package/vendor/react/dns/README.md +453 -0
  364. package/vendor/react/event-loop/README.md +930 -0
  365. package/vendor/react/promise/README.md +722 -0
  366. package/vendor/react/socket/README.md +1564 -0
  367. package/vendor/react/stream/README.md +1249 -0
  368. package/vendor/sebastian/diff/README.md +151 -0
  369. package/vendor/symfony/console/README.md +30 -0
  370. package/vendor/symfony/deprecation-contracts/README.md +26 -0
  371. package/vendor/symfony/event-dispatcher/README.md +25 -0
  372. package/vendor/symfony/event-dispatcher-contracts/README.md +9 -0
  373. package/vendor/symfony/filesystem/README.md +23 -0
  374. package/vendor/symfony/finder/README.md +24 -0
  375. package/vendor/symfony/options-resolver/README.md +25 -0
  376. package/vendor/symfony/polyfill-ctype/README.md +12 -0
  377. package/vendor/symfony/polyfill-intl-grapheme/README.md +32 -0
  378. package/vendor/symfony/polyfill-intl-normalizer/README.md +14 -0
  379. package/vendor/symfony/polyfill-mbstring/README.md +13 -0
  380. package/vendor/symfony/polyfill-php80/README.md +25 -0
  381. package/vendor/symfony/polyfill-php81/README.md +18 -0
  382. package/vendor/symfony/polyfill-php84/README.md +23 -0
  383. package/vendor/symfony/polyfill-php85/README.md +20 -0
  384. package/vendor/symfony/process/README.md +23 -0
  385. package/vendor/symfony/service-contracts/README.md +9 -0
  386. package/vendor/symfony/stopwatch/README.md +52 -0
  387. package/vendor/symfony/string/README.md +24 -0
  388. package/.opencode/package.json +0 -5
  389. package/lib/chunk-6S4NXESK.mjs +0 -26
  390. package/lib/clean-github-actions-caches.cjs +0 -249
  391. package/lib/clean-github-actions-caches.d.cts +0 -15
  392. package/lib/del-gradle.js +0 -16
  393. package/lib/del-node-modules.js +0 -211
  394. package/lib/del-ps.js +0 -32
  395. package/lib/del-ps.mjs +0 -43
  396. package/lib/find-node-modules-cli.js +0 -4
  397. package/lib/ps/isWin.d.ts +0 -2
  398. package/test/package.json +0 -20
  399. package/test-project/package.json +0 -22
  400. package/test-project/workspaces/workspace-a/package.json +0 -135
  401. package/test-project/workspaces/workspace-a/test/demo/package.json +0 -25
  402. package/test-project/workspaces/workspace-b/package.json +0 -139
  403. package/test-project/workspaces/workspace-b/test/sample-project/package.json +0 -7
  404. package/test-project/workspaces/workspace-b/themes/hexo-theme-flowbite/package.json +0 -96
  405. package/tmp/rm-node-modules-test-project/package.json +0 -17
  406. package/tmp/rm-node-modules-test-project/packages/workspace-a/package.json +0 -16
  407. package/tmp/rm-node-modules-test-project/packages/workspace-b/package.json +0 -16
  408. package/tmp/test-repo/package.json +0 -17
  409. /package/lib/{clean-github-actions-caches-cli.d.cts → del-gradle.d.cts} +0 -0
  410. /package/lib/{del-gradle.d.ts → del-node-modules.d.cts} +0 -0
  411. /package/lib/{del-node-modules.d.ts → del-ps-cli.d.mts} +0 -0
  412. /package/lib/{find-node-modules-cli.d.ts → downloader-cli.d.cts} +0 -0
  413. /package/lib/{git-diff-cli.d.ts → find-node-modules-cli.d.cts} +0 -0
  414. /package/lib/{git-fix.d.cts → git/git-diff-cli.d.ts} +0 -0
  415. /package/lib/{git-diff-cli.js → git/git-diff-cli.js} +0 -0
  416. /package/lib/{git-diff.d.ts → git/git-diff.d.ts} +0 -0
  417. /package/lib/{git-purge.d.cts → git/git-purge.d.cts} +0 -0
  418. /package/lib/{del-ps.d.ts → github-workflows/clean-github-actions-caches-cli.d.cts} +0 -0
@@ -0,0 +1,138 @@
1
+ # CPU Core Counter
2
+
3
+ This package is a tiny utility to get the number of CPU cores.
4
+
5
+ ```sh
6
+ composer require fidry/cpu-core-counter
7
+ ```
8
+
9
+
10
+ ## Usage
11
+
12
+ ```php
13
+ use Fidry\CpuCoreCounter\CpuCoreCounter;
14
+ use Fidry\CpuCoreCounter\NumberOfCpuCoreNotFound;
15
+ use Fidry\CpuCoreCounter\Finder\DummyCpuCoreFinder;
16
+
17
+ $counter = new CpuCoreCounter();
18
+
19
+ // For knowing the number of cores you can use for launching parallel processes:
20
+ $counter->getAvailableForParallelisation()->availableCpus;
21
+
22
+ // Get the number of CPU cores (by default it will use the logical cores count):
23
+ try {
24
+ $counter->getCount(); // e.g. 8
25
+ } catch (NumberOfCpuCoreNotFound) {
26
+ return 1; // Fallback value
27
+ }
28
+
29
+ // An alternative form where we not want to catch the exception:
30
+
31
+ $counter = new CpuCoreCounter([
32
+ ...CpuCoreCounter::getDefaultFinders(),
33
+ new DummyCpuCoreFinder(1), // Fallback value
34
+ ]);
35
+
36
+ // A type-safe alternative form:
37
+ $counter->getCountWithFallback(1);
38
+
39
+ // Note that the result is memoized.
40
+ $counter->getCount(); // e.g. 8
41
+
42
+ ```
43
+
44
+
45
+ ## Advanced usage
46
+
47
+ ### Changing the finders
48
+
49
+ When creating `CpuCoreCounter`, you may want to change the order of the finders
50
+ used or disable a specific finder. You can easily do so by passing the finders
51
+ you want
52
+
53
+ ```php
54
+ // Remove WindowsWmicFinder
55
+ $finders = array_filter(
56
+ CpuCoreCounter::getDefaultFinders(),
57
+ static fn (CpuCoreFinder $finder) => !($finder instanceof WindowsWmicFinder)
58
+ );
59
+
60
+ $cores = (new CpuCoreCounter($finders))->getCount();
61
+ ```
62
+
63
+ ```php
64
+ // Use CPUInfo first & don't use Nproc
65
+ $finders = [
66
+ new CpuInfoFinder(),
67
+ new WindowsWmicFinder(),
68
+ new HwLogicalFinder(),
69
+ ];
70
+
71
+ $cores = (new CpuCoreCounter($finders))->getCount();
72
+ ```
73
+
74
+ ### Choosing only logical or physical finders
75
+
76
+ `FinderRegistry` provides two helpful entries:
77
+
78
+ - `::getDefaultLogicalFinders()`: gives an ordered list of finders that will
79
+ look for the _logical_ CPU cores count.
80
+ - `::getDefaultPhysicalFinders()`: gives an ordered list of finders that will
81
+ look for the _physical_ CPU cores count.
82
+
83
+ By default, when using `CpuCoreCounter`, it will use the logical finders since
84
+ it is more likely what you are looking for and is what is used by PHP source to
85
+ build the PHP binary.
86
+
87
+
88
+ ### Checks what finders find what on your system
89
+
90
+ You have three scrips available that provides insight about what the finders
91
+ can find:
92
+
93
+ ```shell
94
+ # Checks what each given finder will find on your system with details about the
95
+ # information it had.
96
+ make diagnose # From this repository
97
+ ./vendor/fidry/cpu-core-counter/bin/diagnose.php # From the library
98
+ ```
99
+
100
+ And:
101
+ ```shell
102
+ # Execute all finders and display the result they found.
103
+ make execute # From this repository
104
+ ./vendor/fidry/cpu-core-counter/bin/execute.php # From the library
105
+ ```
106
+
107
+
108
+ ### Debug the results found
109
+
110
+ You have 3 methods available to help you find out what happened:
111
+
112
+ 1. If you are using the default configuration of finder registries, you can check
113
+ the previous section which will provide plenty of information.
114
+ 2. If what you are interested in is how many CPU cores were found, you can use
115
+ the `CpuCoreCounter::trace()` method.
116
+ 3. If what you are interested in is how the calculation of CPU cores available
117
+ for parallelisation was done, you can inspect the values of `ParallelisationResult`
118
+ returned by `CpuCoreCounter::getAvailableForParallelisation()`.
119
+
120
+
121
+ ## Backward Compatibility Promise (BCP)
122
+
123
+ The policy is for the major part following the same as [Symfony's one][symfony-bc-policy].
124
+ Note that the code marked as `@private` or `@internal` are excluded from the BCP.
125
+
126
+ The following elements are also excluded:
127
+
128
+ - The `diagnose` and `execute` commands: those are for debugging/inspection purposes only
129
+ - `FinderRegistry::get*Finders()`: new finders may be added or the order of finders changed at any time
130
+
131
+
132
+ ## License
133
+
134
+ This package is licensed using the MIT License.
135
+
136
+ Please have a look at [`LICENSE.md`](LICENSE.md).
137
+
138
+ [symfony-bc-policy]: https://symfony.com/doc/current/contributing/code/bc.html
@@ -0,0 +1,97 @@
1
+ <p align="center">
2
+ <a href="https://cs.symfony.com">
3
+ <img src="./logo.png" title="PHP CS Fixer" alt="PHP CS Fixer logo">
4
+ </a>
5
+ </p>
6
+
7
+ # PHP Coding Standards Fixer
8
+
9
+ The PHP Coding Standards Fixer (PHP CS Fixer) fixes your code to follow the standards.
10
+
11
+ If you are already using a linter to identify coding standards problems in your
12
+ code, you know that fixing them by hand is tedious, especially on large
13
+ projects. This tool not only detects them, but also fixes them for you.
14
+
15
+ PHP CS Fixer has built-in rule sets, whether you want to follow PHP coding standards as defined by [PHP-FIG's PER Coding Style](https://www.php-fig.org/per/coding-style/) - [`@PER-CS`](./doc/ruleSets/PER-CS.rst),
16
+ a wide community like the [Symfony](https://symfony.com/doc/current/contributing/code/standards.html) - [`@Symfony`](./doc/ruleSets/Symfony.rst),
17
+ or our opinionated one - [@PhpCsFixer](./doc/ruleSets/PhpCsFixer.rst).
18
+ You can also define your (team's) style through the [configuration file](./doc/config.rst).
19
+
20
+ PHP CS Fixer can not only unify the style of your code, but also help to modernise your codebase towards
21
+ newer PHP (e.g. [`@autoPHPMigration`](./doc/ruleSets/AutoPHPMigration.rst) and [`@autoPHPMigration:risky`](./doc/ruleSets/AutoPHPMigrationRisky.rst)) and newer PHPUnit (e.g. [`@autoPHPUnitMigration:risky`](./doc/ruleSets/AutoPHPUnitMigrationRisky.rst)).
22
+
23
+ There are also [`@auto`](./doc/ruleSets/Auto.rst) and [`@auto:risky`](./doc/ruleSets/AutoRisky.rst) that aim to provide good base rules.
24
+
25
+ ## Supported PHP Versions
26
+
27
+ * PHP 7.4 - PHP 8.5
28
+
29
+ > [!NOTE]
30
+ > Each new PHP version requires a huge effort to support the new syntax.
31
+ > That's why the latest PHP version might not be supported yet. If you need it,
32
+ > please consider supporting the project in any convenient way, for example,
33
+ > with code contributions or reviewing existing PRs. To run PHP CS Fixer on yet
34
+ > unsupported versions "at your own risk" - use `--allow-unsupported-php-version=yes` option.
35
+
36
+ ## Documentation
37
+
38
+ ### Installation
39
+
40
+ The recommended way to install PHP CS Fixer is to use [Composer](https://getcomposer.org/download/):
41
+
42
+ ```sh
43
+ composer require --dev friendsofphp/php-cs-fixer
44
+ ## or when facing conflicts in dependencies:
45
+ composer require --dev php-cs-fixer/shim
46
+ ```
47
+
48
+ For more details and other installation methods (also with Docker or behind CI), see
49
+ [installation instructions](./doc/installation.rst).
50
+
51
+ ### Usage
52
+
53
+ Assuming you installed PHP CS Fixer as instructed above, you can
54
+ initialise base config for your project by using following command:
55
+
56
+ ```sh
57
+ ./vendor/bin/php-cs-fixer init
58
+ ```
59
+
60
+ To automatically fix your project, or only check against the need of changes, run:
61
+
62
+ ```sh
63
+ ./vendor/bin/php-cs-fixer fix
64
+ ./vendor/bin/php-cs-fixer check
65
+ ```
66
+
67
+ See [usage](./doc/usage.rst), list of [built-in rules](./doc/rules/index.rst), list of [rule sets](./doc/ruleSets/index.rst)
68
+ and [configuration file](./doc/config.rst) documentation for more details.
69
+
70
+ If you need to apply code styles that are not built-in into the tool, you can
71
+ [create custom rules](./doc/custom_rules.rst).
72
+
73
+ ## Editor Integration
74
+
75
+ Native support exists for:
76
+
77
+ * [PhpStorm](https://www.jetbrains.com/help/phpstorm/using-php-cs-fixer.html)
78
+
79
+ Community plugins exist for:
80
+
81
+ * [NetBeans](https://plugins.netbeans.apache.org/catalogue/?id=36)
82
+ * [Sublime Text](https://github.com/benmatselby/sublime-phpcs)
83
+ * [Vim](https://github.com/stephpy/vim-php-cs-fixer)
84
+ * [VS Code](https://github.com/junstyle/vscode-php-cs-fixer)
85
+
86
+ ## Community
87
+
88
+ The PHP CS Fixer is maintained on GitHub at <https://github.com/PHP-CS-Fixer/PHP-CS-Fixer>.
89
+ Contributions, bug reports and ideas about new features are welcome there.
90
+
91
+ You can reach us in the [GitHub Discussions](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/discussions/) regarding the
92
+ project, configuration, possible improvements, ideas and questions.
93
+
94
+ ## Contribute
95
+
96
+ The tool comes with quite a few built-in fixers, but everyone is more than
97
+ welcome to [contribute](./CONTRIBUTING.md) more of them.
@@ -0,0 +1,13 @@
1
+ Container interface
2
+ ==============
3
+
4
+ This repository holds all interfaces related to [PSR-11 (Container Interface)][psr-url].
5
+
6
+ Note that this is not a Container implementation of its own. It is merely abstractions that describe the components of a Dependency Injection Container.
7
+
8
+ The installable [package][package-url] and [implementations][implementation-url] are listed on Packagist.
9
+
10
+ [psr-url]: https://www.php-fig.org/psr/psr-11/
11
+ [package-url]: https://packagist.org/packages/psr/container
12
+ [implementation-url]: https://packagist.org/providers/psr/container-implementation
13
+
@@ -0,0 +1,6 @@
1
+ PSR Event Dispatcher
2
+ ====================
3
+
4
+ This repository holds the interfaces related to [PSR-14](http://www.php-fig.org/psr/psr-14/).
5
+
6
+ Note that this is not an Event Dispatcher implementation of its own. It is merely interfaces that describe the components of an Event Dispatcher. See the specification for more details.
@@ -0,0 +1,58 @@
1
+ PSR Log
2
+ =======
3
+
4
+ This repository holds all interfaces/classes/traits related to
5
+ [PSR-3](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-3-logger-interface.md).
6
+
7
+ Note that this is not a logger of its own. It is merely an interface that
8
+ describes a logger. See the specification for more details.
9
+
10
+ Installation
11
+ ------------
12
+
13
+ ```bash
14
+ composer require psr/log
15
+ ```
16
+
17
+ Usage
18
+ -----
19
+
20
+ If you need a logger, you can use the interface like this:
21
+
22
+ ```php
23
+ <?php
24
+
25
+ use Psr\Log\LoggerInterface;
26
+
27
+ class Foo
28
+ {
29
+ private $logger;
30
+
31
+ public function __construct(LoggerInterface $logger = null)
32
+ {
33
+ $this->logger = $logger;
34
+ }
35
+
36
+ public function doSomething()
37
+ {
38
+ if ($this->logger) {
39
+ $this->logger->info('Doing work');
40
+ }
41
+
42
+ try {
43
+ $this->doSomethingElse();
44
+ } catch (Exception $exception) {
45
+ $this->logger->error('Oh no!', array('exception' => $exception));
46
+ }
47
+
48
+ // do something useful
49
+ }
50
+ }
51
+ ```
52
+
53
+ You can then pick one of the implementations of the interface to get a logger.
54
+
55
+ If you want to implement the interface, you can require this package and
56
+ implement `Psr\Log\LoggerInterface` in your code. Please read the
57
+ [specification text](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-3-logger-interface.md)
58
+ for details.
@@ -0,0 +1,367 @@
1
+ # Cache
2
+
3
+ [![CI status](https://github.com/reactphp/cache/actions/workflows/ci.yml/badge.svg)](https://github.com/reactphp/cache/actions)
4
+ [![installs on Packagist](https://img.shields.io/packagist/dt/react/cache?color=blue&label=installs%20on%20Packagist)](https://packagist.org/packages/react/cache)
5
+
6
+ Async, [Promise](https://github.com/reactphp/promise)-based cache interface
7
+ for [ReactPHP](https://reactphp.org/).
8
+
9
+ The cache component provides a
10
+ [Promise](https://github.com/reactphp/promise)-based
11
+ [`CacheInterface`](#cacheinterface) and an in-memory [`ArrayCache`](#arraycache)
12
+ implementation of that.
13
+ This allows consumers to type hint against the interface and third parties to
14
+ provide alternate implementations.
15
+ This project is heavily inspired by
16
+ [PSR-16: Common Interface for Caching Libraries](https://www.php-fig.org/psr/psr-16/),
17
+ but uses an interface more suited for async, non-blocking applications.
18
+
19
+ **Table of Contents**
20
+
21
+ * [Usage](#usage)
22
+ * [CacheInterface](#cacheinterface)
23
+ * [get()](#get)
24
+ * [set()](#set)
25
+ * [delete()](#delete)
26
+ * [getMultiple()](#getmultiple)
27
+ * [setMultiple()](#setmultiple)
28
+ * [deleteMultiple()](#deletemultiple)
29
+ * [clear()](#clear)
30
+ * [has()](#has)
31
+ * [ArrayCache](#arraycache)
32
+ * [Common usage](#common-usage)
33
+ * [Fallback get](#fallback-get)
34
+ * [Fallback-get-and-set](#fallback-get-and-set)
35
+ * [Install](#install)
36
+ * [Tests](#tests)
37
+ * [License](#license)
38
+
39
+ ## Usage
40
+
41
+ ### CacheInterface
42
+
43
+ The `CacheInterface` describes the main interface of this component.
44
+ This allows consumers to type hint against the interface and third parties to
45
+ provide alternate implementations.
46
+
47
+ #### get()
48
+
49
+ The `get(string $key, mixed $default = null): PromiseInterface<mixed>` method can be used to
50
+ retrieve an item from the cache.
51
+
52
+ This method will resolve with the cached value on success or with the
53
+ given `$default` value when no item can be found or when an error occurs.
54
+ Similarly, an expired cache item (once the time-to-live is expired) is
55
+ considered a cache miss.
56
+
57
+ ```php
58
+ $cache
59
+ ->get('foo')
60
+ ->then('var_dump');
61
+ ```
62
+
63
+ This example fetches the value of the key `foo` and passes it to the
64
+ `var_dump` function. You can use any of the composition provided by
65
+ [promises](https://github.com/reactphp/promise).
66
+
67
+ #### set()
68
+
69
+ The `set(string $key, mixed $value, ?float $ttl = null): PromiseInterface<bool>` method can be used to
70
+ store an item in the cache.
71
+
72
+ This method will resolve with `true` on success or `false` when an error
73
+ occurs. If the cache implementation has to go over the network to store
74
+ it, it may take a while.
75
+
76
+ The optional `$ttl` parameter sets the maximum time-to-live in seconds
77
+ for this cache item. If this parameter is omitted (or `null`), the item
78
+ will stay in the cache for as long as the underlying implementation
79
+ supports. Trying to access an expired cache item results in a cache miss,
80
+ see also [`get()`](#get).
81
+
82
+ ```php
83
+ $cache->set('foo', 'bar', 60);
84
+ ```
85
+
86
+ This example eventually sets the value of the key `foo` to `bar`. If it
87
+ already exists, it is overridden.
88
+
89
+ This interface does not enforce any particular TTL resolution, so special
90
+ care may have to be taken if you rely on very high precision with
91
+ millisecond accuracy or below. Cache implementations SHOULD work on a
92
+ best effort basis and SHOULD provide at least second accuracy unless
93
+ otherwise noted. Many existing cache implementations are known to provide
94
+ microsecond or millisecond accuracy, but it's generally not recommended
95
+ to rely on this high precision.
96
+
97
+ This interface suggests that cache implementations SHOULD use a monotonic
98
+ time source if available. Given that a monotonic time source is only
99
+ available as of PHP 7.3 by default, cache implementations MAY fall back
100
+ to using wall-clock time.
101
+ While this does not affect many common use cases, this is an important
102
+ distinction for programs that rely on a high time precision or on systems
103
+ that are subject to discontinuous time adjustments (time jumps).
104
+ This means that if you store a cache item with a TTL of 30s and then
105
+ adjust your system time forward by 20s, the cache item SHOULD still
106
+ expire in 30s.
107
+
108
+ #### delete()
109
+
110
+ The `delete(string $key): PromiseInterface<bool>` method can be used to
111
+ delete an item from the cache.
112
+
113
+ This method will resolve with `true` on success or `false` when an error
114
+ occurs. When no item for `$key` is found in the cache, it also resolves
115
+ to `true`. If the cache implementation has to go over the network to
116
+ delete it, it may take a while.
117
+
118
+ ```php
119
+ $cache->delete('foo');
120
+ ```
121
+
122
+ This example eventually deletes the key `foo` from the cache. As with
123
+ `set()`, this may not happen instantly and a promise is returned to
124
+ provide guarantees whether or not the item has been removed from cache.
125
+
126
+ #### getMultiple()
127
+
128
+ The `getMultiple(string[] $keys, mixed $default = null): PromiseInterface<array>` method can be used to
129
+ retrieve multiple cache items by their unique keys.
130
+
131
+ This method will resolve with an array of cached values on success or with the
132
+ given `$default` value when an item can not be found or when an error occurs.
133
+ Similarly, an expired cache item (once the time-to-live is expired) is
134
+ considered a cache miss.
135
+
136
+ ```php
137
+ $cache->getMultiple(array('name', 'age'))->then(function (array $values) {
138
+ $name = $values['name'] ?? 'User';
139
+ $age = $values['age'] ?? 'n/a';
140
+
141
+ echo $name . ' is ' . $age . PHP_EOL;
142
+ });
143
+ ```
144
+
145
+ This example fetches the cache items for the `name` and `age` keys and
146
+ prints some example output. You can use any of the composition provided
147
+ by [promises](https://github.com/reactphp/promise).
148
+
149
+ #### setMultiple()
150
+
151
+ The `setMultiple(array $values, ?float $ttl = null): PromiseInterface<bool>` method can be used to
152
+ persist a set of key => value pairs in the cache, with an optional TTL.
153
+
154
+ This method will resolve with `true` on success or `false` when an error
155
+ occurs. If the cache implementation has to go over the network to store
156
+ it, it may take a while.
157
+
158
+ The optional `$ttl` parameter sets the maximum time-to-live in seconds
159
+ for these cache items. If this parameter is omitted (or `null`), these items
160
+ will stay in the cache for as long as the underlying implementation
161
+ supports. Trying to access an expired cache items results in a cache miss,
162
+ see also [`getMultiple()`](#getmultiple).
163
+
164
+ ```php
165
+ $cache->setMultiple(array('foo' => 1, 'bar' => 2), 60);
166
+ ```
167
+
168
+ This example eventually sets the list of values - the key `foo` to `1` value
169
+ and the key `bar` to `2`. If some of the keys already exist, they are overridden.
170
+
171
+ #### deleteMultiple()
172
+
173
+ The `setMultiple(string[] $keys): PromiseInterface<bool>` method can be used to
174
+ delete multiple cache items in a single operation.
175
+
176
+ This method will resolve with `true` on success or `false` when an error
177
+ occurs. When no items for `$keys` are found in the cache, it also resolves
178
+ to `true`. If the cache implementation has to go over the network to
179
+ delete it, it may take a while.
180
+
181
+ ```php
182
+ $cache->deleteMultiple(array('foo', 'bar, 'baz'));
183
+ ```
184
+
185
+ This example eventually deletes keys `foo`, `bar` and `baz` from the cache.
186
+ As with `setMultiple()`, this may not happen instantly and a promise is returned to
187
+ provide guarantees whether or not the item has been removed from cache.
188
+
189
+ #### clear()
190
+
191
+ The `clear(): PromiseInterface<bool>` method can be used to
192
+ wipe clean the entire cache.
193
+
194
+ This method will resolve with `true` on success or `false` when an error
195
+ occurs. If the cache implementation has to go over the network to
196
+ delete it, it may take a while.
197
+
198
+ ```php
199
+ $cache->clear();
200
+ ```
201
+
202
+ This example eventually deletes all keys from the cache. As with `deleteMultiple()`,
203
+ this may not happen instantly and a promise is returned to provide guarantees
204
+ whether or not all the items have been removed from cache.
205
+
206
+ #### has()
207
+
208
+ The `has(string $key): PromiseInterface<bool>` method can be used to
209
+ determine whether an item is present in the cache.
210
+
211
+ This method will resolve with `true` on success or `false` when no item can be found
212
+ or when an error occurs. Similarly, an expired cache item (once the time-to-live
213
+ is expired) is considered a cache miss.
214
+
215
+ ```php
216
+ $cache
217
+ ->has('foo')
218
+ ->then('var_dump');
219
+ ```
220
+
221
+ This example checks if the value of the key `foo` is set in the cache and passes
222
+ the result to the `var_dump` function. You can use any of the composition provided by
223
+ [promises](https://github.com/reactphp/promise).
224
+
225
+ NOTE: It is recommended that has() is only to be used for cache warming type purposes
226
+ and not to be used within your live applications operations for get/set, as this method
227
+ is subject to a race condition where your has() will return true and immediately after,
228
+ another script can remove it making the state of your app out of date.
229
+
230
+ ### ArrayCache
231
+
232
+ The `ArrayCache` provides an in-memory implementation of the [`CacheInterface`](#cacheinterface).
233
+
234
+ ```php
235
+ $cache = new ArrayCache();
236
+
237
+ $cache->set('foo', 'bar');
238
+ ```
239
+
240
+ Its constructor accepts an optional `?int $limit` parameter to limit the
241
+ maximum number of entries to store in the LRU cache. If you add more
242
+ entries to this instance, it will automatically take care of removing
243
+ the one that was least recently used (LRU).
244
+
245
+ For example, this snippet will overwrite the first value and only store
246
+ the last two entries:
247
+
248
+ ```php
249
+ $cache = new ArrayCache(2);
250
+
251
+ $cache->set('foo', '1');
252
+ $cache->set('bar', '2');
253
+ $cache->set('baz', '3');
254
+ ```
255
+
256
+ This cache implementation is known to rely on wall-clock time to schedule
257
+ future cache expiration times when using any version before PHP 7.3,
258
+ because a monotonic time source is only available as of PHP 7.3 (`hrtime()`).
259
+ While this does not affect many common use cases, this is an important
260
+ distinction for programs that rely on a high time precision or on systems
261
+ that are subject to discontinuous time adjustments (time jumps).
262
+ This means that if you store a cache item with a TTL of 30s on PHP < 7.3
263
+ and then adjust your system time forward by 20s, the cache item may
264
+ expire in 10s. See also [`set()`](#set) for more details.
265
+
266
+ ## Common usage
267
+
268
+ ### Fallback get
269
+
270
+ A common use case of caches is to attempt fetching a cached value and as a
271
+ fallback retrieve it from the original data source if not found. Here is an
272
+ example of that:
273
+
274
+ ```php
275
+ $cache
276
+ ->get('foo')
277
+ ->then(function ($result) {
278
+ if ($result === null) {
279
+ return getFooFromDb();
280
+ }
281
+
282
+ return $result;
283
+ })
284
+ ->then('var_dump');
285
+ ```
286
+
287
+ First an attempt is made to retrieve the value of `foo`. A callback function is
288
+ registered that will call `getFooFromDb` when the resulting value is null.
289
+ `getFooFromDb` is a function (can be any PHP callable) that will be called if the
290
+ key does not exist in the cache.
291
+
292
+ `getFooFromDb` can handle the missing key by returning a promise for the
293
+ actual value from the database (or any other data source). As a result, this
294
+ chain will correctly fall back, and provide the value in both cases.
295
+
296
+ ### Fallback get and set
297
+
298
+ To expand on the fallback get example, often you want to set the value on the
299
+ cache after fetching it from the data source.
300
+
301
+ ```php
302
+ $cache
303
+ ->get('foo')
304
+ ->then(function ($result) {
305
+ if ($result === null) {
306
+ return $this->getAndCacheFooFromDb();
307
+ }
308
+
309
+ return $result;
310
+ })
311
+ ->then('var_dump');
312
+
313
+ public function getAndCacheFooFromDb()
314
+ {
315
+ return $this->db
316
+ ->get('foo')
317
+ ->then(array($this, 'cacheFooFromDb'));
318
+ }
319
+
320
+ public function cacheFooFromDb($foo)
321
+ {
322
+ $this->cache->set('foo', $foo);
323
+
324
+ return $foo;
325
+ }
326
+ ```
327
+
328
+ By using chaining you can easily conditionally cache the value if it is
329
+ fetched from the database.
330
+
331
+ ## Install
332
+
333
+ The recommended way to install this library is [through Composer](https://getcomposer.org).
334
+ [New to Composer?](https://getcomposer.org/doc/00-intro.md)
335
+
336
+ This project follows [SemVer](https://semver.org/).
337
+ This will install the latest supported version:
338
+
339
+ ```bash
340
+ composer require react/cache:^1.2
341
+ ```
342
+
343
+ See also the [CHANGELOG](CHANGELOG.md) for details about version upgrades.
344
+
345
+ This project aims to run on any platform and thus does not require any PHP
346
+ extensions and supports running on legacy PHP 5.3 through current PHP 8+ and
347
+ HHVM.
348
+ It's *highly recommended to use PHP 7+* for this project.
349
+
350
+ ## Tests
351
+
352
+ To run the test suite, you first need to clone this repo and then install all
353
+ dependencies [through Composer](https://getcomposer.org):
354
+
355
+ ```bash
356
+ composer install
357
+ ```
358
+
359
+ To run the test suite, go to the project root and run:
360
+
361
+ ```bash
362
+ vendor/bin/phpunit
363
+ ```
364
+
365
+ ## License
366
+
367
+ MIT, see [LICENSE file](LICENSE).