@invarn/cibuild 2.9.6 → 2.9.8

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 (559) 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/a-missing-pinned-jdk-yields-for-every-gradle-run.test.d.ts +0 -2
  282. package/dist/src/yaml/steps/a-missing-pinned-jdk-yields-for-every-gradle-run.test.d.ts.map +0 -1
  283. package/dist/src/yaml/steps/a-missing-pinned-jdk-yields-for-every-gradle-run.test.js +0 -96
  284. package/dist/src/yaml/steps/android-sign.d.ts +0 -35
  285. package/dist/src/yaml/steps/android-sign.d.ts.map +0 -1
  286. package/dist/src/yaml/steps/android-sign.js +0 -147
  287. package/dist/src/yaml/steps/android-variant-resolution.test.d.ts +0 -2
  288. package/dist/src/yaml/steps/android-variant-resolution.test.d.ts.map +0 -1
  289. package/dist/src/yaml/steps/android-variant-resolution.test.js +0 -260
  290. package/dist/src/yaml/steps/android-version.d.ts +0 -26
  291. package/dist/src/yaml/steps/android-version.d.ts.map +0 -1
  292. package/dist/src/yaml/steps/android-version.js +0 -128
  293. package/dist/src/yaml/steps/android-version.test.d.ts +0 -5
  294. package/dist/src/yaml/steps/android-version.test.d.ts.map +0 -1
  295. package/dist/src/yaml/steps/android-version.test.js +0 -196
  296. package/dist/src/yaml/steps/android.d.ts +0 -156
  297. package/dist/src/yaml/steps/android.d.ts.map +0 -1
  298. package/dist/src/yaml/steps/android.js +0 -1100
  299. package/dist/src/yaml/steps/app-store-deploy.d.ts +0 -48
  300. package/dist/src/yaml/steps/app-store-deploy.d.ts.map +0 -1
  301. package/dist/src/yaml/steps/app-store-deploy.js +0 -167
  302. package/dist/src/yaml/steps/base.d.ts +0 -263
  303. package/dist/src/yaml/steps/base.d.ts.map +0 -1
  304. package/dist/src/yaml/steps/base.js +0 -380
  305. package/dist/src/yaml/steps/bitrise-android-tools.d.ts +0 -26
  306. package/dist/src/yaml/steps/bitrise-android-tools.d.ts.map +0 -1
  307. package/dist/src/yaml/steps/bitrise-android-tools.js +0 -200
  308. package/dist/src/yaml/steps/bitrise-android-tools.test.d.ts +0 -5
  309. package/dist/src/yaml/steps/bitrise-android-tools.test.d.ts.map +0 -1
  310. package/dist/src/yaml/steps/bitrise-android-tools.test.js +0 -280
  311. package/dist/src/yaml/steps/bitrise-apk-info.d.ts +0 -22
  312. package/dist/src/yaml/steps/bitrise-apk-info.d.ts.map +0 -1
  313. package/dist/src/yaml/steps/bitrise-apk-info.js +0 -144
  314. package/dist/src/yaml/steps/bitrise-apk-info.test.d.ts +0 -5
  315. package/dist/src/yaml/steps/bitrise-apk-info.test.d.ts.map +0 -1
  316. package/dist/src/yaml/steps/bitrise-apk-info.test.js +0 -331
  317. package/dist/src/yaml/steps/bitrise-slack.d.ts +0 -49
  318. package/dist/src/yaml/steps/bitrise-slack.d.ts.map +0 -1
  319. package/dist/src/yaml/steps/bitrise-slack.js +0 -280
  320. package/dist/src/yaml/steps/bitrise-slack.test.d.ts +0 -5
  321. package/dist/src/yaml/steps/bitrise-slack.test.d.ts.map +0 -1
  322. package/dist/src/yaml/steps/bitrise-slack.test.js +0 -484
  323. package/dist/src/yaml/steps/bitrise-ssh.d.ts +0 -27
  324. package/dist/src/yaml/steps/bitrise-ssh.d.ts.map +0 -1
  325. package/dist/src/yaml/steps/bitrise-ssh.js +0 -134
  326. package/dist/src/yaml/steps/bitrise-ssh.test.d.ts +0 -5
  327. package/dist/src/yaml/steps/bitrise-ssh.test.d.ts.map +0 -1
  328. package/dist/src/yaml/steps/bitrise-ssh.test.js +0 -205
  329. package/dist/src/yaml/steps/cache-pull-daemon.test.d.ts +0 -27
  330. package/dist/src/yaml/steps/cache-pull-daemon.test.d.ts.map +0 -1
  331. package/dist/src/yaml/steps/cache-pull-daemon.test.js +0 -212
  332. package/dist/src/yaml/steps/cache-pull-restore-roots.test.d.ts +0 -42
  333. package/dist/src/yaml/steps/cache-pull-restore-roots.test.d.ts.map +0 -1
  334. package/dist/src/yaml/steps/cache-pull-restore-roots.test.js +0 -209
  335. package/dist/src/yaml/steps/cache-push-daemon.test.d.ts +0 -27
  336. package/dist/src/yaml/steps/cache-push-daemon.test.d.ts.map +0 -1
  337. package/dist/src/yaml/steps/cache-push-daemon.test.js +0 -171
  338. package/dist/src/yaml/steps/cache.d.ts +0 -59
  339. package/dist/src/yaml/steps/cache.d.ts.map +0 -1
  340. package/dist/src/yaml/steps/cache.js +0 -1027
  341. package/dist/src/yaml/steps/capture-injection.d.ts +0 -30
  342. package/dist/src/yaml/steps/capture-injection.d.ts.map +0 -1
  343. package/dist/src/yaml/steps/capture-injection.js +0 -88
  344. package/dist/src/yaml/steps/capture-injection.test.d.ts +0 -2
  345. package/dist/src/yaml/steps/capture-injection.test.d.ts.map +0 -1
  346. package/dist/src/yaml/steps/capture-injection.test.js +0 -163
  347. package/dist/src/yaml/steps/cocoapods-deployment-floor.d.ts +0 -42
  348. package/dist/src/yaml/steps/cocoapods-deployment-floor.d.ts.map +0 -1
  349. package/dist/src/yaml/steps/cocoapods-deployment-floor.js +0 -140
  350. package/dist/src/yaml/steps/cocoapods-deployment-floor.test.d.ts +0 -11
  351. package/dist/src/yaml/steps/cocoapods-deployment-floor.test.d.ts.map +0 -1
  352. package/dist/src/yaml/steps/cocoapods-deployment-floor.test.js +0 -176
  353. package/dist/src/yaml/steps/cocoapods-install-emits-valid-bash.test.d.ts +0 -22
  354. package/dist/src/yaml/steps/cocoapods-install-emits-valid-bash.test.d.ts.map +0 -1
  355. package/dist/src/yaml/steps/cocoapods-install-emits-valid-bash.test.js +0 -97
  356. package/dist/src/yaml/steps/cocoapods-locked-bundler.test.d.ts +0 -17
  357. package/dist/src/yaml/steps/cocoapods-locked-bundler.test.d.ts.map +0 -1
  358. package/dist/src/yaml/steps/cocoapods-locked-bundler.test.js +0 -282
  359. package/dist/src/yaml/steps/cocoapods-skip-if-absent.test.d.ts +0 -17
  360. package/dist/src/yaml/steps/cocoapods-skip-if-absent.test.d.ts.map +0 -1
  361. package/dist/src/yaml/steps/cocoapods-skip-if-absent.test.js +0 -132
  362. package/dist/src/yaml/steps/envstore-loader.test.d.ts +0 -15
  363. package/dist/src/yaml/steps/envstore-loader.test.d.ts.map +0 -1
  364. package/dist/src/yaml/steps/envstore-loader.test.js +0 -143
  365. package/dist/src/yaml/steps/fastlane.d.ts +0 -27
  366. package/dist/src/yaml/steps/fastlane.d.ts.map +0 -1
  367. package/dist/src/yaml/steps/fastlane.js +0 -79
  368. package/dist/src/yaml/steps/fidelity-aspect-guard.d.ts +0 -53
  369. package/dist/src/yaml/steps/fidelity-aspect-guard.d.ts.map +0 -1
  370. package/dist/src/yaml/steps/fidelity-aspect-guard.js +0 -72
  371. package/dist/src/yaml/steps/fidelity-aspect-guard.test.d.ts +0 -11
  372. package/dist/src/yaml/steps/fidelity-aspect-guard.test.d.ts.map +0 -1
  373. package/dist/src/yaml/steps/fidelity-aspect-guard.test.js +0 -50
  374. package/dist/src/yaml/steps/fidelity-reference-provenance.d.ts +0 -87
  375. package/dist/src/yaml/steps/fidelity-reference-provenance.d.ts.map +0 -1
  376. package/dist/src/yaml/steps/fidelity-reference-provenance.js +0 -111
  377. package/dist/src/yaml/steps/fidelity-reference-provenance.test.d.ts +0 -22
  378. package/dist/src/yaml/steps/fidelity-reference-provenance.test.d.ts.map +0 -1
  379. package/dist/src/yaml/steps/fidelity-reference-provenance.test.js +0 -118
  380. package/dist/src/yaml/steps/file.d.ts +0 -52
  381. package/dist/src/yaml/steps/file.d.ts.map +0 -1
  382. package/dist/src/yaml/steps/file.js +0 -108
  383. package/dist/src/yaml/steps/flutter.d.ts +0 -63
  384. package/dist/src/yaml/steps/flutter.d.ts.map +0 -1
  385. package/dist/src/yaml/steps/flutter.js +0 -215
  386. package/dist/src/yaml/steps/git-clone-names-the-inputs-it-ignores.test.d.ts +0 -16
  387. package/dist/src/yaml/steps/git-clone-names-the-inputs-it-ignores.test.d.ts.map +0 -1
  388. package/dist/src/yaml/steps/git-clone-names-the-inputs-it-ignores.test.js +0 -127
  389. package/dist/src/yaml/steps/git-clone.d.ts +0 -32
  390. package/dist/src/yaml/steps/git-clone.d.ts.map +0 -1
  391. package/dist/src/yaml/steps/git-clone.js +0 -171
  392. package/dist/src/yaml/steps/git-fetch-retry-exec.test.d.ts +0 -10
  393. package/dist/src/yaml/steps/git-fetch-retry-exec.test.d.ts.map +0 -1
  394. package/dist/src/yaml/steps/git-fetch-retry-exec.test.js +0 -162
  395. package/dist/src/yaml/steps/git-fetch-retry.d.ts +0 -62
  396. package/dist/src/yaml/steps/git-fetch-retry.d.ts.map +0 -1
  397. package/dist/src/yaml/steps/git-fetch-retry.js +0 -155
  398. package/dist/src/yaml/steps/git-fetch-retry.test.d.ts +0 -5
  399. package/dist/src/yaml/steps/git-fetch-retry.test.d.ts.map +0 -1
  400. package/dist/src/yaml/steps/git-fetch-retry.test.js +0 -86
  401. package/dist/src/yaml/steps/google-play-deploy.d.ts +0 -37
  402. package/dist/src/yaml/steps/google-play-deploy.d.ts.map +0 -1
  403. package/dist/src/yaml/steps/google-play-deploy.js +0 -193
  404. package/dist/src/yaml/steps/google-play-deploy.test.d.ts +0 -5
  405. package/dist/src/yaml/steps/google-play-deploy.test.d.ts.map +0 -1
  406. package/dist/src/yaml/steps/google-play-deploy.test.js +0 -310
  407. package/dist/src/yaml/steps/gradle-memory.d.ts +0 -91
  408. package/dist/src/yaml/steps/gradle-memory.d.ts.map +0 -1
  409. package/dist/src/yaml/steps/gradle-memory.js +0 -495
  410. package/dist/src/yaml/steps/gradle-memory.test.d.ts +0 -2
  411. package/dist/src/yaml/steps/gradle-memory.test.d.ts.map +0 -1
  412. package/dist/src/yaml/steps/gradle-memory.test.js +0 -344
  413. package/dist/src/yaml/steps/gradle-sdk-cmake.d.ts +0 -28
  414. package/dist/src/yaml/steps/gradle-sdk-cmake.d.ts.map +0 -1
  415. package/dist/src/yaml/steps/gradle-sdk-cmake.js +0 -107
  416. package/dist/src/yaml/steps/gradle-sdk-cmake.test.d.ts +0 -2
  417. package/dist/src/yaml/steps/gradle-sdk-cmake.test.d.ts.map +0 -1
  418. package/dist/src/yaml/steps/gradle-sdk-cmake.test.js +0 -183
  419. package/dist/src/yaml/steps/index.d.ts +0 -10
  420. package/dist/src/yaml/steps/index.d.ts.map +0 -1
  421. package/dist/src/yaml/steps/index.js +0 -1461
  422. package/dist/src/yaml/steps/ios-deps.d.ts +0 -78
  423. package/dist/src/yaml/steps/ios-deps.d.ts.map +0 -1
  424. package/dist/src/yaml/steps/ios-deps.js +0 -279
  425. package/dist/src/yaml/steps/ios-deps.test.d.ts +0 -5
  426. package/dist/src/yaml/steps/ios-deps.test.d.ts.map +0 -1
  427. package/dist/src/yaml/steps/ios-deps.test.js +0 -90
  428. package/dist/src/yaml/steps/ios-signing.d.ts +0 -31
  429. package/dist/src/yaml/steps/ios-signing.d.ts.map +0 -1
  430. package/dist/src/yaml/steps/ios-signing.js +0 -144
  431. package/dist/src/yaml/steps/ios-version.d.ts +0 -47
  432. package/dist/src/yaml/steps/ios-version.d.ts.map +0 -1
  433. package/dist/src/yaml/steps/ios-version.js +0 -151
  434. package/dist/src/yaml/steps/java-home-version-spec.test.d.ts +0 -10
  435. package/dist/src/yaml/steps/java-home-version-spec.test.d.ts.map +0 -1
  436. package/dist/src/yaml/steps/java-home-version-spec.test.js +0 -58
  437. package/dist/src/yaml/steps/kotlin-metadata-compiles-on-a-daemon.test.d.ts +0 -2
  438. package/dist/src/yaml/steps/kotlin-metadata-compiles-on-a-daemon.test.d.ts.map +0 -1
  439. package/dist/src/yaml/steps/kotlin-metadata-compiles-on-a-daemon.test.js +0 -139
  440. package/dist/src/yaml/steps/linting.d.ts +0 -47
  441. package/dist/src/yaml/steps/linting.d.ts.map +0 -1
  442. package/dist/src/yaml/steps/linting.js +0 -148
  443. package/dist/src/yaml/steps/phase2.test.d.ts +0 -6
  444. package/dist/src/yaml/steps/phase2.test.d.ts.map +0 -1
  445. package/dist/src/yaml/steps/phase2.test.js +0 -197
  446. package/dist/src/yaml/steps/phase3.test.d.ts +0 -5
  447. package/dist/src/yaml/steps/phase3.test.d.ts.map +0 -1
  448. package/dist/src/yaml/steps/phase3.test.js +0 -144
  449. package/dist/src/yaml/steps/phase4.test.d.ts +0 -5
  450. package/dist/src/yaml/steps/phase4.test.d.ts.map +0 -1
  451. package/dist/src/yaml/steps/phase4.test.js +0 -166
  452. package/dist/src/yaml/steps/phase5.test.d.ts +0 -6
  453. package/dist/src/yaml/steps/phase5.test.d.ts.map +0 -1
  454. package/dist/src/yaml/steps/phase5.test.js +0 -263
  455. package/dist/src/yaml/steps/registry.d.ts +0 -88
  456. package/dist/src/yaml/steps/registry.d.ts.map +0 -1
  457. package/dist/src/yaml/steps/registry.js +0 -125
  458. package/dist/src/yaml/steps/registry.test.d.ts +0 -5
  459. package/dist/src/yaml/steps/registry.test.d.ts.map +0 -1
  460. package/dist/src/yaml/steps/registry.test.js +0 -235
  461. package/dist/src/yaml/steps/release.d.ts +0 -50
  462. package/dist/src/yaml/steps/release.d.ts.map +0 -1
  463. package/dist/src/yaml/steps/release.js +0 -154
  464. package/dist/src/yaml/steps/render-post-processor.d.ts +0 -100
  465. package/dist/src/yaml/steps/render-post-processor.d.ts.map +0 -1
  466. package/dist/src/yaml/steps/render-post-processor.js +0 -270
  467. package/dist/src/yaml/steps/render-post-processor.test.d.ts +0 -13
  468. package/dist/src/yaml/steps/render-post-processor.test.d.ts.map +0 -1
  469. package/dist/src/yaml/steps/render-post-processor.test.js +0 -220
  470. package/dist/src/yaml/steps/script.d.ts +0 -23
  471. package/dist/src/yaml/steps/script.d.ts.map +0 -1
  472. package/dist/src/yaml/steps/script.js +0 -63
  473. package/dist/src/yaml/steps/spec-validation.test.d.ts +0 -6
  474. package/dist/src/yaml/steps/spec-validation.test.d.ts.map +0 -1
  475. package/dist/src/yaml/steps/spec-validation.test.js +0 -130
  476. package/dist/src/yaml/steps/steps.test.d.ts +0 -6
  477. package/dist/src/yaml/steps/steps.test.d.ts.map +0 -1
  478. package/dist/src/yaml/steps/steps.test.js +0 -881
  479. package/dist/src/yaml/steps/structural-facts.d.ts +0 -992
  480. package/dist/src/yaml/steps/structural-facts.d.ts.map +0 -1
  481. package/dist/src/yaml/steps/structural-facts.js +0 -3276
  482. package/dist/src/yaml/steps/structural-facts.test.d.ts +0 -12
  483. package/dist/src/yaml/steps/structural-facts.test.d.ts.map +0 -1
  484. package/dist/src/yaml/steps/structural-facts.test.js +0 -3039
  485. package/dist/src/yaml/steps/test-config.d.ts +0 -5
  486. package/dist/src/yaml/steps/test-config.d.ts.map +0 -1
  487. package/dist/src/yaml/steps/test-config.js +0 -25
  488. package/dist/src/yaml/steps/trim-align-corpus.test.d.ts +0 -28
  489. package/dist/src/yaml/steps/trim-align-corpus.test.d.ts.map +0 -1
  490. package/dist/src/yaml/steps/trim-align-corpus.test.js +0 -383
  491. package/dist/src/yaml/steps/trim-align.d.ts +0 -87
  492. package/dist/src/yaml/steps/trim-align.d.ts.map +0 -1
  493. package/dist/src/yaml/steps/trim-align.js +0 -367
  494. package/dist/src/yaml/steps/trim-align.test.d.ts +0 -11
  495. package/dist/src/yaml/steps/trim-align.test.d.ts.map +0 -1
  496. package/dist/src/yaml/steps/trim-align.test.js +0 -261
  497. package/dist/src/yaml/steps/ui-fidelity-preview-android.d.ts +0 -66
  498. package/dist/src/yaml/steps/ui-fidelity-preview-android.d.ts.map +0 -1
  499. package/dist/src/yaml/steps/ui-fidelity-preview-android.js +0 -251
  500. package/dist/src/yaml/steps/ui-fidelity-preview-android.test.d.ts +0 -13
  501. package/dist/src/yaml/steps/ui-fidelity-preview-android.test.d.ts.map +0 -1
  502. package/dist/src/yaml/steps/ui-fidelity-preview-android.test.js +0 -302
  503. package/dist/src/yaml/steps/ui-fidelity-preview.d.ts +0 -134
  504. package/dist/src/yaml/steps/ui-fidelity-preview.d.ts.map +0 -1
  505. package/dist/src/yaml/steps/ui-fidelity-preview.js +0 -173
  506. package/dist/src/yaml/steps/ui-fidelity-preview.test.d.ts +0 -11
  507. package/dist/src/yaml/steps/ui-fidelity-preview.test.d.ts.map +0 -1
  508. package/dist/src/yaml/steps/ui-fidelity-preview.test.js +0 -210
  509. package/dist/src/yaml/steps/ui-fidelity-render-android.d.ts +0 -155
  510. package/dist/src/yaml/steps/ui-fidelity-render-android.d.ts.map +0 -1
  511. package/dist/src/yaml/steps/ui-fidelity-render-android.js +0 -1389
  512. package/dist/src/yaml/steps/ui-fidelity-render-android.test.d.ts +0 -2
  513. package/dist/src/yaml/steps/ui-fidelity-render-android.test.d.ts.map +0 -1
  514. package/dist/src/yaml/steps/ui-fidelity-render-android.test.js +0 -1106
  515. package/dist/src/yaml/steps/ui-fidelity-render.d.ts +0 -230
  516. package/dist/src/yaml/steps/ui-fidelity-render.d.ts.map +0 -1
  517. package/dist/src/yaml/steps/ui-fidelity-render.js +0 -1597
  518. package/dist/src/yaml/steps/ui-fidelity-render.test.d.ts +0 -18
  519. package/dist/src/yaml/steps/ui-fidelity-render.test.d.ts.map +0 -1
  520. package/dist/src/yaml/steps/ui-fidelity-render.test.js +0 -1871
  521. package/dist/src/yaml/steps/xcode-app-product.d.ts +0 -90
  522. package/dist/src/yaml/steps/xcode-app-product.d.ts.map +0 -1
  523. package/dist/src/yaml/steps/xcode-app-product.js +0 -247
  524. package/dist/src/yaml/steps/xcode-app-product.test.d.ts +0 -2
  525. package/dist/src/yaml/steps/xcode-app-product.test.d.ts.map +0 -1
  526. package/dist/src/yaml/steps/xcode-app-product.test.js +0 -202
  527. package/dist/src/yaml/steps/xcode-derived-data.test.d.ts +0 -30
  528. package/dist/src/yaml/steps/xcode-derived-data.test.d.ts.map +0 -1
  529. package/dist/src/yaml/steps/xcode-derived-data.test.js +0 -279
  530. package/dist/src/yaml/steps/xcode-destination.d.ts +0 -47
  531. package/dist/src/yaml/steps/xcode-destination.d.ts.map +0 -1
  532. package/dist/src/yaml/steps/xcode-destination.js +0 -202
  533. package/dist/src/yaml/steps/xcode-destination.test.d.ts +0 -9
  534. package/dist/src/yaml/steps/xcode-destination.test.d.ts.map +0 -1
  535. package/dist/src/yaml/steps/xcode-destination.test.js +0 -227
  536. package/dist/src/yaml/steps/xcode-new.test.d.ts +0 -5
  537. package/dist/src/yaml/steps/xcode-new.test.d.ts.map +0 -1
  538. package/dist/src/yaml/steps/xcode-new.test.js +0 -211
  539. package/dist/src/yaml/steps/xcode-resolve-retry.test.d.ts +0 -9
  540. package/dist/src/yaml/steps/xcode-resolve-retry.test.d.ts.map +0 -1
  541. package/dist/src/yaml/steps/xcode-resolve-retry.test.js +0 -146
  542. package/dist/src/yaml/steps/xcode-simulator-archs.d.ts +0 -53
  543. package/dist/src/yaml/steps/xcode-simulator-archs.d.ts.map +0 -1
  544. package/dist/src/yaml/steps/xcode-simulator-archs.js +0 -98
  545. package/dist/src/yaml/steps/xcode-simulator-archs.test.d.ts +0 -21
  546. package/dist/src/yaml/steps/xcode-simulator-archs.test.d.ts.map +0 -1
  547. package/dist/src/yaml/steps/xcode-simulator-archs.test.js +0 -155
  548. package/dist/src/yaml/steps/xcode.d.ts +0 -230
  549. package/dist/src/yaml/steps/xcode.d.ts.map +0 -1
  550. package/dist/src/yaml/steps/xcode.js +0 -1350
  551. package/dist/src/yaml/types.d.ts +0 -76
  552. package/dist/src/yaml/types.d.ts.map +0 -1
  553. package/dist/src/yaml/types.js +0 -5
  554. package/dist/src/yaml/validation-types.d.ts +0 -102
  555. package/dist/src/yaml/validation-types.d.ts.map +0 -1
  556. package/dist/src/yaml/validation-types.js +0 -8
  557. package/dist/src/yaml/yaml-updater.d.ts +0 -24
  558. package/dist/src/yaml/yaml-updater.d.ts.map +0 -1
  559. package/dist/src/yaml/yaml-updater.js +0 -128
