@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,79 +0,0 @@
1
- /**
2
- * Fastlane step: run a fastlane lane
3
- */
4
- import { BaseStepExecutor } from './base.js';
5
- /**
6
- * Runs a fastlane lane with Gemfile detection and optional gem update.
7
- */
8
- export class FastlaneStepExecutor extends BaseStepExecutor {
9
- getValidationRequirements(_inputs, _env, _config) {
10
- return [
11
- this.requireCommand('fastlane', 'fastlane is required (install via gem install fastlane or Bundler)'),
12
- ];
13
- }
14
- getOutputs() {
15
- return [];
16
- }
17
- async execute(inputs, _env, _config) {
18
- const stepName = 'fastlane';
19
- const lane = this.getRequiredInput(inputs, 'lane', stepName);
20
- const workDir = this.getInput(inputs, 'work_dir', '');
21
- const updateFastlane = this.getInput(inputs, 'update_fastlane', 'true') === 'true';
22
- const verboseLog = ['yes', 'true'].includes(this.getInput(inputs, 'verbose_log', 'no'));
23
- const enableCache = ['yes', 'true'].includes(this.getInput(inputs, 'enable_cache', 'yes'));
24
- const commands = [];
25
- commands.push('# fastlane — run a fastlane lane');
26
- commands.push('echo "🚀 Running fastlane..."');
27
- commands.push('');
28
- // Change to working directory if specified
29
- if (workDir) {
30
- commands.push(`cd '${this.escapeBash(workDir)}'`);
31
- commands.push('');
32
- }
33
- // Detect Gemfile for bundle exec
34
- commands.push('# Detect Gemfile for bundle exec');
35
- commands.push('USE_BUNDLE_EXEC="false"');
36
- commands.push('if [ -f "Gemfile" ] || [ -f "Gemfile.lock" ]; then');
37
- commands.push(' if grep -q "fastlane" Gemfile.lock 2>/dev/null || grep -q "fastlane" Gemfile 2>/dev/null; then');
38
- commands.push(' USE_BUNDLE_EXEC="true"');
39
- commands.push(' echo "Gemfile detected with fastlane — using bundle exec"');
40
- commands.push(' fi');
41
- commands.push('fi');
42
- commands.push('');
43
- // Optionally update fastlane
44
- if (updateFastlane) {
45
- commands.push('# Update fastlane gem (skipped if Gemfile manages it)');
46
- commands.push('if [ "$USE_BUNDLE_EXEC" = "true" ]; then');
47
- commands.push(' echo "Gemfile present — running bundle install instead of gem update"');
48
- commands.push(' bundle install');
49
- commands.push('else');
50
- commands.push(' echo "Updating fastlane gem..."');
51
- commands.push(' gem install fastlane --no-document');
52
- commands.push('fi');
53
- commands.push('');
54
- }
55
- // Build the fastlane command
56
- const verboseFlag = verboseLog ? ' --verbose' : '';
57
- commands.push('# Run fastlane');
58
- commands.push('if [ "$USE_BUNDLE_EXEC" = "true" ]; then');
59
- commands.push(` bundle exec fastlane ${this.escapeBash(lane)}${verboseFlag}`);
60
- commands.push('else');
61
- commands.push(` fastlane ${this.escapeBash(lane)}${verboseFlag}`);
62
- commands.push('fi');
63
- commands.push('');
64
- // Cache collection
65
- if (enableCache) {
66
- commands.push('# Collect cache paths');
67
- commands.push('if [ -f "Podfile.lock" ]; then');
68
- commands.push(' echo "Cache: Pods directory detected"');
69
- commands.push('fi');
70
- commands.push('if [ -f "Cartfile.resolved" ]; then');
71
- commands.push(' echo "Cache: Carthage directory detected"');
72
- commands.push('fi');
73
- }
74
- commands.push('echo "✅ fastlane lane complete"');
75
- const script = this.createBashScriptFromCommands(commands, stepName);
76
- return this.createScriptStep(script, stepName);
77
- }
78
- }
79
- //# sourceMappingURL=fastlane.js.map
@@ -1,53 +0,0 @@
1
- /**
2
- * Fidelity aspect-ratio guard.
3
- *
4
- * One named composable per state is the authoring norm; the failure this
5
- * catches is the opposite — several states stacked into one composable, which
6
- * renders far taller (or wider) than the single-state reference it is paired
7
- * against. That shows up as a sharp divergence between the rendered and
8
- * reference aspect ratios, well before a human reads the diff.
9
- *
10
- * The guard is a pure comparison over the dimensions the render already
11
- * reports (`rendered_px`, `reference_px`). It emits a WARNING when the
12
- * divergence exceeds a documented fold factor — it never fails the render, and
13
- * it stays silent when there is no reference to compare against.
14
- */
15
- /** Pixel dimensions as `[width, height]`. */
16
- export type PixelSize = [number, number];
17
- /**
18
- * Fold factor beyond which a rendered/reference aspect-ratio divergence is
19
- * worth a warning. A faithful single-state wrapper sits near 1.0; trim and
20
- * reference alignment nudge it a few percent; a re-stacked 2-up wrapper roughly
21
- * doubles one dimension and lands near 2.0. 1.5 catches the stack while
22
- * tolerating the wobble.
23
- */
24
- export declare const ASPECT_RATIO_WARN_FACTOR = 1.5;
25
- /** The outcome of comparing a rendered aspect ratio to its reference. */
26
- export interface AspectRatioCheck {
27
- /** True only when both sizes are present and strictly positive. */
28
- comparable: boolean;
29
- /** Rendered width/height, or null when not comparable. */
30
- renderedAspect: number | null;
31
- /** Reference width/height, or null when not comparable. */
32
- referenceAspect: number | null;
33
- /**
34
- * Symmetric divergence `max(r/ref, ref/r)` (≥ 1), or null when not
35
- * comparable. 1.0 means identical proportions.
36
- */
37
- divergence: number | null;
38
- /** True when comparable and the divergence exceeds the fold factor. */
39
- warn: boolean;
40
- }
41
- /**
42
- * Compares a rendered size against its reference size. Returns a
43
- * non-warning, non-comparable result when either size is missing or
44
- * non-positive — the guard only speaks when it has two real frames to compare.
45
- */
46
- export declare function evaluateAspectRatio(renderedPx: PixelSize | null, referencePx: PixelSize | null, factor?: number): AspectRatioCheck;
47
- /**
48
- * Human/agent-readable warning line for a divergent screen, or null when the
49
- * screen does not warrant one. The caller decides where to surface it (preview
50
- * result, preflight output) — it is advisory, never a failure.
51
- */
52
- export declare function formatAspectRatioWarning(screen: string, check: AspectRatioCheck): string | null;
53
- //# sourceMappingURL=fidelity-aspect-guard.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fidelity-aspect-guard.d.ts","sourceRoot":"","sources":["../../../../src/yaml/steps/fidelity-aspect-guard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,6CAA6C;AAC7C,MAAM,MAAM,SAAS,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAEzC;;;;;;GAMG;AACH,eAAO,MAAM,wBAAwB,MAAM,CAAC;AAE5C,yEAAyE;AACzE,MAAM,WAAW,gBAAgB;IAC/B,mEAAmE;IACnE,UAAU,EAAE,OAAO,CAAC;IACpB,0DAA0D;IAC1D,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,2DAA2D;IAC3D,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B;;;OAGG;IACH,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,uEAAuE;IACvE,IAAI,EAAE,OAAO,CAAC;CACf;AAaD;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,SAAS,GAAG,IAAI,EAC5B,WAAW,EAAE,SAAS,GAAG,IAAI,EAC7B,MAAM,GAAE,MAAiC,GACxC,gBAAgB,CAyBlB;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,gBAAgB,GACtB,MAAM,GAAG,IAAI,CAUf"}
@@ -1,72 +0,0 @@
1
- /**
2
- * Fidelity aspect-ratio guard.
3
- *
4
- * One named composable per state is the authoring norm; the failure this
5
- * catches is the opposite — several states stacked into one composable, which
6
- * renders far taller (or wider) than the single-state reference it is paired
7
- * against. That shows up as a sharp divergence between the rendered and
8
- * reference aspect ratios, well before a human reads the diff.
9
- *
10
- * The guard is a pure comparison over the dimensions the render already
11
- * reports (`rendered_px`, `reference_px`). It emits a WARNING when the
12
- * divergence exceeds a documented fold factor — it never fails the render, and
13
- * it stays silent when there is no reference to compare against.
14
- */
15
- /**
16
- * Fold factor beyond which a rendered/reference aspect-ratio divergence is
17
- * worth a warning. A faithful single-state wrapper sits near 1.0; trim and
18
- * reference alignment nudge it a few percent; a re-stacked 2-up wrapper roughly
19
- * doubles one dimension and lands near 2.0. 1.5 catches the stack while
20
- * tolerating the wobble.
21
- */
22
- export const ASPECT_RATIO_WARN_FACTOR = 1.5;
23
- function isPositiveSize(size) {
24
- return (Array.isArray(size) &&
25
- size.length === 2 &&
26
- Number.isFinite(size[0]) &&
27
- Number.isFinite(size[1]) &&
28
- size[0] > 0 &&
29
- size[1] > 0);
30
- }
31
- /**
32
- * Compares a rendered size against its reference size. Returns a
33
- * non-warning, non-comparable result when either size is missing or
34
- * non-positive — the guard only speaks when it has two real frames to compare.
35
- */
36
- export function evaluateAspectRatio(renderedPx, referencePx, factor = ASPECT_RATIO_WARN_FACTOR) {
37
- if (!isPositiveSize(renderedPx) || !isPositiveSize(referencePx)) {
38
- return {
39
- comparable: false,
40
- renderedAspect: null,
41
- referenceAspect: null,
42
- divergence: null,
43
- warn: false,
44
- };
45
- }
46
- const renderedAspect = renderedPx[0] / renderedPx[1];
47
- const referenceAspect = referencePx[0] / referencePx[1];
48
- const divergence = Math.max(renderedAspect / referenceAspect, referenceAspect / renderedAspect);
49
- return {
50
- comparable: true,
51
- renderedAspect,
52
- referenceAspect,
53
- divergence,
54
- warn: divergence > factor,
55
- };
56
- }
57
- /**
58
- * Human/agent-readable warning line for a divergent screen, or null when the
59
- * screen does not warrant one. The caller decides where to surface it (preview
60
- * result, preflight output) — it is advisory, never a failure.
61
- */
62
- export function formatAspectRatioWarning(screen, check) {
63
- if (!check.warn || check.divergence === null)
64
- return null;
65
- const r = check.renderedAspect?.toFixed(2);
66
- const ref = check.referenceAspect?.toFixed(2);
67
- return (`Screen "${screen}" renders at aspect ratio ${r}:1 but its reference is ` +
68
- `${ref}:1 (${check.divergence.toFixed(1)}× divergence). This often means ` +
69
- `multiple states were stacked into one composable — author one named ` +
70
- `composable per state instead.`);
71
- }
72
- //# sourceMappingURL=fidelity-aspect-guard.js.map
@@ -1,11 +0,0 @@
1
- /**
2
- * Unit tests for the fidelity aspect-ratio guard.
3
- *
4
- * A wrapper that stacks several states into one composable renders far taller
5
- * (or wider) than its single-state reference, so its aspect ratio diverges
6
- * sharply from the reference's. The guard is the early warning for that
7
- * re-stacking: it compares the rendered vs reference aspect ratios and flags a
8
- * divergence beyond a documented fold factor — a WARNING, never a failure.
9
- */
10
- export {};
11
- //# sourceMappingURL=fidelity-aspect-guard.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fidelity-aspect-guard.test.d.ts","sourceRoot":"","sources":["../../../../src/yaml/steps/fidelity-aspect-guard.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG"}
@@ -1,50 +0,0 @@
1
- /**
2
- * Unit tests for the fidelity aspect-ratio guard.
3
- *
4
- * A wrapper that stacks several states into one composable renders far taller
5
- * (or wider) than its single-state reference, so its aspect ratio diverges
6
- * sharply from the reference's. The guard is the early warning for that
7
- * re-stacking: it compares the rendered vs reference aspect ratios and flags a
8
- * divergence beyond a documented fold factor — a WARNING, never a failure.
9
- */
10
- import { describe, test, expect } from '@jest/globals';
11
- import { evaluateAspectRatio, ASPECT_RATIO_WARN_FACTOR, } from './fidelity-aspect-guard.js';
12
- describe('evaluateAspectRatio', () => {
13
- test('does not warn when rendered and reference aspect ratios match', () => {
14
- // A faithful single-state banner: same proportions as its reference.
15
- const check = evaluateAspectRatio([720, 1280], [360, 640]);
16
- expect(check.comparable).toBe(true);
17
- expect(check.warn).toBe(false);
18
- expect(check.divergence).toBeCloseTo(1, 5);
19
- });
20
- test('warns when a stacked render is far off the reference aspect ratio', () => {
21
- // The canonical miss: two banner states stacked in one Column render at
22
- // ~2.2:1, judged against a single-state ~4.76:1 reference.
23
- const rendered = [880, 400]; // 2.2:1
24
- const reference = [952, 200]; // 4.76:1
25
- const check = evaluateAspectRatio(rendered, reference);
26
- expect(check.comparable).toBe(true);
27
- expect(check.warn).toBe(true);
28
- expect(check.divergence).toBeCloseTo(4.76 / 2.2, 1);
29
- });
30
- test('tolerates a small alignment/trim wobble within the fold factor', () => {
31
- // Trim + reference alignment can nudge dimensions a few percent; that must
32
- // not trip the warning.
33
- const check = evaluateAspectRatio([726, 1280], [360, 640]);
34
- expect(check.warn).toBe(false);
35
- });
36
- test('is not comparable when there is no reference', () => {
37
- const check = evaluateAspectRatio([720, 1280], null);
38
- expect(check.comparable).toBe(false);
39
- expect(check.warn).toBe(false);
40
- });
41
- test('is not comparable when a dimension is zero or negative', () => {
42
- expect(evaluateAspectRatio([720, 0], [360, 640]).comparable).toBe(false);
43
- expect(evaluateAspectRatio([720, 1280], [0, 640]).comparable).toBe(false);
44
- });
45
- test('exposes a sane default fold factor', () => {
46
- expect(ASPECT_RATIO_WARN_FACTOR).toBeGreaterThan(1);
47
- expect(ASPECT_RATIO_WARN_FACTOR).toBeLessThan(2);
48
- });
49
- });
50
- //# sourceMappingURL=fidelity-aspect-guard.test.js.map
@@ -1,87 +0,0 @@
1
- /**
2
- * Reference-provenance assessment.
3
- *
4
- * A UI-fidelity reference is a PNG the gate cannot read, so reference validity
5
- * is asserted at export time as provenance metadata (`figmaNode`, `locale`,
6
- * `resolved`, `exportedAt`) and the gate checks that METADATA — never the
7
- * pixels, never via OCR.
8
- *
9
- * The assessment splits into two severities:
10
- *
11
- * - FATAL faults → status `unverifiable` for the screen. A reference that is
12
- * absent has nothing to judge against (`REFERENCE_ABSENT`); a screen with no
13
- * provenance while the run declares a render locale keeps the legacy
14
- * `NO_PROVENANCE` verdict (verifiable is earned only through the full
15
- * export path, and it kills the ad-hoc-Figma-fetch root cause).
16
- * - COPY-CHANNEL downgrades → the screen still renders and is judged on
17
- * geometry, colors, typeface, spans, and lines; only copy comparisons are
18
- * skipped, reported as a structured `copy_unverifiable` advisory naming the
19
- * reason. Placeholder copy (`resolved == false`) and locale mismatches are
20
- * normal customer reality — dynamic content is designed as placeholders —
21
- * so the product adapts instead of refusing the screen or telling the
22
- * customer to re-export.
23
- *
24
- * The check arms whenever per-screen provenance rides in params; a declared
25
- * render locale is only required for the locale comparison itself. Screens
26
- * with neither provenance nor a declared locale are unarmed and keep the
27
- * caller's legacy behaviour.
28
- *
29
- * Content differences (copy wording, geometry) are deliberately NOT evaluated
30
- * here — those are soft, judged findings that legitimately drift between
31
- * reference-export and gate-run.
32
- *
33
- * This module is the authoritative spec for the check. The Android render
34
- * runtime inlines an equivalent JS implementation (it ships as a self-contained
35
- * script string and cannot import this module); the render-step integration
36
- * tests exercise that inlined copy end-to-end against the same fixtures, so the
37
- * two cannot silently drift.
38
- */
39
- /** Export-time provenance as it travels in the run-input sidecar. */
40
- export interface ReferenceProvenanceMeta {
41
- figmaNode?: string;
42
- locale?: string;
43
- resolved?: boolean;
44
- exportedAt?: string;
45
- }
46
- /** A reason a reference cannot be honestly judged at all. */
47
- export interface ProvenanceFault {
48
- /** Stable machine code (NO_PROVENANCE / REFERENCE_ABSENT). */
49
- code: string;
50
- /** Human/agent-readable reason, naming the screen. */
51
- message: string;
52
- }
53
- /** Advisory code for a downgraded copy channel. */
54
- export declare const COPY_UNVERIFIABLE_CODE = "copy_unverifiable";
55
- /**
56
- * A copy-channel downgrade: the screen is judged normally except that copy
57
- * comparisons are unverifiable for the named reason.
58
- */
59
- export interface CopyChannelAdvisory {
60
- code: typeof COPY_UNVERIFIABLE_CODE;
61
- reason: 'unresolved_placeholders' | 'locale_mismatch';
62
- /** Human/agent-readable reason, naming the screen. */
63
- message: string;
64
- }
65
- /** The outcome of assessing one screen's reference provenance. */
66
- export interface ProvenanceAssessment {
67
- /** Fatal: the screen cannot be judged (status `unverifiable`), or null. */
68
- fault: ProvenanceFault | null;
69
- /** Copy-channel downgrade riding in the per-screen result, or null. */
70
- copyAdvisory: CopyChannelAdvisory | null;
71
- }
72
- /** The per-state status string written to protocol-result.json. */
73
- export declare const UNVERIFIABLE_STATUS = "unverifiable";
74
- /**
75
- * Whether provenance is "present" for arming purposes. A partial object (e.g.
76
- * a hand-dropped `{ figmaNode }`) is treated as no provenance — verifiable is
77
- * earned only through the full export path.
78
- */
79
- export declare function hasReferenceProvenance(p: ReferenceProvenanceMeta | null | undefined): p is ReferenceProvenanceMeta;
80
- /**
81
- * Assesses one screen's reference. Returns a fatal fault (screen
82
- * `unverifiable`), a copy-channel advisory (screen judged, copy skipped), or
83
- * neither. Never both: an absent reference wins over a downgrade because there
84
- * is nothing to judge against.
85
- */
86
- export declare function assessReferenceProvenance(screen: string, provenance: ReferenceProvenanceMeta | null | undefined, renderLocale: string | null, referenceExists: boolean): ProvenanceAssessment;
87
- //# sourceMappingURL=fidelity-reference-provenance.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fidelity-reference-provenance.d.ts","sourceRoot":"","sources":["../../../../src/yaml/steps/fidelity-reference-provenance.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAEH,qEAAqE;AACrE,MAAM,WAAW,uBAAuB;IACtC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,6DAA6D;AAC7D,MAAM,WAAW,eAAe;IAC9B,8DAA8D;IAC9D,IAAI,EAAE,MAAM,CAAC;IACb,sDAAsD;IACtD,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,mDAAmD;AACnD,eAAO,MAAM,sBAAsB,sBAAsB,CAAC;AAE1D;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,OAAO,sBAAsB,CAAC;IACpC,MAAM,EAAE,yBAAyB,GAAG,iBAAiB,CAAC;IACtD,sDAAsD;IACtD,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,kEAAkE;AAClE,MAAM,WAAW,oBAAoB;IACnC,2EAA2E;IAC3E,KAAK,EAAE,eAAe,GAAG,IAAI,CAAC;IAC9B,uEAAuE;IACvE,YAAY,EAAE,mBAAmB,GAAG,IAAI,CAAC;CAC1C;AAED,mEAAmE;AACnE,eAAO,MAAM,mBAAmB,iBAAiB,CAAC;AAElD;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,CAAC,EAAE,uBAAuB,GAAG,IAAI,GAAG,SAAS,GAC5C,CAAC,IAAI,uBAAuB,CAO9B;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,uBAAuB,GAAG,IAAI,GAAG,SAAS,EACtD,YAAY,EAAE,MAAM,GAAG,IAAI,EAC3B,eAAe,EAAE,OAAO,GACvB,oBAAoB,CAqDtB"}
@@ -1,111 +0,0 @@
1
- /**
2
- * Reference-provenance assessment.
3
- *
4
- * A UI-fidelity reference is a PNG the gate cannot read, so reference validity
5
- * is asserted at export time as provenance metadata (`figmaNode`, `locale`,
6
- * `resolved`, `exportedAt`) and the gate checks that METADATA — never the
7
- * pixels, never via OCR.
8
- *
9
- * The assessment splits into two severities:
10
- *
11
- * - FATAL faults → status `unverifiable` for the screen. A reference that is
12
- * absent has nothing to judge against (`REFERENCE_ABSENT`); a screen with no
13
- * provenance while the run declares a render locale keeps the legacy
14
- * `NO_PROVENANCE` verdict (verifiable is earned only through the full
15
- * export path, and it kills the ad-hoc-Figma-fetch root cause).
16
- * - COPY-CHANNEL downgrades → the screen still renders and is judged on
17
- * geometry, colors, typeface, spans, and lines; only copy comparisons are
18
- * skipped, reported as a structured `copy_unverifiable` advisory naming the
19
- * reason. Placeholder copy (`resolved == false`) and locale mismatches are
20
- * normal customer reality — dynamic content is designed as placeholders —
21
- * so the product adapts instead of refusing the screen or telling the
22
- * customer to re-export.
23
- *
24
- * The check arms whenever per-screen provenance rides in params; a declared
25
- * render locale is only required for the locale comparison itself. Screens
26
- * with neither provenance nor a declared locale are unarmed and keep the
27
- * caller's legacy behaviour.
28
- *
29
- * Content differences (copy wording, geometry) are deliberately NOT evaluated
30
- * here — those are soft, judged findings that legitimately drift between
31
- * reference-export and gate-run.
32
- *
33
- * This module is the authoritative spec for the check. The Android render
34
- * runtime inlines an equivalent JS implementation (it ships as a self-contained
35
- * script string and cannot import this module); the render-step integration
36
- * tests exercise that inlined copy end-to-end against the same fixtures, so the
37
- * two cannot silently drift.
38
- */
39
- /** Advisory code for a downgraded copy channel. */
40
- export const COPY_UNVERIFIABLE_CODE = 'copy_unverifiable';
41
- /** The per-state status string written to protocol-result.json. */
42
- export const UNVERIFIABLE_STATUS = 'unverifiable';
43
- /**
44
- * Whether provenance is "present" for arming purposes. A partial object (e.g.
45
- * a hand-dropped `{ figmaNode }`) is treated as no provenance — verifiable is
46
- * earned only through the full export path.
47
- */
48
- export function hasReferenceProvenance(p) {
49
- return (p != null &&
50
- typeof p === 'object' &&
51
- typeof p.locale === 'string' &&
52
- typeof p.resolved === 'boolean');
53
- }
54
- /**
55
- * Assesses one screen's reference. Returns a fatal fault (screen
56
- * `unverifiable`), a copy-channel advisory (screen judged, copy skipped), or
57
- * neither. Never both: an absent reference wins over a downgrade because there
58
- * is nothing to judge against.
59
- */
60
- export function assessReferenceProvenance(screen, provenance, renderLocale, referenceExists) {
61
- if (!hasReferenceProvenance(provenance)) {
62
- if (renderLocale !== null) {
63
- return {
64
- fault: {
65
- code: 'NO_PROVENANCE',
66
- message: `reference for ${screen} has no export provenance; a reference is ` +
67
- `verifiable only when exported through the deterministic path`,
68
- },
69
- copyAdvisory: null,
70
- };
71
- }
72
- // Unarmed: no provenance rode in and no locale was declared — the caller
73
- // keeps its legacy behaviour (including its own reference-existence check).
74
- return { fault: null, copyAdvisory: null };
75
- }
76
- if (!referenceExists) {
77
- return {
78
- fault: {
79
- code: 'REFERENCE_ABSENT',
80
- message: `reference image for ${screen} is absent`,
81
- },
82
- copyAdvisory: null,
83
- };
84
- }
85
- if (provenance.resolved === false) {
86
- return {
87
- fault: null,
88
- copyAdvisory: {
89
- code: COPY_UNVERIFIABLE_CODE,
90
- reason: 'unresolved_placeholders',
91
- message: `reference for ${screen} carries unresolved copy placeholders ` +
92
- `(resolved=false); copy comparisons are skipped — geometry, color, ` +
93
- `typeface, span, and line judging still hold`,
94
- },
95
- };
96
- }
97
- if (renderLocale !== null && provenance.locale !== renderLocale) {
98
- return {
99
- fault: null,
100
- copyAdvisory: {
101
- code: COPY_UNVERIFIABLE_CODE,
102
- reason: 'locale_mismatch',
103
- message: `reference for ${screen} is locale "${provenance.locale}" but the ` +
104
- `render locale is "${renderLocale}"; copy comparisons are skipped — ` +
105
- `geometry, color, typeface, span, and line judging still hold`,
106
- },
107
- };
108
- }
109
- return { fault: null, copyAdvisory: null };
110
- }
111
- //# sourceMappingURL=fidelity-reference-provenance.js.map
@@ -1,22 +0,0 @@
1
- /**
2
- * Unit tests for the reference-provenance assessment.
3
- *
4
- * A UI-fidelity reference is a PNG; the gate cannot read its text. So validity
5
- * is asserted at export time as provenance metadata, and the gate checks the
6
- * METADATA, never the pixels (no OCR).
7
- *
8
- * The assessment splits into two severities:
9
- * - FATAL faults (reference absent; no provenance while a render locale is
10
- * declared): the screen cannot be judged at all → status `unverifiable`.
11
- * - COPY-CHANNEL downgrades (unresolved placeholders, locale mismatch): the
12
- * screen renders and is judged on every non-copy channel; copy comparisons
13
- * are skipped and reported as a `copy_unverifiable` advisory. Placeholder
14
- * copy in a design is normal customer reality — the product adapts, the
15
- * customer is never told to re-export.
16
- *
17
- * The check arms whenever provenance is present; a declared render locale is
18
- * only required for the locale comparison itself (and preserves the legacy
19
- * NO_PROVENANCE behaviour for unprovenanced screens).
20
- */
21
- export {};
22
- //# sourceMappingURL=fidelity-reference-provenance.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fidelity-reference-provenance.test.d.ts","sourceRoot":"","sources":["../../../../src/yaml/steps/fidelity-reference-provenance.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG"}
@@ -1,118 +0,0 @@
1
- /**
2
- * Unit tests for the reference-provenance assessment.
3
- *
4
- * A UI-fidelity reference is a PNG; the gate cannot read its text. So validity
5
- * is asserted at export time as provenance metadata, and the gate checks the
6
- * METADATA, never the pixels (no OCR).
7
- *
8
- * The assessment splits into two severities:
9
- * - FATAL faults (reference absent; no provenance while a render locale is
10
- * declared): the screen cannot be judged at all → status `unverifiable`.
11
- * - COPY-CHANNEL downgrades (unresolved placeholders, locale mismatch): the
12
- * screen renders and is judged on every non-copy channel; copy comparisons
13
- * are skipped and reported as a `copy_unverifiable` advisory. Placeholder
14
- * copy in a design is normal customer reality — the product adapts, the
15
- * customer is never told to re-export.
16
- *
17
- * The check arms whenever provenance is present; a declared render locale is
18
- * only required for the locale comparison itself (and preserves the legacy
19
- * NO_PROVENANCE behaviour for unprovenanced screens).
20
- */
21
- import { describe, test, expect } from '@jest/globals';
22
- import { assessReferenceProvenance, hasReferenceProvenance, UNVERIFIABLE_STATUS, COPY_UNVERIFIABLE_CODE, } from './fidelity-reference-provenance.js';
23
- const GOOD = {
24
- figmaNode: '12:345',
25
- locale: 'en',
26
- resolved: true,
27
- exportedAt: '2026-06-18T10:00:00Z',
28
- };
29
- describe('assessReferenceProvenance', () => {
30
- test('a present, provenanced, resolved, locale-matching reference is clean', () => {
31
- expect(assessReferenceProvenance('Guest', GOOD, 'en', true)).toEqual({
32
- fault: null,
33
- copyAdvisory: null,
34
- });
35
- });
36
- test('provenance present without a declared render locale is clean too', () => {
37
- expect(assessReferenceProvenance('Guest', GOOD, null, true)).toEqual({
38
- fault: null,
39
- copyAdvisory: null,
40
- });
41
- });
42
- test('an absent reference with provenance is FATAL (REFERENCE_ABSENT), locale or not', () => {
43
- expect(assessReferenceProvenance('Guest', GOOD, 'en', false).fault?.code).toBe('REFERENCE_ABSENT');
44
- expect(assessReferenceProvenance('Guest', GOOD, null, false).fault?.code).toBe('REFERENCE_ABSENT');
45
- });
46
- test('unresolved placeholders downgrade the copy channel — never the screen', () => {
47
- const assessment = assessReferenceProvenance('Guest', { ...GOOD, resolved: false }, 'en', true);
48
- expect(assessment.fault).toBeNull();
49
- expect(assessment.copyAdvisory?.code).toBe(COPY_UNVERIFIABLE_CODE);
50
- expect(assessment.copyAdvisory?.reason).toBe('unresolved_placeholders');
51
- });
52
- test('unresolved placeholders downgrade identically without a render locale', () => {
53
- // Live evidence: the same resolved:false reference must earn the same
54
- // verdict whether or not the run declared render_locale.
55
- const assessment = assessReferenceProvenance('Guest', { ...GOOD, resolved: false }, null, true);
56
- expect(assessment.fault).toBeNull();
57
- expect(assessment.copyAdvisory?.reason).toBe('unresolved_placeholders');
58
- });
59
- test('a wrong-locale reference downgrades the copy channel (LOCALE reason)', () => {
60
- // Italian reference vs an English render.
61
- const assessment = assessReferenceProvenance('Guest', { ...GOOD, locale: 'it' }, 'en', true);
62
- expect(assessment.fault).toBeNull();
63
- expect(assessment.copyAdvisory?.code).toBe(COPY_UNVERIFIABLE_CODE);
64
- expect(assessment.copyAdvisory?.reason).toBe('locale_mismatch');
65
- });
66
- test('locale comparison requires a declared render locale — its absence skips only that', () => {
67
- const assessment = assessReferenceProvenance('Guest', { ...GOOD, locale: 'it' }, null, true);
68
- expect(assessment).toEqual({ fault: null, copyAdvisory: null });
69
- });
70
- test('an absent reference wins over a copy downgrade (nothing to judge against)', () => {
71
- const assessment = assessReferenceProvenance('Guest', { ...GOOD, resolved: false }, 'en', false);
72
- expect(assessment.fault?.code).toBe('REFERENCE_ABSENT');
73
- expect(assessment.copyAdvisory).toBeNull();
74
- });
75
- test('no provenance with a declared render locale stays FATAL (NO_PROVENANCE, legacy arming)', () => {
76
- expect(assessReferenceProvenance('Guest', null, 'en', true).fault?.code).toBe('NO_PROVENANCE');
77
- expect(assessReferenceProvenance('Guest', undefined, 'en', true).fault?.code).toBe('NO_PROVENANCE');
78
- });
79
- test('incomplete provenance (missing locale/resolved) is treated as no provenance', () => {
80
- expect(assessReferenceProvenance('Guest', { figmaNode: 'x', exportedAt: 'y' }, 'en', true).fault
81
- ?.code).toBe('NO_PROVENANCE');
82
- });
83
- test('no provenance and no render locale is unarmed — the caller keeps legacy behaviour', () => {
84
- expect(assessReferenceProvenance('Guest', null, null, false)).toEqual({
85
- fault: null,
86
- copyAdvisory: null,
87
- });
88
- expect(assessReferenceProvenance('Guest', null, null, true)).toEqual({
89
- fault: null,
90
- copyAdvisory: null,
91
- });
92
- });
93
- test('faults and advisories carry the screen name and a human reason', () => {
94
- const fatal = assessReferenceProvenance('LoggedIn', GOOD, 'en', false);
95
- expect(fatal.fault?.message).toContain('LoggedIn');
96
- const downgraded = assessReferenceProvenance('LoggedIn', { ...GOOD, resolved: false }, 'en', true);
97
- expect(downgraded.copyAdvisory?.message).toContain('LoggedIn');
98
- expect(downgraded.copyAdvisory.message.length).toBeGreaterThan(10);
99
- });
100
- test('the downgrade message never tells the customer to fix their design', () => {
101
- const assessment = assessReferenceProvenance('Guest', { ...GOOD, resolved: false }, 'en', true);
102
- expect(assessment.copyAdvisory?.message.toLowerCase()).not.toContain('export it');
103
- });
104
- });
105
- describe('hasReferenceProvenance', () => {
106
- test('full export-path provenance is present; partial or missing is not', () => {
107
- expect(hasReferenceProvenance(GOOD)).toBe(true);
108
- expect(hasReferenceProvenance(null)).toBe(false);
109
- expect(hasReferenceProvenance(undefined)).toBe(false);
110
- expect(hasReferenceProvenance({ figmaNode: 'x' })).toBe(false);
111
- });
112
- });
113
- describe('status strings', () => {
114
- test('exposes the unverifiable status string the result document uses', () => {
115
- expect(UNVERIFIABLE_STATUS).toBe('unverifiable');
116
- });
117
- });
118
- //# sourceMappingURL=fidelity-reference-provenance.test.js.map