@invarn/cibuild 2.9.4 → 2.9.7

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 (547) hide show
  1. package/dist/chunk-35SI42CD.mjs +1 -0
  2. package/dist/chunk-IC45KVLJ.mjs +1 -0
  3. package/dist/chunk-XDY4V23V.mjs +1 -0
  4. package/dist/cli.cjs +14 -14
  5. package/dist/commands.mjs +1 -0
  6. package/dist/lib.mjs +3934 -0
  7. package/package.json +6 -10
  8. package/dist/src/cli.d.ts +0 -3
  9. package/dist/src/cli.d.ts.map +0 -1
  10. package/dist/src/cli.js +0 -399
  11. package/dist/src/commands/a-credential-target-follows-the-flavor-source-set.test.d.ts +0 -38
  12. package/dist/src/commands/a-credential-target-follows-the-flavor-source-set.test.d.ts.map +0 -1
  13. package/dist/src/commands/a-credential-target-follows-the-flavor-source-set.test.js +0 -222
  14. package/dist/src/commands/a-credential-two-workflows-cannot-share-is-declared-per-workflow.test.d.ts +0 -41
  15. package/dist/src/commands/a-credential-two-workflows-cannot-share-is-declared-per-workflow.test.d.ts.map +0 -1
  16. package/dist/src/commands/a-credential-two-workflows-cannot-share-is-declared-per-workflow.test.js +0 -324
  17. package/dist/src/commands/a-properties-stand-in-declares-the-keys-the-build-reads.test.d.ts +0 -2
  18. package/dist/src/commands/a-properties-stand-in-declares-the-keys-the-build-reads.test.d.ts.map +0 -1
  19. package/dist/src/commands/a-properties-stand-in-declares-the-keys-the-build-reads.test.js +0 -382
  20. package/dist/src/commands/an-already-stored-value-does-not-answer-the-target-question.test.d.ts +0 -29
  21. package/dist/src/commands/an-already-stored-value-does-not-answer-the-target-question.test.d.ts.map +0 -1
  22. package/dist/src/commands/an-already-stored-value-does-not-answer-the-target-question.test.js +0 -160
  23. package/dist/src/commands/android-gms-guard.test.d.ts +0 -9
  24. package/dist/src/commands/android-gms-guard.test.d.ts.map +0 -1
  25. package/dist/src/commands/android-gms-guard.test.js +0 -78
  26. package/dist/src/commands/android-java-version.test.d.ts +0 -12
  27. package/dist/src/commands/android-java-version.test.d.ts.map +0 -1
  28. package/dist/src/commands/android-java-version.test.js +0 -209
  29. package/dist/src/commands/android-scanner-java.test.d.ts +0 -2
  30. package/dist/src/commands/android-scanner-java.test.d.ts.map +0 -1
  31. package/dist/src/commands/android-scanner-java.test.js +0 -130
  32. package/dist/src/commands/android-scanner.d.ts +0 -250
  33. package/dist/src/commands/android-scanner.d.ts.map +0 -1
  34. package/dist/src/commands/android-scanner.js +0 -1639
  35. package/dist/src/commands/build.d.ts +0 -215
  36. package/dist/src/commands/build.d.ts.map +0 -1
  37. package/dist/src/commands/build.js +0 -1433
  38. package/dist/src/commands/build.test.d.ts +0 -13
  39. package/dist/src/commands/build.test.d.ts.map +0 -1
  40. package/dist/src/commands/build.test.js +0 -121
  41. package/dist/src/commands/detect-platform.d.ts +0 -13
  42. package/dist/src/commands/detect-platform.d.ts.map +0 -1
  43. package/dist/src/commands/detect-platform.js +0 -51
  44. package/dist/src/commands/detect-project.d.ts +0 -7
  45. package/dist/src/commands/detect-project.d.ts.map +0 -1
  46. package/dist/src/commands/detect-project.js +0 -12
  47. package/dist/src/commands/each-flavor-is-asked-for-its-own-properties-file.test.d.ts +0 -26
  48. package/dist/src/commands/each-flavor-is-asked-for-its-own-properties-file.test.d.ts.map +0 -1
  49. package/dist/src/commands/each-flavor-is-asked-for-its-own-properties-file.test.js +0 -196
  50. package/dist/src/commands/edit.d.ts +0 -12
  51. package/dist/src/commands/edit.d.ts.map +0 -1
  52. package/dist/src/commands/edit.js +0 -652
  53. package/dist/src/commands/edit.test.d.ts +0 -6
  54. package/dist/src/commands/edit.test.d.ts.map +0 -1
  55. package/dist/src/commands/edit.test.js +0 -45
  56. package/dist/src/commands/fidelity-trim.d.ts +0 -13
  57. package/dist/src/commands/fidelity-trim.d.ts.map +0 -1
  58. package/dist/src/commands/fidelity-trim.js +0 -21
  59. package/dist/src/commands/fidelity-trim.test.d.ts +0 -8
  60. package/dist/src/commands/fidelity-trim.test.d.ts.map +0 -1
  61. package/dist/src/commands/fidelity-trim.test.js +0 -79
  62. package/dist/src/commands/file-secret-collector.d.ts +0 -50
  63. package/dist/src/commands/file-secret-collector.d.ts.map +0 -1
  64. package/dist/src/commands/file-secret-collector.js +0 -217
  65. package/dist/src/commands/flavors-a-convention-plugin-creates-are-still-found.test.d.ts +0 -38
  66. package/dist/src/commands/flavors-a-convention-plugin-creates-are-still-found.test.d.ts.map +0 -1
  67. package/dist/src/commands/flavors-a-convention-plugin-creates-are-still-found.test.js +0 -300
  68. package/dist/src/commands/github-workflow.d.ts +0 -5
  69. package/dist/src/commands/github-workflow.d.ts.map +0 -1
  70. package/dist/src/commands/github-workflow.js +0 -45
  71. package/dist/src/commands/index.d.ts +0 -33
  72. package/dist/src/commands/index.d.ts.map +0 -1
  73. package/dist/src/commands/index.js +0 -33
  74. package/dist/src/commands/init.d.ts +0 -20
  75. package/dist/src/commands/init.d.ts.map +0 -1
  76. package/dist/src/commands/init.js +0 -264
  77. package/dist/src/commands/ios-scanner.d.ts +0 -104
  78. package/dist/src/commands/ios-scanner.d.ts.map +0 -1
  79. package/dist/src/commands/ios-scanner.js +0 -492
  80. package/dist/src/commands/ios-scheme-ranking.test.d.ts +0 -2
  81. package/dist/src/commands/ios-scheme-ranking.test.d.ts.map +0 -1
  82. package/dist/src/commands/ios-scheme-ranking.test.js +0 -264
  83. package/dist/src/commands/local-properties-reaches-every-workflow.test.d.ts +0 -30
  84. package/dist/src/commands/local-properties-reaches-every-workflow.test.d.ts.map +0 -1
  85. package/dist/src/commands/local-properties-reaches-every-workflow.test.js +0 -146
  86. package/dist/src/commands/reset.d.ts +0 -7
  87. package/dist/src/commands/reset.d.ts.map +0 -1
  88. package/dist/src/commands/reset.js +0 -81
  89. package/dist/src/commands/run.d.ts +0 -22
  90. package/dist/src/commands/run.d.ts.map +0 -1
  91. package/dist/src/commands/run.js +0 -141
  92. package/dist/src/commands/secrets-sync-workflow.d.ts +0 -15
  93. package/dist/src/commands/secrets-sync-workflow.d.ts.map +0 -1
  94. package/dist/src/commands/secrets-sync-workflow.js +0 -255
  95. package/dist/src/commands/secrets-upload.d.ts +0 -21
  96. package/dist/src/commands/secrets-upload.d.ts.map +0 -1
  97. package/dist/src/commands/secrets-upload.js +0 -177
  98. package/dist/src/commands/secrets-upload.test.d.ts +0 -5
  99. package/dist/src/commands/secrets-upload.test.d.ts.map +0 -1
  100. package/dist/src/commands/secrets-upload.test.js +0 -60
  101. package/dist/src/commands/validate.d.ts +0 -10
  102. package/dist/src/commands/validate.d.ts.map +0 -1
  103. package/dist/src/commands/validate.js +0 -46
  104. package/dist/src/config.d.ts +0 -3
  105. package/dist/src/config.d.ts.map +0 -1
  106. package/dist/src/config.js +0 -47
  107. package/dist/src/envman/cli.d.ts +0 -21
  108. package/dist/src/envman/cli.d.ts.map +0 -1
  109. package/dist/src/envman/cli.js +0 -240
  110. package/dist/src/envman/envman.d.ts +0 -83
  111. package/dist/src/envman/envman.d.ts.map +0 -1
  112. package/dist/src/envman/envman.js +0 -361
  113. package/dist/src/envman/envman.test.d.ts +0 -5
  114. package/dist/src/envman/envman.test.d.ts.map +0 -1
  115. package/dist/src/envman/envman.test.js +0 -236
  116. package/dist/src/envman/envstore-round-trip.test.d.ts +0 -27
  117. package/dist/src/envman/envstore-round-trip.test.d.ts.map +0 -1
  118. package/dist/src/envman/envstore-round-trip.test.js +0 -130
  119. package/dist/src/envman/index.d.ts +0 -23
  120. package/dist/src/envman/index.d.ts.map +0 -1
  121. package/dist/src/envman/index.js +0 -23
  122. package/dist/src/envman/shim.d.ts +0 -16
  123. package/dist/src/envman/shim.d.ts.map +0 -1
  124. package/dist/src/envman/shim.js +0 -66
  125. package/dist/src/envman/types.d.ts +0 -55
  126. package/dist/src/envman/types.d.ts.map +0 -1
  127. package/dist/src/envman/types.js +0 -12
  128. package/dist/src/lib.d.ts +0 -33
  129. package/dist/src/lib.d.ts.map +0 -1
  130. package/dist/src/lib.js +0 -37
  131. package/dist/src/pipeline.d.ts +0 -3
  132. package/dist/src/pipeline.d.ts.map +0 -1
  133. package/dist/src/pipeline.js +0 -57
  134. package/dist/src/runner-node-step.test.d.ts +0 -12
  135. package/dist/src/runner-node-step.test.d.ts.map +0 -1
  136. package/dist/src/runner-node-step.test.js +0 -61
  137. package/dist/src/runner.d.ts +0 -31
  138. package/dist/src/runner.d.ts.map +0 -1
  139. package/dist/src/runner.js +0 -240
  140. package/dist/src/shared/detect-project.d.ts +0 -57
  141. package/dist/src/shared/detect-project.d.ts.map +0 -1
  142. package/dist/src/shared/detect-project.js +0 -219
  143. package/dist/src/shared/detect-project.test.d.ts +0 -2
  144. package/dist/src/shared/detect-project.test.d.ts.map +0 -1
  145. package/dist/src/shared/detect-project.test.js +0 -161
  146. package/dist/src/shared/git.d.ts +0 -25
  147. package/dist/src/shared/git.d.ts.map +0 -1
  148. package/dist/src/shared/git.js +0 -53
  149. package/dist/src/shared/git.test.d.ts +0 -9
  150. package/dist/src/shared/git.test.d.ts.map +0 -1
  151. package/dist/src/shared/git.test.js +0 -66
  152. package/dist/src/shared/gitignore.d.ts +0 -6
  153. package/dist/src/shared/gitignore.d.ts.map +0 -1
  154. package/dist/src/shared/gitignore.js +0 -26
  155. package/dist/src/shared/gradle-settings.d.ts +0 -49
  156. package/dist/src/shared/gradle-settings.d.ts.map +0 -1
  157. package/dist/src/shared/gradle-settings.js +0 -138
  158. package/dist/src/shared/gradle-settings.test.d.ts +0 -2
  159. package/dist/src/shared/gradle-settings.test.d.ts.map +0 -1
  160. package/dist/src/shared/gradle-settings.test.js +0 -65
  161. package/dist/src/shared/prompts.d.ts +0 -30
  162. package/dist/src/shared/prompts.d.ts.map +0 -1
  163. package/dist/src/shared/prompts.js +0 -121
  164. package/dist/src/shared/xcode-container.test.d.ts +0 -2
  165. package/dist/src/shared/xcode-container.test.d.ts.map +0 -1
  166. package/dist/src/shared/xcode-container.test.js +0 -123
  167. package/dist/src/step-marker.d.ts +0 -12
  168. package/dist/src/step-marker.d.ts.map +0 -1
  169. package/dist/src/step-marker.js +0 -29
  170. package/dist/src/step-marker.test.d.ts +0 -11
  171. package/dist/src/step-marker.test.d.ts.map +0 -1
  172. package/dist/src/step-marker.test.js +0 -45
  173. package/dist/src/types.d.ts +0 -58
  174. package/dist/src/types.d.ts.map +0 -1
  175. package/dist/src/types.js +0 -2
  176. package/dist/src/yaml/a-cache-path-must-not-swallow-a-credential.test.d.ts +0 -28
  177. package/dist/src/yaml/a-cache-path-must-not-swallow-a-credential.test.d.ts.map +0 -1
  178. package/dist/src/yaml/a-cache-path-must-not-swallow-a-credential.test.js +0 -223
  179. package/dist/src/yaml/a-declared-secret-reaches-the-file-step.test.d.ts +0 -20
  180. package/dist/src/yaml/a-declared-secret-reaches-the-file-step.test.d.ts.map +0 -1
  181. package/dist/src/yaml/a-declared-secret-reaches-the-file-step.test.js +0 -201
  182. package/dist/src/yaml/a-declared-slot-may-name-the-workflow-it-belongs-to.test.d.ts +0 -37
  183. package/dist/src/yaml/a-declared-slot-may-name-the-workflow-it-belongs-to.test.d.ts.map +0 -1
  184. package/dist/src/yaml/a-declared-slot-may-name-the-workflow-it-belongs-to.test.js +0 -255
  185. package/dist/src/yaml/a-missing-credential-is-loud.test.d.ts +0 -32
  186. package/dist/src/yaml/a-missing-credential-is-loud.test.d.ts.map +0 -1
  187. package/dist/src/yaml/a-missing-credential-is-loud.test.js +0 -301
  188. package/dist/src/yaml/a-runtime-requirement-names-a-real-provider.test.d.ts +0 -18
  189. package/dist/src/yaml/a-runtime-requirement-names-a-real-provider.test.d.ts.map +0 -1
  190. package/dist/src/yaml/a-runtime-requirement-names-a-real-provider.test.js +0 -66
  191. package/dist/src/yaml/a-scoped-slot-must-name-a-workflow-the-pipeline-has.test.d.ts +0 -34
  192. package/dist/src/yaml/a-scoped-slot-must-name-a-workflow-the-pipeline-has.test.d.ts.map +0 -1
  193. package/dist/src/yaml/a-scoped-slot-must-name-a-workflow-the-pipeline-has.test.js +0 -218
  194. package/dist/src/yaml/a-value-this-instance-stored-is-a-value-it-has.test.d.ts +0 -27
  195. package/dist/src/yaml/a-value-this-instance-stored-is-a-value-it-has.test.d.ts.map +0 -1
  196. package/dist/src/yaml/a-value-this-instance-stored-is-a-value-it-has.test.js +0 -126
  197. package/dist/src/yaml/bitrise-compat.d.ts +0 -65
  198. package/dist/src/yaml/bitrise-compat.d.ts.map +0 -1
  199. package/dist/src/yaml/bitrise-compat.js +0 -206
  200. package/dist/src/yaml/bitrise-compat.test.d.ts +0 -5
  201. package/dist/src/yaml/bitrise-compat.test.d.ts.map +0 -1
  202. package/dist/src/yaml/bitrise-compat.test.js +0 -347
  203. package/dist/src/yaml/cache-key-missing-file.test.d.ts +0 -12
  204. package/dist/src/yaml/cache-key-missing-file.test.d.ts.map +0 -1
  205. package/dist/src/yaml/cache-key-missing-file.test.js +0 -116
  206. package/dist/src/yaml/converter.d.ts +0 -103
  207. package/dist/src/yaml/converter.d.ts.map +0 -1
  208. package/dist/src/yaml/converter.js +0 -420
  209. package/dist/src/yaml/converter.test.d.ts +0 -5
  210. package/dist/src/yaml/converter.test.d.ts.map +0 -1
  211. package/dist/src/yaml/converter.test.js +0 -548
  212. package/dist/src/yaml/e2e.test.d.ts +0 -6
  213. package/dist/src/yaml/e2e.test.d.ts.map +0 -1
  214. package/dist/src/yaml/e2e.test.js +0 -446
  215. package/dist/src/yaml/env-resolver.d.ts +0 -218
  216. package/dist/src/yaml/env-resolver.d.ts.map +0 -1
  217. package/dist/src/yaml/env-resolver.js +0 -591
  218. package/dist/src/yaml/env-resolver.test.d.ts +0 -5
  219. package/dist/src/yaml/env-resolver.test.d.ts.map +0 -1
  220. package/dist/src/yaml/env-resolver.test.js +0 -502
  221. package/dist/src/yaml/every-build-log-witnesses-the-commit-on-disk.test.d.ts +0 -16
  222. package/dist/src/yaml/every-build-log-witnesses-the-commit-on-disk.test.d.ts.map +0 -1
  223. package/dist/src/yaml/every-build-log-witnesses-the-commit-on-disk.test.js +0 -126
  224. package/dist/src/yaml/fidelity-input-digest.d.ts +0 -37
  225. package/dist/src/yaml/fidelity-input-digest.d.ts.map +0 -1
  226. package/dist/src/yaml/fidelity-input-digest.js +0 -208
  227. package/dist/src/yaml/fidelity-input-digest.test.d.ts +0 -2
  228. package/dist/src/yaml/fidelity-input-digest.test.d.ts.map +0 -1
  229. package/dist/src/yaml/fidelity-input-digest.test.js +0 -167
  230. package/dist/src/yaml/fidelity-manifest.d.ts +0 -126
  231. package/dist/src/yaml/fidelity-manifest.d.ts.map +0 -1
  232. package/dist/src/yaml/fidelity-manifest.js +0 -134
  233. package/dist/src/yaml/fidelity-manifest.test.d.ts +0 -12
  234. package/dist/src/yaml/fidelity-manifest.test.d.ts.map +0 -1
  235. package/dist/src/yaml/fidelity-manifest.test.js +0 -251
  236. package/dist/src/yaml/interactive-prompts.d.ts +0 -71
  237. package/dist/src/yaml/interactive-prompts.d.ts.map +0 -1
  238. package/dist/src/yaml/interactive-prompts.js +0 -260
  239. package/dist/src/yaml/meta-helpers.d.ts +0 -28
  240. package/dist/src/yaml/meta-helpers.d.ts.map +0 -1
  241. package/dist/src/yaml/meta-helpers.js +0 -46
  242. package/dist/src/yaml/missing-env-handler.d.ts +0 -45
  243. package/dist/src/yaml/missing-env-handler.d.ts.map +0 -1
  244. package/dist/src/yaml/missing-env-handler.js +0 -64
  245. package/dist/src/yaml/parser.d.ts +0 -33
  246. package/dist/src/yaml/parser.d.ts.map +0 -1
  247. package/dist/src/yaml/parser.js +0 -148
  248. package/dist/src/yaml/parser.test.d.ts +0 -5
  249. package/dist/src/yaml/parser.test.d.ts.map +0 -1
  250. package/dist/src/yaml/parser.test.js +0 -83
  251. package/dist/src/yaml/pipeline-with-secrets.d.ts +0 -25
  252. package/dist/src/yaml/pipeline-with-secrets.d.ts.map +0 -1
  253. package/dist/src/yaml/pipeline-with-secrets.js +0 -76
  254. package/dist/src/yaml/platform-detector.d.ts +0 -83
  255. package/dist/src/yaml/platform-detector.d.ts.map +0 -1
  256. package/dist/src/yaml/platform-detector.js +0 -189
  257. package/dist/src/yaml/platform-detector.test.d.ts +0 -5
  258. package/dist/src/yaml/platform-detector.test.d.ts.map +0 -1
  259. package/dist/src/yaml/platform-detector.test.js +0 -525
  260. package/dist/src/yaml/preflight-validation.d.ts +0 -29
  261. package/dist/src/yaml/preflight-validation.d.ts.map +0 -1
  262. package/dist/src/yaml/preflight-validation.js +0 -21
  263. package/dist/src/yaml/secrets-manager.d.ts +0 -87
  264. package/dist/src/yaml/secrets-manager.d.ts.map +0 -1
  265. package/dist/src/yaml/secrets-manager.js +0 -230
  266. package/dist/src/yaml/shell-assignments.d.ts +0 -40
  267. package/dist/src/yaml/shell-assignments.d.ts.map +0 -1
  268. package/dist/src/yaml/shell-assignments.js +0 -77
  269. package/dist/src/yaml/step-validator-check-failure.test.d.ts +0 -24
  270. package/dist/src/yaml/step-validator-check-failure.test.d.ts.map +0 -1
  271. package/dist/src/yaml/step-validator-check-failure.test.js +0 -130
  272. package/dist/src/yaml/step-validator-self-assigned.test.d.ts +0 -23
  273. package/dist/src/yaml/step-validator-self-assigned.test.d.ts.map +0 -1
  274. package/dist/src/yaml/step-validator-self-assigned.test.js +0 -191
  275. package/dist/src/yaml/step-validator.d.ts +0 -67
  276. package/dist/src/yaml/step-validator.d.ts.map +0 -1
  277. package/dist/src/yaml/step-validator.js +0 -466
  278. package/dist/src/yaml/step-validator.test.d.ts +0 -18
  279. package/dist/src/yaml/step-validator.test.d.ts.map +0 -1
  280. package/dist/src/yaml/step-validator.test.js +0 -140
  281. package/dist/src/yaml/steps/android-sign.d.ts +0 -35
  282. package/dist/src/yaml/steps/android-sign.d.ts.map +0 -1
  283. package/dist/src/yaml/steps/android-sign.js +0 -147
  284. package/dist/src/yaml/steps/android-variant-resolution.test.d.ts +0 -2
  285. package/dist/src/yaml/steps/android-variant-resolution.test.d.ts.map +0 -1
  286. package/dist/src/yaml/steps/android-variant-resolution.test.js +0 -260
  287. package/dist/src/yaml/steps/android-version.d.ts +0 -26
  288. package/dist/src/yaml/steps/android-version.d.ts.map +0 -1
  289. package/dist/src/yaml/steps/android-version.js +0 -128
  290. package/dist/src/yaml/steps/android-version.test.d.ts +0 -5
  291. package/dist/src/yaml/steps/android-version.test.d.ts.map +0 -1
  292. package/dist/src/yaml/steps/android-version.test.js +0 -196
  293. package/dist/src/yaml/steps/android.d.ts +0 -156
  294. package/dist/src/yaml/steps/android.d.ts.map +0 -1
  295. package/dist/src/yaml/steps/android.js +0 -1084
  296. package/dist/src/yaml/steps/app-store-deploy.d.ts +0 -48
  297. package/dist/src/yaml/steps/app-store-deploy.d.ts.map +0 -1
  298. package/dist/src/yaml/steps/app-store-deploy.js +0 -167
  299. package/dist/src/yaml/steps/base.d.ts +0 -263
  300. package/dist/src/yaml/steps/base.d.ts.map +0 -1
  301. package/dist/src/yaml/steps/base.js +0 -380
  302. package/dist/src/yaml/steps/bitrise-android-tools.d.ts +0 -26
  303. package/dist/src/yaml/steps/bitrise-android-tools.d.ts.map +0 -1
  304. package/dist/src/yaml/steps/bitrise-android-tools.js +0 -200
  305. package/dist/src/yaml/steps/bitrise-android-tools.test.d.ts +0 -5
  306. package/dist/src/yaml/steps/bitrise-android-tools.test.d.ts.map +0 -1
  307. package/dist/src/yaml/steps/bitrise-android-tools.test.js +0 -280
  308. package/dist/src/yaml/steps/bitrise-apk-info.d.ts +0 -22
  309. package/dist/src/yaml/steps/bitrise-apk-info.d.ts.map +0 -1
  310. package/dist/src/yaml/steps/bitrise-apk-info.js +0 -144
  311. package/dist/src/yaml/steps/bitrise-apk-info.test.d.ts +0 -5
  312. package/dist/src/yaml/steps/bitrise-apk-info.test.d.ts.map +0 -1
  313. package/dist/src/yaml/steps/bitrise-apk-info.test.js +0 -331
  314. package/dist/src/yaml/steps/bitrise-slack.d.ts +0 -49
  315. package/dist/src/yaml/steps/bitrise-slack.d.ts.map +0 -1
  316. package/dist/src/yaml/steps/bitrise-slack.js +0 -280
  317. package/dist/src/yaml/steps/bitrise-slack.test.d.ts +0 -5
  318. package/dist/src/yaml/steps/bitrise-slack.test.d.ts.map +0 -1
  319. package/dist/src/yaml/steps/bitrise-slack.test.js +0 -484
  320. package/dist/src/yaml/steps/bitrise-ssh.d.ts +0 -27
  321. package/dist/src/yaml/steps/bitrise-ssh.d.ts.map +0 -1
  322. package/dist/src/yaml/steps/bitrise-ssh.js +0 -134
  323. package/dist/src/yaml/steps/bitrise-ssh.test.d.ts +0 -5
  324. package/dist/src/yaml/steps/bitrise-ssh.test.d.ts.map +0 -1
  325. package/dist/src/yaml/steps/bitrise-ssh.test.js +0 -205
  326. package/dist/src/yaml/steps/cache-pull-daemon.test.d.ts +0 -27
  327. package/dist/src/yaml/steps/cache-pull-daemon.test.d.ts.map +0 -1
  328. package/dist/src/yaml/steps/cache-pull-daemon.test.js +0 -212
  329. package/dist/src/yaml/steps/cache-pull-restore-roots.test.d.ts +0 -42
  330. package/dist/src/yaml/steps/cache-pull-restore-roots.test.d.ts.map +0 -1
  331. package/dist/src/yaml/steps/cache-pull-restore-roots.test.js +0 -209
  332. package/dist/src/yaml/steps/cache-push-daemon.test.d.ts +0 -27
  333. package/dist/src/yaml/steps/cache-push-daemon.test.d.ts.map +0 -1
  334. package/dist/src/yaml/steps/cache-push-daemon.test.js +0 -171
  335. package/dist/src/yaml/steps/cache.d.ts +0 -59
  336. package/dist/src/yaml/steps/cache.d.ts.map +0 -1
  337. package/dist/src/yaml/steps/cache.js +0 -1027
  338. package/dist/src/yaml/steps/cocoapods-deployment-floor.d.ts +0 -42
  339. package/dist/src/yaml/steps/cocoapods-deployment-floor.d.ts.map +0 -1
  340. package/dist/src/yaml/steps/cocoapods-deployment-floor.js +0 -140
  341. package/dist/src/yaml/steps/cocoapods-deployment-floor.test.d.ts +0 -11
  342. package/dist/src/yaml/steps/cocoapods-deployment-floor.test.d.ts.map +0 -1
  343. package/dist/src/yaml/steps/cocoapods-deployment-floor.test.js +0 -176
  344. package/dist/src/yaml/steps/cocoapods-install-emits-valid-bash.test.d.ts +0 -22
  345. package/dist/src/yaml/steps/cocoapods-install-emits-valid-bash.test.d.ts.map +0 -1
  346. package/dist/src/yaml/steps/cocoapods-install-emits-valid-bash.test.js +0 -97
  347. package/dist/src/yaml/steps/cocoapods-locked-bundler.test.d.ts +0 -17
  348. package/dist/src/yaml/steps/cocoapods-locked-bundler.test.d.ts.map +0 -1
  349. package/dist/src/yaml/steps/cocoapods-locked-bundler.test.js +0 -282
  350. package/dist/src/yaml/steps/cocoapods-skip-if-absent.test.d.ts +0 -17
  351. package/dist/src/yaml/steps/cocoapods-skip-if-absent.test.d.ts.map +0 -1
  352. package/dist/src/yaml/steps/cocoapods-skip-if-absent.test.js +0 -132
  353. package/dist/src/yaml/steps/envstore-loader.test.d.ts +0 -15
  354. package/dist/src/yaml/steps/envstore-loader.test.d.ts.map +0 -1
  355. package/dist/src/yaml/steps/envstore-loader.test.js +0 -143
  356. package/dist/src/yaml/steps/fastlane.d.ts +0 -27
  357. package/dist/src/yaml/steps/fastlane.d.ts.map +0 -1
  358. package/dist/src/yaml/steps/fastlane.js +0 -79
  359. package/dist/src/yaml/steps/fidelity-aspect-guard.d.ts +0 -53
  360. package/dist/src/yaml/steps/fidelity-aspect-guard.d.ts.map +0 -1
  361. package/dist/src/yaml/steps/fidelity-aspect-guard.js +0 -72
  362. package/dist/src/yaml/steps/fidelity-aspect-guard.test.d.ts +0 -11
  363. package/dist/src/yaml/steps/fidelity-aspect-guard.test.d.ts.map +0 -1
  364. package/dist/src/yaml/steps/fidelity-aspect-guard.test.js +0 -50
  365. package/dist/src/yaml/steps/fidelity-reference-provenance.d.ts +0 -87
  366. package/dist/src/yaml/steps/fidelity-reference-provenance.d.ts.map +0 -1
  367. package/dist/src/yaml/steps/fidelity-reference-provenance.js +0 -111
  368. package/dist/src/yaml/steps/fidelity-reference-provenance.test.d.ts +0 -22
  369. package/dist/src/yaml/steps/fidelity-reference-provenance.test.d.ts.map +0 -1
  370. package/dist/src/yaml/steps/fidelity-reference-provenance.test.js +0 -118
  371. package/dist/src/yaml/steps/file.d.ts +0 -52
  372. package/dist/src/yaml/steps/file.d.ts.map +0 -1
  373. package/dist/src/yaml/steps/file.js +0 -108
  374. package/dist/src/yaml/steps/flutter.d.ts +0 -63
  375. package/dist/src/yaml/steps/flutter.d.ts.map +0 -1
  376. package/dist/src/yaml/steps/flutter.js +0 -215
  377. package/dist/src/yaml/steps/git-clone-names-the-inputs-it-ignores.test.d.ts +0 -16
  378. package/dist/src/yaml/steps/git-clone-names-the-inputs-it-ignores.test.d.ts.map +0 -1
  379. package/dist/src/yaml/steps/git-clone-names-the-inputs-it-ignores.test.js +0 -127
  380. package/dist/src/yaml/steps/git-clone.d.ts +0 -32
  381. package/dist/src/yaml/steps/git-clone.d.ts.map +0 -1
  382. package/dist/src/yaml/steps/git-clone.js +0 -171
  383. package/dist/src/yaml/steps/git-fetch-retry-exec.test.d.ts +0 -10
  384. package/dist/src/yaml/steps/git-fetch-retry-exec.test.d.ts.map +0 -1
  385. package/dist/src/yaml/steps/git-fetch-retry-exec.test.js +0 -162
  386. package/dist/src/yaml/steps/git-fetch-retry.d.ts +0 -62
  387. package/dist/src/yaml/steps/git-fetch-retry.d.ts.map +0 -1
  388. package/dist/src/yaml/steps/git-fetch-retry.js +0 -155
  389. package/dist/src/yaml/steps/git-fetch-retry.test.d.ts +0 -5
  390. package/dist/src/yaml/steps/git-fetch-retry.test.d.ts.map +0 -1
  391. package/dist/src/yaml/steps/git-fetch-retry.test.js +0 -86
  392. package/dist/src/yaml/steps/google-play-deploy.d.ts +0 -37
  393. package/dist/src/yaml/steps/google-play-deploy.d.ts.map +0 -1
  394. package/dist/src/yaml/steps/google-play-deploy.js +0 -193
  395. package/dist/src/yaml/steps/google-play-deploy.test.d.ts +0 -5
  396. package/dist/src/yaml/steps/google-play-deploy.test.d.ts.map +0 -1
  397. package/dist/src/yaml/steps/google-play-deploy.test.js +0 -310
  398. package/dist/src/yaml/steps/gradle-memory.d.ts +0 -61
  399. package/dist/src/yaml/steps/gradle-memory.d.ts.map +0 -1
  400. package/dist/src/yaml/steps/gradle-memory.js +0 -311
  401. package/dist/src/yaml/steps/gradle-memory.test.d.ts +0 -2
  402. package/dist/src/yaml/steps/gradle-memory.test.d.ts.map +0 -1
  403. package/dist/src/yaml/steps/gradle-memory.test.js +0 -297
  404. package/dist/src/yaml/steps/gradle-sdk-cmake.d.ts +0 -28
  405. package/dist/src/yaml/steps/gradle-sdk-cmake.d.ts.map +0 -1
  406. package/dist/src/yaml/steps/gradle-sdk-cmake.js +0 -107
  407. package/dist/src/yaml/steps/gradle-sdk-cmake.test.d.ts +0 -2
  408. package/dist/src/yaml/steps/gradle-sdk-cmake.test.d.ts.map +0 -1
  409. package/dist/src/yaml/steps/gradle-sdk-cmake.test.js +0 -183
  410. package/dist/src/yaml/steps/index.d.ts +0 -10
  411. package/dist/src/yaml/steps/index.d.ts.map +0 -1
  412. package/dist/src/yaml/steps/index.js +0 -1461
  413. package/dist/src/yaml/steps/ios-deps.d.ts +0 -78
  414. package/dist/src/yaml/steps/ios-deps.d.ts.map +0 -1
  415. package/dist/src/yaml/steps/ios-deps.js +0 -279
  416. package/dist/src/yaml/steps/ios-deps.test.d.ts +0 -5
  417. package/dist/src/yaml/steps/ios-deps.test.d.ts.map +0 -1
  418. package/dist/src/yaml/steps/ios-deps.test.js +0 -90
  419. package/dist/src/yaml/steps/ios-signing.d.ts +0 -31
  420. package/dist/src/yaml/steps/ios-signing.d.ts.map +0 -1
  421. package/dist/src/yaml/steps/ios-signing.js +0 -144
  422. package/dist/src/yaml/steps/ios-version.d.ts +0 -47
  423. package/dist/src/yaml/steps/ios-version.d.ts.map +0 -1
  424. package/dist/src/yaml/steps/ios-version.js +0 -151
  425. package/dist/src/yaml/steps/java-home-version-spec.test.d.ts +0 -10
  426. package/dist/src/yaml/steps/java-home-version-spec.test.d.ts.map +0 -1
  427. package/dist/src/yaml/steps/java-home-version-spec.test.js +0 -58
  428. package/dist/src/yaml/steps/linting.d.ts +0 -47
  429. package/dist/src/yaml/steps/linting.d.ts.map +0 -1
  430. package/dist/src/yaml/steps/linting.js +0 -148
  431. package/dist/src/yaml/steps/phase2.test.d.ts +0 -6
  432. package/dist/src/yaml/steps/phase2.test.d.ts.map +0 -1
  433. package/dist/src/yaml/steps/phase2.test.js +0 -197
  434. package/dist/src/yaml/steps/phase3.test.d.ts +0 -5
  435. package/dist/src/yaml/steps/phase3.test.d.ts.map +0 -1
  436. package/dist/src/yaml/steps/phase3.test.js +0 -144
  437. package/dist/src/yaml/steps/phase4.test.d.ts +0 -5
  438. package/dist/src/yaml/steps/phase4.test.d.ts.map +0 -1
  439. package/dist/src/yaml/steps/phase4.test.js +0 -166
  440. package/dist/src/yaml/steps/phase5.test.d.ts +0 -6
  441. package/dist/src/yaml/steps/phase5.test.d.ts.map +0 -1
  442. package/dist/src/yaml/steps/phase5.test.js +0 -263
  443. package/dist/src/yaml/steps/registry.d.ts +0 -88
  444. package/dist/src/yaml/steps/registry.d.ts.map +0 -1
  445. package/dist/src/yaml/steps/registry.js +0 -125
  446. package/dist/src/yaml/steps/registry.test.d.ts +0 -5
  447. package/dist/src/yaml/steps/registry.test.d.ts.map +0 -1
  448. package/dist/src/yaml/steps/registry.test.js +0 -235
  449. package/dist/src/yaml/steps/release.d.ts +0 -50
  450. package/dist/src/yaml/steps/release.d.ts.map +0 -1
  451. package/dist/src/yaml/steps/release.js +0 -154
  452. package/dist/src/yaml/steps/render-post-processor.d.ts +0 -100
  453. package/dist/src/yaml/steps/render-post-processor.d.ts.map +0 -1
  454. package/dist/src/yaml/steps/render-post-processor.js +0 -270
  455. package/dist/src/yaml/steps/render-post-processor.test.d.ts +0 -13
  456. package/dist/src/yaml/steps/render-post-processor.test.d.ts.map +0 -1
  457. package/dist/src/yaml/steps/render-post-processor.test.js +0 -220
  458. package/dist/src/yaml/steps/script.d.ts +0 -23
  459. package/dist/src/yaml/steps/script.d.ts.map +0 -1
  460. package/dist/src/yaml/steps/script.js +0 -63
  461. package/dist/src/yaml/steps/spec-validation.test.d.ts +0 -6
  462. package/dist/src/yaml/steps/spec-validation.test.d.ts.map +0 -1
  463. package/dist/src/yaml/steps/spec-validation.test.js +0 -130
  464. package/dist/src/yaml/steps/steps.test.d.ts +0 -6
  465. package/dist/src/yaml/steps/steps.test.d.ts.map +0 -1
  466. package/dist/src/yaml/steps/steps.test.js +0 -881
  467. package/dist/src/yaml/steps/structural-facts.d.ts +0 -992
  468. package/dist/src/yaml/steps/structural-facts.d.ts.map +0 -1
  469. package/dist/src/yaml/steps/structural-facts.js +0 -3276
  470. package/dist/src/yaml/steps/structural-facts.test.d.ts +0 -12
  471. package/dist/src/yaml/steps/structural-facts.test.d.ts.map +0 -1
  472. package/dist/src/yaml/steps/structural-facts.test.js +0 -3039
  473. package/dist/src/yaml/steps/test-config.d.ts +0 -5
  474. package/dist/src/yaml/steps/test-config.d.ts.map +0 -1
  475. package/dist/src/yaml/steps/test-config.js +0 -25
  476. package/dist/src/yaml/steps/trim-align-corpus.test.d.ts +0 -28
  477. package/dist/src/yaml/steps/trim-align-corpus.test.d.ts.map +0 -1
  478. package/dist/src/yaml/steps/trim-align-corpus.test.js +0 -383
  479. package/dist/src/yaml/steps/trim-align.d.ts +0 -87
  480. package/dist/src/yaml/steps/trim-align.d.ts.map +0 -1
  481. package/dist/src/yaml/steps/trim-align.js +0 -367
  482. package/dist/src/yaml/steps/trim-align.test.d.ts +0 -11
  483. package/dist/src/yaml/steps/trim-align.test.d.ts.map +0 -1
  484. package/dist/src/yaml/steps/trim-align.test.js +0 -261
  485. package/dist/src/yaml/steps/ui-fidelity-preview-android.d.ts +0 -66
  486. package/dist/src/yaml/steps/ui-fidelity-preview-android.d.ts.map +0 -1
  487. package/dist/src/yaml/steps/ui-fidelity-preview-android.js +0 -251
  488. package/dist/src/yaml/steps/ui-fidelity-preview-android.test.d.ts +0 -13
  489. package/dist/src/yaml/steps/ui-fidelity-preview-android.test.d.ts.map +0 -1
  490. package/dist/src/yaml/steps/ui-fidelity-preview-android.test.js +0 -302
  491. package/dist/src/yaml/steps/ui-fidelity-preview.d.ts +0 -134
  492. package/dist/src/yaml/steps/ui-fidelity-preview.d.ts.map +0 -1
  493. package/dist/src/yaml/steps/ui-fidelity-preview.js +0 -173
  494. package/dist/src/yaml/steps/ui-fidelity-preview.test.d.ts +0 -11
  495. package/dist/src/yaml/steps/ui-fidelity-preview.test.d.ts.map +0 -1
  496. package/dist/src/yaml/steps/ui-fidelity-preview.test.js +0 -210
  497. package/dist/src/yaml/steps/ui-fidelity-render-android.d.ts +0 -155
  498. package/dist/src/yaml/steps/ui-fidelity-render-android.d.ts.map +0 -1
  499. package/dist/src/yaml/steps/ui-fidelity-render-android.js +0 -1389
  500. package/dist/src/yaml/steps/ui-fidelity-render-android.test.d.ts +0 -2
  501. package/dist/src/yaml/steps/ui-fidelity-render-android.test.d.ts.map +0 -1
  502. package/dist/src/yaml/steps/ui-fidelity-render-android.test.js +0 -1106
  503. package/dist/src/yaml/steps/ui-fidelity-render.d.ts +0 -230
  504. package/dist/src/yaml/steps/ui-fidelity-render.d.ts.map +0 -1
  505. package/dist/src/yaml/steps/ui-fidelity-render.js +0 -1597
  506. package/dist/src/yaml/steps/ui-fidelity-render.test.d.ts +0 -18
  507. package/dist/src/yaml/steps/ui-fidelity-render.test.d.ts.map +0 -1
  508. package/dist/src/yaml/steps/ui-fidelity-render.test.js +0 -1871
  509. package/dist/src/yaml/steps/xcode-app-product.d.ts +0 -90
  510. package/dist/src/yaml/steps/xcode-app-product.d.ts.map +0 -1
  511. package/dist/src/yaml/steps/xcode-app-product.js +0 -247
  512. package/dist/src/yaml/steps/xcode-app-product.test.d.ts +0 -2
  513. package/dist/src/yaml/steps/xcode-app-product.test.d.ts.map +0 -1
  514. package/dist/src/yaml/steps/xcode-app-product.test.js +0 -202
  515. package/dist/src/yaml/steps/xcode-derived-data.test.d.ts +0 -30
  516. package/dist/src/yaml/steps/xcode-derived-data.test.d.ts.map +0 -1
  517. package/dist/src/yaml/steps/xcode-derived-data.test.js +0 -253
  518. package/dist/src/yaml/steps/xcode-destination.d.ts +0 -47
  519. package/dist/src/yaml/steps/xcode-destination.d.ts.map +0 -1
  520. package/dist/src/yaml/steps/xcode-destination.js +0 -202
  521. package/dist/src/yaml/steps/xcode-destination.test.d.ts +0 -9
  522. package/dist/src/yaml/steps/xcode-destination.test.d.ts.map +0 -1
  523. package/dist/src/yaml/steps/xcode-destination.test.js +0 -227
  524. package/dist/src/yaml/steps/xcode-new.test.d.ts +0 -5
  525. package/dist/src/yaml/steps/xcode-new.test.d.ts.map +0 -1
  526. package/dist/src/yaml/steps/xcode-new.test.js +0 -211
  527. package/dist/src/yaml/steps/xcode-resolve-retry.test.d.ts +0 -9
  528. package/dist/src/yaml/steps/xcode-resolve-retry.test.d.ts.map +0 -1
  529. package/dist/src/yaml/steps/xcode-resolve-retry.test.js +0 -146
  530. package/dist/src/yaml/steps/xcode-simulator-archs.d.ts +0 -53
  531. package/dist/src/yaml/steps/xcode-simulator-archs.d.ts.map +0 -1
  532. package/dist/src/yaml/steps/xcode-simulator-archs.js +0 -98
  533. package/dist/src/yaml/steps/xcode-simulator-archs.test.d.ts +0 -21
  534. package/dist/src/yaml/steps/xcode-simulator-archs.test.d.ts.map +0 -1
  535. package/dist/src/yaml/steps/xcode-simulator-archs.test.js +0 -155
  536. package/dist/src/yaml/steps/xcode.d.ts +0 -230
  537. package/dist/src/yaml/steps/xcode.d.ts.map +0 -1
  538. package/dist/src/yaml/steps/xcode.js +0 -1340
  539. package/dist/src/yaml/types.d.ts +0 -76
  540. package/dist/src/yaml/types.d.ts.map +0 -1
  541. package/dist/src/yaml/types.js +0 -5
  542. package/dist/src/yaml/validation-types.d.ts +0 -102
  543. package/dist/src/yaml/validation-types.d.ts.map +0 -1
  544. package/dist/src/yaml/validation-types.js +0 -8
  545. package/dist/src/yaml/yaml-updater.d.ts +0 -24
  546. package/dist/src/yaml/yaml-updater.d.ts.map +0 -1
  547. package/dist/src/yaml/yaml-updater.js +0 -128