@@ -1,5 +0,0 @@
1
- import type { CIConfig } from '../../types.js';
2
- export declare const testConfig: CIConfig;
3
- /** Config without peer cache (no NFS peer runner) */
4
- export declare const testConfigNoPeer: CIConfig;
5
- //# sourceMappingURL=test-config.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"test-config.d.ts","sourceRoot":"","sources":["../../../../src/yaml/steps/test-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE/C,eAAO,MAAM,UAAU,EAAE,QAexB,CAAC;AAEF,qDAAqD;AACrD,eAAO,MAAM,gBAAgB,EAAE,QAM9B,CAAC"}
@@ -1,25 +0,0 @@
1
- export const testConfig = {
2
- artifactsDir: './artifacts',
3
- interpreters: {
4
- python: 'python3',
5
- ruby: 'ruby',
6
- node: 'node',
7
- bash: '/bin/bash',
8
- },
9
- maxConcurrentJobs: 1,
10
- paths: {
11
- buildsDir: '.ci-builds',
12
- cacheDir: '.ci-cache',
13
- peerCacheDir: '/Volumes/My Shared Files/cibuild-peer-cache',
14
- derivedDataDir: '~/Library/Developer/Xcode/DerivedData',
15
- },
16
- };
17
- /** Config without peer cache (no NFS peer runner) */
18
- export const testConfigNoPeer = {
19
- ...testConfig,
20
- paths: {
21
- ...testConfig.paths,
22
- peerCacheDir: undefined,
23
- },
24
- };
25
- //# sourceMappingURL=test-config.js.map
@@ -1,28 +0,0 @@
1
- /**
2
- * Corpus gate for the pure-JS trim/align port (fidelity-linux 06).
3
- *
4
- * Runs the RETIRED CoreGraphics/Swift helper (kept verbatim below as the
5
- * equivalence oracle — it no longer ships) and the JS port over the same
6
- * inputs and requires:
7
- *
8
- * - pixel-identical TRIMMED outputs (decoded RGBA compare) — HARD. The
9
- * trimmed image is what feeds render digests and the fidelity history.
10
- * - identical TRIMDIMS lines — HARD.
11
- * - identical exit codes on failure inputs — HARD.
12
- * - pixel-identical ALIGNED outputs whenever the Swift path did not resample
13
- * (trimmed size == reference size, integer placement) — HARD. Where
14
- * CoreGraphics resampled, its proprietary `.high` interpolation is not
15
- * bit-reproducible outside CoreGraphics; those cases assert canvas
16
- * geometry and report the pixel deltas in the run summary instead.
17
- *
18
- * Inputs: crafted scenes covering every bounding-box branch (including
19
- * anti-aliased/semi-transparent edges, where the premultiplied-analysis
20
- * subtlety lives), plus every real PNG pair found under
21
- * CIBUILD_TRIM_CORPUS_DIR (rendered screens, Figma-extracted references,
22
- * alpha-heavy assets), each run as no-reference, self-reference, and
23
- * cross-reference cases.
24
- *
25
- * Gated behind CIBUILD_UI_FIDELITY_REAL_SWIFT=1 (needs a real `swift`).
26
- */
27
- export {};
28
- //# sourceMappingURL=trim-align-corpus.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"trim-align-corpus.test.d.ts","sourceRoot":"","sources":["../../../../src/yaml/steps/trim-align-corpus.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG"}
@@ -1,383 +0,0 @@
1
- /**
2
- * Corpus gate for the pure-JS trim/align port (fidelity-linux 06).
3
- *
4
- * Runs the RETIRED CoreGraphics/Swift helper (kept verbatim below as the
5
- * equivalence oracle — it no longer ships) and the JS port over the same
6
- * inputs and requires:
7
- *
8
- * - pixel-identical TRIMMED outputs (decoded RGBA compare) — HARD. The
9
- * trimmed image is what feeds render digests and the fidelity history.
10
- * - identical TRIMDIMS lines — HARD.
11
- * - identical exit codes on failure inputs — HARD.
12
- * - pixel-identical ALIGNED outputs whenever the Swift path did not resample
13
- * (trimmed size == reference size, integer placement) — HARD. Where
14
- * CoreGraphics resampled, its proprietary `.high` interpolation is not
15
- * bit-reproducible outside CoreGraphics; those cases assert canvas
16
- * geometry and report the pixel deltas in the run summary instead.
17
- *
18
- * Inputs: crafted scenes covering every bounding-box branch (including
19
- * anti-aliased/semi-transparent edges, where the premultiplied-analysis
20
- * subtlety lives), plus every real PNG pair found under
21
- * CIBUILD_TRIM_CORPUS_DIR (rendered screens, Figma-extracted references,
22
- * alpha-heavy assets), each run as no-reference, self-reference, and
23
- * cross-reference cases.
24
- *
25
- * Gated behind CIBUILD_UI_FIDELITY_REAL_SWIFT=1 (needs a real `swift`).
26
- */
27
- import { spawnSync } from 'node:child_process';
28
- import { existsSync, mkdtempSync, readdirSync, readFileSync, rmSync, writeFileSync, } from 'node:fs';
29
- import { tmpdir } from 'node:os';
30
- import { join } from 'node:path';
31
- import { PNG } from 'pngjs';
32
- import { describe, test, expect, afterAll } from '@jest/globals';
33
- import { runTrimAlign } from './trim-align.js';
34
- const realSwiftTest = process.env.CIBUILD_UI_FIDELITY_REAL_SWIFT === '1' ? test : test.skip;
35
- // The retired helper, verbatim (was TRIM_HELPER_SWIFT_SOURCE in
36
- // render-post-processor.ts). Do not edit: it is the oracle the port is
37
- // measured against.
38
- const RETIRED_TRIM_HELPER_SWIFT = [
39
- 'import Foundation',
40
- 'import ImageIO',
41
- 'import CoreGraphics',
42
- 'import UniformTypeIdentifiers',
43
- '',
44
- 'func loadCGImage(_ path: String) -> CGImage? {',
45
- ' guard let src = CGImageSourceCreateWithURL(URL(fileURLWithPath: path) as CFURL, nil),',
46
- ' let img = CGImageSourceCreateImageAtIndex(src, 0, nil) else { return nil }',
47
- ' return img',
48
- '}',
49
- '',
50
- 'func writePNG(_ image: CGImage, to path: String) -> Bool {',
51
- ' guard let dest = CGImageDestinationCreateWithURL(URL(fileURLWithPath: path) as CFURL, UTType.png.identifier as CFString, 1, nil) else { return false }',
52
- ' CGImageDestinationAddImage(dest, image, nil)',
53
- ' return CGImageDestinationFinalize(dest)',
54
- '}',
55
- '',
56
- 'func fitPad(_ image: CGImage, toWidth w: Int, height h: Int) -> CGImage? {',
57
- ' if w <= 0 || h <= 0 { return nil }',
58
- ' let bytesPerRow = w * 4',
59
- ' let space = CGColorSpaceCreateDeviceRGB()',
60
- ' guard let ctx = CGContext(data: nil, width: w, height: h, bitsPerComponent: 8, bytesPerRow: bytesPerRow, space: space, bitmapInfo: CGImageAlphaInfo.premultipliedLast.rawValue) else { return nil }',
61
- ' ctx.clear(CGRect(x: 0, y: 0, width: w, height: h))',
62
- ' ctx.interpolationQuality = .high',
63
- ' let scale = min(Double(w) / Double(image.width), Double(h) / Double(image.height))',
64
- ' let drawW = Double(image.width) * scale',
65
- ' let drawH = Double(image.height) * scale',
66
- ' let originX = (Double(w) - drawW) / 2.0',
67
- ' let originY = (Double(h) - drawH) / 2.0',
68
- ' ctx.draw(image, in: CGRect(x: originX, y: originY, width: drawW, height: drawH))',
69
- ' return ctx.makeImage()',
70
- '}',
71
- '',
72
- 'func contentBoundingBox(_ image: CGImage) -> CGRect? {',
73
- ' let w = image.width, h = image.height',
74
- ' if w == 0 || h == 0 { return nil }',
75
- ' let bytesPerRow = w * 4',
76
- ' var data = [UInt8](repeating: 0, count: bytesPerRow * h)',
77
- ' let space = CGColorSpaceCreateDeviceRGB()',
78
- ' guard let ctx = CGContext(data: &data, width: w, height: h, bitsPerComponent: 8, bytesPerRow: bytesPerRow, space: space, bitmapInfo: CGImageAlphaInfo.premultipliedLast.rawValue) else { return nil }',
79
- ' ctx.draw(image, in: CGRect(x: 0, y: 0, width: w, height: h))',
80
- ' let tolerance = 4',
81
- ' func sample(_ x: Int, _ y: Int) -> (Int, Int, Int, Int) {',
82
- ' let i = y * bytesPerRow + x * 4',
83
- ' return (Int(data[i]), Int(data[i + 1]), Int(data[i + 2]), Int(data[i + 3]))',
84
- ' }',
85
- ' var aMinX = w, aMinY = h, aMaxX = -1, aMaxY = -1',
86
- ' for y in 0..<h {',
87
- ' let rowBase = y * bytesPerRow',
88
- ' for x in 0..<w {',
89
- ' if data[rowBase + x * 4 + 3] > 0 {',
90
- ' if x < aMinX { aMinX = x }',
91
- ' if x > aMaxX { aMaxX = x }',
92
- ' if y < aMinY { aMinY = y }',
93
- ' if y > aMaxY { aMaxY = y }',
94
- ' }',
95
- ' }',
96
- ' }',
97
- ' if aMaxX < 0 { return nil }',
98
- ' let opaqueBox = CGRect(x: aMinX, y: aMinY, width: aMaxX - aMinX + 1, height: aMaxY - aMinY + 1)',
99
- ' let corners = [sample(aMinX, aMinY), sample(aMaxX, aMinY), sample(aMinX, aMaxY), sample(aMaxX, aMaxY)]',
100
- ' var background: (Int, Int, Int, Int)? = corners[0]',
101
- ' for c in corners {',
102
- ' if let bg = background {',
103
- ' if c.3 == 0 || abs(c.0 - bg.0) > tolerance || abs(c.1 - bg.1) > tolerance || abs(c.2 - bg.2) > tolerance || abs(c.3 - bg.3) > tolerance {',
104
- ' background = nil',
105
- ' }',
106
- ' }',
107
- ' }',
108
- ' guard let bg = background else { return opaqueBox }',
109
- ' var minX = aMaxX + 1, minY = aMaxY + 1, maxX = aMinX - 1, maxY = aMinY - 1',
110
- ' for y in aMinY...aMaxY {',
111
- ' let rowBase = y * bytesPerRow',
112
- ' for x in aMinX...aMaxX {',
113
- ' let idx = rowBase + x * 4',
114
- ' let a = Int(data[idx + 3])',
115
- ' if a == 0 { continue }',
116
- ' let r = Int(data[idx]), g = Int(data[idx + 1]), b = Int(data[idx + 2])',
117
- ' if abs(r - bg.0) <= tolerance && abs(g - bg.1) <= tolerance && abs(b - bg.2) <= tolerance && abs(a - bg.3) <= tolerance { continue }',
118
- ' if x < minX { minX = x }',
119
- ' if x > maxX { maxX = x }',
120
- ' if y < minY { minY = y }',
121
- ' if y > maxY { maxY = y }',
122
- ' }',
123
- ' }',
124
- ' if maxX < minX { return opaqueBox }',
125
- ' return CGRect(x: minX, y: minY, width: maxX - minX + 1, height: maxY - minY + 1)',
126
- '}',
127
- '',
128
- 'let arguments = CommandLine.arguments',
129
- 'guard arguments.count >= 3 else {',
130
- ' FileHandle.standardError.write(Data("usage: Trim <in.png> <out.png>".utf8))',
131
- ' exit(64)',
132
- '}',
133
- 'let inputPath = arguments[1]',
134
- 'let outputPath = arguments[2]',
135
- 'guard let image = loadCGImage(inputPath) else {',
136
- ' FileHandle.standardError.write(Data(("could not read image at " + inputPath).utf8))',
137
- ' exit(65)',
138
- '}',
139
- 'guard let box = contentBoundingBox(image) else {',
140
- ' FileHandle.standardError.write(Data("no content to trim (image is uniform)".utf8))',
141
- ' exit(66)',
142
- '}',
143
- 'guard let cropped = image.cropping(to: box) else {',
144
- ' FileHandle.standardError.write(Data("could not crop image".utf8))',
145
- ' exit(67)',
146
- '}',
147
- 'let croppedWidth = cropped.width',
148
- 'let croppedHeight = cropped.height',
149
- 'guard writePNG(cropped, to: outputPath) else {',
150
- ' FileHandle.standardError.write(Data(("could not write trimmed PNG to " + outputPath).utf8))',
151
- ' exit(68)',
152
- '}',
153
- 'var referenceWidth = 0',
154
- 'var referenceHeight = 0',
155
- 'if arguments.count >= 5 {',
156
- ' let alignedPath = arguments[3]',
157
- ' let referencePath = arguments[4]',
158
- ' if let reference = loadCGImage(referencePath) {',
159
- ' referenceWidth = reference.width',
160
- ' referenceHeight = reference.height',
161
- ' if let aligned = fitPad(cropped, toWidth: referenceWidth, height: referenceHeight) {',
162
- ' _ = writePNG(aligned, to: alignedPath)',
163
- ' }',
164
- ' }',
165
- '}',
166
- 'print("TRIMDIMS " + String(croppedWidth) + " " + String(croppedHeight) + " " + String(referenceWidth) + " " + String(referenceHeight) + " " + String(image.width) + " " + String(image.height))',
167
- ].join('\n') + '\n';
168
- function craftPng(w, h, rects) {
169
- const png = new PNG({ width: w, height: h });
170
- for (const rect of rects) {
171
- for (let y = rect.y; y < rect.y + rect.h; y++) {
172
- for (let x = rect.x; x < rect.x + rect.w; x++) {
173
- const i = (y * w + x) * 4;
174
- png.data[i] = rect.r;
175
- png.data[i + 1] = rect.g;
176
- png.data[i + 2] = rect.b;
177
- png.data[i + 3] = rect.a;
178
- }
179
- }
180
- }
181
- return PNG.sync.write(png);
182
- }
183
- /** A gradient-alpha disc over a white card — anti-aliased-edge analog. */
184
- function craftAntiAliasedScene() {
185
- const w = 160;
186
- const h = 120;
187
- const png = new PNG({ width: w, height: h });
188
- // White card with a transparent margin.
189
- for (let y = 10; y < 110; y++) {
190
- for (let x = 10; x < 150; x++) {
191
- const i = (y * w + x) * 4;
192
- png.data[i] = 255;
193
- png.data[i + 1] = 255;
194
- png.data[i + 2] = 255;
195
- png.data[i + 3] = 255;
196
- }
197
- }
198
- // Soft-edged blue disc: alpha falls off with distance (many partial alphas,
199
- // including the 251..254 band where premultiplied analysis is sensitive).
200
- const cx = 80;
201
- const cy = 60;
202
- for (let y = 20; y < 100; y++) {
203
- for (let x = 30; x < 130; x++) {
204
- const d = Math.sqrt((x - cx) ** 2 + (y - cy) ** 2);
205
- if (d < 36) {
206
- const alpha = d < 28 ? 255 : Math.max(0, Math.round(255 * (36 - d) / 8));
207
- if (alpha === 0)
208
- continue;
209
- const i = (y * w + x) * 4;
210
- png.data[i] = 30;
211
- png.data[i + 1] = 90;
212
- png.data[i + 2] = 220;
213
- png.data[i + 3] = Math.max(png.data[i + 3], alpha);
214
- }
215
- }
216
- }
217
- return PNG.sync.write(png);
218
- }
219
- function decode(filePath) {
220
- const png = PNG.sync.read(readFileSync(filePath));
221
- return { width: png.width, height: png.height, data: png.data };
222
- }
223
- function diffPixels(a, b) {
224
- const totalPixels = a.width * a.height;
225
- let differingPixels = 0;
226
- let maxChannelDelta = 0;
227
- for (let i = 0; i < a.data.length; i += 4) {
228
- let pixelDiffers = false;
229
- for (let c = 0; c < 4; c++) {
230
- const delta = Math.abs(a.data[i + c] - b.data[i + c]);
231
- if (delta > 0)
232
- pixelDiffers = true;
233
- if (delta > maxChannelDelta)
234
- maxChannelDelta = delta;
235
- }
236
- if (pixelDiffers)
237
- differingPixels++;
238
- }
239
- return { totalPixels, differingPixels, maxChannelDelta };
240
- }
241
- // ---- the gate -----------------------------------------------------------------------
242
- describe('trim/align corpus gate — retired Swift helper vs JS port', () => {
243
- const dirs = [];
244
- const resampledSummaries = [];
245
- afterAll(() => {
246
- if (resampledSummaries.length > 0) {
247
- // eslint-disable-next-line no-console
248
- console.log('[corpus] CG-resampled aligned outputs (geometry asserted, pixels reported):\n' +
249
- resampledSummaries.join('\n'));
250
- }
251
- for (const dir of dirs) {
252
- try {
253
- rmSync(dir, { recursive: true, force: true });
254
- }
255
- catch {
256
- // best effort
257
- }
258
- }
259
- });
260
- function scene() {
261
- const dir = mkdtempSync(join(tmpdir(), 'trim-corpus-'));
262
- dirs.push(dir);
263
- return dir;
264
- }
265
- function runSwiftHelper(dir, input, output, aligned, reference) {
266
- const helper = join(dir, 'Trim.swift');
267
- if (!existsSync(helper))
268
- writeFileSync(helper, RETIRED_TRIM_HELPER_SWIFT);
269
- const args = [helper, input, output];
270
- if (aligned && reference)
271
- args.push(aligned, reference);
272
- return spawnSync('swift', args, { encoding: 'utf-8', maxBuffer: 16 * 1024 * 1024 });
273
- }
274
- function lastTrimDims(stdout) {
275
- const lines = String(stdout || '')
276
- .split('\n')
277
- .filter((l) => l.trim().startsWith('TRIMDIMS'));
278
- return lines.length > 0 ? lines[lines.length - 1].trim() : null;
279
- }
280
- /**
281
- * Runs both helpers over one (input, reference?) case and enforces the gate.
282
- * Returns a human line describing the case outcome.
283
- */
284
- function compareCase(label, inputBytes, referenceBytes) {
285
- const dir = scene();
286
- const input = join(dir, 'in.png');
287
- writeFileSync(input, inputBytes);
288
- let reference;
289
- if (referenceBytes !== null) {
290
- reference = join(dir, 'ref.png');
291
- writeFileSync(reference, referenceBytes);
292
- }
293
- const outSwift = join(dir, 'out-swift.png');
294
- const alignedSwift = join(dir, 'aligned-swift.png');
295
- const outJs = join(dir, 'out-js.png');
296
- const alignedJs = join(dir, 'aligned-js.png');
297
- const swiftRun = runSwiftHelper(dir, input, outSwift, reference ? alignedSwift : undefined, reference);
298
- const jsArgs = reference ? [input, outJs, alignedJs, reference] : [input, outJs];
299
- const jsRun = runTrimAlign(jsArgs);
300
- // Same verdict on every input, success or failure.
301
- expect(`${label}: js status ${jsRun.status}`).toBe(`${label}: js status ${swiftRun.status}`);
302
- if (swiftRun.status !== 0)
303
- return;
304
- // TRIMDIMS identical.
305
- const swiftDims = lastTrimDims(swiftRun.stdout);
306
- const jsDims = lastTrimDims(jsRun.stdout);
307
- expect(`${label}: ${jsDims}`).toBe(`${label}: ${swiftDims}`);
308
- // Trimmed output pixel-identical (the fidelity-history surface).
309
- const trimmedSwift = decode(outSwift);
310
- const trimmedJs = decode(outJs);
311
- expect(`${label}: trimmed ${trimmedJs.width}x${trimmedJs.height}`).toBe(`${label}: trimmed ${trimmedSwift.width}x${trimmedSwift.height}`);
312
- const trimmedDiff = diffPixels(trimmedSwift, trimmedJs);
313
- expect(`${label}: trimmed differing=${trimmedDiff.differingPixels} maxDelta=${trimmedDiff.maxChannelDelta}`).toBe(`${label}: trimmed differing=0 maxDelta=0`);
314
- // Aligned output: identical when CG did not resample; geometry + report otherwise.
315
- if (existsSync(alignedSwift) || existsSync(alignedJs)) {
316
- expect(existsSync(alignedJs)).toBe(existsSync(alignedSwift));
317
- if (existsSync(alignedSwift)) {
318
- const aSwift = decode(alignedSwift);
319
- const aJs = decode(alignedJs);
320
- expect(`${label}: aligned ${aJs.width}x${aJs.height}`).toBe(`${label}: aligned ${aSwift.width}x${aSwift.height}`);
321
- const identity = trimmedSwift.width === aSwift.width && trimmedSwift.height === aSwift.height;
322
- const alignedDiff = diffPixels(aSwift, aJs);
323
- if (identity) {
324
- expect(`${label}: aligned(identity) differing=${alignedDiff.differingPixels} maxDelta=${alignedDiff.maxChannelDelta}`).toBe(`${label}: aligned(identity) differing=0 maxDelta=0`);
325
- }
326
- else if (alignedDiff.differingPixels > 0) {
327
- resampledSummaries.push(` ${label}: ${alignedDiff.differingPixels}/${alignedDiff.totalPixels} px differ, ` +
328
- `max channel delta ${alignedDiff.maxChannelDelta}`);
329
- }
330
- }
331
- }
332
- }
333
- const RED = { r: 255, g: 0, b: 0, a: 255 };
334
- const BLUE = { r: 0, g: 0, b: 255, a: 255 };
335
- const WHITE = { r: 255, g: 255, b: 255, a: 255 };
336
- const PINK = { r: 255, g: 240, b: 238, a: 255 };
337
- realSwiftTest('crafted scenes: every bounding-box branch is pixel-identical', () => {
338
- compareCase('transparent-frame', craftPng(200, 200, [{ x: 30, y: 50, w: 60, h: 40, ...RED }]), null);
339
- compareCase('uniform-background-wrapper', craftPng(420, 320, [
340
- { x: 20, y: 40, w: 375, h: 200, ...WHITE },
341
- { x: 36, y: 56, w: 343, h: 168, ...PINK },
342
- ]), null);
343
- compareCase('corners-disagree', craftPng(120, 120, [
344
- { x: 20, y: 20, w: 40, h: 80, ...RED },
345
- { x: 60, y: 20, w: 40, h: 80, ...BLUE },
346
- ]), null);
347
- compareCase('fully-opaque-uniform', craftPng(64, 48, [{ x: 0, y: 0, w: 64, h: 48, ...WHITE }]), null);
348
- compareCase('fully-transparent', craftPng(40, 40, []), null);
349
- compareCase('anti-aliased-edges', craftAntiAliasedScene(), null);
350
- compareCase('aligned-identity', craftPng(80, 40, [
351
- { x: 0, y: 0, w: 40, h: 40, ...RED },
352
- { x: 40, y: 0, w: 40, h: 40, ...BLUE },
353
- ]), craftPng(80, 40, [{ x: 0, y: 0, w: 80, h: 40, ...WHITE }]));
354
- compareCase('aligned-letterbox', craftPng(80, 40, [{ x: 0, y: 0, w: 80, h: 40, ...RED }]), craftPng(50, 50, [{ x: 0, y: 0, w: 50, h: 50, ...BLUE }]));
355
- compareCase('aligned-aa-content', craftAntiAliasedScene(), craftPng(140, 100, [{ x: 0, y: 0, w: 140, h: 100, ...WHITE }]));
356
- }, 900_000);
357
- realSwiftTest('real corpus: every PNG pair under CIBUILD_TRIM_CORPUS_DIR is pixel-identical', () => {
358
- const corpusDir = process.env.CIBUILD_TRIM_CORPUS_DIR;
359
- if (!corpusDir) {
360
- // eslint-disable-next-line no-console
361
- console.log('[corpus] CIBUILD_TRIM_CORPUS_DIR not set — real-corpus pass skipped');
362
- return;
363
- }
364
- const entries = readdirSync(corpusDir)
365
- .filter((name) => name.toLowerCase().endsWith('.png'))
366
- .sort();
367
- expect(entries.length).toBeGreaterThan(0);
368
- // eslint-disable-next-line no-console
369
- console.log(`[corpus] ${entries.length} real PNGs from ${corpusDir}`);
370
- for (let i = 0; i < entries.length; i++) {
371
- const name = entries[i];
372
- const bytes = readFileSync(join(corpusDir, name));
373
- // No-reference case: trim only.
374
- compareCase(`${name} (no-ref)`, bytes, null);
375
- // Self-reference: reference dims = source dims (identity-leaning).
376
- compareCase(`${name} (self-ref)`, bytes, bytes);
377
- // Cross-reference: the next PNG as reference (arbitrary scale factors).
378
- const next = entries[(i + 1) % entries.length];
379
- compareCase(`${name} (ref=${next})`, bytes, readFileSync(join(corpusDir, next)));
380
- }
381
- }, 1_800_000);
382
- });
383
- //# sourceMappingURL=trim-align-corpus.test.js.map
@@ -1,87 +0,0 @@
1
- /**
2
- * Pure-JS trim/align helper — the CoreGraphics port (fidelity-linux 06).
3
- *
4
- * This is a PORT of the embedded Swift helper that used to live in
5
- * render-post-processor.ts (`TRIM_HELPER_SWIFT_SOURCE`), not a redesign: the
6
- * bounding-box semantics (alpha pass, corner-derived uniform background,
7
- * tolerance 4, never-crop-to-nothing fallback), the fit-pad geometry
8
- * (aspect-preserving scale, centered, transparent letterbox) and the TRIMDIMS
9
- * contract are byte-for-byte the Swift behavior. CoreGraphics/ImageIO do not
10
- * exist on Linux, so the pixel work moved into the ci binary itself (pngjs is
11
- * pure JS and bundles via bundle.mjs) — iOS and Android now run the SAME bytes,
12
- * and output pixels can only change with our lockfile, never with a runner OS
13
- * upgrade.
14
- *
15
- * Port-fidelity notes, load-bearing for the corpus gate:
16
- * - The Swift helper ANALYZED pixels through a premultiplied-alpha CGContext
17
- * but CROPPED the original (straight-alpha) image. We mirror both: the
18
- * bounding box is computed over premultiplied values, the trimmed output is
19
- * a raw copy of the source pixels.
20
- * - The Swift aligned output was drawn through a premultiplied context and
21
- * unpremultiplied on PNG encode, which is lossy on semi-transparent pixels;
22
- * we reproduce that roundtrip. Where CoreGraphics RESAMPLED (trimmed size ≠
23
- * reference size), its proprietary `.high` interpolation is not bit-exactly
24
- * reproducible — we use bilinear filtering in premultiplied space. The
25
- * trimmed image and TRIMDIMS never depend on resampling and are the
26
- * pixel-identical surface the corpus gate enforces.
27
- */
28
- import { PNG } from 'pngjs';
29
- /** Content bounding box in top-left image coordinates. */
30
- export interface ContentBox {
31
- x: number;
32
- y: number;
33
- width: number;
34
- height: number;
35
- }
36
- /** Mirror of the Swift helper's exit codes. */
37
- export declare const TRIM_EXIT_USAGE = 64;
38
- export declare const TRIM_EXIT_UNREADABLE = 65;
39
- export declare const TRIM_EXIT_NO_CONTENT = 66;
40
- export declare const TRIM_EXIT_WRITE_FAILED = 68;
41
- /**
42
- * Bounding box of content: pixels that are neither transparent nor part of a
43
- * uniform solid background. Two passes, because the renderer forces the view
44
- * into a fixed device frame whose margins are transparent: (1) bound the
45
- * non-transparent pixels, then (2) detect a uniform opaque background from the
46
- * CORNERS OF THAT OPAQUE BOX — not the raw frame, whose corners are the
47
- * transparent device margin — and bound everything that is not that
48
- * background. A wrapper that fills the canvas with .background(.white) is thus
49
- * trimmed to its real content. When the opaque corners disagree, only
50
- * transparency is trimmed. Top-left image coordinates.
51
- *
52
- * `data` is straight-alpha RGBA8 (as pngjs decodes); the color comparisons run
53
- * on premultiplied values to mirror the Swift helper's analysis context.
54
- */
55
- export declare function contentBoundingBox(data: Buffer | Uint8Array, width: number, height: number): ContentBox | null;
56
- /** Raw pixel copy of a region — the Swift `image.cropping(to:)` equivalent. */
57
- export declare function cropImage(src: PNG, box: ContentBox): PNG;
58
- /**
59
- * Draw `src` centered on a transparent reference-sized canvas, scaled to fit
60
- * while PRESERVING its aspect ratio. Unlike a stretch-to-fit (which distorts
61
- * proportions when the aspect ratios differ), this keeps the rendered shape
62
- * honest: an aspect mismatch shows as transparent letterbox/pillarbox padding
63
- * rather than a squished image, while the canvas stays exactly reference-sized
64
- * so the pair still overlays 1:1.
65
- *
66
- * Compositing happens in premultiplied space with an unpremultiply on the way
67
- * out, mirroring the Swift context roundtrip. Resampling is bilinear (see the
68
- * module docblock for why CG's `.high` filter is not reproducible).
69
- */
70
- export declare function fitPad(src: PNG, width: number, height: number): PNG | null;
71
- /** Result of one helper invocation — the process-free CLI contract. */
72
- export interface TrimAlignResult {
73
- status: number;
74
- stdout: string;
75
- stderr: string;
76
- }
77
- /**
78
- * The helper entry point, argv-compatible with the retired Swift helper:
79
- * `[in.png, out.png]` or `[in.png, out.png, aligned.png, reference.png]`.
80
- * Crops the input to its content bounding box, optionally writes a
81
- * reference-sized aligned copy (best-effort), and reports a TRIMDIMS line
82
- * (`TRIMDIMS <rW> <rH> <refW> <refH> <srcW> <srcH> <offX> <offY>` — the crop
83
- * origin appended 2026-08-01, older consumers ignore it). Same exit codes,
84
- * same stdout/stderr shape as the Swift helper.
85
- */
86
- export declare function runTrimAlign(argv: string[]): TrimAlignResult;
87
- //# sourceMappingURL=trim-align.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"trim-align.d.ts","sourceRoot":"","sources":["../../../../src/yaml/steps/trim-align.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAGH,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAE5B,0DAA0D;AAC1D,MAAM,WAAW,UAAU;IACzB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,+CAA+C;AAC/C,eAAO,MAAM,eAAe,KAAK,CAAC;AAClC,eAAO,MAAM,oBAAoB,KAAK,CAAC;AACvC,eAAO,MAAM,oBAAoB,KAAK,CAAC;AACvC,eAAO,MAAM,sBAAsB,KAAK,CAAC;AA0BzC;;;;;;;;;;;;;GAaG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,GAAG,UAAU,EACzB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb,UAAU,GAAG,IAAI,CAkGnB;AAED,+EAA+E;AAC/E,wBAAgB,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,GAAG,GAAG,CAOxD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,GAAG,GAAG,IAAI,CAyE1E;AAED,uEAAuE;AACvE,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,eAAe,CA8F5D"}