@xgent-ai/skills 0.1.0 → 0.3.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 (618) hide show
  1. package/README.md +38 -2
  2. package/bin/xgent-skills.js +515 -4
  3. package/package.json +7 -3
  4. package/skills/dev-plan/SKILL.md +113 -93
  5. package/skills/dev-plan/references/architecture-quality.md +141 -0
  6. package/skills/dev-plan/references/execution-workflow.md +78 -0
  7. package/skills/dev-plan/references/plan-skeleton.md +238 -78
  8. package/skills/dev-plan/scripts/check_progress.sh +158 -0
  9. package/skills/elintp/SKILL.md +129 -0
  10. package/skills/grafton-view-dev/SKILL.md +195 -0
  11. package/skills/grafton-view-dev/references/bindings.md +120 -0
  12. package/skills/grafton-view-dev/references/components.md +168 -0
  13. package/skills/grafton-view-dev/references/recipes.md +208 -0
  14. package/skills/grafton-view-dev/references/schema.md +86 -0
  15. package/skills/grafton-view-dev/references/stores.md +310 -0
  16. package/skills/pardon/SKILL.md +30 -0
  17. package/skills/portal-app-exchange/SKILL.md +106 -0
  18. package/skills/portal-backend-app/SKILL.md +56 -0
  19. package/skills/portal-backend-app/references/gate-and-tokens.md +93 -0
  20. package/skills/portal-backend-app/references/wiring-and-conventions.md +71 -0
  21. package/skills/portal-dev-setup/SKILL.md +519 -0
  22. package/skills/portal-dev-setup/puller.env.example +74 -0
  23. package/skills/portal-dev-setup/references/troubleshooting.md +167 -0
  24. package/skills/portal-dev-setup/scripts/onebox.sh +966 -0
  25. package/skills/portal-external-app/SKILL.md +273 -0
  26. package/skills/portal-external-app/references/contract-doc-template.md +96 -0
  27. package/skills/portal-external-app/references/health-contract.md +80 -0
  28. package/skills/portal-external-app/references/integration-contract.md +130 -0
  29. package/skills/portal-external-app/references/quota-and-seats.md +213 -0
  30. package/skills/portal-external-app/references/registration-and-onebox.md +259 -0
  31. package/skills/portal-external-app/scripts/health-verdict.ts +22 -0
  32. package/skills/portal-external-app/scripts/verify-health.ts +27 -0
  33. package/skills/portal-logging/SKILL.md +139 -0
  34. package/skills/portal-logging/references/collectors.md +285 -0
  35. package/skills/portal-logging/references/contract.md +95 -0
  36. package/skills/portal-logging/scripts/smoke-ingest.sh +72 -0
  37. package/skills/portal-micro-app/SKILL.md +83 -0
  38. package/skills/portal-micro-app/references/manifest-and-acl.md +79 -0
  39. package/skills/portal-micro-app/references/open-api-and-extensions.md +86 -0
  40. package/skills/portal-micro-app/references/sdk-reference.md +208 -0
  41. package/skills/prd/SKILL.md +212 -0
  42. package/skills/prd/references/prd-skeleton.md +244 -0
  43. package/skills/prd/references/spms-mapping.md +148 -0
  44. package/skills/react/SKILL.md +103 -0
  45. package/skills/react/references/component-patterns.md +275 -0
  46. package/skills/react/references/data-fetching.md +255 -0
  47. package/skills/react/references/effect-patterns.md +407 -0
  48. package/skills/react/references/js-performance.md +432 -0
  49. package/skills/react/references/rendering-performance.md +351 -0
  50. package/skills/react/references/rerender-optimization.md +578 -0
  51. package/skills/rust/SKILL.md +103 -0
  52. package/skills/rust/references/chapter_01.md +564 -0
  53. package/skills/rust/references/chapter_02.md +117 -0
  54. package/skills/rust/references/chapter_03.md +209 -0
  55. package/skills/rust/references/chapter_04.md +183 -0
  56. package/skills/rust/references/chapter_05.md +390 -0
  57. package/skills/rust/references/chapter_06.md +142 -0
  58. package/skills/rust/references/chapter_07.md +226 -0
  59. package/skills/rust/references/chapter_08.md +257 -0
  60. package/skills/rust/references/chapter_09.md +261 -0
  61. package/skills/rust/references/chapter_10.md +554 -0
  62. package/skills/story-points/SKILL.md +219 -0
  63. package/skills/story-points/references/factors.md +367 -0
  64. package/skills/summarize/SKILL.md +79 -0
  65. package/skills/swarm/SKILL.md +263 -0
  66. package/skills/swarm/evals/evals.json +55 -0
  67. package/skills/swarm/references/agent-types.md +260 -0
  68. package/skills/swarm/references/teams/code-audit.md +81 -0
  69. package/skills/swarm/references/teams/debug-race.md +70 -0
  70. package/skills/swarm/references/teams/feature-dev.md +71 -0
  71. package/skills/swarm/references/teams/product.md +114 -0
  72. package/skills/swarm/references/teams/refactor-migration.md +73 -0
  73. package/skills/swarm/references/teams/research-debate.md +73 -0
  74. package/skills/test-plan/SKILL.md +136 -0
  75. package/skills/test-plan/references/case-taxonomy.md +141 -0
  76. package/skills/working-with-mbx/SKILL.md +343 -0
  77. package/skills/working-with-mbx/references/acknowledgements.md +37 -0
  78. package/skills/working-with-mbx/references/benchmarks.md +140 -0
  79. package/skills/working-with-mbx/references/cache-results.md +153 -0
  80. package/skills/working-with-mbx/references/cache-server.md +151 -0
  81. package/skills/working-with-mbx/references/cli/adopt.md +29 -0
  82. package/skills/working-with-mbx/references/cli/cache/dir.md +24 -0
  83. package/skills/working-with-mbx/references/cli/cache/export.md +31 -0
  84. package/skills/working-with-mbx/references/cli/cache/import.md +27 -0
  85. package/skills/working-with-mbx/references/cli/cache/largest.md +26 -0
  86. package/skills/working-with-mbx/references/cli/cache/projects.md +23 -0
  87. package/skills/working-with-mbx/references/cli/cache/remove.md +30 -0
  88. package/skills/working-with-mbx/references/cli/cache/stats.md +24 -0
  89. package/skills/working-with-mbx/references/cli/cache/trace.md +27 -0
  90. package/skills/working-with-mbx/references/cli/cache/verify.md +23 -0
  91. package/skills/working-with-mbx/references/cli/cache.md +35 -0
  92. package/skills/working-with-mbx/references/cli/clean.md +27 -0
  93. package/skills/working-with-mbx/references/cli/completion.md +27 -0
  94. package/skills/working-with-mbx/references/cli/doctor.md +24 -0
  95. package/skills/working-with-mbx/references/cli/exec.md +28 -0
  96. package/skills/working-with-mbx/references/cli/explain.md +29 -0
  97. package/skills/working-with-mbx/references/cli/gc.md +28 -0
  98. package/skills/working-with-mbx/references/cli/prefetch.md +27 -0
  99. package/skills/working-with-mbx/references/cli/setup.md +28 -0
  100. package/skills/working-with-mbx/references/cli/stats.md +24 -0
  101. package/skills/working-with-mbx/references/cli/tui.md +24 -0
  102. package/skills/working-with-mbx/references/cli.md +58 -0
  103. package/skills/working-with-mbx/references/compared.md +67 -0
  104. package/skills/working-with-mbx/references/configuration.md +724 -0
  105. package/skills/working-with-mbx/references/cookbook/fork-prs.md +82 -0
  106. package/skills/working-with-mbx/references/cookbook/local-development.md +127 -0
  107. package/skills/working-with-mbx/references/cookbook/migrate.md +67 -0
  108. package/skills/working-with-mbx/references/dashboard.md +89 -0
  109. package/skills/working-with-mbx/references/faq.md +75 -0
  110. package/skills/working-with-mbx/references/getting-started.md +147 -0
  111. package/skills/working-with-mbx/references/github-action.md +254 -0
  112. package/skills/working-with-mbx/references/guide.md +59 -0
  113. package/skills/working-with-mbx/references/how-it-works.md +86 -0
  114. package/skills/working-with-mbx/references/incremental.md +78 -0
  115. package/skills/working-with-mbx/references/index.md +57 -0
  116. package/skills/working-with-mbx/references/installation.md +101 -0
  117. package/skills/working-with-mbx/references/limits.md +182 -0
  118. package/skills/working-with-mbx/references/linkers.md +75 -0
  119. package/skills/working-with-mbx/references/managed-targets.md +197 -0
  120. package/skills/working-with-mbx/references/protocol-compatibility.md +103 -0
  121. package/skills/working-with-mbx/references/remote-cache.md +190 -0
  122. package/skills/working-with-mbx/references/scheduling.md +65 -0
  123. package/skills/working-with-mbx/references/setup.md +157 -0
  124. package/skills/working-with-mbx/references/stability.md +43 -0
  125. package/skills/working-with-mbx/references/standalone-builds.md +102 -0
  126. package/skills/working-with-mbx/references/stats.md +49 -0
  127. package/skills/working-with-mbx/references/troubleshooting.md +136 -0
  128. package/skills/working-with-mbx/references/tui.md +163 -0
  129. package/skills/working-with-mbx/update-docs.sh +49 -0
  130. package/skills/working-with-mise/SKILL.md +297 -0
  131. package/skills/working-with-mise/references/cli/activate-html.md +90 -0
  132. package/skills/working-with-mise/references/cli/alias-html.md +30 -0
  133. package/skills/working-with-mise/references/cli/backends-html.md +40 -0
  134. package/skills/working-with-mise/references/cli/bin-paths-html.md +37 -0
  135. package/skills/working-with-mise/references/cli/bootstrap-html.md +109 -0
  136. package/skills/working-with-mise/references/cli/cache-html.md +40 -0
  137. package/skills/working-with-mise/references/cli/completion-html.md +76 -0
  138. package/skills/working-with-mise/references/cli/config-html.md +44 -0
  139. package/skills/working-with-mise/references/cli/daemons-html.md +48 -0
  140. package/skills/working-with-mise/references/cli/deactivate-html.md +47 -0
  141. package/skills/working-with-mise/references/cli/deps-html.md +89 -0
  142. package/skills/working-with-mise/references/cli/doctor-html.md +46 -0
  143. package/skills/working-with-mise/references/cli/dotfiles-html.md +57 -0
  144. package/skills/working-with-mise/references/cli/edit-html.md +48 -0
  145. package/skills/working-with-mise/references/cli/en-html.md +62 -0
  146. package/skills/working-with-mise/references/cli/env-html.md +57 -0
  147. package/skills/working-with-mise/references/cli/exec-html.md +79 -0
  148. package/skills/working-with-mise/references/cli/exec.md +79 -0
  149. package/skills/working-with-mise/references/cli/fmt-html.md +44 -0
  150. package/skills/working-with-mise/references/cli/generate-html.md +43 -0
  151. package/skills/working-with-mise/references/cli/implode-html.md +35 -0
  152. package/skills/working-with-mise/references/cli/install-html.md +83 -0
  153. package/skills/working-with-mise/references/cli/install-into-html.md +47 -0
  154. package/skills/working-with-mise/references/cli/latest-html.md +62 -0
  155. package/skills/working-with-mise/references/cli/link-html.md +57 -0
  156. package/skills/working-with-mise/references/cli/lock-html.md +114 -0
  157. package/skills/working-with-mise/references/cli/ls-html.md +95 -0
  158. package/skills/working-with-mise/references/cli/ls-remote-html.md +61 -0
  159. package/skills/working-with-mise/references/cli/mcp-html.md +57 -0
  160. package/skills/working-with-mise/references/cli/oci-html.md +41 -0
  161. package/skills/working-with-mise/references/cli/outdated-html.md +79 -0
  162. package/skills/working-with-mise/references/cli/packslip-html.md +38 -0
  163. package/skills/working-with-mise/references/cli/patrons-html.md +45 -0
  164. package/skills/working-with-mise/references/cli/plugins-html.md +46 -0
  165. package/skills/working-with-mise/references/cli/prune-html.md +56 -0
  166. package/skills/working-with-mise/references/cli/registry-html.md +59 -0
  167. package/skills/working-with-mise/references/cli/reshim-html.md +46 -0
  168. package/skills/working-with-mise/references/cli/run-html.md +152 -0
  169. package/skills/working-with-mise/references/cli/search-html.md +69 -0
  170. package/skills/working-with-mise/references/cli/self-update-html.md +42 -0
  171. package/skills/working-with-mise/references/cli/set-html.md +116 -0
  172. package/skills/working-with-mise/references/cli/settings-html.md +78 -0
  173. package/skills/working-with-mise/references/cli/shell-alias-html.md +39 -0
  174. package/skills/working-with-mise/references/cli/shell-html.md +53 -0
  175. package/skills/working-with-mise/references/cli/skills-html.md +39 -0
  176. package/skills/working-with-mise/references/cli/sponsors-html.md +31 -0
  177. package/skills/working-with-mise/references/cli/ssh-html.md +45 -0
  178. package/skills/working-with-mise/references/cli/sync-html.md +37 -0
  179. package/skills/working-with-mise/references/cli/tasks-html.md +61 -0
  180. package/skills/working-with-mise/references/cli/test-tool-html.md +49 -0
  181. package/skills/working-with-mise/references/cli/token-html.md +37 -0
  182. package/skills/working-with-mise/references/cli/tool-alias-html.md +41 -0
  183. package/skills/working-with-mise/references/cli/tool-html.md +55 -0
  184. package/skills/working-with-mise/references/cli/tool-stub-html.md +60 -0
  185. package/skills/working-with-mise/references/cli/trust-html.md +63 -0
  186. package/skills/working-with-mise/references/cli/uninstall-html.md +62 -0
  187. package/skills/working-with-mise/references/cli/unset-html.md +59 -0
  188. package/skills/working-with-mise/references/cli/untrust-html.md +35 -0
  189. package/skills/working-with-mise/references/cli/unuse-html.md +74 -0
  190. package/skills/working-with-mise/references/cli/upgrade-html.md +133 -0
  191. package/skills/working-with-mise/references/cli/use-html.md +130 -0
  192. package/skills/working-with-mise/references/cli/use.md +130 -0
  193. package/skills/working-with-mise/references/cli/version-html.md +46 -0
  194. package/skills/working-with-mise/references/cli/watch-html.md +465 -0
  195. package/skills/working-with-mise/references/cli/where-html.md +53 -0
  196. package/skills/working-with-mise/references/cli/which-html.md +55 -0
  197. package/skills/working-with-mise/references/configuration/environments-html.md +171 -0
  198. package/skills/working-with-mise/references/configuration/project-diagnostics-html.md +93 -0
  199. package/skills/working-with-mise/references/configuration/settings-html.md +3062 -0
  200. package/skills/working-with-mise/references/configuration/vars-html.md +167 -0
  201. package/skills/working-with-mise/references/dev-tools/aliases-html.md +97 -0
  202. package/skills/working-with-mise/references/dev-tools/backend_architecture-html.md +198 -0
  203. package/skills/working-with-mise/references/dev-tools/backends/aqua-html.md +274 -0
  204. package/skills/working-with-mise/references/dev-tools/backends/aqua.md +274 -0
  205. package/skills/working-with-mise/references/dev-tools/backends/asdf-html.md +98 -0
  206. package/skills/working-with-mise/references/dev-tools/backends/asdf.md +98 -0
  207. package/skills/working-with-mise/references/dev-tools/backends/cargo-html.md +240 -0
  208. package/skills/working-with-mise/references/dev-tools/backends/cargo.md +240 -0
  209. package/skills/working-with-mise/references/dev-tools/backends/conda-html.md +125 -0
  210. package/skills/working-with-mise/references/dev-tools/backends/dotnet-html.md +142 -0
  211. package/skills/working-with-mise/references/dev-tools/backends/forgejo-html.md +533 -0
  212. package/skills/working-with-mise/references/dev-tools/backends/gem-html.md +77 -0
  213. package/skills/working-with-mise/references/dev-tools/backends/gem.md +77 -0
  214. package/skills/working-with-mise/references/dev-tools/backends/github-html.md +622 -0
  215. package/skills/working-with-mise/references/dev-tools/backends/github.md +622 -0
  216. package/skills/working-with-mise/references/dev-tools/backends/gitlab-html.md +546 -0
  217. package/skills/working-with-mise/references/dev-tools/backends/go-html.md +115 -0
  218. package/skills/working-with-mise/references/dev-tools/backends/go.md +115 -0
  219. package/skills/working-with-mise/references/dev-tools/backends/http-html.md +644 -0
  220. package/skills/working-with-mise/references/dev-tools/backends/http.md +644 -0
  221. package/skills/working-with-mise/references/dev-tools/backends/npm-html.md +436 -0
  222. package/skills/working-with-mise/references/dev-tools/backends/npm.md +436 -0
  223. package/skills/working-with-mise/references/dev-tools/backends/packslip-html.md +310 -0
  224. package/skills/working-with-mise/references/dev-tools/backends/pipx-html.md +329 -0
  225. package/skills/working-with-mise/references/dev-tools/backends/pipx.md +329 -0
  226. package/skills/working-with-mise/references/dev-tools/backends/pkgx-html.md +73 -0
  227. package/skills/working-with-mise/references/dev-tools/backends/pypi-html.md +331 -0
  228. package/skills/working-with-mise/references/dev-tools/backends/s3-html.md +346 -0
  229. package/skills/working-with-mise/references/dev-tools/backends/spm-html.md +201 -0
  230. package/skills/working-with-mise/references/dev-tools/backends/ubi-html.md +232 -0
  231. package/skills/working-with-mise/references/dev-tools/backends/vfox-html.md +173 -0
  232. package/skills/working-with-mise/references/dev-tools/backends/vfox.md +173 -0
  233. package/skills/working-with-mise/references/dev-tools/backends.md +32 -0
  234. package/skills/working-with-mise/references/dev-tools/comparison-to-asdf-html.md +112 -0
  235. package/skills/working-with-mise/references/dev-tools/deps-html.md +390 -0
  236. package/skills/working-with-mise/references/dev-tools/github-tokens-html.md +390 -0
  237. package/skills/working-with-mise/references/dev-tools/index-html.md +420 -0
  238. package/skills/working-with-mise/references/dev-tools/mise-lock-html.md +660 -0
  239. package/skills/working-with-mise/references/dev-tools/mise-oci-html.md +418 -0
  240. package/skills/working-with-mise/references/dev-tools/packslip-resources-html.md +203 -0
  241. package/skills/working-with-mise/references/dev-tools/packslip-verification-html.md +178 -0
  242. package/skills/working-with-mise/references/dev-tools/shims-html.md +397 -0
  243. package/skills/working-with-mise/references/dev-tools/tool-stubs-html.md +416 -0
  244. package/skills/working-with-mise/references/guides/getting-started.md +268 -0
  245. package/skills/working-with-mise/references/index.md +37 -0
  246. package/skills/working-with-mise/update-docs.sh +111 -0
  247. package/skills/xgent-app-release/SKILL.md +438 -0
  248. package/skills/xgent-app-release/references/build-and-package.md +65 -0
  249. package/skills/xgent-app-release/references/publish-api.md +315 -0
  250. package/skills/xgent-app-release/references/troubleshooting.md +108 -0
  251. package/skills/xgent-app-release/scripts/npm-token.mjs +94 -0
  252. package/skills/xgent-app-release/scripts/preflight.mjs +340 -0
  253. package/skills/xgent-app-release/scripts/registry-config.mjs +88 -0
  254. package/skills/xgent-image-push/SKILL.md +239 -0
  255. package/skills/xgent-image-push/registry.env.example +51 -0
  256. package/skills/xgent-image-push/scripts/push-image.sh +576 -0
  257. package/skills/xgent-init/SKILL.md +96 -0
  258. package/skills/xgent-init/references/external-app-CLAUDE.template.md +249 -0
  259. package/skills/xgent-init/references/external-app-DESIGN.template.md +317 -0
  260. package/skills/xgent-init/references/external-app-PRODUCT.template.md +87 -0
  261. package/skills/xgent-init/references/fill-guide.md +78 -0
  262. package/skills/xgent-init/scripts/check-docs.mjs +304 -0
  263. package/vendor/impeccable/LICENSE +191 -0
  264. package/vendor/impeccable/NOTICE.md +11 -0
  265. package/vendor/impeccable/VERSION.json +28 -0
  266. package/vendor/impeccable/bundle/blobs/00023f9e7f2e27604fde978b56510a8f837b76eeadd93221d11adcf4c98f1a10 +88 -0
  267. package/vendor/impeccable/bundle/blobs/00f053b877a92a9847d69eec2403e40c757152f30a5ca807c5033c58d7c297f1 +33 -0
  268. package/vendor/impeccable/bundle/blobs/012f548547fae48ebdd22a3c3af8a01032641fddd530e3783bd73b7358ab2c49 +80 -0
  269. package/vendor/impeccable/bundle/blobs/015725eeca94f52bffd2132d4cb49bc3eb1ee76e6ac7378c065e629d59f56613 +84 -0
  270. package/vendor/impeccable/bundle/blobs/03b30331c176a248a3b3bd17abdff1a1fd658f09ffb2a412b36ae9627dd3f33b +105 -0
  271. package/vendor/impeccable/bundle/blobs/041535231366047a0beeb5daa64ea9c23d5a566580f7dafdb8c0623cb4a7e76b +24 -0
  272. package/vendor/impeccable/bundle/blobs/04af9f2d6883fe76f9539d310d9c369052822a24886d2c330ab1e3fe5981c8a1 +24 -0
  273. package/vendor/impeccable/bundle/blobs/058f81f256134841875fd3183e06b37a023de0c877fd2b9eecd97011640791fe +46 -0
  274. package/vendor/impeccable/bundle/blobs/05aa836a190f4ff62e5d4619738bdb891d83d85e35d81c2e6e322d1dc084d802 +80 -0
  275. package/vendor/impeccable/bundle/blobs/05e86f37d7fa381c5e8a04b6212490a27904d3be3e9384862a0764d3daba6d78 +54 -0
  276. package/vendor/impeccable/bundle/blobs/0617b37a905f0486c1ab4e91a287c8ef8292e253095c340f452d591206272f73 +104 -0
  277. package/vendor/impeccable/bundle/blobs/074575671f24cf4298d06f0019f76e94f62e9a6ed205fce05b8e507341e64266 +111 -0
  278. package/vendor/impeccable/bundle/blobs/076a31941acbaa81013c8c511e146ed4138128eb5e9895dae3e9a27a25ac4f04 +13 -0
  279. package/vendor/impeccable/bundle/blobs/08812a8618de7bd2f63a51298e9c2558031237e8efba280062ccb636101e25e1 +80 -0
  280. package/vendor/impeccable/bundle/blobs/08a2980eae0bfea1f00229899defc28ec92c7ecb875bf5fb02e4ba80dad6c394 +806 -0
  281. package/vendor/impeccable/bundle/blobs/08d78eb31c561256f83baa0afa742a660f1467aa2c81be2f60c2b7f9c770d66e +54 -0
  282. package/vendor/impeccable/bundle/blobs/098a891028ce59c212b747d3c70468dd750aff7053a703d1336045ed31e0da7c +70 -0
  283. package/vendor/impeccable/bundle/blobs/0a151a54959a15eb32fa338890d5d64ac48a9d54d2d5442c3c7708a4c27c1858 +104 -0
  284. package/vendor/impeccable/bundle/blobs/0bb4085f6dda702846e0e56bd4f797aa1b046ab48eca02644448e368f3820f88 +104 -0
  285. package/vendor/impeccable/bundle/blobs/0bc7d7971b3edf2acd0580e847458dc6d84129d90715b452799ace3bed815c7c +84 -0
  286. package/vendor/impeccable/bundle/blobs/0bf6f08bf34d24cd88a78d544add9e4d71478bcf939926cde32f4e164882c775 +105 -0
  287. package/vendor/impeccable/bundle/blobs/0dbbef70048cc3ae44e6710ff09992ce14ad049ce8ed519b0ff8a1ddb4633f4e +111 -0
  288. package/vendor/impeccable/bundle/blobs/0e081d496eba4bd77aca81723d59120c10177a71c9551a60ab923c356fb3cf38 +104 -0
  289. package/vendor/impeccable/bundle/blobs/0e1819750e5448311a051d35ab6d0be0830418f78ca872ef10469fafebb27d4f +46 -0
  290. package/vendor/impeccable/bundle/blobs/0e18ac33b7e6a247b658fcaf926d9eac028399597dbaba366f1d2f2b884a383b +325 -0
  291. package/vendor/impeccable/bundle/blobs/0f83648f6b425225290305bced51eacebacf9bf9bc05e21cdbad46863fbc89ce +24 -0
  292. package/vendor/impeccable/bundle/blobs/115e1c3f1b58b5129910ed925dbf65d61d5ac4c2036618847555ce40098aae97 +145 -0
  293. package/vendor/impeccable/bundle/blobs/11f75834c26ecd8a5b0afdf696e838953b235dc4835b7293bbc6b1bc27dd3106 +84 -0
  294. package/vendor/impeccable/bundle/blobs/12c1afcd15e86d840b89a78c6d17ce6d1b5609bac713d59271c6ab5932975dac +111 -0
  295. package/vendor/impeccable/bundle/blobs/12d2a8043ae8668ad29c32bfa92995849fc49cb016e6ebd4f7e59539d96e7b03 +46 -0
  296. package/vendor/impeccable/bundle/blobs/12fefe52d80d25014e5f7e2f9b278275a675653d3d99ae8f0ecf344cdb9abbe6 +111 -0
  297. package/vendor/impeccable/bundle/blobs/13bd27aa8573e6d45d8bbf9f3fc991e4719d28a7e8f709009a4a5a49a227fff3 +37 -0
  298. package/vendor/impeccable/bundle/blobs/1484a7ae206ab4f0e6262b21afe0f6307a629ed27d28fb7de69536a6800a4883 +37 -0
  299. package/vendor/impeccable/bundle/blobs/15b4837dccb27d7382e2f134ef050b244c4488b1906e0308f288112183cc09ac +145 -0
  300. package/vendor/impeccable/bundle/blobs/1640c70b984a43e729d72d046109f87243ae84ecd64d2600a007d140558123cc +80 -0
  301. package/vendor/impeccable/bundle/blobs/1652d639d91889a08bda7f351456c43ee30e5677aa4866a90f375e1e4be15deb +80 -0
  302. package/vendor/impeccable/bundle/blobs/16d99e9fe8e75d69042bc4fda12e93daa7e10f9fa6c00b12b0f0580b119a4cfd +105 -0
  303. package/vendor/impeccable/bundle/blobs/171777f8a8596d2ffdb43f4b935a7c6c12859ace233967f868a566390a59708e +325 -0
  304. package/vendor/impeccable/bundle/blobs/173dd66abe65633910dcb04a51f40d6ff2a793f87088f022a02fc4cad24dd133 +94 -0
  305. package/vendor/impeccable/bundle/blobs/17c583cf8ad41266ea1e787b666b9d91fe13469d3d0f6af57c08e0146f9b17ac +58 -0
  306. package/vendor/impeccable/bundle/blobs/181e814c1b9317098b2300c1b02ad0d137b6d82bd1e7e8cc64de4d00b4c50c25 +111 -0
  307. package/vendor/impeccable/bundle/blobs/190a4e642ca362d7499f3c3ab123e21f18f75457d11f072b545a183f296e6495 +99 -0
  308. package/vendor/impeccable/bundle/blobs/1971edc3784273bd8da7b1980779c6159471e857992faa6637178109cb130503 +806 -0
  309. package/vendor/impeccable/bundle/blobs/199d5d3db1197e053a2eb9c3cb927d44cbaaaeb57745c1ada3fd775ba50d9291 +104 -0
  310. package/vendor/impeccable/bundle/blobs/19c5bfce570a0e2bddd4d9c788936ff9070c90299363c4853ba77bfd37306e20 +416 -0
  311. package/vendor/impeccable/bundle/blobs/1a9180cec754f8afd354e7cb759750247e97c5bd26d3242ad4c45e315069e8c0 +37 -0
  312. package/vendor/impeccable/bundle/blobs/1c804990fd8ac23a4b19c42972b5ae591d17f620d0006f0f32927c8db5d5bf50 +145 -0
  313. package/vendor/impeccable/bundle/blobs/1d72b494f46a60e6c9c06e89bab79789dd85e11f62fb4286a03abf26d352dc1f +80 -0
  314. package/vendor/impeccable/bundle/blobs/21bc91f6e07691e82b7bba99f9e1d956f9d7a6810dcdc18d231fe73b53a13b23 +37 -0
  315. package/vendor/impeccable/bundle/blobs/238e1967d933ca5739db708f7ad9f72ca8b34bc4c9b9e1c07b0a06dcf9d00681 +806 -0
  316. package/vendor/impeccable/bundle/blobs/244e5b7bca6d22a51b4e22104a52a36e477056b03d257b56d1d4e319cd6167a8 +80 -0
  317. package/vendor/impeccable/bundle/blobs/249f0437a52ab3eb4bc4d4a9f38e085334c0fbb7795e88dd419e32b5f58c924d +42 -0
  318. package/vendor/impeccable/bundle/blobs/27c4b6c90ad12a186136f9ece9cb1830d4a6e36b11382ab334efc4543f8082de +145 -0
  319. package/vendor/impeccable/bundle/blobs/29f741b71e75fd39c65ca6df4b01b5f6c4f3c4c7adf23b47a3220ce2c0251f24 +104 -0
  320. package/vendor/impeccable/bundle/blobs/2b21f0142ee88a11dbe2593362f5a910718a61062e3a64e7ff936ef1e74fd394 +46 -0
  321. package/vendor/impeccable/bundle/blobs/2b58041cd82d819d12762b10becb95f8253c661bf6a9de40f61fc01c1204b743 +806 -0
  322. package/vendor/impeccable/bundle/blobs/2b5b2fbf5f658f34ea1997fb1aeebe01604d05187f75c6a4f1f55a5bc78520a4 +104 -0
  323. package/vendor/impeccable/bundle/blobs/2c2ed6286bd74adef4f24ef442e2e1bc0780d44bc060aa2a4c03a03988dbafd5 +325 -0
  324. package/vendor/impeccable/bundle/blobs/2d7086992c07df1fc734cdf9c420c4bd8ad409ab7909e07c8b486c303d420732 +83 -0
  325. package/vendor/impeccable/bundle/blobs/2e4846117a2fcdc1e4bc9570a5333da839649cb8ccdac6a30a87591ca05b4bb0 +54 -0
  326. package/vendor/impeccable/bundle/blobs/2f02f96f889e0c8e0e90806af1ef17e0c162a6cc402068f434d3f7608d9deda3 +54 -0
  327. package/vendor/impeccable/bundle/blobs/2fd096823e4a93f19edd421a69e10f90ebb630a014c673d1802a927c6f47b7d2 +111 -0
  328. package/vendor/impeccable/bundle/blobs/2feb3768125ba6469c92a50d516727e6d42f44579165ddfd33409948e2a3803d +27 -0
  329. package/vendor/impeccable/bundle/blobs/30e006fdee873bac23edaeadce0371161625e021e3cf442dff4b05bb82297ba1 +24 -0
  330. package/vendor/impeccable/bundle/blobs/31b90048c0b540daec46762a10c2b6b6434737a89af005054d8b848d829d003b +69 -0
  331. package/vendor/impeccable/bundle/blobs/33b6b32c0c3c0c4a2b22bd2275176b1c88a006dd94592a854f629911a0b21cdc +111 -0
  332. package/vendor/impeccable/bundle/blobs/3565d038a2eeab88a8b18ff52e6630008ab30f867f9df922a38ce8980440b2e3 +80 -0
  333. package/vendor/impeccable/bundle/blobs/356cfa0ebf61589cf5d52691d101a69d69256062fe1d11d71d95d41a78289cbd +111 -0
  334. package/vendor/impeccable/bundle/blobs/3673248740bcdd1122ccc610093ba2fe52f3943a61ce0b7170b74dc49e5b6098 +416 -0
  335. package/vendor/impeccable/bundle/blobs/37080ea5e5b381adb7eae7a427231b0ad0dee0f0916fc1d6b673b7101a5b425b +42 -0
  336. package/vendor/impeccable/bundle/blobs/3753448bca49da76dd8b12d5a8b4264414673f26e49028d37616faa8beb210b7 +127 -0
  337. package/vendor/impeccable/bundle/blobs/37565671b09d983ea1ad83a9e9190bc37255d93c68445958c6facecc7e0f7c4f +33 -0
  338. package/vendor/impeccable/bundle/blobs/37aeddc0f2031fa89d72519ae2e7542c267872f81786fb8288fca0a49118be11 +27 -0
  339. package/vendor/impeccable/bundle/blobs/37c9a2122efa64dc8789eb47d196150b0bc635e0ba95042fd381ff157002ed50 +111 -0
  340. package/vendor/impeccable/bundle/blobs/381ff89aa76e82a0d98456ec31cb117555ae045539fba47c45056daa50f611ca +46 -0
  341. package/vendor/impeccable/bundle/blobs/3895765e9434400dfc1b30e364be002cf499c1718fb2431e65b907c14ae2cb27 +86 -0
  342. package/vendor/impeccable/bundle/blobs/38c2e839e130008b6da814ab9c16f3fcbbedfdf721a9638eebd31a9e65341a7a +84 -0
  343. package/vendor/impeccable/bundle/blobs/38d4d404030c6ea935d3223db1eeb22c45d04a94f41f98e02a43cdc5af7ff2e3 +24 -0
  344. package/vendor/impeccable/bundle/blobs/3970c8e24615610b0246585e49146f6762d5082b3c8fddc08a00940d6e72d394 +80 -0
  345. package/vendor/impeccable/bundle/blobs/39ac044f2e45a9e7eed8eb68fe91d32938160eb7f8fa93d2afc42fc80a0c3c10 +54 -0
  346. package/vendor/impeccable/bundle/blobs/39d9600489073e227e4f4d55c451ce4252a6632ed7ae37923efbbcbc91f16d07 +206 -0
  347. package/vendor/impeccable/bundle/blobs/3aa908c18db91d5f31d6bba6402eab6afc4e0b75137f841a86bd012386e0d8e2 +145 -0
  348. package/vendor/impeccable/bundle/blobs/3af7c46309f748ff3845f16455a431ec0e9e807e5e3a965e96e9ee75a1198eb8 +95 -0
  349. package/vendor/impeccable/bundle/blobs/3ba92d4aa840ec1b6c2fda224339489d6dd65eedf43bb45836af02584d1faa88 +42 -0
  350. package/vendor/impeccable/bundle/blobs/3bcf81b938a0f0309e9ed6616f4bd18d82f07e2801411ee4cce51220d417eb95 +80 -0
  351. package/vendor/impeccable/bundle/blobs/3bf5d8661351831dbb2195e3b677fea1f128ca319c0589d538b66d9c9d7dddbc +111 -0
  352. package/vendor/impeccable/bundle/blobs/3dd45e1c32db3d3163a96ef198954905807b25cb9a1d206a7d77986f21d27652 +39 -0
  353. package/vendor/impeccable/bundle/blobs/3e3b6fdc6afbc2c2a734d08d6a18b393b7139c56f28f91f82e13e5555b98018a +84 -0
  354. package/vendor/impeccable/bundle/blobs/3f2c351303b74e217907006fb9c55ada2ef596e9710c13d631e20506d17b9ee8 +325 -0
  355. package/vendor/impeccable/bundle/blobs/402373ef95962ecb81dd3d7cf70ecb3bd3e22a2bd2aabb4c0d76f7f4f9447870 +105 -0
  356. package/vendor/impeccable/bundle/blobs/402656ca6df17bad1cd55ede0a966a7bb5b187cf4f89c517851f9efe7f14c0fd +87 -0
  357. package/vendor/impeccable/bundle/blobs/40c87038b5f75147a5952a96237acf312a327bf70c1bcd8e0a5f064625ae9668 +51 -0
  358. package/vendor/impeccable/bundle/blobs/420d82fe41884b7aa8c28750520146d8160c91396ac332a96b2d82a90b017fb2 +80 -0
  359. package/vendor/impeccable/bundle/blobs/420e2fdee2b7f555d9a37ce348cf62610ddd98f96b1a0a511796ba600881588c +111 -0
  360. package/vendor/impeccable/bundle/blobs/424b2e75cb204e2dca7db4a40dfe5a81f78dc0fc58ac4790e8b7bbf2f330bba4 +37 -0
  361. package/vendor/impeccable/bundle/blobs/424ff273e7ab283d6695d127bb502675627193f5b752d7b43b7524bcfc42f43f +84 -0
  362. package/vendor/impeccable/bundle/blobs/426c7f5437dd3c23a4cfaef6964dc7f1e038480f92238499b85f3ce7e4472bf4 +111 -0
  363. package/vendor/impeccable/bundle/blobs/42a71df98075f66e6eb396b69ef3d6b1c3db46d1c1d24b4edc9d15f53d193ecb +111 -0
  364. package/vendor/impeccable/bundle/blobs/433a79eee3ce4c99e79a7aebe3a6d8ec9ff70216772e0c2ff9dce3a01d672963 +46 -0
  365. package/vendor/impeccable/bundle/blobs/43852ca5917de66704f73f9019d15482bb1efd92f2eefaeeeae23610b4c0c6a0 +38 -0
  366. package/vendor/impeccable/bundle/blobs/442749aed338f51c1a3ccfb182c6ade9b74b90590b67984062ac94a5b100e914 +80 -0
  367. package/vendor/impeccable/bundle/blobs/44a91b3f0810f43829d8584e912812444d15614e4b57ca8070aee7ab899f7c1e +46 -0
  368. package/vendor/impeccable/bundle/blobs/46250caaec1bd69619a5b28a73cb3c845b319d029b0af9228aaa7001e7e0104a +37 -0
  369. package/vendor/impeccable/bundle/blobs/464c0c2b33d278375aec66caf95518f5e7ccd0aad1bea3f9dd553ed47815daa1 +325 -0
  370. package/vendor/impeccable/bundle/blobs/47b3461f6f76db80fdc49fc7542552d65fed24edc8d30d903cb76aefbad0ed05 +84 -0
  371. package/vendor/impeccable/bundle/blobs/47edbdfaf27073c47033d1ac7dfee881be49e2dcbda7671d1157300481dde6da +1 -0
  372. package/vendor/impeccable/bundle/blobs/4879f38b23d0a251a63cbb0327e660296194cd2e71eb4da3236c6ebfe5807746 +33 -0
  373. package/vendor/impeccable/bundle/blobs/48bb7c3b738f57fa4f3f714d7e3e919879036f3e751135a9acc1c5ede1850ea6 +54 -0
  374. package/vendor/impeccable/bundle/blobs/494d6fcb4701c437597c2ed16a9595af92f3d9ad53c944c96a2fb563bd766af5 +99 -0
  375. package/vendor/impeccable/bundle/blobs/49a7b37b98fb6e3ef68154174677ff4b9f1715efcffdbf6b30c3535b3e4e302c +54 -0
  376. package/vendor/impeccable/bundle/blobs/4a7d8695741e2cd354baada215b06798c050aa7a8e1ca6814f0e395e054d1ab1 +145 -0
  377. package/vendor/impeccable/bundle/blobs/4a8a45a46b79948a64b484edf389aa0b00fc80de855470cbabe3c7c71268f345 +828 -0
  378. package/vendor/impeccable/bundle/blobs/4acfb9e38f6e09f7484e36fc19704d69eab159436ee9329168be74c493042f22 +111 -0
  379. package/vendor/impeccable/bundle/blobs/4ad7c5d5821f85c2311ff91746d9b9cf272dbe0a9a5b61687f77681f5a13f812 +69 -0
  380. package/vendor/impeccable/bundle/blobs/4b0e2eea17f297daa06b17578131775be099ef43addf91007f4b7e295454f64f +105 -0
  381. package/vendor/impeccable/bundle/blobs/4bceaf3346b6f5100b5a54deaae49a38b975dd134df2836675848f06ff1e7e11 +806 -0
  382. package/vendor/impeccable/bundle/blobs/4ce929b8cafd37247ea4c148bbe39a9afe15908d1abf4a8248c5122275d16499 +85 -0
  383. package/vendor/impeccable/bundle/blobs/4df48b7a86d525ad12e7889a1fd16b06ed4b25a9470c359c7193a6d82649262f +54 -0
  384. package/vendor/impeccable/bundle/blobs/4fb6d2fcc8afaf827a7377ddd604725264fd83be871e2d35062e9d1939144404 +25 -0
  385. package/vendor/impeccable/bundle/blobs/51e2f8963377f142ebdc9864e0ecc5aa1e5b7d344ed72d0e9d748d2d3d8c71b3 +46 -0
  386. package/vendor/impeccable/bundle/blobs/521391d55814fdef6cd648ed62154a14d77b324004a0fc2d06c0a4e97857eab2 +806 -0
  387. package/vendor/impeccable/bundle/blobs/52e861ac390a62c4473ae0cf87ff18dd6d721afa6557910492dd8ed28bd9970d +84 -0
  388. package/vendor/impeccable/bundle/blobs/532d6387db6f5da1a59dc7d29ce4d8ba6ca044626c367dc16e1cb8b981eb2d9a +104 -0
  389. package/vendor/impeccable/bundle/blobs/54cb270e8826380caefc8c40642a5d973f27df46bfdb762d822541a0c72a9877 +145 -0
  390. package/vendor/impeccable/bundle/blobs/54e71283cbd5646021fcd8eaa28d85852ec5288109c306aca9db9e2e4832338e +69 -0
  391. package/vendor/impeccable/bundle/blobs/5515d5210fbe2ef64e611ef2827a7204b7cea2f9df059f3ea499931f45065d93 +104 -0
  392. package/vendor/impeccable/bundle/blobs/55e95137b3f9198c1d4dfc425366b82f1ef5f77d602682b2edf91f2ce9296289 +24 -0
  393. package/vendor/impeccable/bundle/blobs/56500b1f9d2fcec8324d7f448d813048b5831a46d3feeb1055bd3eb17ec3660f +70 -0
  394. package/vendor/impeccable/bundle/blobs/571526fd5c60a586ff65bdb3f8333f26c36ae227f5f5ece826f4a43b4d4aee0f +325 -0
  395. package/vendor/impeccable/bundle/blobs/5738bcf9ac21dbb2113fd0c5cc7e4bbfc8174778916ab5843644332b3dbbc36e +46 -0
  396. package/vendor/impeccable/bundle/blobs/57402ef6fd9d0745f8c60d778f77da83a8b16edf751fa1013598a0f6e5f0f541 +136 -0
  397. package/vendor/impeccable/bundle/blobs/57e28934208e3eac653ab59c5c6a5e4eace44906d8ac86472988242d777ca5a1 +54 -0
  398. package/vendor/impeccable/bundle/blobs/581409ace104a81744b7d08f5398a2c207cf76d9e50751f807b4382eaf66454f +46 -0
  399. package/vendor/impeccable/bundle/blobs/598bfed550954471ba4d257d46b4d608cd82e4cdbf36d07bf93c5f4a563f7727 +89 -0
  400. package/vendor/impeccable/bundle/blobs/599afc25c1d6d083e4d4e60e1617ab05f6c5ecd52be75473f3788063219aa174 +31 -0
  401. package/vendor/impeccable/bundle/blobs/5b30a06646ad5e453d6b5ed1b8d446f69fca3cd13b8aeda28f0d0b2cbe8f62d1 +111 -0
  402. package/vendor/impeccable/bundle/blobs/5b5dcf7029376ee6fbcf13e5975eb828dd1dbf41736c1bd5017dcda8173b1ebc +325 -0
  403. package/vendor/impeccable/bundle/blobs/5be952da521a2d5fb799c834d14ce5388284374bc23c5efcec737a05aa65d878 +84 -0
  404. package/vendor/impeccable/bundle/blobs/5c036648951d555e73be63161e5c9edcba146d8e9f64b1604ffdea765cde5d9d +131 -0
  405. package/vendor/impeccable/bundle/blobs/5c4cd151c97dae824a039211d7ccfba4c572b76d8f079c6186ba1dd5dae7732b +54 -0
  406. package/vendor/impeccable/bundle/blobs/5ce02fc8f353d7f659535fb80e453963dc047a07c4396adf098fe010b479e7c0 +84 -0
  407. package/vendor/impeccable/bundle/blobs/5ce0631eacaae6d9fbb23ade26a774a20142cb40d3a8d5608a3fb9dbc4116b60 +806 -0
  408. package/vendor/impeccable/bundle/blobs/5db17cd013c10dca0012bc18aee7276280941579aa50757682e9ce60c4f7a006 +104 -0
  409. package/vendor/impeccable/bundle/blobs/5e3616ac45568f239fda3a4764f7d3bf3473b8b5eefd91e402dd9208a4b851d1 +24 -0
  410. package/vendor/impeccable/bundle/blobs/5f24c5a97b4ffcabc7c432b064cfdd04c7a2ad52f52e765be648dc0aadab8f38 +38 -0
  411. package/vendor/impeccable/bundle/blobs/5fae7f8a2fc3ddd49ad0a413446dc44daedef5b6b7de5eb935bd2fbfad646d58 +92 -0
  412. package/vendor/impeccable/bundle/blobs/61c72fdde649bf7f2e0668e48f9d222666c81672100b5f2265940e7aa13c8767 +111 -0
  413. package/vendor/impeccable/bundle/blobs/633903ba7cb38ed502448a66691fbf655805786a2f06be67043f12294ad08e86 +37 -0
  414. package/vendor/impeccable/bundle/blobs/64802d14087fc96b38ef3881fef8098b36068d07f3b942031637b18eef3dd2af +84 -0
  415. package/vendor/impeccable/bundle/blobs/64807d8f43267f4ed879e997834bbf793bd4605ba1dc65f4b545324b660a7063 +80 -0
  416. package/vendor/impeccable/bundle/blobs/68bc52a604731ca024610051fc763f4d78a53eb2a45d35b40a8c0383043baa63 +86 -0
  417. package/vendor/impeccable/bundle/blobs/68c5636a7858dd0b5137a9229c15e25fdc2ee40a0f8a4e9d809f78e809256262 +327 -0
  418. package/vendor/impeccable/bundle/blobs/696c15f96d49a03091b71a408151a3297521f7a8231b98ca9b1103667a0b5f89 +80 -0
  419. package/vendor/impeccable/bundle/blobs/6989120346e87907d59cc6d4708dd9dee29227ad583fbefee28935395b68ce34 +24 -0
  420. package/vendor/impeccable/bundle/blobs/69be9bb887f4d8ba4ead24928f9b97d122c796e731652fc0c08f195ab8ec2815 +105 -0
  421. package/vendor/impeccable/bundle/blobs/6abbf5979db5cb1d7965bf5f91d589e984843069c587f4d1e63aab135bbace0f +37 -0
  422. package/vendor/impeccable/bundle/blobs/6acc0bf221a4ddc6e5c6438348920b2ca2393b29c4314dbde2cdc23f2b1a9639 +58 -0
  423. package/vendor/impeccable/bundle/blobs/6bc62a59f6fef0b749927c8d10e9849ab2411199d86d70772a86f8e83ac309f5 +29 -0
  424. package/vendor/impeccable/bundle/blobs/6bdbc3f745ceee15e10b050f109ce42bbeb53ab3c3b5239257de1d596654dee7 +94 -0
  425. package/vendor/impeccable/bundle/blobs/6c382f8283756e8a693d832b750f7e4cbff1ca5bdcc3825b2b4ef4da9f21876a +94 -0
  426. package/vendor/impeccable/bundle/blobs/6c9ce3e27ec4520ead001da3aad2a2ebba481c4e5cd22873db8890259ee579fe +95 -0
  427. package/vendor/impeccable/bundle/blobs/6d368b679a0ed1815812815de65863b5840d419589dfbda06224c01149240287 +258 -0
  428. package/vendor/impeccable/bundle/blobs/6d47503587ad6da17ac529f44a96123bbb96a9c91a7a9350b7690fc467561a5d +46 -0
  429. package/vendor/impeccable/bundle/blobs/6e20041e209e8705d14aa9c4fb8cca3f0d743791de633785e5b46e2dd1ff1a6b +24 -0
  430. package/vendor/impeccable/bundle/blobs/6e7e3b7c4cf331cdb43f4546c164acd6c45a267ce3289dcfa87e13202d98c747 +104 -0
  431. package/vendor/impeccable/bundle/blobs/6f1d52863482fa0f6fff877f0cc8f6dd0b4230d28050b0d267e082776e61a332 +37 -0
  432. package/vendor/impeccable/bundle/blobs/706c68612a7c6b899a0abf0b407eca7cabcd371deae60f830aa38aa86947694e +84 -0
  433. package/vendor/impeccable/bundle/blobs/713cac92a71ef45e8b700180d881f830096cfe2b0615e79b276ccc4a12c051e0 +80 -0
  434. package/vendor/impeccable/bundle/blobs/733504a70ed20bcfca9c26c353f7b88f8491d24f3f2fe124dc1e73b28eefa296 +145 -0
  435. package/vendor/impeccable/bundle/blobs/73549b5536699c915156339976192fb38534bb43158cf9262ff5b89090388c64 +806 -0
  436. package/vendor/impeccable/bundle/blobs/73bd60faec1d8360753595f1ee9e970b44933448202767d7b0e87c275d399396 +6 -0
  437. package/vendor/impeccable/bundle/blobs/745b1f74877f6b3445da48af65dc45c66c3daa7738cb9a928aaa900889c2a204 +104 -0
  438. package/vendor/impeccable/bundle/blobs/74e20b26c29242bbebf79760315f7f0788e001566695618cfc70805484c6f92a +111 -0
  439. package/vendor/impeccable/bundle/blobs/759bab1d8adc071fdde2efcf6e2157aa4026f3c2b4f3c342a8070bf328011616 +214 -0
  440. package/vendor/impeccable/bundle/blobs/7848f40e224cf520bd8554943c9816a1ff8c97b1db57af0844e3b1ebb223d91f +416 -0
  441. package/vendor/impeccable/bundle/blobs/78ac93689928a580c2f90242cbaa96dda3fa4e55ff1f1d00e412b2a62ad85232 +145 -0
  442. package/vendor/impeccable/bundle/blobs/78c236dadb7e70337dc9dfa67e65fc15b7abed137ad320c16410ddfa7aec34f9 +131 -0
  443. package/vendor/impeccable/bundle/blobs/79114c6bf78b5a1838fe19bf033f3be85b232560eebf190ff8586aaec34ea170 +105 -0
  444. package/vendor/impeccable/bundle/blobs/79f85e381d1d6fdc8d39f54e1c8753fccf19b4ba3abb9827b6a7cc61eb376d1f +416 -0
  445. package/vendor/impeccable/bundle/blobs/7ad26830c7399a118cdbd4465a5426bc1919015aba99fd15959dc6deb8edc8d6 +80 -0
  446. package/vendor/impeccable/bundle/blobs/7af0a8665057c83b39bca2c8c7427ef2343734f70d4128c377113a6726a1e3b1 +12990 -0
  447. package/vendor/impeccable/bundle/blobs/7fd1617d5a86b7a1a0bf9d6e291b334ac41a3efce31031eeaef11de7cd7e75b4 +325 -0
  448. package/vendor/impeccable/bundle/blobs/800cf1c0392b24de7c0a1c6ea6778ecb433dec71c49a150bce96a98477527b2f +1 -0
  449. package/vendor/impeccable/bundle/blobs/808291e15746c9a64d9ede3ad3f06664b0a72970aa95052e064a96f1bfbed361 +54 -0
  450. package/vendor/impeccable/bundle/blobs/81666fc7f783b4e3514db6554e713dc0479bd9cdedb06e93d15f8b579aae869a +105 -0
  451. package/vendor/impeccable/bundle/blobs/824b994782a1fe68a244bbdff7218a2e0854655d90cc0fb5ade7ef9259ba6305 +46 -0
  452. package/vendor/impeccable/bundle/blobs/82a5e564563333aabb7ab4d2f8c26c785dfe2c2416ac6e9f30cba31440676194 +46 -0
  453. package/vendor/impeccable/bundle/blobs/835f19a0a3812f3652dd6979a2ce5597f654fd01f26e1b420b92d5f42b997ce4 +121 -0
  454. package/vendor/impeccable/bundle/blobs/84a06415956986cb215139b3efda7b3c7a5bb6f502a3b3d9300f0744a970e620 +99 -0
  455. package/vendor/impeccable/bundle/blobs/84df879a0332a56ece4bff1922ecf4f50635951b3c67e67eb46f31bc5d30fa9a +111 -0
  456. package/vendor/impeccable/bundle/blobs/85b9c2d051de94ee9129c58be111946f73035ca62bbd2a3936f4fa48768fe5cf +145 -0
  457. package/vendor/impeccable/bundle/blobs/869fa5390b84bfd00d072f5280a9002ea3e3936edf5985241be641a87f03ff7b +41 -0
  458. package/vendor/impeccable/bundle/blobs/86d10faab62da852aa1f4304157871545c853da708b6fe61c80aefb552c1f300 +84 -0
  459. package/vendor/impeccable/bundle/blobs/87b3db688c7963898bda8096f7868fed05ec5a0a80d14298e8b906b70cdf9c42 +416 -0
  460. package/vendor/impeccable/bundle/blobs/88749ebbe9bc87250765a07c2b959508262bd0e276ad60baa53e6e48c3579143 +806 -0
  461. package/vendor/impeccable/bundle/blobs/896da399bafcffb0623bdd81bb18709d6eab25c9d5917e739c8798f31ff0d076 +46 -0
  462. package/vendor/impeccable/bundle/blobs/89eb0206a0d9308c6c6a7cc01bc4fd8812d2bd34bb9a831988c5d86fac2c60de +42 -0
  463. package/vendor/impeccable/bundle/blobs/8a1c872773996dfa1c1eb765ac7ed8e8d41f99d4f12f090b4725b694e85eaa62 +336 -0
  464. package/vendor/impeccable/bundle/blobs/8a2d316593a631579bbb2f3fcb90d4488f85e97f69698dd2dd4fb50766f537d3 +325 -0
  465. package/vendor/impeccable/bundle/blobs/8b23562ccc3e41609ce6e67fdad6cc57b6c961964c329eff6975a1b4c5471c0d +111 -0
  466. package/vendor/impeccable/bundle/blobs/8c06daf096984cf71cf4133ea284dd6eaf503208da828816836ea41dfb69a234 +80 -0
  467. package/vendor/impeccable/bundle/blobs/8c34f78d71ac02c99303c7e0ca9ef30341aa9ecdeb75804dcba7e36a127914c1 +84 -0
  468. package/vendor/impeccable/bundle/blobs/8e7bb79db7331b93f99de314dd5599de8587ec0b6c25e26cf1efab25c0777fcb +86 -0
  469. package/vendor/impeccable/bundle/blobs/8eb39a13e3d3650d4261f8fb06e91d6c0b888ca12ddbd3a5610cd8f0b05ad176 +69 -0
  470. package/vendor/impeccable/bundle/blobs/8eb466778023fccea641654d662157b123eeb360f4a0875bf6fbe3d93680851c +24 -0
  471. package/vendor/impeccable/bundle/blobs/8f0867db7c6f6a54348a0d951f198a1bd852cd12505d821e6e1ac6bd42e7fcea +87 -0
  472. package/vendor/impeccable/bundle/blobs/8f651cb1f8cde0acc5cc511b77fddd98558a527f54974698a1650b0fd7e849a7 +43 -0
  473. package/vendor/impeccable/bundle/blobs/8ff60b8b5369d364f732f8de10479a39294e65341b3e0b6497b21de5c8e34b2d +806 -0
  474. package/vendor/impeccable/bundle/blobs/904859c8160b02330b04db23a8eeeb4ef55bcaa10f5208b8d73a1718334633e7 +84 -0
  475. package/vendor/impeccable/bundle/blobs/910461b1c1f8216155165955c860a884a1e2f557cb38f21ef512ea90ef6503c2 +136 -0
  476. package/vendor/impeccable/bundle/blobs/9205e222bc6565b37fb504ceec93233c2d2a456802b69d16e6b1c44723907c4c +5 -0
  477. package/vendor/impeccable/bundle/blobs/93eda27117930692a20f668f1cb0a80b7e14ab865998faba567cd721116081d4 +84 -0
  478. package/vendor/impeccable/bundle/blobs/943b0d7c9ce4f6802d8440a07b2ad3c61cbd1cc00ab63962bab7eea9ca584d20 +46 -0
  479. package/vendor/impeccable/bundle/blobs/948326fab89f0d5c07355a06b9b9c30d08bba2e3a673a0151ebbf5a39dff7b9a +40 -0
  480. package/vendor/impeccable/bundle/blobs/94b4ce6299fea93d9f256b2d25705961a76bc5ea940c56db4145686ebc99df1b +89 -0
  481. package/vendor/impeccable/bundle/blobs/95b07450ad1ea0b7adc369587b06e52404945bbaa5d87f7491fac7ffd0e6e2ae +11 -0
  482. package/vendor/impeccable/bundle/blobs/960cb922bc934adbf9192e9428ff6bec1f382038166f02a785939c93b7391067 +139 -0
  483. package/vendor/impeccable/bundle/blobs/96e2e6bd4fcf9a2c6da65fb029f96d9176308fae2efd9d8653d3b8d838960e07 +44 -0
  484. package/vendor/impeccable/bundle/blobs/96e508039c719c0815701c36b8418b18baee1967f915fa29b23b84861ae8ea94 +127 -0
  485. package/vendor/impeccable/bundle/blobs/98afc4c6da252e90c6b783079b6f157bf94a13dd4351392e881edd2a100edf6a +105 -0
  486. package/vendor/impeccable/bundle/blobs/9a2c08ee2516d2ee87129e7ebe6a0895f9990c9852d1f6fa7e70be9a6a88a659 +234 -0
  487. package/vendor/impeccable/bundle/blobs/9b2fc50c5062073d097140cde85602bba181e325ec6b9eea1bd3da74582acb9d +46 -0
  488. package/vendor/impeccable/bundle/blobs/9b85b85443aec09918befb83208c72f475457db8261a8fc5e83ef7eec474c869 +145 -0
  489. package/vendor/impeccable/bundle/blobs/9deb14303b421b5a9232755b5b9f317716f33e1e211557a98a00a9c409775c4d +145 -0
  490. package/vendor/impeccable/bundle/blobs/9e161532dc6731581d7a5f35bda5a2865e5248df7aff90e6dfc9221409893e35 +54 -0
  491. package/vendor/impeccable/bundle/blobs/9eb03b319ce7a2b281bc85ed1b0a437eb05ab2f765fc267354f9f9e6cbfadc25 +806 -0
  492. package/vendor/impeccable/bundle/blobs/9f1151faffbaadba0ddf5c09a4b2a82c9a12c900a2c1a9dac9863ba9ba0f420e +54 -0
  493. package/vendor/impeccable/bundle/blobs/a1a56df5fd51be403ca85a2f8054bb6f2bfeee443556c7798c2482e412fb6a09 +54 -0
  494. package/vendor/impeccable/bundle/blobs/a1dbde501ffabb50f30f28f2de6755b5e91b3d4028292c5a3abd3358106eb457 +37 -0
  495. package/vendor/impeccable/bundle/blobs/a1e4febca3455787d7c753fe177a150dccde6e742957de400b0307247802d200 +145 -0
  496. package/vendor/impeccable/bundle/blobs/a423108e7e31a54564e2e0794186394f842625fd9f7d7ce6e6615362511503a2 +93 -0
  497. package/vendor/impeccable/bundle/blobs/a4cfd2330c8cca94b62986679b3f9e3bb9ada0cb30c2c63c5d19c6039f5a45ae +104 -0
  498. package/vendor/impeccable/bundle/blobs/a5371492582dbeb69b24a1a2947b256a2da8a4d55917af709bbab6e452d9d23c +145 -0
  499. package/vendor/impeccable/bundle/blobs/a55f016c046cb6a27c55bd7f346375aeb506a755c4fbca19a5f92dbd42309c23 +59 -0
  500. package/vendor/impeccable/bundle/blobs/a7045711a1f0dd2cd5bd98e57ff615f638d7e29738bdd618cf15e83fea5993b9 +325 -0
  501. package/vendor/impeccable/bundle/blobs/a7f036f4217933db8a96cf2f0ba251b15f388839d62bcf95720ce0b7152dd185 +806 -0
  502. package/vendor/impeccable/bundle/blobs/a8547c8565979894f0c07f92a96ac2a38e681a31fbf155ffeefc7566e185d9c2 +39 -0
  503. package/vendor/impeccable/bundle/blobs/a8f4056a85706c0c8f80ec48e9b437e198464100aa42786f9252051f4b931c19 +111 -0
  504. package/vendor/impeccable/bundle/blobs/a9515f6f084d8f51c378eb3cdc6db1f12e06dba2d32fc61b7ee7950fa2586f2e +24 -0
  505. package/vendor/impeccable/bundle/blobs/a9856cb40da6519b1334bcfc75a4fbe83bef39ca86ee6f3effcb2a96794c627c +127 -0
  506. package/vendor/impeccable/bundle/blobs/a98b397cedeeaa1da57f3395b3d9b6c1fc477f4247fb9dc13e4da3da588283ff +54 -0
  507. package/vendor/impeccable/bundle/blobs/a9d2203acd45ca33a13d5c68b02b23ed512425ac15f0e8438318ed124b43729d +61 -0
  508. package/vendor/impeccable/bundle/blobs/ac695dd89d5f1261004cfa966526f5d5e913c92fa0640d4d71cb42493effad08 +131 -0
  509. package/vendor/impeccable/bundle/blobs/ad389ab12800738b0e5c97618278b7a824654b25990166ec9f389caa5c3386ca +37 -0
  510. package/vendor/impeccable/bundle/blobs/add1bee76f897f989166a5b9ad1b38d9173248e29d668d5c885ae9a0eff73861 +105 -0
  511. package/vendor/impeccable/bundle/blobs/af34b8af89edb10e228c0482754423f48238fce816eceb8703b8781c130da54e +24 -0
  512. package/vendor/impeccable/bundle/blobs/b0e1a0721a1e47675a8750cfb608138743dd9fa9c047146e5cc8f82b9041be7a +806 -0
  513. package/vendor/impeccable/bundle/blobs/b14dc725606717be881a058bb691c0af1860cc8ad98d48e5a4789fe1a7de5458 +806 -0
  514. package/vendor/impeccable/bundle/blobs/b161198874e4e77599bc31691e78790be14bacc2eb03be168c8a7543ece9fbe1 +145 -0
  515. package/vendor/impeccable/bundle/blobs/b29e10f4506af2277739ad2373bc91c9fff41dbe76c9907f45152b4178cc6b6c +105 -0
  516. package/vendor/impeccable/bundle/blobs/b2d71ff0df7ed49e06dfc4acfce3d3f7eb48afa68be04763ee8c08354df50a07 +97 -0
  517. package/vendor/impeccable/bundle/blobs/b2f60e0154bf0e687badc46d8c8420e2118a9a6e21162050722be779dc02cb6d +111 -0
  518. package/vendor/impeccable/bundle/blobs/b314a0c5bd844f6471ea3031aeb9299674d972fbdd1615d99d16478de437d26d +84 -0
  519. package/vendor/impeccable/bundle/blobs/b31ff29c7a1ea979c6d039f7e8d17007410697ab49536690dca109f0af3f20f8 +336 -0
  520. package/vendor/impeccable/bundle/blobs/b3782f2d9215eb0f5df4fe3c0e0bec07cef011e1836d4d0e45ef02bc48d3adde +24 -0
  521. package/vendor/impeccable/bundle/blobs/b4def5b57733b6ba233570bd5691a536901f8b15479fc0111a2cde56224d0e1a +325 -0
  522. package/vendor/impeccable/bundle/blobs/b5f4fbb4a044c3f5ec14adc847222488f00fccabbf79ecd0b21084c8d319d616 +105 -0
  523. package/vendor/impeccable/bundle/blobs/b6022a8c7200e96b0b55c2ff599a01d64123a2f5fe01557d4ca5192a6e0f0b0c +145 -0
  524. package/vendor/impeccable/bundle/blobs/b6a2ef031313d3848ab2928875298550836f0f9ff7bdf5772e918c5c610ea448 +806 -0
  525. package/vendor/impeccable/bundle/blobs/b6dfd3df9a371e7d179d365cc1d72c11d4ed91b6507c0e1dbec0843419542f66 +84 -0
  526. package/vendor/impeccable/bundle/blobs/b7fcd2b03539d1029c8774fa806e6f4c677448e9e97e15f69b066022536c5491 +80 -0
  527. package/vendor/impeccable/bundle/blobs/b824bb76a657d3edd65e89807dcb21a3679eab39292423066e11368b35afba79 +325 -0
  528. package/vendor/impeccable/bundle/blobs/b8d49a3cab3428d9f351502e9c2c5802cef187e0d2af626ef3e1cd1837fd06bf +105 -0
  529. package/vendor/impeccable/bundle/blobs/bad9250670c18d89722563fd747bae4c4bec64d1db0ee09d12d4fea04fe271b8 +84 -0
  530. package/vendor/impeccable/bundle/blobs/bb069b43c09109d7031b0374e31955749fec657b252d39782f11e8985aca2b51 +131 -0
  531. package/vendor/impeccable/bundle/blobs/bb36665889124a0b6e15f16045265737449c3bdcf2712cdb08af3cfa01563e2b +14 -0
  532. package/vendor/impeccable/bundle/blobs/bb59a1f78f3d2aa78e4b024fe203117155f50946a9e4bbe65c1b3b3abdcee356 +104 -0
  533. package/vendor/impeccable/bundle/blobs/bb9d4bb369216e892eea25adeaefc5a3e09bb4abd31e3475b79e47b3aee2a6af +806 -0
  534. package/vendor/impeccable/bundle/blobs/bc5f71f1129d0f2c310d913d07c8dc609a1d25644121bd78c308f42d52a0b9e9 +86 -0
  535. package/vendor/impeccable/bundle/blobs/bc7a5128cfed46148396c08798b6b9429406fbe477e84e331a36ee2840b6b776 +111 -0
  536. package/vendor/impeccable/bundle/blobs/bcc05ea92faebb5c74037a9d4263a5ce9a56f5ab07c8ab3c59ee704d8cade745 +24 -0
  537. package/vendor/impeccable/bundle/blobs/bdf9a59beea111ac6f98f5624854feb5a5a1d60b1989edbbfabf3dc6f357a7e6 +105 -0
  538. package/vendor/impeccable/bundle/blobs/bdfd2a879ca65e437481eac5309f2283da225121630935d89ed902cfdf470c8e +105 -0
  539. package/vendor/impeccable/bundle/blobs/bea6ebfda78c51b9cf372097a1d77431d0f6bcd96eadec13a2ac95afbb87fb6d +104 -0
  540. package/vendor/impeccable/bundle/blobs/bead87679caad7c537dd7c04c3bb78be56ac7eec279ad6aad7322f48ff2df2d9 +312 -0
  541. package/vendor/impeccable/bundle/blobs/bf3b8883f8550744e08754af82a78939ab8b1237e5fad6f38d819e2f17e8a389 +104 -0
  542. package/vendor/impeccable/bundle/blobs/bf92a4a51b29de9661c5fa82f3d79244718a67d385ef661990f0c4a5b367e843 +104 -0
  543. package/vendor/impeccable/bundle/blobs/bfc51972fbf387566dc9e29c8b1af479a66ab401fdbce659fae9e6a5a9d85316 +69 -0
  544. package/vendor/impeccable/bundle/blobs/c02feba25a961a72647ad317aba2d65baeeed53c4cdcc072f25bb37f4d867d43 +84 -0
  545. package/vendor/impeccable/bundle/blobs/c1cb6877ca99a0c1b38ba0c7d59f32702d3022f6821d8045f7133f7c40b6362f +242 -0
  546. package/vendor/impeccable/bundle/blobs/c1f3766091019b6f9183bc1d11b1e0fe03d44c168dc05a682c55df32f904dcfd +33 -0
  547. package/vendor/impeccable/bundle/blobs/c327bf17f2af186f87164dee5fb5468746a9b137f0b604365d531ac9387f3712 +325 -0
  548. package/vendor/impeccable/bundle/blobs/c36f6aac0ddf52eabbb21df09fd3310540dca6b09e7a4017d18e94c06c469405 +46 -0
  549. package/vendor/impeccable/bundle/blobs/c3ad2a5fa570876af6645c48d246c664859e19f253d2dc9e0ead34e785d5b40a +84 -0
  550. package/vendor/impeccable/bundle/blobs/c6a0ec6c28ae55fe539f0f41a507b1638495afd285d6eb15c00245fc8cc7e7fe +42 -0
  551. package/vendor/impeccable/bundle/blobs/c6f15d20d8d8748c4c475ff70cdb0ee426f2e6c9e7eab6169311f4dffd279ea1 +54 -0
  552. package/vendor/impeccable/bundle/blobs/c83d6a13fdfb58835c845f61aed3fc6dca17b5569d33387ced840bc13424f354 +84 -0
  553. package/vendor/impeccable/bundle/blobs/c9284892cb1f21aaeaf93fdf2e9e7a679d05e0baa8ddf309a79a9790d262ad38 +806 -0
  554. package/vendor/impeccable/bundle/blobs/cb8caddbb3919e5bf7f252143b519fb16db28a244642d937b186cb89962d9201 +828 -0
  555. package/vendor/impeccable/bundle/blobs/cbd8bd68fa00935dd0f179adb169252629cf7ee443ea9dc7db77e7ef2cf77446 +4 -0
  556. package/vendor/impeccable/bundle/blobs/cf3ae16765e7b5bc333ef76e24ab37f080e3d62e931c4986158e3cbcda6b9f7a +46 -0
  557. package/vendor/impeccable/bundle/blobs/d07e3131cdf3e392e59eaa3e2f59fcb0799d9494df4adfee12a21067fb8365ce +37 -0
  558. package/vendor/impeccable/bundle/blobs/d1366aa4802b364893c2a14b16fe95c3b7fab79f9f69eb272fd1538f7cb1ce2c +105 -0
  559. package/vendor/impeccable/bundle/blobs/d15a2914d93e07a4956acd5c8b8211af17380f527acd10d8acf4f4920badaaaf +89 -0
  560. package/vendor/impeccable/bundle/blobs/d1faa55eb956033d28e9f27fd2bc2a9f62c5da0f0abd6534819cc0a04db54d9d +37 -0
  561. package/vendor/impeccable/bundle/blobs/d1fbd55074abb2251bdaa03749d34acc42c38e46e47549f18f5848df57d43c42 +86 -0
  562. package/vendor/impeccable/bundle/blobs/d2455359baf5f9e75360c7094e28a16937c8674619e07d58f30d2b5abfd31e53 +105 -0
  563. package/vendor/impeccable/bundle/blobs/d658c48ffbe0031e8e3b318996cad6ceafe29e40aa50d5bb25e4bf1d6839dc7c +89 -0
  564. package/vendor/impeccable/bundle/blobs/d6a1fa1689642a6db9027493747d7ed54f9e0cae660472022c0a0a8dfdead3f4 +54 -0
  565. package/vendor/impeccable/bundle/blobs/d7211a816aa8ca1111701930f7cdab82b4c8caa94c9a37522c1d7945209b01c2 +84 -0
  566. package/vendor/impeccable/bundle/blobs/d87879329982d608866e4babd31c61438ec34c68483e529761fbf420203eeebd +104 -0
  567. package/vendor/impeccable/bundle/blobs/daa2a8ecd874f9f940dfd72aaa329318b06bb9be25515be85fea84c871b637a6 +145 -0
  568. package/vendor/impeccable/bundle/blobs/dcf7340da023e64144af5768b8bf44ecf45b1bfdec12d3b1c9e6618f17f8c60a +131 -0
  569. package/vendor/impeccable/bundle/blobs/dde1b74aeab3d90320e134f0ed0422bef99917dcab4c1749aa1720a2c94f725f +37 -0
  570. package/vendor/impeccable/bundle/blobs/de1b7404f4cdfd7b515196afb17b74b1980f0bc88cb8681ae93a76ca48ec7bdb +167 -0
  571. package/vendor/impeccable/bundle/blobs/df0eb9e9a484fc7b8a0f3e50573a7d7f81e0f17598ac30d9f3fe5a6c6aa5fefa +37 -0
  572. package/vendor/impeccable/bundle/blobs/df23e9ee5b689a05ed88f42e9a36aaffa2e6e28b1d56e2832acaa1d3603fd363 +105 -0
  573. package/vendor/impeccable/bundle/blobs/df4f14df1daaad1606b682995f649da19a85debf264092447b3b7ddb8b4bc1ce +147 -0
  574. package/vendor/impeccable/bundle/blobs/dfd6f341b156bc604e7556b27cba437d5870fbc82d4c673d0127cf18151b2226 +99 -0
  575. package/vendor/impeccable/bundle/blobs/e02ba7f4417e84b3bd5ec65287c4a14cf163ca3ac6f8ee37d8f709d0c8b0b6d2 +84 -0
  576. package/vendor/impeccable/bundle/blobs/e21af575fcc0f1df54ae422bea4dfa1e5211422606908919f6a86e19e0d5c20c +89 -0
  577. package/vendor/impeccable/bundle/blobs/e26ddd48211aae08fe6debf2a7a4308aa081ed224668cde528e451888db0e3e3 +325 -0
  578. package/vendor/impeccable/bundle/blobs/e2e275495354eeccb7e59af7d74e2ff1f371839bd6aaec1266428760995fb24c +104 -0
  579. package/vendor/impeccable/bundle/blobs/e2f98c4136d0ab70ec32fcdef58edb20ed8ec4f6cc067e0dae952b22cfd6a471 +24 -0
  580. package/vendor/impeccable/bundle/blobs/e3c331cc21d9a216e25e08628610ea99c97e150893c3d26e5c0cecc532f26d7b +24 -0
  581. package/vendor/impeccable/bundle/blobs/e44ca51f24c4736f9aee6024182b0409aa12ec94812b7ec94745e0999ed06a70 +29 -0
  582. package/vendor/impeccable/bundle/blobs/e49d2b0110c55751da3c965b4ae4d294aa676c961a09f8efbbbf22c1ec7c4fa0 +24 -0
  583. package/vendor/impeccable/bundle/blobs/e68467ba99684d8c975a8a2725145d29db41d70659c7544ea54cc6632660cea3 +127 -0
  584. package/vendor/impeccable/bundle/blobs/e71524578eb2bda3b8d2da3d8b8371239a2179c5fa866f9f7e48bcac45a8cd6f +84 -0
  585. package/vendor/impeccable/bundle/blobs/e71d6b97680084a7ccec01844e658cbd2042aec00da0c91bec62a240ad7dcf6a +145 -0
  586. package/vendor/impeccable/bundle/blobs/e7dd10af2c3c18c60dc20734d55ff870c323a10dadd337600f7bb980fc6b53c8 +327 -0
  587. package/vendor/impeccable/bundle/blobs/e802e4f7bdc89050a9c0f2ca506e1d493a2316e6e810c0336c57aa073717ef3e +50 -0
  588. package/vendor/impeccable/bundle/blobs/e8ee6c08e94b80324173d89d6f4cdc5b4829ea6858b3a11fc186588a490cada4 +46 -0
  589. package/vendor/impeccable/bundle/blobs/e9da72a13eb3411d6bbb316953022f62abc4434f505e5345907b216eda9f793b +39 -0
  590. package/vendor/impeccable/bundle/blobs/ea8432c90c30ecb0426662a681ead5c0941113079704e1a766cda09e85b15b4f +111 -0
  591. package/vendor/impeccable/bundle/blobs/eaa50e8cd95e00a94a257db2bff4eafd820696ba75a08a384a00517c3402924e +325 -0
  592. package/vendor/impeccable/bundle/blobs/eb3213b9c9f4d6b2f153e7b457f13aa131bcf633695229dad4eac39a920bdf38 +46 -0
  593. package/vendor/impeccable/bundle/blobs/ec58806f16fc7ba29bccef08f2e158cd00be077ce05d45e943a59bd26dc6dc55 +312 -0
  594. package/vendor/impeccable/bundle/blobs/ec6338b20047099601e4bac8b2efcd597f800d5e437259f6c15d23090400621b +325 -0
  595. package/vendor/impeccable/bundle/blobs/edddeb3fad88adec9a055b1bf9d5c75418cbe97a13b1a7f6765e73249e482563 +144 -0
  596. package/vendor/impeccable/bundle/blobs/ee0a15fcfc244b76b896a2650a17b35e444d4311166b69a3cfa32d11f8f44851 +30 -0
  597. package/vendor/impeccable/bundle/blobs/ee6d6d127c1c2ab3526d529a8e3698be2185b5e346ac617f37501de2c0698b97 +99 -0
  598. package/vendor/impeccable/bundle/blobs/ef0b8eca20e1321cf7216fd0bda41ce54b0cca197cfd1b075eb51f3436f59059 +24 -0
  599. package/vendor/impeccable/bundle/blobs/ef2dde00030580ed2765cbf7be9b2ea4a6f64cb915b804fd6f6abcf38051c7b9 +234 -0
  600. package/vendor/impeccable/bundle/blobs/f0c4d0615c7d520dfc2536c01cc7f1f3aab9b60ddc399ba01289fe62edb12370 +24 -0
  601. package/vendor/impeccable/bundle/blobs/f1601095679d7d8cf6fef6845598c70d8734190709c1404fa0026e28fef2faaa +325 -0
  602. package/vendor/impeccable/bundle/blobs/f173ff03f989f162cee815feb2d8ca72daf00019c48694d89db16d52171a79c0 +24 -0
  603. package/vendor/impeccable/bundle/blobs/f424dafa190533cd32c0bc3e4131d0c472d58e16bb191eab14f0ae73c2cea917 +37 -0
  604. package/vendor/impeccable/bundle/blobs/f597742c8e5562263d3bce725cb55e920d8c2c60223f41a632d523ca30cdd12b +111 -0
  605. package/vendor/impeccable/bundle/blobs/f672ef8251a3ed4051a053d30819664951b17540b2899acd27d20e500c234abc +258 -0
  606. package/vendor/impeccable/bundle/blobs/f7916d0113da7a19d4e03c113d5563d181457e44f1646ecab9191cfee5ae776d +89 -0
  607. package/vendor/impeccable/bundle/blobs/f7a9e3f30fe07b0d98351730e9895d50bba96dd42fe91c0d9b9a76ef62e53322 +80 -0
  608. package/vendor/impeccable/bundle/blobs/f7b854effc55c8f07e40a415e0d6b5c333f4042fbc849fac73d52619c8d053a1 +54 -0
  609. package/vendor/impeccable/bundle/blobs/f964506c0fae87b3c2c1db7016ddc9be9ef970bbcf5548d684b997b5d5991586 +33 -0
  610. package/vendor/impeccable/bundle/blobs/f97a6891c80bbbc728edefcf4b638d1a823b38f3cb16ecd0fbb717734cc5c0c8 +46 -0
  611. package/vendor/impeccable/bundle/blobs/f9cbbad0cc08fb9bd69d4d3046067c6cf820b89cdaf7af8c81c671fb0a62b6ae +54 -0
  612. package/vendor/impeccable/bundle/blobs/fce6688138d2ceb1e3d2cde5231f54b1d8dc8748b4c95a7919aa83b6f924cf96 +127 -0
  613. package/vendor/impeccable/bundle/blobs/fd5579dbae1fc2495b7dddde48df9673acebd27953bbb56d506d3b470375c9e9 +37 -0
  614. package/vendor/impeccable/bundle/blobs/fe91fcf28638f95577af481a50edaf339d6c9a3ad3b9fa477bc81c116b8bc392 +139 -0
  615. package/vendor/impeccable/bundle/blobs/ff0ab1361f52d70d3ff0d23090d78794a75afdfa2f8c1cee5491dee69215faaa +105 -0
  616. package/vendor/impeccable/bundle/blobs/ff882c59c9aced92338aa194cc99a521ea2f083fd22eef3b1c1225e06bc72f66 +86 -0
  617. package/vendor/impeccable/bundle/manifest.json +1139 -0
  618. package/skills/dev-plan/evals/evals.json +0 -72
