@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.
- package/dist/chunk-35SI42CD.mjs +1 -0
- package/dist/chunk-IC45KVLJ.mjs +1 -0
- package/dist/chunk-XDY4V23V.mjs +1 -0
- package/dist/cli.cjs +14 -14
- package/dist/commands.mjs +1 -0
- package/dist/lib.mjs +3934 -0
- package/package.json +6 -10
- package/dist/src/cli.d.ts +0 -3
- package/dist/src/cli.d.ts.map +0 -1
- package/dist/src/cli.js +0 -399
- package/dist/src/commands/a-credential-target-follows-the-flavor-source-set.test.d.ts +0 -38
- package/dist/src/commands/a-credential-target-follows-the-flavor-source-set.test.d.ts.map +0 -1
- package/dist/src/commands/a-credential-target-follows-the-flavor-source-set.test.js +0 -222
- package/dist/src/commands/a-credential-two-workflows-cannot-share-is-declared-per-workflow.test.d.ts +0 -41
- package/dist/src/commands/a-credential-two-workflows-cannot-share-is-declared-per-workflow.test.d.ts.map +0 -1
- package/dist/src/commands/a-credential-two-workflows-cannot-share-is-declared-per-workflow.test.js +0 -324
- package/dist/src/commands/a-properties-stand-in-declares-the-keys-the-build-reads.test.d.ts +0 -2
- package/dist/src/commands/a-properties-stand-in-declares-the-keys-the-build-reads.test.d.ts.map +0 -1
- package/dist/src/commands/a-properties-stand-in-declares-the-keys-the-build-reads.test.js +0 -382
- package/dist/src/commands/an-already-stored-value-does-not-answer-the-target-question.test.d.ts +0 -29
- package/dist/src/commands/an-already-stored-value-does-not-answer-the-target-question.test.d.ts.map +0 -1
- package/dist/src/commands/an-already-stored-value-does-not-answer-the-target-question.test.js +0 -160
- package/dist/src/commands/android-gms-guard.test.d.ts +0 -9
- package/dist/src/commands/android-gms-guard.test.d.ts.map +0 -1
- package/dist/src/commands/android-gms-guard.test.js +0 -78
- package/dist/src/commands/android-java-version.test.d.ts +0 -12
- package/dist/src/commands/android-java-version.test.d.ts.map +0 -1
- package/dist/src/commands/android-java-version.test.js +0 -209
- package/dist/src/commands/android-scanner-java.test.d.ts +0 -2
- package/dist/src/commands/android-scanner-java.test.d.ts.map +0 -1
- package/dist/src/commands/android-scanner-java.test.js +0 -130
- package/dist/src/commands/android-scanner.d.ts +0 -250
- package/dist/src/commands/android-scanner.d.ts.map +0 -1
- package/dist/src/commands/android-scanner.js +0 -1639
- package/dist/src/commands/build.d.ts +0 -215
- package/dist/src/commands/build.d.ts.map +0 -1
- package/dist/src/commands/build.js +0 -1433
- package/dist/src/commands/build.test.d.ts +0 -13
- package/dist/src/commands/build.test.d.ts.map +0 -1
- package/dist/src/commands/build.test.js +0 -121
- package/dist/src/commands/detect-platform.d.ts +0 -13
- package/dist/src/commands/detect-platform.d.ts.map +0 -1
- package/dist/src/commands/detect-platform.js +0 -51
- package/dist/src/commands/detect-project.d.ts +0 -7
- package/dist/src/commands/detect-project.d.ts.map +0 -1
- package/dist/src/commands/detect-project.js +0 -12
- package/dist/src/commands/each-flavor-is-asked-for-its-own-properties-file.test.d.ts +0 -26
- package/dist/src/commands/each-flavor-is-asked-for-its-own-properties-file.test.d.ts.map +0 -1
- package/dist/src/commands/each-flavor-is-asked-for-its-own-properties-file.test.js +0 -196
- package/dist/src/commands/edit.d.ts +0 -12
- package/dist/src/commands/edit.d.ts.map +0 -1
- package/dist/src/commands/edit.js +0 -652
- package/dist/src/commands/edit.test.d.ts +0 -6
- package/dist/src/commands/edit.test.d.ts.map +0 -1
- package/dist/src/commands/edit.test.js +0 -45
- package/dist/src/commands/fidelity-trim.d.ts +0 -13
- package/dist/src/commands/fidelity-trim.d.ts.map +0 -1
- package/dist/src/commands/fidelity-trim.js +0 -21
- package/dist/src/commands/fidelity-trim.test.d.ts +0 -8
- package/dist/src/commands/fidelity-trim.test.d.ts.map +0 -1
- package/dist/src/commands/fidelity-trim.test.js +0 -79
- package/dist/src/commands/file-secret-collector.d.ts +0 -50
- package/dist/src/commands/file-secret-collector.d.ts.map +0 -1
- package/dist/src/commands/file-secret-collector.js +0 -217
- package/dist/src/commands/flavors-a-convention-plugin-creates-are-still-found.test.d.ts +0 -38
- package/dist/src/commands/flavors-a-convention-plugin-creates-are-still-found.test.d.ts.map +0 -1
- package/dist/src/commands/flavors-a-convention-plugin-creates-are-still-found.test.js +0 -300
- package/dist/src/commands/github-workflow.d.ts +0 -5
- package/dist/src/commands/github-workflow.d.ts.map +0 -1
- package/dist/src/commands/github-workflow.js +0 -45
- package/dist/src/commands/index.d.ts +0 -33
- package/dist/src/commands/index.d.ts.map +0 -1
- package/dist/src/commands/index.js +0 -33
- package/dist/src/commands/init.d.ts +0 -20
- package/dist/src/commands/init.d.ts.map +0 -1
- package/dist/src/commands/init.js +0 -264
- package/dist/src/commands/ios-scanner.d.ts +0 -104
- package/dist/src/commands/ios-scanner.d.ts.map +0 -1
- package/dist/src/commands/ios-scanner.js +0 -492
- package/dist/src/commands/ios-scheme-ranking.test.d.ts +0 -2
- package/dist/src/commands/ios-scheme-ranking.test.d.ts.map +0 -1
- package/dist/src/commands/ios-scheme-ranking.test.js +0 -264
- package/dist/src/commands/local-properties-reaches-every-workflow.test.d.ts +0 -30
- package/dist/src/commands/local-properties-reaches-every-workflow.test.d.ts.map +0 -1
- package/dist/src/commands/local-properties-reaches-every-workflow.test.js +0 -146
- package/dist/src/commands/reset.d.ts +0 -7
- package/dist/src/commands/reset.d.ts.map +0 -1
- package/dist/src/commands/reset.js +0 -81
- package/dist/src/commands/run.d.ts +0 -22
- package/dist/src/commands/run.d.ts.map +0 -1
- package/dist/src/commands/run.js +0 -141
- package/dist/src/commands/secrets-sync-workflow.d.ts +0 -15
- package/dist/src/commands/secrets-sync-workflow.d.ts.map +0 -1
- package/dist/src/commands/secrets-sync-workflow.js +0 -255
- package/dist/src/commands/secrets-upload.d.ts +0 -21
- package/dist/src/commands/secrets-upload.d.ts.map +0 -1
- package/dist/src/commands/secrets-upload.js +0 -177
- package/dist/src/commands/secrets-upload.test.d.ts +0 -5
- package/dist/src/commands/secrets-upload.test.d.ts.map +0 -1
- package/dist/src/commands/secrets-upload.test.js +0 -60
- package/dist/src/commands/validate.d.ts +0 -10
- package/dist/src/commands/validate.d.ts.map +0 -1
- package/dist/src/commands/validate.js +0 -46
- package/dist/src/config.d.ts +0 -3
- package/dist/src/config.d.ts.map +0 -1
- package/dist/src/config.js +0 -47
- package/dist/src/envman/cli.d.ts +0 -21
- package/dist/src/envman/cli.d.ts.map +0 -1
- package/dist/src/envman/cli.js +0 -240
- package/dist/src/envman/envman.d.ts +0 -83
- package/dist/src/envman/envman.d.ts.map +0 -1
- package/dist/src/envman/envman.js +0 -361
- package/dist/src/envman/envman.test.d.ts +0 -5
- package/dist/src/envman/envman.test.d.ts.map +0 -1
- package/dist/src/envman/envman.test.js +0 -236
- package/dist/src/envman/envstore-round-trip.test.d.ts +0 -27
- package/dist/src/envman/envstore-round-trip.test.d.ts.map +0 -1
- package/dist/src/envman/envstore-round-trip.test.js +0 -130
- package/dist/src/envman/index.d.ts +0 -23
- package/dist/src/envman/index.d.ts.map +0 -1
- package/dist/src/envman/index.js +0 -23
- package/dist/src/envman/shim.d.ts +0 -16
- package/dist/src/envman/shim.d.ts.map +0 -1
- package/dist/src/envman/shim.js +0 -66
- package/dist/src/envman/types.d.ts +0 -55
- package/dist/src/envman/types.d.ts.map +0 -1
- package/dist/src/envman/types.js +0 -12
- package/dist/src/lib.d.ts +0 -33
- package/dist/src/lib.d.ts.map +0 -1
- package/dist/src/lib.js +0 -37
- package/dist/src/pipeline.d.ts +0 -3
- package/dist/src/pipeline.d.ts.map +0 -1
- package/dist/src/pipeline.js +0 -57
- package/dist/src/runner-node-step.test.d.ts +0 -12
- package/dist/src/runner-node-step.test.d.ts.map +0 -1
- package/dist/src/runner-node-step.test.js +0 -61
- package/dist/src/runner.d.ts +0 -31
- package/dist/src/runner.d.ts.map +0 -1
- package/dist/src/runner.js +0 -240
- package/dist/src/shared/detect-project.d.ts +0 -57
- package/dist/src/shared/detect-project.d.ts.map +0 -1
- package/dist/src/shared/detect-project.js +0 -219
- package/dist/src/shared/detect-project.test.d.ts +0 -2
- package/dist/src/shared/detect-project.test.d.ts.map +0 -1
- package/dist/src/shared/detect-project.test.js +0 -161
- package/dist/src/shared/git.d.ts +0 -25
- package/dist/src/shared/git.d.ts.map +0 -1
- package/dist/src/shared/git.js +0 -53
- package/dist/src/shared/git.test.d.ts +0 -9
- package/dist/src/shared/git.test.d.ts.map +0 -1
- package/dist/src/shared/git.test.js +0 -66
- package/dist/src/shared/gitignore.d.ts +0 -6
- package/dist/src/shared/gitignore.d.ts.map +0 -1
- package/dist/src/shared/gitignore.js +0 -26
- package/dist/src/shared/gradle-settings.d.ts +0 -49
- package/dist/src/shared/gradle-settings.d.ts.map +0 -1
- package/dist/src/shared/gradle-settings.js +0 -138
- package/dist/src/shared/gradle-settings.test.d.ts +0 -2
- package/dist/src/shared/gradle-settings.test.d.ts.map +0 -1
- package/dist/src/shared/gradle-settings.test.js +0 -65
- package/dist/src/shared/prompts.d.ts +0 -30
- package/dist/src/shared/prompts.d.ts.map +0 -1
- package/dist/src/shared/prompts.js +0 -121
- package/dist/src/shared/xcode-container.test.d.ts +0 -2
- package/dist/src/shared/xcode-container.test.d.ts.map +0 -1
- package/dist/src/shared/xcode-container.test.js +0 -123
- package/dist/src/step-marker.d.ts +0 -12
- package/dist/src/step-marker.d.ts.map +0 -1
- package/dist/src/step-marker.js +0 -29
- package/dist/src/step-marker.test.d.ts +0 -11
- package/dist/src/step-marker.test.d.ts.map +0 -1
- package/dist/src/step-marker.test.js +0 -45
- package/dist/src/types.d.ts +0 -58
- package/dist/src/types.d.ts.map +0 -1
- package/dist/src/types.js +0 -2
- package/dist/src/yaml/a-cache-path-must-not-swallow-a-credential.test.d.ts +0 -28
- package/dist/src/yaml/a-cache-path-must-not-swallow-a-credential.test.d.ts.map +0 -1
- package/dist/src/yaml/a-cache-path-must-not-swallow-a-credential.test.js +0 -223
- package/dist/src/yaml/a-declared-secret-reaches-the-file-step.test.d.ts +0 -20
- package/dist/src/yaml/a-declared-secret-reaches-the-file-step.test.d.ts.map +0 -1
- package/dist/src/yaml/a-declared-secret-reaches-the-file-step.test.js +0 -201
- package/dist/src/yaml/a-declared-slot-may-name-the-workflow-it-belongs-to.test.d.ts +0 -37
- package/dist/src/yaml/a-declared-slot-may-name-the-workflow-it-belongs-to.test.d.ts.map +0 -1
- package/dist/src/yaml/a-declared-slot-may-name-the-workflow-it-belongs-to.test.js +0 -255
- package/dist/src/yaml/a-missing-credential-is-loud.test.d.ts +0 -32
- package/dist/src/yaml/a-missing-credential-is-loud.test.d.ts.map +0 -1
- package/dist/src/yaml/a-missing-credential-is-loud.test.js +0 -301
- package/dist/src/yaml/a-runtime-requirement-names-a-real-provider.test.d.ts +0 -18
- package/dist/src/yaml/a-runtime-requirement-names-a-real-provider.test.d.ts.map +0 -1
- package/dist/src/yaml/a-runtime-requirement-names-a-real-provider.test.js +0 -66
- package/dist/src/yaml/a-scoped-slot-must-name-a-workflow-the-pipeline-has.test.d.ts +0 -34
- package/dist/src/yaml/a-scoped-slot-must-name-a-workflow-the-pipeline-has.test.d.ts.map +0 -1
- package/dist/src/yaml/a-scoped-slot-must-name-a-workflow-the-pipeline-has.test.js +0 -218
- package/dist/src/yaml/a-value-this-instance-stored-is-a-value-it-has.test.d.ts +0 -27
- package/dist/src/yaml/a-value-this-instance-stored-is-a-value-it-has.test.d.ts.map +0 -1
- package/dist/src/yaml/a-value-this-instance-stored-is-a-value-it-has.test.js +0 -126
- package/dist/src/yaml/bitrise-compat.d.ts +0 -65
- package/dist/src/yaml/bitrise-compat.d.ts.map +0 -1
- package/dist/src/yaml/bitrise-compat.js +0 -206
- package/dist/src/yaml/bitrise-compat.test.d.ts +0 -5
- package/dist/src/yaml/bitrise-compat.test.d.ts.map +0 -1
- package/dist/src/yaml/bitrise-compat.test.js +0 -347
- package/dist/src/yaml/cache-key-missing-file.test.d.ts +0 -12
- package/dist/src/yaml/cache-key-missing-file.test.d.ts.map +0 -1
- package/dist/src/yaml/cache-key-missing-file.test.js +0 -116
- package/dist/src/yaml/converter.d.ts +0 -103
- package/dist/src/yaml/converter.d.ts.map +0 -1
- package/dist/src/yaml/converter.js +0 -420
- package/dist/src/yaml/converter.test.d.ts +0 -5
- package/dist/src/yaml/converter.test.d.ts.map +0 -1
- package/dist/src/yaml/converter.test.js +0 -548
- package/dist/src/yaml/e2e.test.d.ts +0 -6
- package/dist/src/yaml/e2e.test.d.ts.map +0 -1
- package/dist/src/yaml/e2e.test.js +0 -446
- package/dist/src/yaml/env-resolver.d.ts +0 -218
- package/dist/src/yaml/env-resolver.d.ts.map +0 -1
- package/dist/src/yaml/env-resolver.js +0 -591
- package/dist/src/yaml/env-resolver.test.d.ts +0 -5
- package/dist/src/yaml/env-resolver.test.d.ts.map +0 -1
- package/dist/src/yaml/env-resolver.test.js +0 -502
- package/dist/src/yaml/every-build-log-witnesses-the-commit-on-disk.test.d.ts +0 -16
- package/dist/src/yaml/every-build-log-witnesses-the-commit-on-disk.test.d.ts.map +0 -1
- package/dist/src/yaml/every-build-log-witnesses-the-commit-on-disk.test.js +0 -126
- package/dist/src/yaml/fidelity-input-digest.d.ts +0 -37
- package/dist/src/yaml/fidelity-input-digest.d.ts.map +0 -1
- package/dist/src/yaml/fidelity-input-digest.js +0 -208
- package/dist/src/yaml/fidelity-input-digest.test.d.ts +0 -2
- package/dist/src/yaml/fidelity-input-digest.test.d.ts.map +0 -1
- package/dist/src/yaml/fidelity-input-digest.test.js +0 -167
- package/dist/src/yaml/fidelity-manifest.d.ts +0 -126
- package/dist/src/yaml/fidelity-manifest.d.ts.map +0 -1
- package/dist/src/yaml/fidelity-manifest.js +0 -134
- package/dist/src/yaml/fidelity-manifest.test.d.ts +0 -12
- package/dist/src/yaml/fidelity-manifest.test.d.ts.map +0 -1
- package/dist/src/yaml/fidelity-manifest.test.js +0 -251
- package/dist/src/yaml/interactive-prompts.d.ts +0 -71
- package/dist/src/yaml/interactive-prompts.d.ts.map +0 -1
- package/dist/src/yaml/interactive-prompts.js +0 -260
- package/dist/src/yaml/meta-helpers.d.ts +0 -28
- package/dist/src/yaml/meta-helpers.d.ts.map +0 -1
- package/dist/src/yaml/meta-helpers.js +0 -46
- package/dist/src/yaml/missing-env-handler.d.ts +0 -45
- package/dist/src/yaml/missing-env-handler.d.ts.map +0 -1
- package/dist/src/yaml/missing-env-handler.js +0 -64
- package/dist/src/yaml/parser.d.ts +0 -33
- package/dist/src/yaml/parser.d.ts.map +0 -1
- package/dist/src/yaml/parser.js +0 -148
- package/dist/src/yaml/parser.test.d.ts +0 -5
- package/dist/src/yaml/parser.test.d.ts.map +0 -1
- package/dist/src/yaml/parser.test.js +0 -83
- package/dist/src/yaml/pipeline-with-secrets.d.ts +0 -25
- package/dist/src/yaml/pipeline-with-secrets.d.ts.map +0 -1
- package/dist/src/yaml/pipeline-with-secrets.js +0 -76
- package/dist/src/yaml/platform-detector.d.ts +0 -83
- package/dist/src/yaml/platform-detector.d.ts.map +0 -1
- package/dist/src/yaml/platform-detector.js +0 -189
- package/dist/src/yaml/platform-detector.test.d.ts +0 -5
- package/dist/src/yaml/platform-detector.test.d.ts.map +0 -1
- package/dist/src/yaml/platform-detector.test.js +0 -525
- package/dist/src/yaml/preflight-validation.d.ts +0 -29
- package/dist/src/yaml/preflight-validation.d.ts.map +0 -1
- package/dist/src/yaml/preflight-validation.js +0 -21
- package/dist/src/yaml/secrets-manager.d.ts +0 -87
- package/dist/src/yaml/secrets-manager.d.ts.map +0 -1
- package/dist/src/yaml/secrets-manager.js +0 -230
- package/dist/src/yaml/shell-assignments.d.ts +0 -40
- package/dist/src/yaml/shell-assignments.d.ts.map +0 -1
- package/dist/src/yaml/shell-assignments.js +0 -77
- package/dist/src/yaml/step-validator-check-failure.test.d.ts +0 -24
- package/dist/src/yaml/step-validator-check-failure.test.d.ts.map +0 -1
- package/dist/src/yaml/step-validator-check-failure.test.js +0 -130
- package/dist/src/yaml/step-validator-self-assigned.test.d.ts +0 -23
- package/dist/src/yaml/step-validator-self-assigned.test.d.ts.map +0 -1
- package/dist/src/yaml/step-validator-self-assigned.test.js +0 -191
- package/dist/src/yaml/step-validator.d.ts +0 -67
- package/dist/src/yaml/step-validator.d.ts.map +0 -1
- package/dist/src/yaml/step-validator.js +0 -466
- package/dist/src/yaml/step-validator.test.d.ts +0 -18
- package/dist/src/yaml/step-validator.test.d.ts.map +0 -1
- package/dist/src/yaml/step-validator.test.js +0 -140
- package/dist/src/yaml/steps/a-missing-pinned-jdk-yields-for-every-gradle-run.test.d.ts +0 -2
- package/dist/src/yaml/steps/a-missing-pinned-jdk-yields-for-every-gradle-run.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/a-missing-pinned-jdk-yields-for-every-gradle-run.test.js +0 -96
- package/dist/src/yaml/steps/android-sign.d.ts +0 -35
- package/dist/src/yaml/steps/android-sign.d.ts.map +0 -1
- package/dist/src/yaml/steps/android-sign.js +0 -147
- package/dist/src/yaml/steps/android-variant-resolution.test.d.ts +0 -2
- package/dist/src/yaml/steps/android-variant-resolution.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/android-variant-resolution.test.js +0 -260
- package/dist/src/yaml/steps/android-version.d.ts +0 -26
- package/dist/src/yaml/steps/android-version.d.ts.map +0 -1
- package/dist/src/yaml/steps/android-version.js +0 -128
- package/dist/src/yaml/steps/android-version.test.d.ts +0 -5
- package/dist/src/yaml/steps/android-version.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/android-version.test.js +0 -196
- package/dist/src/yaml/steps/android.d.ts +0 -156
- package/dist/src/yaml/steps/android.d.ts.map +0 -1
- package/dist/src/yaml/steps/android.js +0 -1100
- package/dist/src/yaml/steps/app-store-deploy.d.ts +0 -48
- package/dist/src/yaml/steps/app-store-deploy.d.ts.map +0 -1
- package/dist/src/yaml/steps/app-store-deploy.js +0 -167
- package/dist/src/yaml/steps/base.d.ts +0 -263
- package/dist/src/yaml/steps/base.d.ts.map +0 -1
- package/dist/src/yaml/steps/base.js +0 -380
- package/dist/src/yaml/steps/bitrise-android-tools.d.ts +0 -26
- package/dist/src/yaml/steps/bitrise-android-tools.d.ts.map +0 -1
- package/dist/src/yaml/steps/bitrise-android-tools.js +0 -200
- package/dist/src/yaml/steps/bitrise-android-tools.test.d.ts +0 -5
- package/dist/src/yaml/steps/bitrise-android-tools.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/bitrise-android-tools.test.js +0 -280
- package/dist/src/yaml/steps/bitrise-apk-info.d.ts +0 -22
- package/dist/src/yaml/steps/bitrise-apk-info.d.ts.map +0 -1
- package/dist/src/yaml/steps/bitrise-apk-info.js +0 -144
- package/dist/src/yaml/steps/bitrise-apk-info.test.d.ts +0 -5
- package/dist/src/yaml/steps/bitrise-apk-info.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/bitrise-apk-info.test.js +0 -331
- package/dist/src/yaml/steps/bitrise-slack.d.ts +0 -49
- package/dist/src/yaml/steps/bitrise-slack.d.ts.map +0 -1
- package/dist/src/yaml/steps/bitrise-slack.js +0 -280
- package/dist/src/yaml/steps/bitrise-slack.test.d.ts +0 -5
- package/dist/src/yaml/steps/bitrise-slack.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/bitrise-slack.test.js +0 -484
- package/dist/src/yaml/steps/bitrise-ssh.d.ts +0 -27
- package/dist/src/yaml/steps/bitrise-ssh.d.ts.map +0 -1
- package/dist/src/yaml/steps/bitrise-ssh.js +0 -134
- package/dist/src/yaml/steps/bitrise-ssh.test.d.ts +0 -5
- package/dist/src/yaml/steps/bitrise-ssh.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/bitrise-ssh.test.js +0 -205
- package/dist/src/yaml/steps/cache-pull-daemon.test.d.ts +0 -27
- package/dist/src/yaml/steps/cache-pull-daemon.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/cache-pull-daemon.test.js +0 -212
- package/dist/src/yaml/steps/cache-pull-restore-roots.test.d.ts +0 -42
- package/dist/src/yaml/steps/cache-pull-restore-roots.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/cache-pull-restore-roots.test.js +0 -209
- package/dist/src/yaml/steps/cache-push-daemon.test.d.ts +0 -27
- package/dist/src/yaml/steps/cache-push-daemon.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/cache-push-daemon.test.js +0 -171
- package/dist/src/yaml/steps/cache.d.ts +0 -59
- package/dist/src/yaml/steps/cache.d.ts.map +0 -1
- package/dist/src/yaml/steps/cache.js +0 -1027
- package/dist/src/yaml/steps/capture-injection.d.ts +0 -30
- package/dist/src/yaml/steps/capture-injection.d.ts.map +0 -1
- package/dist/src/yaml/steps/capture-injection.js +0 -88
- package/dist/src/yaml/steps/capture-injection.test.d.ts +0 -2
- package/dist/src/yaml/steps/capture-injection.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/capture-injection.test.js +0 -163
- package/dist/src/yaml/steps/cocoapods-deployment-floor.d.ts +0 -42
- package/dist/src/yaml/steps/cocoapods-deployment-floor.d.ts.map +0 -1
- package/dist/src/yaml/steps/cocoapods-deployment-floor.js +0 -140
- package/dist/src/yaml/steps/cocoapods-deployment-floor.test.d.ts +0 -11
- package/dist/src/yaml/steps/cocoapods-deployment-floor.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/cocoapods-deployment-floor.test.js +0 -176
- package/dist/src/yaml/steps/cocoapods-install-emits-valid-bash.test.d.ts +0 -22
- package/dist/src/yaml/steps/cocoapods-install-emits-valid-bash.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/cocoapods-install-emits-valid-bash.test.js +0 -97
- package/dist/src/yaml/steps/cocoapods-locked-bundler.test.d.ts +0 -17
- package/dist/src/yaml/steps/cocoapods-locked-bundler.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/cocoapods-locked-bundler.test.js +0 -282
- package/dist/src/yaml/steps/cocoapods-skip-if-absent.test.d.ts +0 -17
- package/dist/src/yaml/steps/cocoapods-skip-if-absent.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/cocoapods-skip-if-absent.test.js +0 -132
- package/dist/src/yaml/steps/envstore-loader.test.d.ts +0 -15
- package/dist/src/yaml/steps/envstore-loader.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/envstore-loader.test.js +0 -143
- package/dist/src/yaml/steps/fastlane.d.ts +0 -27
- package/dist/src/yaml/steps/fastlane.d.ts.map +0 -1
- package/dist/src/yaml/steps/fastlane.js +0 -79
- package/dist/src/yaml/steps/fidelity-aspect-guard.d.ts +0 -53
- package/dist/src/yaml/steps/fidelity-aspect-guard.d.ts.map +0 -1
- package/dist/src/yaml/steps/fidelity-aspect-guard.js +0 -72
- package/dist/src/yaml/steps/fidelity-aspect-guard.test.d.ts +0 -11
- package/dist/src/yaml/steps/fidelity-aspect-guard.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/fidelity-aspect-guard.test.js +0 -50
- package/dist/src/yaml/steps/fidelity-reference-provenance.d.ts +0 -87
- package/dist/src/yaml/steps/fidelity-reference-provenance.d.ts.map +0 -1
- package/dist/src/yaml/steps/fidelity-reference-provenance.js +0 -111
- package/dist/src/yaml/steps/fidelity-reference-provenance.test.d.ts +0 -22
- package/dist/src/yaml/steps/fidelity-reference-provenance.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/fidelity-reference-provenance.test.js +0 -118
- package/dist/src/yaml/steps/file.d.ts +0 -52
- package/dist/src/yaml/steps/file.d.ts.map +0 -1
- package/dist/src/yaml/steps/file.js +0 -108
- package/dist/src/yaml/steps/flutter.d.ts +0 -63
- package/dist/src/yaml/steps/flutter.d.ts.map +0 -1
- package/dist/src/yaml/steps/flutter.js +0 -215
- package/dist/src/yaml/steps/git-clone-names-the-inputs-it-ignores.test.d.ts +0 -16
- package/dist/src/yaml/steps/git-clone-names-the-inputs-it-ignores.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/git-clone-names-the-inputs-it-ignores.test.js +0 -127
- package/dist/src/yaml/steps/git-clone.d.ts +0 -32
- package/dist/src/yaml/steps/git-clone.d.ts.map +0 -1
- package/dist/src/yaml/steps/git-clone.js +0 -171
- package/dist/src/yaml/steps/git-fetch-retry-exec.test.d.ts +0 -10
- package/dist/src/yaml/steps/git-fetch-retry-exec.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/git-fetch-retry-exec.test.js +0 -162
- package/dist/src/yaml/steps/git-fetch-retry.d.ts +0 -62
- package/dist/src/yaml/steps/git-fetch-retry.d.ts.map +0 -1
- package/dist/src/yaml/steps/git-fetch-retry.js +0 -155
- package/dist/src/yaml/steps/git-fetch-retry.test.d.ts +0 -5
- package/dist/src/yaml/steps/git-fetch-retry.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/git-fetch-retry.test.js +0 -86
- package/dist/src/yaml/steps/google-play-deploy.d.ts +0 -37
- package/dist/src/yaml/steps/google-play-deploy.d.ts.map +0 -1
- package/dist/src/yaml/steps/google-play-deploy.js +0 -193
- package/dist/src/yaml/steps/google-play-deploy.test.d.ts +0 -5
- package/dist/src/yaml/steps/google-play-deploy.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/google-play-deploy.test.js +0 -310
- package/dist/src/yaml/steps/gradle-memory.d.ts +0 -91
- package/dist/src/yaml/steps/gradle-memory.d.ts.map +0 -1
- package/dist/src/yaml/steps/gradle-memory.js +0 -495
- package/dist/src/yaml/steps/gradle-memory.test.d.ts +0 -2
- package/dist/src/yaml/steps/gradle-memory.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/gradle-memory.test.js +0 -344
- package/dist/src/yaml/steps/gradle-sdk-cmake.d.ts +0 -28
- package/dist/src/yaml/steps/gradle-sdk-cmake.d.ts.map +0 -1
- package/dist/src/yaml/steps/gradle-sdk-cmake.js +0 -107
- package/dist/src/yaml/steps/gradle-sdk-cmake.test.d.ts +0 -2
- package/dist/src/yaml/steps/gradle-sdk-cmake.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/gradle-sdk-cmake.test.js +0 -183
- package/dist/src/yaml/steps/index.d.ts +0 -10
- package/dist/src/yaml/steps/index.d.ts.map +0 -1
- package/dist/src/yaml/steps/index.js +0 -1461
- package/dist/src/yaml/steps/ios-deps.d.ts +0 -78
- package/dist/src/yaml/steps/ios-deps.d.ts.map +0 -1
- package/dist/src/yaml/steps/ios-deps.js +0 -279
- package/dist/src/yaml/steps/ios-deps.test.d.ts +0 -5
- package/dist/src/yaml/steps/ios-deps.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/ios-deps.test.js +0 -90
- package/dist/src/yaml/steps/ios-signing.d.ts +0 -31
- package/dist/src/yaml/steps/ios-signing.d.ts.map +0 -1
- package/dist/src/yaml/steps/ios-signing.js +0 -144
- package/dist/src/yaml/steps/ios-version.d.ts +0 -47
- package/dist/src/yaml/steps/ios-version.d.ts.map +0 -1
- package/dist/src/yaml/steps/ios-version.js +0 -151
- package/dist/src/yaml/steps/java-home-version-spec.test.d.ts +0 -10
- package/dist/src/yaml/steps/java-home-version-spec.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/java-home-version-spec.test.js +0 -58
- package/dist/src/yaml/steps/kotlin-metadata-compiles-on-a-daemon.test.d.ts +0 -2
- package/dist/src/yaml/steps/kotlin-metadata-compiles-on-a-daemon.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/kotlin-metadata-compiles-on-a-daemon.test.js +0 -139
- package/dist/src/yaml/steps/linting.d.ts +0 -47
- package/dist/src/yaml/steps/linting.d.ts.map +0 -1
- package/dist/src/yaml/steps/linting.js +0 -148
- package/dist/src/yaml/steps/phase2.test.d.ts +0 -6
- package/dist/src/yaml/steps/phase2.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/phase2.test.js +0 -197
- package/dist/src/yaml/steps/phase3.test.d.ts +0 -5
- package/dist/src/yaml/steps/phase3.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/phase3.test.js +0 -144
- package/dist/src/yaml/steps/phase4.test.d.ts +0 -5
- package/dist/src/yaml/steps/phase4.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/phase4.test.js +0 -166
- package/dist/src/yaml/steps/phase5.test.d.ts +0 -6
- package/dist/src/yaml/steps/phase5.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/phase5.test.js +0 -263
- package/dist/src/yaml/steps/registry.d.ts +0 -88
- package/dist/src/yaml/steps/registry.d.ts.map +0 -1
- package/dist/src/yaml/steps/registry.js +0 -125
- package/dist/src/yaml/steps/registry.test.d.ts +0 -5
- package/dist/src/yaml/steps/registry.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/registry.test.js +0 -235
- package/dist/src/yaml/steps/release.d.ts +0 -50
- package/dist/src/yaml/steps/release.d.ts.map +0 -1
- package/dist/src/yaml/steps/release.js +0 -154
- package/dist/src/yaml/steps/render-post-processor.d.ts +0 -100
- package/dist/src/yaml/steps/render-post-processor.d.ts.map +0 -1
- package/dist/src/yaml/steps/render-post-processor.js +0 -270
- package/dist/src/yaml/steps/render-post-processor.test.d.ts +0 -13
- package/dist/src/yaml/steps/render-post-processor.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/render-post-processor.test.js +0 -220
- package/dist/src/yaml/steps/script.d.ts +0 -23
- package/dist/src/yaml/steps/script.d.ts.map +0 -1
- package/dist/src/yaml/steps/script.js +0 -63
- package/dist/src/yaml/steps/spec-validation.test.d.ts +0 -6
- package/dist/src/yaml/steps/spec-validation.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/spec-validation.test.js +0 -130
- package/dist/src/yaml/steps/steps.test.d.ts +0 -6
- package/dist/src/yaml/steps/steps.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/steps.test.js +0 -881
- package/dist/src/yaml/steps/structural-facts.d.ts +0 -992
- package/dist/src/yaml/steps/structural-facts.d.ts.map +0 -1
- package/dist/src/yaml/steps/structural-facts.js +0 -3276
- package/dist/src/yaml/steps/structural-facts.test.d.ts +0 -12
- package/dist/src/yaml/steps/structural-facts.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/structural-facts.test.js +0 -3039
- package/dist/src/yaml/steps/test-config.d.ts +0 -5
- package/dist/src/yaml/steps/test-config.d.ts.map +0 -1
- package/dist/src/yaml/steps/test-config.js +0 -25
- package/dist/src/yaml/steps/trim-align-corpus.test.d.ts +0 -28
- package/dist/src/yaml/steps/trim-align-corpus.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/trim-align-corpus.test.js +0 -383
- package/dist/src/yaml/steps/trim-align.d.ts +0 -87
- package/dist/src/yaml/steps/trim-align.d.ts.map +0 -1
- package/dist/src/yaml/steps/trim-align.js +0 -367
- package/dist/src/yaml/steps/trim-align.test.d.ts +0 -11
- package/dist/src/yaml/steps/trim-align.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/trim-align.test.js +0 -261
- package/dist/src/yaml/steps/ui-fidelity-preview-android.d.ts +0 -66
- package/dist/src/yaml/steps/ui-fidelity-preview-android.d.ts.map +0 -1
- package/dist/src/yaml/steps/ui-fidelity-preview-android.js +0 -251
- package/dist/src/yaml/steps/ui-fidelity-preview-android.test.d.ts +0 -13
- package/dist/src/yaml/steps/ui-fidelity-preview-android.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/ui-fidelity-preview-android.test.js +0 -302
- package/dist/src/yaml/steps/ui-fidelity-preview.d.ts +0 -134
- package/dist/src/yaml/steps/ui-fidelity-preview.d.ts.map +0 -1
- package/dist/src/yaml/steps/ui-fidelity-preview.js +0 -173
- package/dist/src/yaml/steps/ui-fidelity-preview.test.d.ts +0 -11
- package/dist/src/yaml/steps/ui-fidelity-preview.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/ui-fidelity-preview.test.js +0 -210
- package/dist/src/yaml/steps/ui-fidelity-render-android.d.ts +0 -155
- package/dist/src/yaml/steps/ui-fidelity-render-android.d.ts.map +0 -1
- package/dist/src/yaml/steps/ui-fidelity-render-android.js +0 -1389
- package/dist/src/yaml/steps/ui-fidelity-render-android.test.d.ts +0 -2
- package/dist/src/yaml/steps/ui-fidelity-render-android.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/ui-fidelity-render-android.test.js +0 -1106
- package/dist/src/yaml/steps/ui-fidelity-render.d.ts +0 -230
- package/dist/src/yaml/steps/ui-fidelity-render.d.ts.map +0 -1
- package/dist/src/yaml/steps/ui-fidelity-render.js +0 -1597
- package/dist/src/yaml/steps/ui-fidelity-render.test.d.ts +0 -18
- package/dist/src/yaml/steps/ui-fidelity-render.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/ui-fidelity-render.test.js +0 -1871
- package/dist/src/yaml/steps/xcode-app-product.d.ts +0 -90
- package/dist/src/yaml/steps/xcode-app-product.d.ts.map +0 -1
- package/dist/src/yaml/steps/xcode-app-product.js +0 -247
- package/dist/src/yaml/steps/xcode-app-product.test.d.ts +0 -2
- package/dist/src/yaml/steps/xcode-app-product.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/xcode-app-product.test.js +0 -202
- package/dist/src/yaml/steps/xcode-derived-data.test.d.ts +0 -30
- package/dist/src/yaml/steps/xcode-derived-data.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/xcode-derived-data.test.js +0 -279
- package/dist/src/yaml/steps/xcode-destination.d.ts +0 -47
- package/dist/src/yaml/steps/xcode-destination.d.ts.map +0 -1
- package/dist/src/yaml/steps/xcode-destination.js +0 -202
- package/dist/src/yaml/steps/xcode-destination.test.d.ts +0 -9
- package/dist/src/yaml/steps/xcode-destination.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/xcode-destination.test.js +0 -227
- package/dist/src/yaml/steps/xcode-new.test.d.ts +0 -5
- package/dist/src/yaml/steps/xcode-new.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/xcode-new.test.js +0 -211
- package/dist/src/yaml/steps/xcode-resolve-retry.test.d.ts +0 -9
- package/dist/src/yaml/steps/xcode-resolve-retry.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/xcode-resolve-retry.test.js +0 -146
- package/dist/src/yaml/steps/xcode-simulator-archs.d.ts +0 -53
- package/dist/src/yaml/steps/xcode-simulator-archs.d.ts.map +0 -1
- package/dist/src/yaml/steps/xcode-simulator-archs.js +0 -98
- package/dist/src/yaml/steps/xcode-simulator-archs.test.d.ts +0 -21
- package/dist/src/yaml/steps/xcode-simulator-archs.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/xcode-simulator-archs.test.js +0 -155
- package/dist/src/yaml/steps/xcode.d.ts +0 -230
- package/dist/src/yaml/steps/xcode.d.ts.map +0 -1
- package/dist/src/yaml/steps/xcode.js +0 -1350
- package/dist/src/yaml/types.d.ts +0 -76
- package/dist/src/yaml/types.d.ts.map +0 -1
- package/dist/src/yaml/types.js +0 -5
- package/dist/src/yaml/validation-types.d.ts +0 -102
- package/dist/src/yaml/validation-types.d.ts.map +0 -1
- package/dist/src/yaml/validation-types.js +0 -8
- package/dist/src/yaml/yaml-updater.d.ts +0 -24
- package/dist/src/yaml/yaml-updater.d.ts.map +0 -1
- package/dist/src/yaml/yaml-updater.js +0 -128
|
@@ -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
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import { BaseStepExecutor } from './base.js';
|
|
2
|
-
import type { StepDef, CIConfig } from '../../types.js';
|
|
3
|
-
/**
|
|
4
|
-
* A credential the pipeline declares, the build reads, and nobody supplied.
|
|
5
|
-
*
|
|
6
|
-
* Thrown at generation time, from the step that would have written the file,
|
|
7
|
-
* so the build stops before its own build tool fails for a reason that names
|
|
8
|
-
* the project instead of the value we dropped. Generation time is also the
|
|
9
|
-
* only place `is_skippable` cannot swallow it: the converter sets that flag on
|
|
10
|
-
* a StepDef *after* `execute()` returns, so a step which merely exited
|
|
11
|
-
* non-zero would be reported as "failed but marked skippable — continuing".
|
|
12
|
-
*/
|
|
13
|
-
export declare class MissingFileSecretError extends Error {
|
|
14
|
-
readonly varName: string;
|
|
15
|
-
readonly targetPath: string;
|
|
16
|
-
constructor(varName: string, targetPath: string);
|
|
17
|
-
}
|
|
18
|
-
export interface FileInputs {
|
|
19
|
-
/** Path where the file should be written, relative to the project root. */
|
|
20
|
-
target_path: string;
|
|
21
|
-
/** Name of the env var that holds the file content (resolved from secrets). */
|
|
22
|
-
var_name: string;
|
|
23
|
-
/**
|
|
24
|
-
* When true, the secret value is already base64-encoded binary (e.g. KEYSTORE_BASE64).
|
|
25
|
-
* The content is embedded as-is without re-encoding, so the runtime script decodes
|
|
26
|
-
* it once with `base64 -d` to recover the original binary.
|
|
27
|
-
*/
|
|
28
|
-
base64_encoded?: boolean;
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Writes a file to a target path at runtime.
|
|
32
|
-
*
|
|
33
|
-
* The file content is stored in .cibuild-secrets.json and loaded by EnvResolver
|
|
34
|
-
* into the `env` map before execute() is called. We base64-encode the value
|
|
35
|
-
* and embed it into the generated script, then decode at runtime with `base64 -d`.
|
|
36
|
-
* Base64 output contains only [A-Za-z0-9+/=] so it is safe to embed in any shell
|
|
37
|
-
* quoting context regardless of the original content (JSON, certificates, etc.).
|
|
38
|
-
*/
|
|
39
|
-
export declare class FileStepExecutor extends BaseStepExecutor {
|
|
40
|
-
execute(inputs: FileInputs, env: Record<string, string>, _config: CIConfig): Promise<StepDef>;
|
|
41
|
-
/**
|
|
42
|
-
* Whether the build will find the file at `target_path` without this step.
|
|
43
|
-
*
|
|
44
|
-
* Asked at generation time, which is when the step decides, and answerable
|
|
45
|
-
* because generation happens inside the checkout — on the host path locally
|
|
46
|
-
* and on the sandbox path inside the guest. The path is composed exactly the
|
|
47
|
-
* way the generated script composes the one it writes to, so the two cannot
|
|
48
|
-
* disagree about which file is in question.
|
|
49
|
-
*/
|
|
50
|
-
private fileAlreadyInCheckout;
|
|
51
|
-
}
|
|
52
|
-
//# sourceMappingURL=file.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"file.d.ts","sourceRoot":"","sources":["../../../../src/yaml/steps/file.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAExD;;;;;;;;;GASG;AACH,qBAAa,sBAAuB,SAAQ,KAAK;IAC/C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;gBAEhB,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;CAyBhD;AAED,MAAM,WAAW,UAAU;IACzB,2EAA2E;IAC3E,WAAW,EAAE,MAAM,CAAC;IACpB,+EAA+E;IAC/E,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;;;;;;GAQG;AACH,qBAAa,gBAAiB,SAAQ,gBAAgB;IAC9C,OAAO,CACX,MAAM,EAAE,UAAU,EAClB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC3B,OAAO,EAAE,QAAQ,GAChB,OAAO,CAAC,OAAO,CAAC;IAiDnB;;;;;;;;OAQG;IACH,OAAO,CAAC,qBAAqB;CAI9B"}
|
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
import { existsSync } from 'node:fs';
|
|
2
|
-
import { basename, join } from 'node:path';
|
|
3
|
-
import { BaseStepExecutor } from './base.js';
|
|
4
|
-
/**
|
|
5
|
-
* A credential the pipeline declares, the build reads, and nobody supplied.
|
|
6
|
-
*
|
|
7
|
-
* Thrown at generation time, from the step that would have written the file,
|
|
8
|
-
* so the build stops before its own build tool fails for a reason that names
|
|
9
|
-
* the project instead of the value we dropped. Generation time is also the
|
|
10
|
-
* only place `is_skippable` cannot swallow it: the converter sets that flag on
|
|
11
|
-
* a StepDef *after* `execute()` returns, so a step which merely exited
|
|
12
|
-
* non-zero would be reported as "failed but marked skippable — continuing".
|
|
13
|
-
*/
|
|
14
|
-
export class MissingFileSecretError extends Error {
|
|
15
|
-
varName;
|
|
16
|
-
targetPath;
|
|
17
|
-
constructor(varName, targetPath) {
|
|
18
|
-
super(`file@1.0.0 cannot write ${targetPath}: ${varName} is declared in this ` +
|
|
19
|
-
`pipeline but no value reached the build.\n` +
|
|
20
|
-
`\n` +
|
|
21
|
-
`A slot declared and left empty means the value arrives as a secret. ` +
|
|
22
|
-
`None did:\n` +
|
|
23
|
-
`not the pipeline itself, not .cibuild-secrets.json, and not this ` +
|
|
24
|
-
`build's environment.\n` +
|
|
25
|
-
`\n` +
|
|
26
|
-
`Supply it in one of two places:\n` +
|
|
27
|
-
`\n` +
|
|
28
|
-
` locally ci secrets add ${varName}\n` +
|
|
29
|
-
` remote build add ${varName} as an organization or pipeline ` +
|
|
30
|
-
`secret, then\n` +
|
|
31
|
-
` run the build again\n` +
|
|
32
|
-
`\n` +
|
|
33
|
-
`If ${basename(targetPath)} belongs to the repository instead, commit ` +
|
|
34
|
-
`it at\n` +
|
|
35
|
-
`${targetPath} — a file already in the checkout is used as it is.`);
|
|
36
|
-
this.name = 'MissingFileSecretError';
|
|
37
|
-
this.varName = varName;
|
|
38
|
-
this.targetPath = targetPath;
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* Writes a file to a target path at runtime.
|
|
43
|
-
*
|
|
44
|
-
* The file content is stored in .cibuild-secrets.json and loaded by EnvResolver
|
|
45
|
-
* into the `env` map before execute() is called. We base64-encode the value
|
|
46
|
-
* and embed it into the generated script, then decode at runtime with `base64 -d`.
|
|
47
|
-
* Base64 output contains only [A-Za-z0-9+/=] so it is safe to embed in any shell
|
|
48
|
-
* quoting context regardless of the original content (JSON, certificates, etc.).
|
|
49
|
-
*/
|
|
50
|
-
export class FileStepExecutor extends BaseStepExecutor {
|
|
51
|
-
async execute(inputs, env, _config) {
|
|
52
|
-
const targetPath = this.getRequiredInput(inputs, 'target_path', 'file');
|
|
53
|
-
const varName = this.getRequiredInput(inputs, 'var_name', 'file');
|
|
54
|
-
const filename = basename(targetPath);
|
|
55
|
-
const content = env[varName];
|
|
56
|
-
if (!content) {
|
|
57
|
-
// Two absences, and they mean opposite things. A `var_name` nothing
|
|
58
|
-
// declares is a genuinely optional credential — a release keystore on a
|
|
59
|
-
// debug workflow — and skipping it is correct. A `var_name` the pipeline
|
|
60
|
-
// declares and leaves empty is a value that was supposed to arrive as a
|
|
61
|
-
// secret and did not: after issue 01 it is in none of the four places a
|
|
62
|
-
// value can come from, so the build is guaranteed red later, for a
|
|
63
|
-
// reason nothing in the log connects to this step. `mergeEnvVars` puts a
|
|
64
|
-
// declared key in the map even when its value is the empty placeholder,
|
|
65
|
-
// and nothing else puts a key there, so presence is the whole test.
|
|
66
|
-
//
|
|
67
|
-
// Except when the repository already carries the file. The Android
|
|
68
|
-
// generator declares KEYSTORE_BASE64 once, globally, but emits its
|
|
69
|
-
// `file@` step on every workflow including `pull-request`, where nothing
|
|
70
|
-
// signs anything — so "declared and empty" alone would refuse builds
|
|
71
|
-
// that are green today and rightly so. The question worth asking is the
|
|
72
|
-
// one the build will ask: will the file be there when it is read?
|
|
73
|
-
if (varName in env && !this.fileAlreadyInCheckout(targetPath, env)) {
|
|
74
|
-
throw new MissingFileSecretError(varName, targetPath);
|
|
75
|
-
}
|
|
76
|
-
const reason = varName in env
|
|
77
|
-
? `${filename} is already in the checkout, using it`
|
|
78
|
-
: `skipping ${filename}`;
|
|
79
|
-
return this.createScriptStep(`echo "⚠️ ${varName} not set — ${reason}"`, 'file');
|
|
80
|
-
}
|
|
81
|
-
// Base64-encode the content so it can be embedded safely in the script
|
|
82
|
-
// regardless of quotes, newlines, dollar signs, or any other special characters.
|
|
83
|
-
// base64 output contains only [A-Za-z0-9+/=] which is safe in any shell context.
|
|
84
|
-
// When base64_encoded is true the secret is already base64 binary — skip re-encoding.
|
|
85
|
-
const encoded = inputs.base64_encoded
|
|
86
|
-
? content
|
|
87
|
-
: Buffer.from(content).toString('base64');
|
|
88
|
-
const scriptContent = `\
|
|
89
|
-
mkdir -p "$(dirname "\${CIBUILD_SOURCE_DIR:-$PWD}/${targetPath}")"
|
|
90
|
-
printf '%s' '${encoded}' | base64 -d > "\${CIBUILD_SOURCE_DIR:-$PWD}/${targetPath}"
|
|
91
|
-
echo "✓ Written ${filename}"`;
|
|
92
|
-
return this.createScriptStep(this.createBashScript(scriptContent, 'file'), 'file');
|
|
93
|
-
}
|
|
94
|
-
/**
|
|
95
|
-
* Whether the build will find the file at `target_path` without this step.
|
|
96
|
-
*
|
|
97
|
-
* Asked at generation time, which is when the step decides, and answerable
|
|
98
|
-
* because generation happens inside the checkout — on the host path locally
|
|
99
|
-
* and on the sandbox path inside the guest. The path is composed exactly the
|
|
100
|
-
* way the generated script composes the one it writes to, so the two cannot
|
|
101
|
-
* disagree about which file is in question.
|
|
102
|
-
*/
|
|
103
|
-
fileAlreadyInCheckout(targetPath, env) {
|
|
104
|
-
const sourceDir = env.CIBUILD_SOURCE_DIR || process.cwd();
|
|
105
|
-
return existsSync(join(sourceDir, targetPath));
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
//# sourceMappingURL=file.js.map
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Flutter steps: flutter-installer, flutter-build, flutter-test
|
|
3
|
-
*/
|
|
4
|
-
import { BaseStepExecutor } from './base.js';
|
|
5
|
-
import type { StepDef, CIConfig } from '../../types.js';
|
|
6
|
-
import type { ValidationRequirement, StepOutput } from '../validation-types.js';
|
|
7
|
-
export interface FlutterInstallerInputs {
|
|
8
|
-
/** Flutter SDK version or channel (stable, beta, master, or specific version) */
|
|
9
|
-
version?: string;
|
|
10
|
-
/** Installation path for the Flutter SDK */
|
|
11
|
-
installation_path?: string;
|
|
12
|
-
}
|
|
13
|
-
/**
|
|
14
|
-
* Installs or activates a specific Flutter SDK version.
|
|
15
|
-
*/
|
|
16
|
-
export declare class FlutterInstallerStepExecutor extends BaseStepExecutor {
|
|
17
|
-
getValidationRequirements(_inputs: FlutterInstallerInputs, _env: Record<string, string>, _config: CIConfig): ValidationRequirement[];
|
|
18
|
-
getOutputs(): StepOutput[];
|
|
19
|
-
execute(inputs: FlutterInstallerInputs, _env: Record<string, string>, _config: CIConfig): Promise<StepDef>;
|
|
20
|
-
}
|
|
21
|
-
export interface FlutterBuildInputs {
|
|
22
|
-
/** Root directory of the Flutter project */
|
|
23
|
-
project_location?: string;
|
|
24
|
-
/** Platform to build: ios | android | both */
|
|
25
|
-
platform?: string;
|
|
26
|
-
/** Additional flutter build parameters */
|
|
27
|
-
additional_build_params?: string;
|
|
28
|
-
/** iOS output type: app | archive */
|
|
29
|
-
ios_output_type?: string;
|
|
30
|
-
/** Android output type: apk | appbundle */
|
|
31
|
-
android_output_type?: string;
|
|
32
|
-
/** Additional iOS build params */
|
|
33
|
-
ios_additional_params?: string;
|
|
34
|
-
/** Additional Android build params */
|
|
35
|
-
android_additional_params?: string;
|
|
36
|
-
/** Enable debug mode (true/false) */
|
|
37
|
-
is_debug_mode?: string;
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* Builds a Flutter project for iOS and/or Android.
|
|
41
|
-
*/
|
|
42
|
-
export declare class FlutterBuildStepExecutor extends BaseStepExecutor {
|
|
43
|
-
getValidationRequirements(_inputs: FlutterBuildInputs, _env: Record<string, string>, _config: CIConfig): ValidationRequirement[];
|
|
44
|
-
getOutputs(): StepOutput[];
|
|
45
|
-
execute(inputs: FlutterBuildInputs, _env: Record<string, string>, _config: CIConfig): Promise<StepDef>;
|
|
46
|
-
}
|
|
47
|
-
export interface FlutterTestInputs {
|
|
48
|
-
/** Root directory of the Flutter project */
|
|
49
|
-
project_location?: string;
|
|
50
|
-
/** Additional flutter test parameters */
|
|
51
|
-
additional_params?: string;
|
|
52
|
-
/** Enable coverage collection (true/false) */
|
|
53
|
-
generate_code_coverage_files?: string;
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* Runs flutter test with optional coverage.
|
|
57
|
-
*/
|
|
58
|
-
export declare class FlutterTestStepExecutor extends BaseStepExecutor {
|
|
59
|
-
getValidationRequirements(_inputs: FlutterTestInputs, _env: Record<string, string>, _config: CIConfig): ValidationRequirement[];
|
|
60
|
-
getOutputs(): StepOutput[];
|
|
61
|
-
execute(inputs: FlutterTestInputs, _env: Record<string, string>, _config: CIConfig): Promise<StepDef>;
|
|
62
|
-
}
|
|
63
|
-
//# sourceMappingURL=flutter.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"flutter.d.ts","sourceRoot":"","sources":["../../../../src/yaml/steps/flutter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,KAAK,EAAE,qBAAqB,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAMhF,MAAM,WAAW,sBAAsB;IACrC,iFAAiF;IACjF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,4CAA4C;IAC5C,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;GAEG;AACH,qBAAa,4BAA6B,SAAQ,gBAAgB;IAChE,yBAAyB,CACvB,OAAO,EAAE,sBAAsB,EAC/B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC5B,OAAO,EAAE,QAAQ,GAChB,qBAAqB,EAAE;IAI1B,UAAU,IAAI,UAAU,EAAE;IAMpB,OAAO,CAAC,MAAM,EAAE,sBAAsB,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;CA2DjH;AAMD,MAAM,WAAW,kBAAkB;IACjC,4CAA4C;IAC5C,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,0CAA0C;IAC1C,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,qCAAqC;IACrC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,2CAA2C;IAC3C,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,kCAAkC;IAClC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,sCAAsC;IACtC,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,qCAAqC;IACrC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,qBAAa,wBAAyB,SAAQ,gBAAgB;IAC5D,yBAAyB,CACvB,OAAO,EAAE,kBAAkB,EAC3B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC5B,OAAO,EAAE,QAAQ,GAChB,qBAAqB,EAAE;IAM1B,UAAU,IAAI,UAAU,EAAE;IAQpB,OAAO,CAAC,MAAM,EAAE,kBAAkB,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;CAyF7G;AAMD,MAAM,WAAW,iBAAiB;IAChC,4CAA4C;IAC5C,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,yCAAyC;IACzC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,8CAA8C;IAC9C,4BAA4B,CAAC,EAAE,MAAM,CAAC;CACvC;AAED;;GAEG;AACH,qBAAa,uBAAwB,SAAQ,gBAAgB;IAC3D,yBAAyB,CACvB,OAAO,EAAE,iBAAiB,EAC1B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC5B,OAAO,EAAE,QAAQ,GAChB,qBAAqB,EAAE;IAM1B,UAAU,IAAI,UAAU,EAAE;IAMpB,OAAO,CAAC,MAAM,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;CAgD5G"}
|