@wix/himalaya-cli 0.1625.0 → 0.1626.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cli.mjs CHANGED
@@ -3051,6 +3051,7 @@ __export(dist_jobs_exports, {
3051
3051
  ANDROID_FORMAT_WRONG_SIGNER: () => ANDROID_FORMAT_WRONG_SIGNER,
3052
3052
  ANDROID_SIGNING_ALIASES: () => ANDROID_SIGNING_ALIASES,
3053
3053
  ANDROID_SIGNING_POLICIES: () => ANDROID_SIGNING_POLICIES,
3054
+ APPLE_ERROR_CODES_MAX: () => APPLE_ERROR_CODES_MAX,
3054
3055
  CUSTOMER_UPLOAD_ABANDONED: () => CUSTOMER_UPLOAD_ABANDONED,
3055
3056
  CUSTOMER_UPLOAD_LEASE_MS: () => CUSTOMER_UPLOAD_LEASE_MS,
3056
3057
  CUSTOMER_UPLOAD_MAX_ATTEMPTS: () => CUSTOMER_UPLOAD_MAX_ATTEMPTS,
@@ -3062,6 +3063,7 @@ __export(dist_jobs_exports, {
3062
3063
  DEFAULT_DIST_SHELL: () => DEFAULT_DIST_SHELL,
3063
3064
  DEFAULT_DIST_SIGNING: () => DEFAULT_DIST_SIGNING,
3064
3065
  DEFAULT_GIT_URL: () => DEFAULT_GIT_URL,
3066
+ DIST_ERROR_CODES: () => DIST_ERROR_CODES,
3065
3067
  DIST_PACKAGE_NAME: () => DIST_PACKAGE_NAME,
3066
3068
  DIST_PARAMS_FLAG: () => DIST_PARAMS_FLAG,
3067
3069
  DIST_SHELLS: () => DIST_SHELLS,
@@ -3073,12 +3075,15 @@ __export(dist_jobs_exports, {
3073
3075
  SCOPE_READ: () => SCOPE_READ,
3074
3076
  WIX_MANAGED_SIGNING_ALIASES: () => WIX_MANAGED_SIGNING_ALIASES,
3075
3077
  androidFormatSkewFailed: () => androidFormatSkewFailed,
3078
+ appleErrorCodesOf: () => appleErrorCodesOf,
3076
3079
  borrowableIosIds: () => borrowableIosIds,
3077
3080
  credsFromConfig: () => credsFromConfig,
3078
3081
  customerUploadClaimable: () => customerUploadClaimable,
3079
3082
  customerUploadFailure: () => customerUploadFailure,
3083
+ distErrorCodeOf: () => distErrorCodeOf,
3080
3084
  distJobSpec: () => distJobSpec,
3081
3085
  encodeDistParams: () => encodeDistParams,
3086
+ failureCodesOf: () => failureCodesOf,
3082
3087
  isBorrowableIosId: () => isBorrowableIosId,
3083
3088
  isSuccess: () => isSuccess,
3084
3089
  isTerminal: () => isTerminal,
@@ -3285,6 +3290,22 @@ function resolveAndroidSigning(requested) {
3285
3290
  function androidFormatSkewFailed(record3) {
3286
3291
  return record3.platform === "android" && typeof record3.error === "string" && [ANDROID_FORMAT_NOT_BUILT, ANDROID_FORMAT_WRONG_SIGNER, ANDROID_FORMAT_NOT_REQUESTED, ANDROID_BUILD_TYPE_NOT_BUILT].some((code) => record3.error.includes(`${code}:`));
3287
3292
  }
3293
+ function distErrorCodeOf(error) {
3294
+ if (typeof error !== "string") return void 0;
3295
+ const code = /^[a-z][a-z0-9_]*/.exec(error)?.[0];
3296
+ return DIST_ERROR_CODES.includes(code ?? "") ? code : void 0;
3297
+ }
3298
+ function appleErrorCodesOf(diagnostics) {
3299
+ if (typeof diagnostics !== "string") return void 0;
3300
+ const codes = [...new Set(diagnostics.match(/\bITMS-\d{4,5}\b/g) ?? [])].slice(0, APPLE_ERROR_CODES_MAX);
3301
+ return codes.length > 0 ? codes : void 0;
3302
+ }
3303
+ function failureCodesOf(record3, body) {
3304
+ const errorCode = distErrorCodeOf(body.error);
3305
+ if (errorCode === "customer_signing_fetch_failed" && record3.errorCode) return {};
3306
+ const validation = errorCode === "customer_app_store_validation_failed";
3307
+ return { errorCode, appleErrorCodes: validation ? appleErrorCodesOf(body.diagnostics) : void 0 };
3308
+ }
3288
3309
  function resolveAndroidFormat(requested) {
3289
3310
  if (requested === void 0 || requested === null || requested === "") return { format: DEFAULT_ANDROID_FORMAT };
3290
3311
  if (typeof requested === "string" && ANDROID_FORMATS.includes(requested)) {
@@ -3400,10 +3421,42 @@ function distJobSpec(req) {
3400
3421
  ...req.xcodeVersion ? { xcodeVersion: req.xcodeVersion } : {}
3401
3422
  };
3402
3423
  }
3403
- var IN_FLIGHT, SCOPE_CREATE, SCOPE_READ, SCOPE_CANCEL, DEFAULT_BASE_URL, DEFAULT_OAUTH_URL, TOKEN_TTL_MS, JobServiceError, JobServiceBroker, CUSTOMER_UPLOAD_LEASE_MS, CUSTOMER_UPLOAD_RETRY_DELAYS_MS, CUSTOMER_UPLOAD_MAX_ATTEMPTS, CUSTOMER_UPLOAD_ABANDONED, MAX_MEASURABLE_IDENTITY_WINDOW, DIST_SHELLS, DEFAULT_DIST_SHELL, DEFAULT_BORROWABLE_IOS_IDS, BUNDLE_ID_RE, DEFAULT_DIST_SIGNING, WIX_MANAGED_SIGNING_ALIASES, DEFAULT_ANDROID_SIGNING, ANDROID_SIGNING_POLICIES, ANDROID_SIGNING_ALIASES, DEFAULT_ANDROID_FORMAT, ANDROID_FORMATS, ANDROID_FORMAT_NOT_BUILT, ANDROID_FORMAT_WRONG_SIGNER, ANDROID_FORMAT_NOT_REQUESTED, DEFAULT_ANDROID_BUILD_TYPE, ANDROID_BUILD_TYPES, ANDROID_BUILD_TYPE_NOT_BUILT, DEFAULT_GIT_URL, DIST_PACKAGE_NAME, DIST_PARAMS_FLAG, MAX_COMMAND_CHARS;
3424
+ var DIST_ERROR_CODES, APPLE_ERROR_CODES_MAX, IN_FLIGHT, SCOPE_CREATE, SCOPE_READ, SCOPE_CANCEL, DEFAULT_BASE_URL, DEFAULT_OAUTH_URL, TOKEN_TTL_MS, JobServiceError, JobServiceBroker, CUSTOMER_UPLOAD_LEASE_MS, CUSTOMER_UPLOAD_RETRY_DELAYS_MS, CUSTOMER_UPLOAD_MAX_ATTEMPTS, CUSTOMER_UPLOAD_ABANDONED, MAX_MEASURABLE_IDENTITY_WINDOW, DIST_SHELLS, DEFAULT_DIST_SHELL, DEFAULT_BORROWABLE_IOS_IDS, BUNDLE_ID_RE, DEFAULT_DIST_SIGNING, WIX_MANAGED_SIGNING_ALIASES, DEFAULT_ANDROID_SIGNING, ANDROID_SIGNING_POLICIES, ANDROID_SIGNING_ALIASES, DEFAULT_ANDROID_FORMAT, ANDROID_FORMATS, ANDROID_FORMAT_NOT_BUILT, ANDROID_FORMAT_WRONG_SIGNER, ANDROID_FORMAT_NOT_REQUESTED, DEFAULT_ANDROID_BUILD_TYPE, ANDROID_BUILD_TYPES, ANDROID_BUILD_TYPE_NOT_BUILT, DEFAULT_GIT_URL, DIST_PACKAGE_NAME, DIST_PARAMS_FLAG, MAX_COMMAND_CHARS;
3404
3425
  var init_dist_jobs = __esm({
3405
3426
  "../../core/serve-control/src/dist-jobs.ts"() {
3406
3427
  init_define_HHP_CATALOG();
3428
+ DIST_ERROR_CODES = [
3429
+ "customer_agent_keychain_unavailable",
3430
+ "customer_app_store_ipa_unreadable",
3431
+ "customer_app_store_validation_failed",
3432
+ "customer_app_store_validation_key_missing",
3433
+ "customer_archive_invalid",
3434
+ "customer_artifact_identity_mismatch",
3435
+ "customer_build_failed",
3436
+ "customer_entitlement_not_granted",
3437
+ "customer_entitlements_unresolved",
3438
+ "customer_firebase_binding_missing",
3439
+ "customer_firebase_config_missing",
3440
+ "customer_firebase_fetch_failed",
3441
+ "customer_identity_preexisting",
3442
+ "customer_ipa_invalid",
3443
+ "customer_profile_invalid",
3444
+ "customer_profile_push_missing",
3445
+ "customer_signing_ambient_identity_unavailable",
3446
+ "customer_signing_binding_mismatch",
3447
+ "customer_signing_binding_missing",
3448
+ "customer_signing_cleanup_failed",
3449
+ "customer_signing_command_failed",
3450
+ "customer_signing_expired",
3451
+ "customer_signing_fetch_failed",
3452
+ "customer_signing_identity_unavailable",
3453
+ "customer_signing_install_failed",
3454
+ "customer_signing_noninteractive_unavailable",
3455
+ "customer_signing_policy_mismatch",
3456
+ "customer_signing_project_ambiguous",
3457
+ "customer_signing_runner_identity_unavailable"
3458
+ ];
3459
+ APPLE_ERROR_CODES_MAX = 5;
3407
3460
  IN_FLIGHT = /* @__PURE__ */ new Set(["CREATED", "QUEUED", "WORKING"]);
3408
3461
  SCOPE_CREATE = "MRE.JOB_CREATE";
3409
3462
  SCOPE_READ = "MRE.JOB_READ";
@@ -29421,7 +29474,6 @@ function resolveIdiom(tokens2, ctx = {}) {
29421
29474
  var IDIOM_CONTEXTS, UNSAFE_KEYS;
29422
29475
  var init_idiom = __esm({
29423
29476
  "../../core/ts/src/idiom.ts"() {
29424
- "use strict";
29425
29477
  init_define_HHP_CATALOG();
29426
29478
  IDIOM_CONTEXTS = {
29427
29479
  ios: { native: ["ios"] },
@@ -359,6 +359,28 @@ read it only once `status` is `FAILURE`. A Job Service retry clears it once its
359
359
  minted, or when it ends `SUCCESS`. It misses a signing error raised on the Mac after the identity
360
360
  arrived (a keychain or profile install), which then reads as a plain failure.
361
361
 
362
+ ### Why a customer-signed build failed — `errorCode` and `appleErrorCodes`
363
+
364
+ A customer-signed build (`signing: byo`, a Containers App Store build among them) fails on the Mac
365
+ with a code of the pool's own, which the pool reports as the start of `error`. Serve keeps it, typed,
366
+ as `errorCode` when it is one of the pool's known codes; a surface branches on that, never on
367
+ `error`. Read it once `status` is `FAILURE`; `SUCCESS` clears it; absent means an
368
+ unknown reason. For example:
369
+
370
+ - **`customer_app_store_validation_failed`** — Apple refused the package when the pool validated it.
371
+ Apple's codes ride beside it as `appleErrorCodes` (`["ITMS-90062"]`, at most five): a version Apple
372
+ won't take, or an icon it refuses, read differently.
373
+ - **`customer_signing_expired`** — the build waited past its signing window (one hour from the
374
+ dispatch) before the Mac asked for its signing files. Serve writes it when it refuses that fetch;
375
+ the pool's own report then says only `customer_signing_fetch_failed (403)`, which does not replace
376
+ it. Sending the build again opens a new window.
377
+ - **`customer_identity_preexisting`** / **`customer_signing_install_failed`** — the signing identity
378
+ could not go into the Mac's keychain, for example because another build of the same owner was
379
+ running there.
380
+
381
+ A Job Service retry of a failed customer job is refused its signing files, so it fails with
382
+ `customer_signing_fetch_failed`; that leaves the first attempt's `errorCode` as it was.
383
+
362
384
  A build that throws after the build step — an S3 upload, say — reports `FAILURE` too, with
363
385
  `error: "dist failed: …"`. Before, the pool exited 0 having reported nothing, and the job ended
364
386
  `SUCCESS` with no artifact. When a failure report cannot be delivered at all, the job exits
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wix/himalaya-cli",
3
- "version": "0.1625.0",
3
+ "version": "0.1626.0",
4
4
  "type": "module",
5
5
  "description": "himi — the Himalaya authoring CLI. Build a Tier-5 content package on your own machine, push it to the production serve as a draft, preview it on web + Himi Player, and read worker logs back — the remote dev loop. Wraps @himalaya/serve-cli for transport.",
6
6
  "keywords": [
@@ -72,5 +72,5 @@
72
72
  "artifactId": "himalaya-cli"
73
73
  }
74
74
  },
75
- "falconPackageHash": "8efc7d4ff22286fcedefe6b5bd1a4fe40061fe077450dbe34b459022"
75
+ "falconPackageHash": "869790bb3cee9edb5ddd63f3befb4a65c1999a3ba9f388e5ad711509"
76
76
  }