@@ -1,37 +0,0 @@
1
- export interface PackageFile {
2
- /** POSIX, package-relative path. Part of the digest so a rename is a change. */
3
- path: string;
4
- /** File contents. */
5
- bytes: Buffer;
6
- }
7
- /**
8
- * Compute the input digest for one render package: its source files plus the
9
- * reference image the screen is judged against. Files are folded in sorted by
10
- * path so iteration order can't affect the result; each is folded in as its git
11
- * blob id (see the module header) so the digest is reproducible from a Git Trees
12
- * listing with no blob content. The path is length-prefixed and the blob id is
13
- * fixed-width, so boundaries are unambiguous.
14
- */
15
- export declare function sourceDigest(packageFiles: PackageFile[], referenceBytes: Buffer | null): string;
16
- /**
17
- * True when a render package is self-contained — no Gradle script reaches
18
- * outside the package root. Render packages are hermetic by construction; this
19
- * guard fails a non-hermetic package OUT of the cacheable set (its digest is not
20
- * emitted / not trusted for skip) so a change in an external module it depends
21
- * on can never replay a stale verdict. Pure: a function of the package files
22
- * only, so a dispatch-time caller can apply the identical check.
23
- */
24
- export declare function isHermeticPackage(packageFiles: PackageFile[]): boolean;
25
- /**
26
- * Runtime twin of {@link sourceDigest}, spliced into the self-contained render
27
- * script that runs on the macOS runner (which cannot import this module). It
28
- * walks the built package directory, reads the paired reference, and computes
29
- * the identical digest — a parity test pins it to `sourceDigest` so the twin
30
- * cannot drift.
31
- *
32
- * Exposes `computeSourceDigest(projectRoot, referencePath)`. Build outputs and
33
- * VCS/tooling dirs are excluded so they never perturb the content key. Reads
34
- * are best-effort: an unreadable reference folds in as "absent", never throws.
35
- */
36
- export declare const RENDER_SCRIPT_SOURCE_DIGEST_STAGE: string;
37
- //# sourceMappingURL=fidelity-input-digest.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fidelity-input-digest.d.ts","sourceRoot":"","sources":["../../../src/yaml/fidelity-input-digest.ts"],"names":[],"mappings":"AAiCA,MAAM,WAAW,WAAW;IAC1B,gFAAgF;IAChF,IAAI,EAAE,MAAM,CAAC;IACb,qBAAqB;IACrB,KAAK,EAAE,MAAM,CAAC;CACf;AAuBD;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAC1B,YAAY,EAAE,WAAW,EAAE,EAC3B,cAAc,EAAE,MAAM,GAAG,IAAI,GAC5B,MAAM,CAoBR;AAwBD;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,WAAW,EAAE,GAAG,OAAO,CAOtE;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,iCAAiC,EAAE,MAiF/C,CAAC"}
@@ -1,208 +0,0 @@
1
- /**
2
- * Deterministic per-package input digest.
3
- *
4
- * A content key over a render package's inputs — the committed wrapper source
5
- * files plus the paired reference image — so a consumer can tell when a render
6
- * would be byte-identical to one already produced and skip re-rendering. Pure:
7
- * a function of the input bytes only, never of absolute paths, timestamps, or
8
- * commit ids, so the same inputs yield the same digest on any machine or
9
- * branch.
10
- *
11
- * Scope: package-local inputs. Render packages are self-contained by
12
- * construction — a parameterless wrapper that reproduces one screen from
13
- * hardcoded fixtures, shipped with every dependency version pinned inline and
14
- * its own assets vendored — so the package IS its own dependency closure and a
15
- * package-local content key already invalidates on anything that can shift the
16
- * render. (A package that escapes its own root — an `includeBuild`, an external
17
- * `project(":…")` dependency, or a shared version catalog — would break that
18
- * property; such a package is not safely cacheable and is caught by a separate
19
- * hermeticity guard rather than folded into this digest.)
20
- *
21
- * Digest basis: each file is folded in as its **git blob id**
22
- * (`sha1("blob " + byteLength + "\0" + content)`) rather than its raw bytes.
23
- * That is the exact id the GitHub Git Trees API returns for a committed file, so
24
- * a caller holding only a tree listing — a webhook dispatch with no checkout —
25
- * can reproduce this digest from `(path, blobSha)` pairs WITHOUT fetching any
26
- * blob content. The framing is: sha256 over, for each file sorted by path,
27
- * `len(path) ‖ path ‖ blobSha(content)`, then the reference folded last as
28
- * `blobSha(reference)` (or a presence-distinct `len(0xffffffff)` marker when
29
- * there is no reference). `blobSha` is a fixed 20 bytes, so file boundaries stay
30
- * unambiguous with only the path length-prefixed.
31
- */
32
- import { createHash } from 'crypto';
33
- /** 4-byte big-endian length prefix, so concatenated fields can't alias
34
- * (`["ab","c"]` must not hash equal to `["a","bc"]`). */
35
- function len(n) {
36
- const b = Buffer.allocUnsafe(4);
37
- b.writeUInt32BE(n >>> 0, 0);
38
- return b;
39
- }
40
- /**
41
- * Git blob object id for a file's content: `sha1("blob " + len + "\0" + bytes)`.
42
- * The identical id the GitHub Git Trees API returns for the committed blob, so a
43
- * dispatch-time caller can read it from a tree listing instead of hashing bytes
44
- * it never fetched. Returned as 20 raw bytes (folded straight into the digest).
45
- */
46
- function gitBlobSha(bytes) {
47
- const h = createHash('sha1');
48
- h.update(`blob ${bytes.length}\0`);
49
- h.update(bytes);
50
- return h.digest();
51
- }
52
- /**
53
- * Compute the input digest for one render package: its source files plus the
54
- * reference image the screen is judged against. Files are folded in sorted by
55
- * path so iteration order can't affect the result; each is folded in as its git
56
- * blob id (see the module header) so the digest is reproducible from a Git Trees
57
- * listing with no blob content. The path is length-prefixed and the blob id is
58
- * fixed-width, so boundaries are unambiguous.
59
- */
60
- export function sourceDigest(packageFiles, referenceBytes) {
61
- const sorted = [...packageFiles].sort((a, b) => a.path < b.path ? -1 : a.path > b.path ? 1 : 0);
62
- const h = createHash('sha256');
63
- for (const file of sorted) {
64
- const pathBytes = Buffer.from(file.path, 'utf8');
65
- h.update(len(pathBytes.length));
66
- h.update(pathBytes);
67
- h.update(gitBlobSha(file.bytes));
68
- }
69
- // Reference is folded in as its blob id, with a presence-distinct marker so
70
- // "no reference" differs from "empty reference".
71
- if (referenceBytes === null) {
72
- h.update(len(0xffffffff));
73
- }
74
- else {
75
- h.update(gitBlobSha(referenceBytes));
76
- }
77
- return h.digest('hex');
78
- }
79
- /**
80
- * A Gradle build script — the only files that can reach outside the package
81
- * root (source files and assets can mention `..` in prose without affecting the
82
- * build graph).
83
- */
84
- function isGradleScript(path) {
85
- return path.endsWith('.gradle') || path.endsWith('.gradle.kts');
86
- }
87
- /**
88
- * Tokens by which a Gradle script reaches outside its own package root and so
89
- * breaks the "package is its own dependency closure" invariant this digest
90
- * relies on:
91
- * - `includeBuild` — a composite/included build (another whole build).
92
- * - `projectDir` — a module relocated to a directory outside the layout.
93
- * - `../` — any parent-path reference (external file, script, or
94
- * version catalog).
95
- * Biased toward over-detection: a false positive only forces a re-render (safe),
96
- * whereas a miss would let a shared external change replay a stale verdict.
97
- */
98
- const GRADLE_ESCAPE = /includeBuild|projectDir|\.\.\//;
99
- /**
100
- * True when a render package is self-contained — no Gradle script reaches
101
- * outside the package root. Render packages are hermetic by construction; this
102
- * guard fails a non-hermetic package OUT of the cacheable set (its digest is not
103
- * emitted / not trusted for skip) so a change in an external module it depends
104
- * on can never replay a stale verdict. Pure: a function of the package files
105
- * only, so a dispatch-time caller can apply the identical check.
106
- */
107
- export function isHermeticPackage(packageFiles) {
108
- for (const file of packageFiles) {
109
- if (isGradleScript(file.path) && GRADLE_ESCAPE.test(file.bytes.toString('utf8'))) {
110
- return false;
111
- }
112
- }
113
- return true;
114
- }
115
- /**
116
- * Runtime twin of {@link sourceDigest}, spliced into the self-contained render
117
- * script that runs on the macOS runner (which cannot import this module). It
118
- * walks the built package directory, reads the paired reference, and computes
119
- * the identical digest — a parity test pins it to `sourceDigest` so the twin
120
- * cannot drift.
121
- *
122
- * Exposes `computeSourceDigest(projectRoot, referencePath)`. Build outputs and
123
- * VCS/tooling dirs are excluded so they never perturb the content key. Reads
124
- * are best-effort: an unreadable reference folds in as "absent", never throws.
125
- */
126
- export const RENDER_SCRIPT_SOURCE_DIGEST_STAGE = String.raw `
127
- // ---- source-digest stage: deterministic package input content key ----
128
- function __fidLen(n) {
129
- var b = Buffer.allocUnsafe(4);
130
- b.writeUInt32BE(n >>> 0, 0);
131
- return b;
132
- }
133
- var __FID_SKIP_DIRS = { build: 1, '.gradle': 1, '.git': 1, '.idea': 1, 'node_modules': 1, DerivedData: 1 };
134
- function __fidCollectPackageFiles(root) {
135
- var fs = require('fs');
136
- var path = require('path');
137
- var out = [];
138
- function walk(dir, rel) {
139
- var names;
140
- try { names = fs.readdirSync(dir); } catch (e) { return; }
141
- names.sort();
142
- for (var i = 0; i < names.length; i++) {
143
- var name = names[i];
144
- var full = path.join(dir, name);
145
- var relPath = rel ? rel + '/' + name : name;
146
- var st;
147
- try { st = fs.statSync(full); } catch (e) { continue; }
148
- if (st.isDirectory()) {
149
- if (__FID_SKIP_DIRS[name]) continue;
150
- walk(full, relPath);
151
- } else if (st.isFile()) {
152
- out.push({ path: relPath, bytes: fs.readFileSync(full) });
153
- }
154
- }
155
- }
156
- walk(root, '');
157
- return out;
158
- }
159
- function __fidBlobSha(bytes) {
160
- var crypto = require('crypto');
161
- var h = crypto.createHash('sha1');
162
- h.update('blob ' + bytes.length + '\0');
163
- h.update(bytes);
164
- return h.digest();
165
- }
166
- function __fidSourceDigest(files, referenceBytes) {
167
- var crypto = require('crypto');
168
- var sorted = files.slice().sort(function (a, b) {
169
- return a.path < b.path ? -1 : a.path > b.path ? 1 : 0;
170
- });
171
- var h = crypto.createHash('sha256');
172
- for (var i = 0; i < sorted.length; i++) {
173
- var pathBytes = Buffer.from(sorted[i].path, 'utf8');
174
- h.update(__fidLen(pathBytes.length));
175
- h.update(pathBytes);
176
- h.update(__fidBlobSha(sorted[i].bytes));
177
- }
178
- if (referenceBytes === null || referenceBytes === undefined) {
179
- h.update(__fidLen(0xffffffff));
180
- } else {
181
- h.update(__fidBlobSha(referenceBytes));
182
- }
183
- return h.digest('hex');
184
- }
185
- function computeSourceDigest(projectRoot, referencePath) {
186
- var fs = require('fs');
187
- var files = __fidCollectPackageFiles(projectRoot);
188
- var ref = null;
189
- try { if (referencePath) ref = fs.readFileSync(referencePath); } catch (e) { ref = null; }
190
- return __fidSourceDigest(files, ref);
191
- }
192
- // Twin of isHermeticPackage: a package is cacheable only when no Gradle script
193
- // reaches outside its own root (includeBuild / projectDir / a parent path).
194
- var __FID_GRADLE_ESCAPE = /includeBuild|projectDir|\.\.\//;
195
- function __fidIsGradleScript(p) {
196
- return p.slice(-7) === '.gradle' || p.slice(-11) === '.gradle.kts';
197
- }
198
- function __fidIsHermetic(files) {
199
- for (var i = 0; i < files.length; i++) {
200
- if (__fidIsGradleScript(files[i].path) &&
201
- __FID_GRADLE_ESCAPE.test(files[i].bytes.toString('utf8'))) {
202
- return false;
203
- }
204
- }
205
- return true;
206
- }
207
- `;
208
- //# sourceMappingURL=fidelity-input-digest.js.map
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=fidelity-input-digest.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fidelity-input-digest.test.d.ts","sourceRoot":"","sources":["../../../src/yaml/fidelity-input-digest.test.ts"],"names":[],"mappings":""}
@@ -1,167 +0,0 @@
1
- /**
2
- * Unit tests for the deterministic per-package input digest.
3
- *
4
- * The digest is the content key the dashboard matches on to decide whether a
5
- * render would be identical to one it already has — so it must be a pure
6
- * function of the package's input bytes (wrapper source + reference), stable
7
- * across machines/branches, and never derived from paths-as-location, mtimes,
8
- * or commit ids.
9
- */
10
- import { describe, test, expect } from '@jest/globals';
11
- import { createHash } from 'crypto';
12
- import { createRequire } from 'module';
13
- import { sourceDigest, isHermeticPackage, RENDER_SCRIPT_SOURCE_DIGEST_STAGE, } from './fidelity-input-digest.js';
14
- function f(path, content) {
15
- return { path, bytes: Buffer.from(content, 'utf8') };
16
- }
17
- /** Git blob object id: sha1('blob <len>\0<content>') — the SAME id the GitHub
18
- * Git Trees API returns for a committed file. The digest is defined over these
19
- * ids so a caller with only a tree listing (no blob content) can reproduce it. */
20
- function gitBlobSha(bytes) {
21
- const h = createHash('sha1');
22
- h.update(`blob ${bytes.length}\0`);
23
- h.update(bytes);
24
- return h.digest('hex');
25
- }
26
- /** 4-byte big-endian length prefix — mirrors the module-private `len`. */
27
- function len(n) {
28
- const b = Buffer.allocUnsafe(4);
29
- b.writeUInt32BE(n >>> 0, 0);
30
- return b;
31
- }
32
- /** Extract the runner-side twin from the spliced stage source so a parity test
33
- * can pin it to the pure function. `require` is injected because the stage
34
- * runs in the runner's CJS scope, not this ESM test module. */
35
- const require = createRequire(import.meta.url);
36
- const twin = new Function('require', RENDER_SCRIPT_SOURCE_DIGEST_STAGE +
37
- '\nreturn { __fidSourceDigest: __fidSourceDigest, __fidIsHermetic: __fidIsHermetic };')(require);
38
- describe('sourceDigest', () => {
39
- test('is deterministic: identical inputs produce the same 64-hex digest', () => {
40
- const files = [f('Proof.kt', 'fun Proof() {}'), f('build.gradle.kts', 'plugins {}')];
41
- const ref = Buffer.from('reference-image-bytes');
42
- const first = sourceDigest(files, ref);
43
- expect(first).toMatch(/^[0-9a-f]{64}$/);
44
- expect(sourceDigest(files, ref)).toBe(first);
45
- });
46
- test('changes when any package file byte changes', () => {
47
- const ref = Buffer.from('ref');
48
- const before = sourceDigest([f('Proof.kt', 'fun Proof() {}')], ref);
49
- const after = sourceDigest([f('Proof.kt', 'fun Proof() { Box() }')], ref);
50
- expect(after).not.toBe(before);
51
- });
52
- test('changes when only the reference image changes', () => {
53
- const files = [f('Proof.kt', 'fun Proof() {}')];
54
- const withA = sourceDigest(files, Buffer.from('reference-A'));
55
- const withB = sourceDigest(files, Buffer.from('reference-B'));
56
- expect(withB).not.toBe(withA);
57
- });
58
- test('is independent of file iteration order', () => {
59
- const ref = Buffer.from('ref');
60
- const a = f('a.kt', 'A');
61
- const b = f('b.kt', 'B');
62
- expect(sourceDigest([a, b], ref)).toBe(sourceDigest([b, a], ref));
63
- });
64
- test('is unambiguous across file boundaries (path/content cannot alias)', () => {
65
- const ref = Buffer.from('ref');
66
- // Same concatenated bytes, different split: must not collide.
67
- const split = sourceDigest([f('ab', 'x'), f('', 'y')], ref);
68
- const joined = sourceDigest([f('a', 'bxy')], ref);
69
- expect(split).not.toBe(joined);
70
- });
71
- test('is reconstructible from git blob shas alone (dashboard tree-API parity)', () => {
72
- // The dashboard computes this SAME digest at webhook time from a Git Trees
73
- // API listing — which carries each committed file's blob sha but NOT its
74
- // content. Pin the exact framing so that reconstruction (path + blob sha,
75
- // no bytes) reproduces the digest byte-for-byte.
76
- const files = [f('b.kt', 'B'), f('a.kt', 'A')];
77
- const ref = Buffer.from('reference-image-bytes');
78
- const sorted = [...files].sort((x, y) => (x.path < y.path ? -1 : x.path > y.path ? 1 : 0));
79
- const h = createHash('sha256');
80
- for (const file of sorted) {
81
- const p = Buffer.from(file.path, 'utf8');
82
- h.update(len(p.length));
83
- h.update(p);
84
- h.update(Buffer.from(gitBlobSha(file.bytes), 'hex'));
85
- }
86
- h.update(Buffer.from(gitBlobSha(ref), 'hex'));
87
- expect(sourceDigest(files, ref)).toBe(h.digest('hex'));
88
- });
89
- test('matches the cross-consumer golden vector (pins the wire format)', () => {
90
- // A fixed known-answer vector shared verbatim with the dashboard's
91
- // dispatch-time digest, so the two implementations cannot drift apart
92
- // silently. If this changes, the dashboard golden must change in lockstep.
93
- const files = [f('a.kt', 'A'), f('proof/build.gradle.kts', 'plugins {}')];
94
- expect(sourceDigest(files, Buffer.from('ref-bytes'))).toBe('7fc57f481eb011299d34824e0a506345d15e96946e345beac882f26adab47374');
95
- expect(sourceDigest(files, null)).toBe('2596ecea7f591c23f9397707a92b008dabedbd1fd4acc0efb2440849e97ddd3c');
96
- });
97
- test('folds a null reference in with a presence-distinct marker (not a blob sha)', () => {
98
- const files = [f('a.kt', 'A')];
99
- const sorted = files;
100
- const h = createHash('sha256');
101
- for (const file of sorted) {
102
- const p = Buffer.from(file.path, 'utf8');
103
- h.update(len(p.length));
104
- h.update(p);
105
- h.update(Buffer.from(gitBlobSha(file.bytes), 'hex'));
106
- }
107
- h.update(len(0xffffffff));
108
- expect(sourceDigest(files, null)).toBe(h.digest('hex'));
109
- });
110
- });
111
- describe('isHermeticPackage', () => {
112
- const hermetic = [
113
- f('settings.gradle.kts', 'rootProject.name = "p"\ninclude(":proof")\n'),
114
- f('build.gradle.kts', 'plugins { id("com.android.library") version "8.13.2" }'),
115
- f('proof/build.gradle.kts', 'dependencies { implementation("androidx.compose.ui:ui") }'),
116
- f('proof/src/main/kotlin/Proof.kt', 'fun Proof() {}'),
117
- ];
118
- test('accepts a self-contained package with everything pinned inline', () => {
119
- expect(isHermeticPackage(hermetic)).toBe(true);
120
- });
121
- test('rejects a composite build (includeBuild reaches another build)', () => {
122
- const files = [...hermetic, f('settings.gradle.kts', 'includeBuild("../design-system")')];
123
- expect(isHermeticPackage(files)).toBe(false);
124
- });
125
- test('rejects a module relocated outside the root via projectDir', () => {
126
- const files = [
127
- f('settings.gradle.kts', 'include(":ds")\nproject(":ds").projectDir = file("../ds")'),
128
- ];
129
- expect(isHermeticPackage(files)).toBe(false);
130
- });
131
- test('rejects a parent-path escape (external file / version catalog)', () => {
132
- const files = [
133
- f('settings.gradle.kts', 'versionCatalogs { create("libs") { from(files("../gradle/libs.versions.toml")) } }'),
134
- ];
135
- expect(isHermeticPackage(files)).toBe(false);
136
- });
137
- test('ignores escape tokens outside Gradle scripts (only build scripts can escape)', () => {
138
- // A source file or asset mentioning "../" is not a build-graph escape.
139
- const files = [
140
- f('settings.gradle.kts', 'include(":proof")'),
141
- f('proof/src/main/kotlin/Doc.kt', '// see ../design-system for the original'),
142
- ];
143
- expect(isHermeticPackage(files)).toBe(true);
144
- });
145
- });
146
- describe('runtime twin parity', () => {
147
- const files = [f('Proof.kt', 'fun Proof() { Box() }'), f('build.gradle.kts', 'plugins {}')];
148
- test('the spliced runner-side digest matches the pure sourceDigest (with reference)', () => {
149
- const ref = Buffer.from('reference-image-bytes');
150
- expect(twin.__fidSourceDigest(files, ref)).toBe(sourceDigest(files, ref));
151
- });
152
- test('the spliced runner-side digest matches the pure sourceDigest (no reference)', () => {
153
- expect(twin.__fidSourceDigest(files, null)).toBe(sourceDigest(files, null));
154
- });
155
- test('the spliced runner-side hermeticity check matches isHermeticPackage', () => {
156
- const hermetic = [
157
- f('settings.gradle.kts', 'include(":proof")'),
158
- f('proof/src/main/kotlin/Doc.kt', '// mentions ../elsewhere harmlessly'),
159
- ];
160
- const escaping = [f('settings.gradle', 'includeBuild("../other")')];
161
- expect(twin.__fidIsHermetic(hermetic)).toBe(isHermeticPackage(hermetic));
162
- expect(twin.__fidIsHermetic(escaping)).toBe(isHermeticPackage(escaping));
163
- expect(twin.__fidIsHermetic(hermetic)).toBe(true);
164
- expect(twin.__fidIsHermetic(escaping)).toBe(false);
165
- });
166
- });
167
- //# sourceMappingURL=fidelity-input-digest.test.js.map
@@ -1,126 +0,0 @@
1
- /**
2
- * Multi-state UI-fidelity manifest parser/validator.
3
- *
4
- * The manifest lives at the app-repo root as `.invarn/fidelity.yml` and is the
5
- * single seam the android-ui-fidelity skill and any orchestrator share. It
6
- * declares each **Surface** (one app screen) and that surface's first-class
7
- * **States** (guest vs logged-in; empty vs progress vs complete). Each State is
8
- * one named proof composable paired with one **Reference**, and the Reference
9
- * carries export-time **provenance** so the gate can assert validity by
10
- * metadata rather than by reading pixels.
11
- *
12
- * This module owns the schema (the TypeScript types below) and a validator that
13
- * rejects malformed entries with a clear, distinct message — the shared
14
- * contract the reference-provenance (UNVERIFIABLE) and baseline-filter slices
15
- * key on.
16
- */
17
- /**
18
- * Export-time provenance stamped onto a Reference. The gate checks this
19
- * metadata, never the PNG's pixels: a missing/placeholder/wrong-locale
20
- * reference is caught here instead of by OCR.
21
- */
22
- export interface ReferenceProvenance {
23
- /** The Figma node the reference was exported from (e.g. "12:345"). */
24
- figmaNode: string;
25
- /** The locale the reference was exported in (must match the render locale). */
26
- locale: string;
27
- /** False when copy placeholders (`{date}`/`{amount}`) are still unfilled. */
28
- resolved: boolean;
29
- /** ISO-8601 export timestamp. */
30
- exportedAt: string;
31
- }
32
- /** A single-state design image plus its provenance. */
33
- export interface StateReference {
34
- /** Reference image path (repo-relative), or a Figma node URL. */
35
- path: string;
36
- /** Export-time provenance; absence makes the State UNVERIFIABLE. */
37
- provenance: ReferenceProvenance;
38
- }
39
- /**
40
- * One allowlisted, product-owned divergence for a State. Keyed on
41
- * structured/normalized fields only; `actual` is the pinned render value, so a
42
- * changed value re-flags by construction.
43
- */
44
- export interface BaselineEntry {
45
- /** Divergence category (e.g. "copy", "geometry") — drives equality. */
46
- category: string;
47
- /** Stable element id from layout.json. Unpinnable divergences aren't here. */
48
- element: string;
49
- /** The reference/design value. */
50
- expected: string;
51
- /** The pinned actual render value — required. */
52
- actual: string;
53
- }
54
- /** One addressable visual State of a Surface. */
55
- export interface FidelityState {
56
- /** State name (e.g. "Guest", "LoggedIn"); unique within the surface. */
57
- name: string;
58
- /** Named proof composable `<Surface><State>Proof`; 1:1 with a screens key. */
59
- proof: string;
60
- /** The single-state reference this State is paired against. */
61
- reference: StateReference;
62
- /** Per-state baseline of accepted divergences. */
63
- accepted?: BaselineEntry[];
64
- }
65
- /** One app screen and its first-class States. One proof module per surface. */
66
- export interface FidelitySurface {
67
- /** Surface name. */
68
- name: string;
69
- /** Render platform (e.g. "android"). */
70
- platform: string;
71
- /** Proof module path (one module per surface, N composables inside). */
72
- module?: string;
73
- /** The real source files this surface proves. */
74
- source?: string[];
75
- /** Globs whose changes imply a re-gate. */
76
- touchedBy?: string[];
77
- /** The surface's States. */
78
- states: FidelityState[];
79
- }
80
- /** The parsed `.invarn/fidelity.yml` manifest. */
81
- export interface FidelityManifest {
82
- version: number;
83
- surfaces: FidelitySurface[];
84
- }
85
- /** Thrown when a manifest is absent, unparseable, or schema-invalid. */
86
- export declare class FidelityManifestError extends Error {
87
- readonly filePath?: string | undefined;
88
- constructor(message: string, filePath?: string | undefined);
89
- }
90
- /** Reads and parses a manifest from disk. */
91
- export declare function loadFidelityManifest(filePath: string): FidelityManifest;
92
- /** Parses and validates manifest YAML text. */
93
- export declare function parseFidelityManifest(text: string, filePath?: string): FidelityManifest;
94
- /**
95
- * The per-dispatch inputs for one surface, derived from its manifest entry.
96
- * Shapes the `params` sidecar the render runtime and preflight already consume
97
- * (`screens` + `render_locale` + `provenance`), the reference files to upload,
98
- * and the per-proof `accepted[]` baseline the post-judgment filter reads.
99
- */
100
- export interface SurfaceDispatchInputs {
101
- /** params.screens: proof composable name → reference basename. */
102
- screens: Record<string, string>;
103
- /** params.render_locale: the single locale every reference is checked against. */
104
- render_locale: string;
105
- /** params.provenance: proof composable name → its reference provenance. */
106
- provenance: Record<string, ReferenceProvenance>;
107
- /** Reference files to upload, one per state, addressed by repo path. */
108
- references: {
109
- proof: string;
110
- path: string;
111
- }[];
112
- /** Per-proof accepted[] baseline (only states that declare one). */
113
- accepted: Record<string, BaselineEntry[]>;
114
- }
115
- /**
116
- * Build the per-dispatch inputs for one surface: one run carries all of the
117
- * surface's states, each paired with its own reference and provenance. The
118
- * render locale defaults to the references' shared locale (they must agree);
119
- * pass `renderLocale` to override (a deliberate mismatch then surfaces as
120
- * UNVERIFIABLE at the gate). Reference basenames must be unique, since the
121
- * upload layer addresses files by basename.
122
- */
123
- export declare function buildSurfaceDispatchInputs(surface: FidelitySurface, opts?: {
124
- renderLocale?: string;
125
- }): SurfaceDispatchInputs;
126
- //# sourceMappingURL=fidelity-manifest.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fidelity-manifest.d.ts","sourceRoot":"","sources":["../../../src/yaml/fidelity-manifest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAKH;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,sEAAsE;IACtE,SAAS,EAAE,MAAM,CAAC;IAClB,+EAA+E;IAC/E,MAAM,EAAE,MAAM,CAAC;IACf,6EAA6E;IAC7E,QAAQ,EAAE,OAAO,CAAC;IAClB,iCAAiC;IACjC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,uDAAuD;AACvD,MAAM,WAAW,cAAc;IAC7B,iEAAiE;IACjE,IAAI,EAAE,MAAM,CAAC;IACb,oEAAoE;IACpE,UAAU,EAAE,mBAAmB,CAAC;CACjC;AAED;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,uEAAuE;IACvE,QAAQ,EAAE,MAAM,CAAC;IACjB,8EAA8E;IAC9E,OAAO,EAAE,MAAM,CAAC;IAChB,kCAAkC;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,iDAAiD;IACjD,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,iDAAiD;AACjD,MAAM,WAAW,aAAa;IAC5B,wEAAwE;IACxE,IAAI,EAAE,MAAM,CAAC;IACb,8EAA8E;IAC9E,KAAK,EAAE,MAAM,CAAC;IACd,+DAA+D;IAC/D,SAAS,EAAE,cAAc,CAAC;IAC1B,kDAAkD;IAClD,QAAQ,CAAC,EAAE,aAAa,EAAE,CAAC;CAC5B;AAED,+EAA+E;AAC/E,MAAM,WAAW,eAAe;IAC9B,oBAAoB;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,wCAAwC;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,wEAAwE;IACxE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iDAAiD;IACjD,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,2CAA2C;IAC3C,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,4BAA4B;IAC5B,MAAM,EAAE,aAAa,EAAE,CAAC;CACzB;AAED,kDAAkD;AAClD,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,eAAe,EAAE,CAAC;CAC7B;AAED,wEAAwE;AACxE,qBAAa,qBAAsB,SAAQ,KAAK;aACD,QAAQ,CAAC,EAAE,MAAM;gBAAlD,OAAO,EAAE,MAAM,EAAkB,QAAQ,CAAC,EAAE,MAAM,YAAA;CAI/D;AAED,6CAA6C;AAC7C,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,gBAAgB,CAQvE;AAED,+CAA+C;AAC/C,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,MAAM,EACZ,QAAQ,CAAC,EAAE,MAAM,GAChB,gBAAgB,CAoBlB;AAwDD;;;;;GAKG;AACH,MAAM,WAAW,qBAAqB;IACpC,kEAAkE;IAClE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,kFAAkF;IAClF,aAAa,EAAE,MAAM,CAAC;IACtB,2EAA2E;IAC3E,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IAChD,wEAAwE;IACxE,UAAU,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC9C,oEAAoE;IACpE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;CAC3C;AAQD;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,eAAe,EACxB,IAAI,GAAE;IAAE,YAAY,CAAC,EAAE,MAAM,CAAA;CAAO,GACnC,qBAAqB,CA+BvB"}