@@ -0,0 +1,226 @@
1
+ # Chapter 7 - Type State Pattern
2
+
3
+ Models state at compile time, preventing bugs by making illegal states unrepresentable. It takes advantage of the Rust generics and type system to create sub-types that can only be reached if a certain condition is achieved, making some operations illegal at compile time.
4
+
5
+ > Recently it became the standard design pattern of Rust programming. However, it is not exclusive to Rust, as it is achievable and has inspired other languages to do the same [swift](https://swiftology.io/articles/typestate/) and [typescript](https://catchts.com/type-state).
6
+
7
+ ## 7.1 What is Type State Pattern?
8
+
9
+ **Type State Pattern** is a design pattern where you encode different **states** of the system as **types**, not as runtime flags or enums. This allows the compiler to enforce state transitions and prevent illegal actions at compile time. It also improves the developer experience, as developers only have access to certain functions based on the state of the type.
10
+
11
+ > Invalid states become compile errors instead of runtime bugs.
12
+
13
+ ## 7.2 Why use it?
14
+
15
+ * Avoids runtime checks for state validity. If you reach certain states, you can make certain assumptions of the data you have.
16
+ * Models state transitions as type transitions. This is similar to a state machine, but in compile time.
17
+ * Prevents data misuse, e.g. using uninitialized objects.
18
+ * Improves API safety and correctness.
19
+ * The phantom data field is removed after compilation so no extra memory is allocated.
20
+
21
+ ## 7.3 Simple Example: File State
22
+
23
+ [Github Example](https://github.com/apollographql/rust-best-practices/tree/main/examples/simple-type-state)
24
+ ```rust
25
+ use std::{io, path::{Path, PathBuf}};
26
+
27
+ struct FileNotOpened;
28
+ struct FileOpened;
29
+
30
+ #[derive(Debug)]
31
+ struct File<State> {
32
+ /// Path to the opened file
33
+ path: PathBuf,
34
+ /// Open `File` handler
35
+ handle: Option<std::fs::File>,
36
+ /// Type state manager
37
+ _state: std::marker::PhantomData<State>
38
+ }
39
+
40
+ impl File<FileNotOpened> {
41
+ /// `open` is the only entry point for this struct.
42
+ /// * When called with a valid path, it will return a `File<FileOpened>` with a valid `handler` and `path`
43
+ /// * `open` serves as an alternative to `new` and `defaults` methods (usable when your struct needs valid data to exist).
44
+ fn open(path: &Path) -> io::Result<File<FileOpened>> {
45
+ // If file is invalid, it will return `std::io::Error`
46
+ let file = std::fs::File::open(path)?;
47
+ Ok(
48
+ File {
49
+ path: path.to_path_buf(),
50
+ // Always valid
51
+ handle: Some(file),
52
+ _state: std::marker::PhantomData::<FileOpened>
53
+ }
54
+ )
55
+ }
56
+ }
57
+
58
+ impl File<FileOpened> {
59
+ /// Reads the content of the `File` as a `String`.
60
+ /// `read` can only be called by state `File<FileOpened>`
61
+ fn read(&mut self) -> io::Result<String> {
62
+ use io::Read;
63
+
64
+ let mut content = String::new();
65
+ let Some(handle)= self.handle.as_mut() else {
66
+ unreachable!("Safe to unwrap as state can only be reached when file is open");
67
+ };
68
+ handle.read_to_string(&mut content)?;
69
+ Ok(content)
70
+ }
71
+
72
+ /// Returns the valid path buffer.
73
+ fn path(&self) -> &PathBuf {
74
+ &self.path
75
+ }
76
+ }
77
+ ```
78
+
79
+ ## 7.4 Real-World Examples
80
+
81
+ ### Builder Pattern with Compile-Time Guarantees
82
+
83
+ > Forces the user to **set required fields** before calling `.build()`.
84
+
85
+ [Github Example](https://github.com/apollographql/rust-best-practices/tree/main/examples/type-state-builder)
86
+
87
+ A type-state pattern can have more than one associated states:
88
+
89
+ ```rust
90
+ use std::marker::PhantomData;
91
+
92
+ struct MissingName;
93
+ struct NameSet;
94
+ struct MissingAge;
95
+ struct AgeSet;
96
+
97
+ #[derive(Debug)]
98
+ struct Person {
99
+ name: String,
100
+ age: u8,
101
+ email: Option<String>,
102
+ }
103
+
104
+ struct Builder<NameState, AgeState> {
105
+ name: Option<String>,
106
+ age: u8,
107
+ email: Option<String>,
108
+ _name_marker: PhantomData<NameState>,
109
+ _age_marker: PhantomData<AgeState>,
110
+ }
111
+
112
+ impl Builder<MissingName, MissingAge> {
113
+ fn new() -> Self {
114
+ Builder { name: None, age: 0, _name_marker: PhantomData, _age_marker: PhantomData, email: None }
115
+ }
116
+
117
+ fn name(self, name: String) -> Builder<NameSet, MissingAge> {
118
+ Builder { name: Some(name), _name_marker: PhantomData::<NameSet>, age: self.age, _age_marker: PhantomData, email: None }
119
+ }
120
+
121
+ fn age(self, age: u8) -> Builder<MissingName, AgeSet> {
122
+ Builder { age, _age_marker: PhantomData::<AgeSet>, name: None, _name_marker: PhantomData, email: None }
123
+ }
124
+ }
125
+
126
+ impl Builder<NameSet, MissingAge> {
127
+ fn age(self, age: u8) -> Builder<NameSet, AgeSet> {
128
+ Builder { age, _age_marker: PhantomData::<AgeSet>, name: self.name, _name_marker: PhantomData::<NameSet>, email: None }
129
+ }
130
+ }
131
+
132
+ impl Builder<MissingName, AgeSet> {
133
+ fn email(self, email: String) -> Self {
134
+ Self { name: self.name , age: self.age , email: Some(email) , _name_marker: self._name_marker , _age_marker: self._age_marker }
135
+ }
136
+
137
+ fn name(self, name: String) -> Builder<NameSet, AgeSet> {
138
+ Builder { name: Some(name), _name_marker: PhantomData::<NameSet>, age: self.age, _age_marker: PhantomData::<AgeSet>, email: self.email }
139
+ }
140
+ }
141
+
142
+ impl Builder<NameSet, AgeSet> {
143
+ fn build(self) -> Person {
144
+ Person {
145
+ name: self.name.unwrap_or_else(|| unreachable!("Name is guarantee to be set")),
146
+ age: self.age,
147
+ email: self.email,
148
+ }
149
+ }
150
+ }
151
+ ```
152
+
153
+ Although a bit more verbose than a usual builder, this guarantees that all necessary fields are present (note that e-mail is optional field only present in the final builder).
154
+
155
+ #### Usage:
156
+ ```rust
157
+ // ✅ Valid cases
158
+ let person: Person = Builder::new().name("name".to_string()).age(30).build();
159
+ let person: Person = Builder::new().age(30).name("name".to_string()).build();
160
+ let person: Person = Builder::new().age(30).name("name".to_string()).email("myself@email.com".to_string()).build();
161
+
162
+ // ❌ Invalid cases
163
+ let person: Person = Builder::new().name("name".to_string()).build(); // ❌ Compile error: Age required to `build`
164
+ let person: Person = Builder::new().age(30).build(); // ❌ Compile error: Name required to `build`
165
+ let person: Person = Builder::new().age(30).email("myself@email.com".to_string()).build(); // ❌ Compile error: Name required to `build`
166
+ let person: Person = Builder::new().build();// ❌ Compile error: Name and Age required to `build`
167
+ ```
168
+
169
+ ### Network Protocol State Machine
170
+
171
+ Illegal transitions like sending a message before connecting **simply don't compile**:
172
+
173
+ ```rust
174
+ // Mock example
175
+ struct Disconnected;
176
+ struct Connected;
177
+
178
+ struct Client<State> {
179
+ stream: Option<std::net::TcpStream>,
180
+ _state: std::marker::PhantomData<State>
181
+ }
182
+
183
+ impl Client<Disconnected> {
184
+ fn connect(addr: &str) -> std::io::Result<Client<Connected>> {
185
+ let stream = std::net::TcpStream::connect(addr)?;
186
+ Ok(Client {
187
+ stream: Some(stream),
188
+ _state: std::marker::PhantomData::<Connected>
189
+ })
190
+ }
191
+ }
192
+
193
+ impl Client<Connected> {
194
+ fn send(&mut self, msg: &str) -> std::io::Result<()> {
195
+ use std::io::Write;
196
+ let Some(stream) = self.stream.as_mut() else {
197
+ unreachable!("Stream is guaranteed to be set in the `Connected` state");
198
+ };
199
+ stream.write_all(msg.as_bytes())
200
+ }
201
+ }
202
+ ```
203
+
204
+ ## 7.5 Pros and Cons
205
+
206
+ ### ✅ Use Type-State Pattern When:
207
+ * Your want **compile-time state safety**.
208
+ * You need to enforce **API constraints**.
209
+ * You are writing a library/crate that is heavy dependent on variants.
210
+ * Your want to replace runtime booleans or enums with **type-safe code paths**.
211
+ * You need compile time correctness.
212
+
213
+ ### ❌ Avoid it when:
214
+ * Writing trivial states like enums.
215
+ * Don't need type-safety.
216
+ * When it leads to overcomplicated generics.
217
+ * When runtime flexibility is required.
218
+
219
+ ### 🚨 Downsides and Cautions
220
+ * Can lead to more **verbose solutions**.
221
+ * Can lead to **complex type signatures**.
222
+ * May require **unsafe** to return **variant outputs** based on different states.
223
+ * May required a bunch of duplication (e.g. same struct field reused).
224
+ * PhantomData is not intuitive for beginners and can feel a bit hacky.
225
+
226
+ > Use this pattern when it **saves bugs, increases safety or simplifies logic**, not just for cleverness.
@@ -0,0 +1,257 @@
1
+ # Chapter 8 - Comments vs Documentation
2
+
3
+ > Clear code beats clear comments. However, when the why isn't obvious, comment it plainly - or link to where you can read more context.
4
+
5
+ ## 8.1 Comments vs Documentation: Know the Difference
6
+
7
+ | Purpose | Use `// comment` | Use `/// doc` or `//! crate doc` |
8
+ |-------------- |------------------------------------------- |---------------------------------------------------------------- |
9
+ | Describe Why | ✅ Yes - explains tricky reasoning | ❌ Not for documentation |
10
+ | Describe API | ❌ Not useful | ✅ Yes - public interfaces, usage, details, errors, panics |
11
+ | Maintainable | 🚨 Often becomes obsolete and hard to reason | ✅ Tied to code, appears in generated docs and can run test cases |
12
+ | Visibility | Local development only | Exported to users and tools like `cargo doc` |
13
+
14
+ ## 8.2 When to use comments
15
+
16
+ Use `//` comments (double slashed) when something can't be expressed clearly in code, like:
17
+ * **Safety Guarantees**, some of which can be better expressed with code conditionals.
18
+ * Workarounds or **Optimizations**.
19
+ * Legacy or **platform-specific** behaviors. Some of them can be expressed with `#[cfg(..)]`.
20
+ * Links to **Design Docs** or **ADRs**.
21
+ * Assumptions or **gotchas** that aren't obvious.
22
+
23
+ > Name your comments! For example, a comment regarding a safety guarantee should start with `// SAFETY: ...`.
24
+
25
+ ### ✅ Good comment:
26
+ ```rust
27
+ // SAFETY: `ptr` is guaranteed to be non-null and aligned by caller
28
+ unsafe { std::ptr::copy_nonoverlapping(src, dst, len); }
29
+ ```
30
+
31
+ ### ✅ Design context comment:
32
+ ```rust
33
+ // CONTEXT: Reuse root cert store across subgraphs to avoid duplicate OS calls:
34
+ // [ADR-12](link/to/adr-12): TLS Performance on MacOS
35
+ ```
36
+
37
+ ## 8.3 When comments get in the way
38
+
39
+ Avoid comments that:
40
+ * Restate obvious things (`// increment i by 1 for the next loop`).
41
+ * Can grow stale over time.
42
+ * `TODO`s without actions (links to some versioned issue).
43
+ * Could be replaced by better naming or smaller functions.
44
+
45
+ ### ❌ Bad comment:
46
+ ```rust
47
+ fn compute(counter: &mut usize) {
48
+ // increment by 1
49
+ *counter += 1;
50
+ }
51
+ ```
52
+
53
+ ### ❌ Too long or outdated
54
+ ```rust
55
+ // Originally written in 2018 for some now-defunct platform
56
+ ```
57
+
58
+ ## 8.4 Don't Write Living Documentation (living comments)
59
+
60
+ Comments as a "living documentation" is a **dangerous myth**, as comments are **not free**:
61
+ * They **rot** - nobody compiles comments.
62
+ * They **mislead** - readers usually assume they are true with no critique, e.g. "the other developer knows this code better than I do".
63
+ * They **go stale** - unless maintained with the code, they become irrelevant.
64
+ * They are **noisy** - comments can clutter your code with multiple unnecessary lines.
65
+
66
+ If something deserves to live beyond a PR, put it in:
67
+ * An **ADR** (Architectural Design Record).
68
+ * A Design Document.
69
+ * Document it **in code** by using types, doc comments, examples, renaming code blocks into cleaner functions.
70
+ * Add tests to cover and explain the change.
71
+
72
+ > ### 🚨 If you find a comment, **read it in context**. Does it still make sense? If not, remove or update it, or ask for help. Comments should bother you.
73
+
74
+ ## 8.5 Replace Comments with Code
75
+
76
+ Instead of long commented blocks, break logic into named helper functions:
77
+
78
+ #### ❌ Commented code block:
79
+ ```rust
80
+ fn save_user(&self) -> Result<(), MyError> {
81
+ // check if the user is authenticated
82
+ if self.is_authenticated() {
83
+ // serialize user data
84
+ let data = serde_json::to_string(self)?;
85
+ // write to file
86
+ std::fs::write(self.path(), data)?;
87
+ }
88
+ Ok(())
89
+ }
90
+ ```
91
+ **✅ Extract for clarity**:
92
+
93
+ ```rust
94
+ fn save_auth_user(&self) -> Result<PathBuf, MyError> {
95
+ if self.is_authenticated() {
96
+ let path = self.path();
97
+ let serialized_user = serde_json::to_string(self)?;
98
+ std::fs::write(&path, serialized_user)?; // borrow: `path` is returned below
99
+ Ok(path)
100
+ } else {
101
+ Err(MyError::UserNotAuthenticated)
102
+ }
103
+ }
104
+ ```
105
+
106
+ > ❗ Extract when the **name adds meaning** -- not to deduplicate a couple of similar-looking lines. See [Chapter 1, §1.8](./chapter_01.md#18-when-to-extract-a-function-and-when-not-to) for when duplication is the better trade-off.
107
+
108
+ ## 8.6 `TODO` should become issues
109
+
110
+ Don't leave `// TODO:` scattered around the codebase with no owner. Instead:
111
+ 1. File Github Issue or Jira Ticket. (Prefer github issues on public repositories).
112
+ 2. Reference the issue in the code:
113
+
114
+ ```rust
115
+ // TODO(issue #42): Remove workaround after bugfix
116
+ ```
117
+
118
+ This makes `TODO`s trackable, actionable and visible to everyone.
119
+
120
+ ## 8.7 When to use doc comments
121
+
122
+ Use `///` doc comments to document:
123
+ * All **public functions, structs, traits, enums**.
124
+ * Their purpose, their usage and their behaviors.
125
+ * Anything developers need to understand how to use it correctly.
126
+ * Add context that related to `Errors` and `Panics`.
127
+ * Plenty of examples.
128
+
129
+ ### ✅ Good doc comment:
130
+
131
+ ```rust
132
+ /// Loads [`User`] profile from disk
133
+ ///
134
+ /// # Error
135
+ /// - Returns [`MyError`] if the file is missing [`MyError::FileNotFound`].
136
+ /// - Returns [`MyError`] if the content is an invalid Json, [`MyError::InvalidJson`].
137
+ fn load_user(path: &Path) -> Result<User, MyError> {...}
138
+ ```
139
+
140
+ **Doc comments can also include examples, links and even tests:**
141
+
142
+ ```rust
143
+ /// Returns the square of the integer part of any number.
144
+ /// Square is limited to `u128`.
145
+ ///
146
+ /// # Examples
147
+ ///
148
+ /// ```rust
149
+ /// assert_eq!(square(4.3), 16)
150
+ /// ```
151
+ fn square(x: impl ToInt) -> u128 { ... }
152
+ ```
153
+
154
+ ## 8.8 Documentation in Rust: How, When and Why
155
+
156
+ Rust provides **first-class documentation tooling** via rustdoc, which makes documenting your code a key part of writing idiomatic and maintainable rust. There are doc specific lints to help with documentation, like:
157
+
158
+ | Lint | Description |
159
+ |-------------- |------------------------------------------- |
160
+ | [missing_docs](https://doc.rust-lang.org/rustdoc/lints.html#missing_docs) | Warns that a public functions, struct, const, enum has missing documentation |
161
+ | [broken_intra_doc_links](https://doc.rust-lang.org/rustdoc/lints.html#broken_intra_doc_links) | Detects if an internal documentation link is broken. Specially useful when things are renamed. |
162
+ | [empty_docs](https://rust-lang.github.io/rust-clippy/master/#empty_docs) | Disallow empty docs - preventing bypass of `missing_docs` |
163
+ | [missing_panics_doc](https://rust-lang.github.io/rust-clippy/master/#missing_panics_doc) | Warns that documentation should have a `# Panics` section if function can panic |
164
+ | [missing_errors_doc](https://rust-lang.github.io/rust-clippy/master/#missing_errors_doc) | Warns that documentation should have a `# Errors` section if function returns a `Result` explaining `Err` conditions |
165
+ | [missing_safety_doc](https://rust-lang.github.io/rust-clippy/master/#missing_safety_doc) | Warns that documentation should have a `# Safety` section if public facing functions have visible unsafe blocks |
166
+
167
+
168
+ ### Difference between `///` and `//!`
169
+
170
+ | Style | Used for | Scope |Example |
171
+ |---------- |------------------------------ |------------------------------------------- |---------------------------------------------------------------- |
172
+ | `///` | Line doc comment | Public items like struct, fn, enum, consts | Documenting, giving context and usage to `fn`, `struct`, `enum`, etc |
173
+ | `//!` | Module level doc comment | Modules or entire crates | Explaining crate/module purpose with common use cases and quickstart |
174
+
175
+ ### `///` Item level documentation
176
+
177
+ Use `///` for functions, structs, traits, enums, const, etc:
178
+
179
+ ```rust
180
+ /// Adds two numbers together.
181
+ ///
182
+ /// # Examples
183
+ ///
184
+ /// ```
185
+ /// let result = my_crate::add(2, 3);
186
+ /// assert_eq!(result, 5);
187
+ /// ```
188
+ pub fn add(a: i32, b: i32) -> i32 {
189
+ a + b
190
+ }
191
+ ```
192
+ * ✅ Write clear and descriptive **What it does** and **how to use it**.
193
+ * ✅ Use `# Examples` section to better explain **how to use it**.
194
+ * ✅ Prefer writing examples that can be tested via `cargo test`, even if you have to hide their output with starting `#`:
195
+ ```rust
196
+ /// ```
197
+ /// let result = my_crate::add(2, 3);
198
+ /// # assert_eq!(result, 5);
199
+ /// ```
200
+ ```
201
+ * ✅ Use `# Panics`, `# Errors` and `# Safety` sections when relevant.
202
+ * Add relevant context to the type.
203
+
204
+ ### `//!` Module/Crate level Documentation
205
+
206
+ Use `//!` when you want to document the **purpose of a module or a crate**. It is places at the top of a `lib.rs` or `mod.rs` file, for example `engine/mod.rs`:
207
+ ```rust
208
+ //! This module implements a custom chess engine.
209
+ //!
210
+ //! It handles board state, move generation and check detection.
211
+ //!
212
+ //! # Example
213
+ //! ```
214
+ //! let board = chess::engine::Board::default();
215
+ //! assert!(board.is_valid());
216
+ //! ```
217
+ ```
218
+
219
+ ## 8.9 Checklist for Documentation coverage
220
+
221
+ 📦 Crate-Level (lib.rs)
222
+ - [ ] `//!` doc at top explains **what the crate does**, and **what problems it solves**.
223
+ - [ ] Includes crate-level `# Examples` or pointers to modules.
224
+
225
+ 📁 Modules (mod.rs or inline)
226
+ - [ ] `//!` doc explains **what this module is for**, its **exports**, and **invariants**.
227
+ - [ ] Avoid repeating doc comments on re-exported items unless clarification is needed.
228
+
229
+ 🧱 Structs, Enums, Traits
230
+ - `///` doc explains:
231
+ - [ ] The role this type plays.
232
+ - [ ] Invariants or expectations.
233
+ - [ ] Example construction or usage.
234
+ - [ ] Consider using [`#[non_exhaustive]`](https://doc.rust-lang.org/reference/attributes/type_system.html#the-non_exhaustive-attribute) if external users may match on it.
235
+
236
+ 🔧 Functions and Methods
237
+ - `///` doc covers:
238
+ - [ ] What it does.
239
+ - [ ] Parameters and their meaning.
240
+ - [ ] Return value behavior.
241
+ - [ ] Edge cases (`# Panics`, `# Errors`).
242
+ - [ ] Usage example, `# Examples`.
243
+
244
+ 📑 Traits
245
+ - [ ] Explain the **purpose** of the trait (marker? dynamic dispatch?).
246
+ - [ ] Doc for each method — include **when/why** to implement it.
247
+ - [ ] Document clearly default implemented methods and when to override.
248
+
249
+ 📦 Public Constants
250
+ - [ ] Document what they configure and when you'd want to use them.
251
+
252
+ ### 📌 Best Practices
253
+ * ✅ Use examples generously — they double as test cases.
254
+ * ✅ Prefer clarity over formality — it's for humans, not machines.
255
+ * ✅ Prefer doc comments to explain usage, and leave implementation details to code comments if needed.
256
+ * ✅ Use `cargo doc --open` to check your output often.
257
+ * ✅ Add `#![deny(missing_docs)]` and other relevant doc lints in top-level modules if you want to enforce full doc coverage.