@mpgd/cli 0.67.0 → 0.68.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.
@@ -275,7 +275,8 @@ async function submitVerifiedIosBuildResolved(input, run, { marketingVersion, bu
275
275
  let membershipFailure;
276
276
  try {
277
277
  const memberships = await run(['testflight', 'groups', 'list', '--build-id', build.id, '--internal'], lookupTimeoutMs);
278
- if (findInternalGroup(memberships, input.internalGroupId)) {
278
+ if (readBuildGroupMembership(memberships, build.id).some((group) => group.id === input.internalGroupId
279
+ && group.type === 'internal')) {
279
280
  return { ...base, status: 'testflight-ready', ...uploadReference, buildId: build.id };
280
281
  }
281
282
  }
@@ -405,6 +406,24 @@ function findInternalGroup(response, groupId) {
405
406
  && value.type === 'betaGroups' && value.id === groupId
406
407
  && isRecord(value.attributes) && value.attributes.isInternalGroup === true);
407
408
  }
409
+ /**
410
+ * asc 5.5.0 prints `testflight groups list --build-id` as its own membership
411
+ * result, not as App Store Connect resources:
412
+ * `{ buildId, appId, complete, groups: [{ id, name, type, membership }] }`
413
+ * (`internal/cli/testflight/build_group_membership.go`). An incomplete lookup
414
+ * is never read as "not a member".
415
+ */
416
+ export function readBuildGroupMembership(response, buildId) {
417
+ if (!isRecord(response) || response.buildId !== buildId || !Array.isArray(response.groups)
418
+ || response.groups.some((group) => !isRecord(group) || typeof group.id !== 'string'
419
+ || group.id === '' || typeof group.type !== 'string')) {
420
+ throw new Error('asc testflight groups list --build-id returned an invalid membership result.');
421
+ }
422
+ if (response.complete !== true) {
423
+ throw new Error('asc could not read every TestFlight group of the build.');
424
+ }
425
+ return response.groups;
426
+ }
408
427
  function readDataArray(response, command) {
409
428
  if (!isRecord(response) || !Array.isArray(response.data)) {
410
429
  throw new Error(`asc ${command} returned an invalid JSON schema.`);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mpgd/cli",
3
- "version": "0.67.0",
3
+ "version": "0.68.0",
4
4
  "description": "Gunshi CLI for mpgd-kit starter generation and target workflow orchestration.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -70,9 +70,9 @@
70
70
  "parse5": "7.3.0",
71
71
  "postcss": "8.5.28",
72
72
  "postcss-value-parser": "4.2.0",
73
- "@mpgd/catalog": "0.14.2",
73
+ "@mpgd/catalog": "0.15.0",
74
+ "@mpgd/target-config": "0.24.7",
74
75
  "@mpgd/phaser-assets": "0.9.1",
75
- "@mpgd/target-config": "0.24.6",
76
76
  "@mpgd/platform": "0.35.0"
77
77
  },
78
78
  "devDependencies": {
@@ -81,19 +81,19 @@
81
81
  "@types/yauzl": "3.4.0",
82
82
  "ttsc": "0.34.2",
83
83
  "typescript": "7.0.2",
84
- "@mpgd/adapter-ait": "0.21.8",
84
+ "@mpgd/adapter-ait": "0.21.9",
85
85
  "@mpgd/adapter-browser": "0.12.4",
86
- "@mpgd/adapter-capacitor": "0.19.0",
86
+ "@mpgd/adapter-capacitor": "0.19.1",
87
+ "@mpgd/adapter-devvit": "0.14.11",
87
88
  "@mpgd/analytics": "0.5.8",
88
- "@mpgd/adapter-verse8": "0.7.19",
89
- "@mpgd/adapter-devvit": "0.14.10",
90
89
  "@mpgd/bridge": "0.18.1",
91
- "@mpgd/capacitor-storekit": "0.7.0",
92
- "@mpgd/capacitor-play-billing": "0.6.1",
93
- "@mpgd/game-runtime": "0.10.0",
94
- "@mpgd/game-services": "0.33.0",
95
- "@mpgd/i18n": "0.6.29",
96
- "@mpgd/lite-shell": "0.1.0"
90
+ "@mpgd/capacitor-play-billing": "0.6.2",
91
+ "@mpgd/adapter-verse8": "0.7.20",
92
+ "@mpgd/game-runtime": "0.10.1",
93
+ "@mpgd/capacitor-storekit": "0.7.1",
94
+ "@mpgd/game-services": "0.33.1",
95
+ "@mpgd/lite-shell": "0.1.0",
96
+ "@mpgd/i18n": "0.6.29"
97
97
  },
98
98
  "main": "./dist/index.js",
99
99
  "types": "./dist/index.d.ts",