@ankhorage/deploy 0.6.0 → 0.7.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.
Files changed (233) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +1 -1
  3. package/dist/domain/storeListing/StoreListingAsset.d.ts +9 -0
  4. package/dist/domain/storeListing/StoreListingAsset.d.ts.map +1 -0
  5. package/dist/domain/storeListing/StoreListingAsset.js +2 -0
  6. package/dist/domain/storeListing/StoreListingAsset.js.map +1 -0
  7. package/dist/domain/storeListing/StoreListingAssetSet.d.ts +9 -0
  8. package/dist/domain/storeListing/StoreListingAssetSet.d.ts.map +1 -0
  9. package/dist/domain/storeListing/StoreListingAssetSet.js +2 -0
  10. package/dist/domain/storeListing/StoreListingAssetSet.js.map +1 -0
  11. package/dist/domain/storeListing/StoreListingDesiredState.d.ts +8 -0
  12. package/dist/domain/storeListing/StoreListingDesiredState.d.ts.map +1 -0
  13. package/dist/domain/storeListing/StoreListingDesiredState.js +2 -0
  14. package/dist/domain/storeListing/StoreListingDesiredState.js.map +1 -0
  15. package/dist/domain/storeListing/StoreListingDiagnostic.d.ts +12 -0
  16. package/dist/domain/storeListing/StoreListingDiagnostic.d.ts.map +1 -0
  17. package/dist/domain/storeListing/StoreListingDiagnostic.js +2 -0
  18. package/dist/domain/storeListing/StoreListingDiagnostic.js.map +1 -0
  19. package/dist/domain/storeListing/StoreListingField.d.ts +2 -0
  20. package/dist/domain/storeListing/StoreListingField.d.ts.map +1 -0
  21. package/dist/domain/storeListing/StoreListingField.js +2 -0
  22. package/dist/domain/storeListing/StoreListingField.js.map +1 -0
  23. package/dist/domain/storeListing/StoreListingLocale.d.ts +13 -0
  24. package/dist/domain/storeListing/StoreListingLocale.d.ts.map +1 -0
  25. package/dist/domain/storeListing/StoreListingLocale.js +2 -0
  26. package/dist/domain/storeListing/StoreListingLocale.js.map +1 -0
  27. package/dist/domain/storeListing/StoreListingPlan.d.ts +10 -0
  28. package/dist/domain/storeListing/StoreListingPlan.d.ts.map +1 -0
  29. package/dist/domain/storeListing/StoreListingPlan.js +2 -0
  30. package/dist/domain/storeListing/StoreListingPlan.js.map +1 -0
  31. package/dist/domain/storeListing/StoreListingPlanStep.d.ts +10 -0
  32. package/dist/domain/storeListing/StoreListingPlanStep.d.ts.map +1 -0
  33. package/dist/domain/storeListing/StoreListingPlanStep.js +2 -0
  34. package/dist/domain/storeListing/StoreListingPlanStep.js.map +1 -0
  35. package/dist/domain/storeListing/StoreListingRemoteAssetSet.d.ts +9 -0
  36. package/dist/domain/storeListing/StoreListingRemoteAssetSet.d.ts.map +1 -0
  37. package/dist/domain/storeListing/StoreListingRemoteAssetSet.js +2 -0
  38. package/dist/domain/storeListing/StoreListingRemoteAssetSet.js.map +1 -0
  39. package/dist/domain/storeListing/StoreListingTarget.d.ts +2 -0
  40. package/dist/domain/storeListing/StoreListingTarget.d.ts.map +1 -0
  41. package/dist/domain/storeListing/StoreListingTarget.js +2 -0
  42. package/dist/domain/storeListing/StoreListingTarget.js.map +1 -0
  43. package/dist/domain/storeListing/StoreListingTargetState.d.ts +13 -0
  44. package/dist/domain/storeListing/StoreListingTargetState.d.ts.map +1 -0
  45. package/dist/domain/storeListing/StoreListingTargetState.js +2 -0
  46. package/dist/domain/storeListing/StoreListingTargetState.js.map +1 -0
  47. package/dist/domain/storeListing/createStoreListingCurrentRevision.d.ts +3 -0
  48. package/dist/domain/storeListing/createStoreListingCurrentRevision.d.ts.map +1 -0
  49. package/dist/domain/storeListing/createStoreListingCurrentRevision.js +16 -0
  50. package/dist/domain/storeListing/createStoreListingCurrentRevision.js.map +1 -0
  51. package/dist/domain/storeListing/createStoreListingPlan.d.ts +9 -0
  52. package/dist/domain/storeListing/createStoreListingPlan.d.ts.map +1 -0
  53. package/dist/domain/storeListing/createStoreListingPlan.js +85 -0
  54. package/dist/domain/storeListing/createStoreListingPlan.js.map +1 -0
  55. package/dist/domain/storeListing/normalizeStoreListingLocale.d.ts +2 -0
  56. package/dist/domain/storeListing/normalizeStoreListingLocale.d.ts.map +1 -0
  57. package/dist/domain/storeListing/normalizeStoreListingLocale.js +18 -0
  58. package/dist/domain/storeListing/normalizeStoreListingLocale.js.map +1 -0
  59. package/dist/domain/storeListing/storeListingLocaleFieldValue.d.ts +4 -0
  60. package/dist/domain/storeListing/storeListingLocaleFieldValue.d.ts.map +1 -0
  61. package/dist/domain/storeListing/storeListingLocaleFieldValue.js +23 -0
  62. package/dist/domain/storeListing/storeListingLocaleFieldValue.js.map +1 -0
  63. package/dist/project/storeListing/ProjectStoreListing.d.ts +8 -0
  64. package/dist/project/storeListing/ProjectStoreListing.d.ts.map +1 -0
  65. package/dist/project/storeListing/ProjectStoreListing.js +2 -0
  66. package/dist/project/storeListing/ProjectStoreListing.js.map +1 -0
  67. package/dist/project/storeListing/ProjectStoreListingAccess.d.ts +7 -0
  68. package/dist/project/storeListing/ProjectStoreListingAccess.d.ts.map +1 -0
  69. package/dist/project/storeListing/ProjectStoreListingAccess.js +2 -0
  70. package/dist/project/storeListing/ProjectStoreListingAccess.js.map +1 -0
  71. package/dist/project/storeListing/ProjectStoreListingAsset.d.ts +5 -0
  72. package/dist/project/storeListing/ProjectStoreListingAsset.d.ts.map +1 -0
  73. package/dist/project/storeListing/ProjectStoreListingAsset.js +2 -0
  74. package/dist/project/storeListing/ProjectStoreListingAsset.js.map +1 -0
  75. package/dist/project/storeListing/ProjectStoreListingAssetSet.d.ts +9 -0
  76. package/dist/project/storeListing/ProjectStoreListingAssetSet.d.ts.map +1 -0
  77. package/dist/project/storeListing/ProjectStoreListingAssetSet.js +2 -0
  78. package/dist/project/storeListing/ProjectStoreListingAssetSet.js.map +1 -0
  79. package/dist/project/storeListing/ProjectStoreListingRuntime.d.ts +17 -0
  80. package/dist/project/storeListing/ProjectStoreListingRuntime.d.ts.map +1 -0
  81. package/dist/project/storeListing/ProjectStoreListingRuntime.js +19 -0
  82. package/dist/project/storeListing/ProjectStoreListingRuntime.js.map +1 -0
  83. package/dist/project/storeListing/ProjectStoreListingTargetIdentity.d.ts +5 -0
  84. package/dist/project/storeListing/ProjectStoreListingTargetIdentity.d.ts.map +1 -0
  85. package/dist/project/storeListing/ProjectStoreListingTargetIdentity.js +2 -0
  86. package/dist/project/storeListing/ProjectStoreListingTargetIdentity.js.map +1 -0
  87. package/dist/project/storeListing/createProjectStoreListingRevision.d.ts +4 -0
  88. package/dist/project/storeListing/createProjectStoreListingRevision.d.ts.map +1 -0
  89. package/dist/project/storeListing/createProjectStoreListingRevision.js +24 -0
  90. package/dist/project/storeListing/createProjectStoreListingRevision.js.map +1 -0
  91. package/dist/project/storeListing/parseStoreListingLocale.d.ts +3 -0
  92. package/dist/project/storeListing/parseStoreListingLocale.d.ts.map +1 -0
  93. package/dist/project/storeListing/parseStoreListingLocale.js +76 -0
  94. package/dist/project/storeListing/parseStoreListingLocale.js.map +1 -0
  95. package/dist/project/storeListing/readProjectStoreListing.d.ts +5 -0
  96. package/dist/project/storeListing/readProjectStoreListing.d.ts.map +1 -0
  97. package/dist/project/storeListing/readProjectStoreListing.js +24 -0
  98. package/dist/project/storeListing/readProjectStoreListing.js.map +1 -0
  99. package/dist/project/storeListing/readStoreListingAssets.d.ts +8 -0
  100. package/dist/project/storeListing/readStoreListingAssets.d.ts.map +1 -0
  101. package/dist/project/storeListing/readStoreListingAssets.js +110 -0
  102. package/dist/project/storeListing/readStoreListingAssets.js.map +1 -0
  103. package/dist/project/storeListing/readStoreListingLocales.d.ts +3 -0
  104. package/dist/project/storeListing/readStoreListingLocales.d.ts.map +1 -0
  105. package/dist/project/storeListing/readStoreListingLocales.js +43 -0
  106. package/dist/project/storeListing/readStoreListingLocales.js.map +1 -0
  107. package/dist/project/storeListing/resolveProjectStoreListingAccess.d.ts +9 -0
  108. package/dist/project/storeListing/resolveProjectStoreListingAccess.d.ts.map +1 -0
  109. package/dist/project/storeListing/resolveProjectStoreListingAccess.js +7 -0
  110. package/dist/project/storeListing/resolveProjectStoreListingAccess.js.map +1 -0
  111. package/dist/project/storeListing/resolveProjectStoreListingTargets.d.ts +20 -0
  112. package/dist/project/storeListing/resolveProjectStoreListingTargets.d.ts.map +1 -0
  113. package/dist/project/storeListing/resolveProjectStoreListingTargets.js +16 -0
  114. package/dist/project/storeListing/resolveProjectStoreListingTargets.js.map +1 -0
  115. package/dist/project/storeListing/toStoreListingDesiredState.d.ts +4 -0
  116. package/dist/project/storeListing/toStoreListingDesiredState.d.ts.map +1 -0
  117. package/dist/project/storeListing/toStoreListingDesiredState.js +15 -0
  118. package/dist/project/storeListing/toStoreListingDesiredState.js.map +1 -0
  119. package/dist/providers/appStoreConnect/AppStoreConnectTransport.d.ts +1 -1
  120. package/dist/providers/appStoreConnect/AppStoreConnectTransport.d.ts.map +1 -1
  121. package/dist/providers/appStoreConnect/AppStoreConnectTransport.js.map +1 -1
  122. package/dist/providers/appStoreConnect/AppStoreListingContext.d.ts +21 -0
  123. package/dist/providers/appStoreConnect/AppStoreListingContext.d.ts.map +1 -0
  124. package/dist/providers/appStoreConnect/AppStoreListingContext.js +2 -0
  125. package/dist/providers/appStoreConnect/AppStoreListingContext.js.map +1 -0
  126. package/dist/providers/appStoreConnect/AppStoreListingContextResult.d.ts +14 -0
  127. package/dist/providers/appStoreConnect/AppStoreListingContextResult.d.ts.map +1 -0
  128. package/dist/providers/appStoreConnect/AppStoreListingContextResult.js +2 -0
  129. package/dist/providers/appStoreConnect/AppStoreListingContextResult.js.map +1 -0
  130. package/dist/providers/appStoreConnect/appStoreListingFields.d.ts +2 -0
  131. package/dist/providers/appStoreConnect/appStoreListingFields.d.ts.map +1 -0
  132. package/dist/providers/appStoreConnect/appStoreListingFields.js +11 -0
  133. package/dist/providers/appStoreConnect/appStoreListingFields.js.map +1 -0
  134. package/dist/providers/appStoreConnect/appStoreListingUrls.d.ts +5 -0
  135. package/dist/providers/appStoreConnect/appStoreListingUrls.d.ts.map +1 -0
  136. package/dist/providers/appStoreConnect/appStoreListingUrls.js +22 -0
  137. package/dist/providers/appStoreConnect/appStoreListingUrls.js.map +1 -0
  138. package/dist/providers/appStoreConnect/createAppStoreListingDiagnostics.d.ts +4 -0
  139. package/dist/providers/appStoreConnect/createAppStoreListingDiagnostics.d.ts.map +1 -0
  140. package/dist/providers/appStoreConnect/createAppStoreListingDiagnostics.js +85 -0
  141. package/dist/providers/appStoreConnect/createAppStoreListingDiagnostics.js.map +1 -0
  142. package/dist/providers/appStoreConnect/isAppStoreScreenshotVariant.d.ts +2 -0
  143. package/dist/providers/appStoreConnect/isAppStoreScreenshotVariant.d.ts.map +1 -0
  144. package/dist/providers/appStoreConnect/isAppStoreScreenshotVariant.js +39 -0
  145. package/dist/providers/appStoreConnect/isAppStoreScreenshotVariant.js.map +1 -0
  146. package/dist/providers/appStoreConnect/isEditableAppStoreListingState.d.ts +2 -0
  147. package/dist/providers/appStoreConnect/isEditableAppStoreListingState.d.ts.map +1 -0
  148. package/dist/providers/appStoreConnect/isEditableAppStoreListingState.js +12 -0
  149. package/dist/providers/appStoreConnect/isEditableAppStoreListingState.js.map +1 -0
  150. package/dist/providers/appStoreConnect/mapAppStoreLocale.d.ts +2 -0
  151. package/dist/providers/appStoreConnect/mapAppStoreLocale.d.ts.map +1 -0
  152. package/dist/providers/appStoreConnect/mapAppStoreLocale.js +112 -0
  153. package/dist/providers/appStoreConnect/mapAppStoreLocale.js.map +1 -0
  154. package/dist/providers/appStoreConnect/parseAppStoreAppId.d.ts +2 -0
  155. package/dist/providers/appStoreConnect/parseAppStoreAppId.d.ts.map +1 -0
  156. package/dist/providers/appStoreConnect/parseAppStoreAppId.js +22 -0
  157. package/dist/providers/appStoreConnect/parseAppStoreAppId.js.map +1 -0
  158. package/dist/providers/appStoreConnect/parseAppStoreListingLocalizations.d.ts +8 -0
  159. package/dist/providers/appStoreConnect/parseAppStoreListingLocalizations.d.ts.map +1 -0
  160. package/dist/providers/appStoreConnect/parseAppStoreListingLocalizations.js +68 -0
  161. package/dist/providers/appStoreConnect/parseAppStoreListingLocalizations.js.map +1 -0
  162. package/dist/providers/appStoreConnect/parseEditableAppStoreResourceId.d.ts +2 -0
  163. package/dist/providers/appStoreConnect/parseEditableAppStoreResourceId.d.ts.map +1 -0
  164. package/dist/providers/appStoreConnect/parseEditableAppStoreResourceId.js +28 -0
  165. package/dist/providers/appStoreConnect/parseEditableAppStoreResourceId.js.map +1 -0
  166. package/dist/providers/appStoreConnect/readAppStoreJson.d.ts +7 -0
  167. package/dist/providers/appStoreConnect/readAppStoreJson.d.ts.map +1 -0
  168. package/dist/providers/appStoreConnect/readAppStoreJson.js +12 -0
  169. package/dist/providers/appStoreConnect/readAppStoreJson.js.map +1 -0
  170. package/dist/providers/appStoreConnect/resolveAppStoreListingContext.d.ts +10 -0
  171. package/dist/providers/appStoreConnect/resolveAppStoreListingContext.d.ts.map +1 -0
  172. package/dist/providers/appStoreConnect/resolveAppStoreListingContext.js +103 -0
  173. package/dist/providers/appStoreConnect/resolveAppStoreListingContext.js.map +1 -0
  174. package/dist/providers/appStoreConnect/toAppStoreCurrentLocales.d.ts +4 -0
  175. package/dist/providers/appStoreConnect/toAppStoreCurrentLocales.d.ts.map +1 -0
  176. package/dist/providers/appStoreConnect/toAppStoreCurrentLocales.js +27 -0
  177. package/dist/providers/appStoreConnect/toAppStoreCurrentLocales.js.map +1 -0
  178. package/dist/providers/googlePlay/GooglePlayRequestTracker.d.ts +9 -0
  179. package/dist/providers/googlePlay/GooglePlayRequestTracker.d.ts.map +1 -0
  180. package/dist/providers/googlePlay/GooglePlayRequestTracker.js +13 -0
  181. package/dist/providers/googlePlay/GooglePlayRequestTracker.js.map +1 -0
  182. package/dist/providers/googlePlay/GooglePlayStoreListingResult.d.ts +14 -0
  183. package/dist/providers/googlePlay/GooglePlayStoreListingResult.d.ts.map +1 -0
  184. package/dist/providers/googlePlay/GooglePlayStoreListingResult.js +2 -0
  185. package/dist/providers/googlePlay/GooglePlayStoreListingResult.js.map +1 -0
  186. package/dist/providers/googlePlay/GooglePlayTransport.d.ts +1 -1
  187. package/dist/providers/googlePlay/GooglePlayTransport.d.ts.map +1 -1
  188. package/dist/providers/googlePlay/GooglePlayTransport.js.map +1 -1
  189. package/dist/providers/googlePlay/createGooglePlayListingDiagnostics.d.ts +4 -0
  190. package/dist/providers/googlePlay/createGooglePlayListingDiagnostics.d.ts.map +1 -0
  191. package/dist/providers/googlePlay/createGooglePlayListingDiagnostics.js +52 -0
  192. package/dist/providers/googlePlay/createGooglePlayListingDiagnostics.js.map +1 -0
  193. package/dist/providers/googlePlay/googlePlayListingUrls.d.ts +5 -0
  194. package/dist/providers/googlePlay/googlePlayListingUrls.d.ts.map +1 -0
  195. package/dist/providers/googlePlay/googlePlayListingUrls.js +21 -0
  196. package/dist/providers/googlePlay/googlePlayListingUrls.js.map +1 -0
  197. package/dist/providers/googlePlay/googlePlayStoreListingFields.d.ts +2 -0
  198. package/dist/providers/googlePlay/googlePlayStoreListingFields.d.ts.map +1 -0
  199. package/dist/providers/googlePlay/googlePlayStoreListingFields.js +7 -0
  200. package/dist/providers/googlePlay/googlePlayStoreListingFields.js.map +1 -0
  201. package/dist/providers/googlePlay/inspectGooglePlayStoreListing.d.ts +15 -0
  202. package/dist/providers/googlePlay/inspectGooglePlayStoreListing.d.ts.map +1 -0
  203. package/dist/providers/googlePlay/inspectGooglePlayStoreListing.js +105 -0
  204. package/dist/providers/googlePlay/inspectGooglePlayStoreListing.js.map +1 -0
  205. package/dist/providers/googlePlay/listGooglePlayImageHashes.d.ts +2 -0
  206. package/dist/providers/googlePlay/listGooglePlayImageHashes.d.ts.map +1 -0
  207. package/dist/providers/googlePlay/listGooglePlayImageHashes.js +2 -0
  208. package/dist/providers/googlePlay/listGooglePlayImageHashes.js.map +1 -0
  209. package/dist/providers/googlePlay/mapGooglePlayImageType.d.ts +2 -0
  210. package/dist/providers/googlePlay/mapGooglePlayImageType.d.ts.map +1 -0
  211. package/dist/providers/googlePlay/mapGooglePlayImageType.js +21 -0
  212. package/dist/providers/googlePlay/mapGooglePlayImageType.js.map +1 -0
  213. package/dist/providers/googlePlay/parseGooglePlayListings.d.ts +3 -0
  214. package/dist/providers/googlePlay/parseGooglePlayListings.d.ts.map +1 -0
  215. package/dist/providers/googlePlay/parseGooglePlayListings.js +47 -0
  216. package/dist/providers/googlePlay/parseGooglePlayListings.js.map +1 -0
  217. package/dist/providers/googlePlay/readGooglePlayAssetSets.d.ts +11 -0
  218. package/dist/providers/googlePlay/readGooglePlayAssetSets.d.ts.map +1 -0
  219. package/dist/providers/googlePlay/readGooglePlayAssetSets.js +32 -0
  220. package/dist/providers/googlePlay/readGooglePlayAssetSets.js.map +1 -0
  221. package/dist/providers/googlePlay/readGooglePlayImages.d.ts +10 -0
  222. package/dist/providers/googlePlay/readGooglePlayImages.d.ts.map +1 -0
  223. package/dist/providers/googlePlay/readGooglePlayImages.js +31 -0
  224. package/dist/providers/googlePlay/readGooglePlayImages.js.map +1 -0
  225. package/dist/providers/googlePlay/replaceGooglePlayImages.d.ts +12 -0
  226. package/dist/providers/googlePlay/replaceGooglePlayImages.d.ts.map +1 -0
  227. package/dist/providers/googlePlay/replaceGooglePlayImages.js +35 -0
  228. package/dist/providers/googlePlay/replaceGooglePlayImages.js.map +1 -0
  229. package/dist/providers/googlePlay/writeGooglePlayListing.d.ts +12 -0
  230. package/dist/providers/googlePlay/writeGooglePlayListing.d.ts.map +1 -0
  231. package/dist/providers/googlePlay/writeGooglePlayListing.js +21 -0
  232. package/dist/providers/googlePlay/writeGooglePlayListing.js.map +1 -0
  233. package/package.json +1 -1
@@ -0,0 +1,28 @@
1
+ import { isEditableAppStoreListingState } from './isEditableAppStoreListingState';
2
+ export function parseEditableAppStoreResourceId(value, type) {
3
+ if (!isRecord(value) || !Array.isArray(value.data))
4
+ return undefined;
5
+ let match = null;
6
+ for (const item of value.data) {
7
+ if (!isRecord(item) || item.type !== type || !isNonEmptyString(item.id))
8
+ continue;
9
+ if (!isRecord(item.attributes))
10
+ return undefined;
11
+ const state = type === 'appInfos'
12
+ ? (item.attributes.state ?? item.attributes.appStoreState)
13
+ : (item.attributes.appVersionState ?? item.attributes.appStoreState);
14
+ if (!isEditableAppStoreListingState(state))
15
+ continue;
16
+ if (match !== null)
17
+ return undefined;
18
+ match = item.id;
19
+ }
20
+ return match;
21
+ }
22
+ function isRecord(value) {
23
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
24
+ }
25
+ function isNonEmptyString(value) {
26
+ return typeof value === 'string' && value.trim().length > 0;
27
+ }
28
+ //# sourceMappingURL=parseEditableAppStoreResourceId.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseEditableAppStoreResourceId.js","sourceRoot":"","sources":["../../../src/providers/appStoreConnect/parseEditableAppStoreResourceId.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,8BAA8B,EAAE,MAAM,kCAAkC,CAAC;AAElF,MAAM,UAAU,+BAA+B,CAC7C,KAAc,EACd,IAAqC;IAErC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;QAAE,OAAO,SAAS,CAAC;IACrE,IAAI,KAAK,GAAkB,IAAI,CAAC;IAChC,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,IAAiB,EAAE,CAAC;QAC3C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;YAAE,SAAS;QAClF,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC;YAAE,OAAO,SAAS,CAAC;QACjD,MAAM,KAAK,GACT,IAAI,KAAK,UAAU;YACjB,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;YAC1D,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,eAAe,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;QACzE,IAAI,CAAC,8BAA8B,CAAC,KAAK,CAAC;YAAE,SAAS;QACrD,IAAI,KAAK,KAAK,IAAI;YAAE,OAAO,SAAS,CAAC;QACrC,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC;IAClB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAc;IACtC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;AAC9D,CAAC","sourcesContent":["import { isEditableAppStoreListingState } from './isEditableAppStoreListingState';\n\nexport function parseEditableAppStoreResourceId(\n value: unknown,\n type: 'appInfos' | 'appStoreVersions',\n): string | null | undefined {\n if (!isRecord(value) || !Array.isArray(value.data)) return undefined;\n let match: string | null = null;\n for (const item of value.data as unknown[]) {\n if (!isRecord(item) || item.type !== type || !isNonEmptyString(item.id)) continue;\n if (!isRecord(item.attributes)) return undefined;\n const state =\n type === 'appInfos'\n ? (item.attributes.state ?? item.attributes.appStoreState)\n : (item.attributes.appVersionState ?? item.attributes.appStoreState);\n if (!isEditableAppStoreListingState(state)) continue;\n if (match !== null) return undefined;\n match = item.id;\n }\n return match;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction isNonEmptyString(value: unknown): value is string {\n return typeof value === 'string' && value.trim().length > 0;\n}\n"]}
@@ -0,0 +1,7 @@
1
+ import type { AppStoreConnectTransport } from './AppStoreConnectTransport';
2
+ export declare function readAppStoreJson(options: {
3
+ readonly url: string;
4
+ readonly token: string;
5
+ readonly request: AppStoreConnectTransport;
6
+ }): Promise<unknown>;
7
+ //# sourceMappingURL=readAppStoreJson.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"readAppStoreJson.d.ts","sourceRoot":"","sources":["../../../src/providers/appStoreConnect/readAppStoreJson.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAE3E,wBAAsB,gBAAgB,CAAC,OAAO,EAAE;IAC9C,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,wBAAwB,CAAC;CAC5C,GAAG,OAAO,CAAC,OAAO,CAAC,CAQnB"}
@@ -0,0 +1,12 @@
1
+ export async function readAppStoreJson(options) {
2
+ const response = await options.request({ method: 'GET', ...options });
3
+ if (response.status < 200 || response.status >= 300)
4
+ return null;
5
+ try {
6
+ return JSON.parse(response.body);
7
+ }
8
+ catch {
9
+ return null;
10
+ }
11
+ }
12
+ //# sourceMappingURL=readAppStoreJson.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"readAppStoreJson.js","sourceRoot":"","sources":["../../../src/providers/appStoreConnect/readAppStoreJson.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,OAItC;IACC,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;IACtE,IAAI,QAAQ,CAAC,MAAM,GAAG,GAAG,IAAI,QAAQ,CAAC,MAAM,IAAI,GAAG;QAAE,OAAO,IAAI,CAAC;IACjE,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAY,CAAC;IAC9C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC","sourcesContent":["import type { AppStoreConnectTransport } from './AppStoreConnectTransport';\n\nexport async function readAppStoreJson(options: {\n readonly url: string;\n readonly token: string;\n readonly request: AppStoreConnectTransport;\n}): Promise<unknown> {\n const response = await options.request({ method: 'GET', ...options });\n if (response.status < 200 || response.status >= 300) return null;\n try {\n return JSON.parse(response.body) as unknown;\n } catch {\n return null;\n }\n}\n"]}
@@ -0,0 +1,10 @@
1
+ import type { StoreListingDesiredState } from '../../domain/storeListing/StoreListingDesiredState';
2
+ import type { AppStoreConnectTransport } from './AppStoreConnectTransport';
3
+ import type { AppStoreListingContextResult } from './AppStoreListingContextResult';
4
+ export declare function resolveAppStoreListingContext(options: {
5
+ readonly bundleIdentifier: string;
6
+ readonly desired: StoreListingDesiredState;
7
+ readonly token: string;
8
+ readonly request: AppStoreConnectTransport;
9
+ }): Promise<AppStoreListingContextResult>;
10
+ //# sourceMappingURL=resolveAppStoreListingContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveAppStoreListingContext.d.ts","sourceRoot":"","sources":["../../../src/providers/appStoreConnect/resolveAppStoreListingContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,oDAAoD,CAAC;AACnG,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAE3E,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AAYnF,wBAAsB,6BAA6B,CAAC,OAAO,EAAE;IAC3D,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,OAAO,EAAE,wBAAwB,CAAC;IAC3C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,wBAAwB,CAAC;CAC5C,GAAG,OAAO,CAAC,4BAA4B,CAAC,CAQxC"}
@@ -0,0 +1,103 @@
1
+ import { appStoreConnectAppsUrl } from './appStoreConnectUrls';
2
+ import { appInfoLocalizationsUrl, appStoreAppInfosUrl, appStoreVersionsForListingUrl, versionLocalizationsUrl, } from './appStoreListingUrls';
3
+ import { parseAppStoreAppId } from './parseAppStoreAppId';
4
+ import { parseAppStoreListingLocalizations } from './parseAppStoreListingLocalizations';
5
+ import { parseEditableAppStoreResourceId } from './parseEditableAppStoreResourceId';
6
+ import { readAppStoreJson } from './readAppStoreJson';
7
+ export async function resolveAppStoreListingContext(options) {
8
+ const appId = await resolveAppId(options);
9
+ if (appId === undefined)
10
+ return failed();
11
+ if (appId === null)
12
+ return appRequired();
13
+ const containers = await resolveContainers({ ...options, appId });
14
+ if (containers === undefined)
15
+ return failed();
16
+ if (containers === null)
17
+ return editableContainerRequired();
18
+ return resolveLocalizations({ ...options, appId, ...containers });
19
+ }
20
+ async function resolveAppId(options) {
21
+ const value = await readAppStoreJson({
22
+ ...options,
23
+ url: appStoreConnectAppsUrl(options.bundleIdentifier),
24
+ });
25
+ if (value === null)
26
+ return undefined;
27
+ return parseAppStoreAppId(value, options.bundleIdentifier);
28
+ }
29
+ async function resolveContainers(options) {
30
+ const [appInfos, versions] = await Promise.all([
31
+ readAppStoreJson({ ...options, url: appStoreAppInfosUrl(options.appId) }),
32
+ readAppStoreJson({ ...options, url: appStoreVersionsForListingUrl(options.appId) }),
33
+ ]);
34
+ if (appInfos === null || versions === null)
35
+ return undefined;
36
+ const appInfoId = parseEditableAppStoreResourceId(appInfos, 'appInfos');
37
+ const versionId = parseEditableAppStoreResourceId(versions, 'appStoreVersions');
38
+ if (appInfoId === undefined || versionId === undefined)
39
+ return undefined;
40
+ if (appInfoId === null || versionId === null)
41
+ return null;
42
+ return { appInfoId, versionId };
43
+ }
44
+ async function resolveLocalizations(options) {
45
+ const [appInfo, version] = await Promise.all([
46
+ readAppStoreJson({ ...options, url: appInfoLocalizationsUrl(options.appInfoId) }),
47
+ readAppStoreJson({ ...options, url: versionLocalizationsUrl(options.versionId) }),
48
+ ]);
49
+ if (appInfo === null || version === null)
50
+ return failed();
51
+ const locales = parseAppStoreListingLocalizations({
52
+ appInfo,
53
+ version,
54
+ desired: options.desired,
55
+ });
56
+ if (locales === null)
57
+ return failed();
58
+ return {
59
+ status: 'completed',
60
+ context: {
61
+ appId: options.appId,
62
+ appInfoId: options.appInfoId,
63
+ versionId: options.versionId,
64
+ locales,
65
+ },
66
+ };
67
+ }
68
+ function appRequired() {
69
+ return {
70
+ status: 'action-required',
71
+ action: {
72
+ type: 'manual-action',
73
+ target: 'ios',
74
+ provider: 'app-store-connect',
75
+ code: 'APP_STORE_APP_REQUIRED',
76
+ message: 'Create the matching app in App Store Connect before listing synchronization.',
77
+ },
78
+ };
79
+ }
80
+ function editableContainerRequired() {
81
+ return {
82
+ status: 'action-required',
83
+ action: {
84
+ type: 'manual-action',
85
+ target: 'ios',
86
+ provider: 'app-store-connect',
87
+ code: 'APP_STORE_EDITABLE_LISTING_REQUIRED',
88
+ message: 'An editable iOS App Store version is required for listing synchronization.',
89
+ },
90
+ };
91
+ }
92
+ function failed() {
93
+ return {
94
+ status: 'failed',
95
+ failure: {
96
+ code: 'APP_STORE_LISTING_CONTEXT_FAILED',
97
+ message: 'App Store Connect listing containers could not be resolved.',
98
+ target: 'ios',
99
+ provider: 'app-store-connect',
100
+ },
101
+ };
102
+ }
103
+ //# sourceMappingURL=resolveAppStoreListingContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveAppStoreListingContext.js","sourceRoot":"","sources":["../../../src/providers/appStoreConnect/resolveAppStoreListingContext.ts"],"names":[],"mappings":"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","sourcesContent":["import type { StoreListingDesiredState } from '../../domain/storeListing/StoreListingDesiredState';\nimport type { AppStoreConnectTransport } from './AppStoreConnectTransport';\nimport { appStoreConnectAppsUrl } from './appStoreConnectUrls';\nimport type { AppStoreListingContextResult } from './AppStoreListingContextResult';\nimport {\n appInfoLocalizationsUrl,\n appStoreAppInfosUrl,\n appStoreVersionsForListingUrl,\n versionLocalizationsUrl,\n} from './appStoreListingUrls';\nimport { parseAppStoreAppId } from './parseAppStoreAppId';\nimport { parseAppStoreListingLocalizations } from './parseAppStoreListingLocalizations';\nimport { parseEditableAppStoreResourceId } from './parseEditableAppStoreResourceId';\nimport { readAppStoreJson } from './readAppStoreJson';\n\nexport async function resolveAppStoreListingContext(options: {\n readonly bundleIdentifier: string;\n readonly desired: StoreListingDesiredState;\n readonly token: string;\n readonly request: AppStoreConnectTransport;\n}): Promise<AppStoreListingContextResult> {\n const appId = await resolveAppId(options);\n if (appId === undefined) return failed();\n if (appId === null) return appRequired();\n const containers = await resolveContainers({ ...options, appId });\n if (containers === undefined) return failed();\n if (containers === null) return editableContainerRequired();\n return resolveLocalizations({ ...options, appId, ...containers });\n}\n\nasync function resolveAppId(\n options: Parameters<typeof resolveAppStoreListingContext>[0],\n): Promise<string | null | undefined> {\n const value = await readAppStoreJson({\n ...options,\n url: appStoreConnectAppsUrl(options.bundleIdentifier),\n });\n if (value === null) return undefined;\n return parseAppStoreAppId(value, options.bundleIdentifier);\n}\n\nasync function resolveContainers(options: {\n readonly appId: string;\n readonly token: string;\n readonly request: AppStoreConnectTransport;\n}): Promise<{ appInfoId: string; versionId: string } | null | undefined> {\n const [appInfos, versions] = await Promise.all([\n readAppStoreJson({ ...options, url: appStoreAppInfosUrl(options.appId) }),\n readAppStoreJson({ ...options, url: appStoreVersionsForListingUrl(options.appId) }),\n ]);\n if (appInfos === null || versions === null) return undefined;\n const appInfoId = parseEditableAppStoreResourceId(appInfos, 'appInfos');\n const versionId = parseEditableAppStoreResourceId(versions, 'appStoreVersions');\n if (appInfoId === undefined || versionId === undefined) return undefined;\n if (appInfoId === null || versionId === null) return null;\n return { appInfoId, versionId };\n}\n\nasync function resolveLocalizations(options: {\n readonly appId: string;\n readonly appInfoId: string;\n readonly versionId: string;\n readonly desired: StoreListingDesiredState;\n readonly token: string;\n readonly request: AppStoreConnectTransport;\n}): Promise<AppStoreListingContextResult> {\n const [appInfo, version] = await Promise.all([\n readAppStoreJson({ ...options, url: appInfoLocalizationsUrl(options.appInfoId) }),\n readAppStoreJson({ ...options, url: versionLocalizationsUrl(options.versionId) }),\n ]);\n if (appInfo === null || version === null) return failed();\n const locales = parseAppStoreListingLocalizations({\n appInfo,\n version,\n desired: options.desired,\n });\n if (locales === null) return failed();\n return {\n status: 'completed',\n context: {\n appId: options.appId,\n appInfoId: options.appInfoId,\n versionId: options.versionId,\n locales,\n },\n };\n}\n\nfunction appRequired(): AppStoreListingContextResult {\n return {\n status: 'action-required',\n action: {\n type: 'manual-action',\n target: 'ios',\n provider: 'app-store-connect',\n code: 'APP_STORE_APP_REQUIRED',\n message: 'Create the matching app in App Store Connect before listing synchronization.',\n },\n };\n}\n\nfunction editableContainerRequired(): AppStoreListingContextResult {\n return {\n status: 'action-required',\n action: {\n type: 'manual-action',\n target: 'ios',\n provider: 'app-store-connect',\n code: 'APP_STORE_EDITABLE_LISTING_REQUIRED',\n message: 'An editable iOS App Store version is required for listing synchronization.',\n },\n };\n}\n\nfunction failed(): AppStoreListingContextResult {\n return {\n status: 'failed',\n failure: {\n code: 'APP_STORE_LISTING_CONTEXT_FAILED',\n message: 'App Store Connect listing containers could not be resolved.',\n target: 'ios',\n provider: 'app-store-connect',\n },\n };\n}\n"]}
@@ -0,0 +1,4 @@
1
+ import type { StoreListingLocale } from '../../domain/storeListing/StoreListingLocale';
2
+ import type { AppStoreListingContext } from './AppStoreListingContext';
3
+ export declare function toAppStoreCurrentLocales(context: AppStoreListingContext): readonly StoreListingLocale[];
4
+ //# sourceMappingURL=toAppStoreCurrentLocales.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toAppStoreCurrentLocales.d.ts","sourceRoot":"","sources":["../../../src/providers/appStoreConnect/toAppStoreCurrentLocales.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8CAA8C,CAAC;AACvF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAEvE,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,sBAAsB,GAC9B,SAAS,kBAAkB,EAAE,CAE/B"}
@@ -0,0 +1,27 @@
1
+ export function toAppStoreCurrentLocales(context) {
2
+ return context.locales.flatMap(toCurrentLocale);
3
+ }
4
+ function toCurrentLocale(item) {
5
+ if (item.appInfoLocalizationId === undefined || item.versionLocalizationId === undefined)
6
+ return [];
7
+ if (item.name === undefined)
8
+ return [];
9
+ const keywords = item.keywords
10
+ ?.split(',')
11
+ .map((value) => value.trim())
12
+ .filter((value) => value.length > 0);
13
+ return [
14
+ {
15
+ locale: item.canonicalLocale,
16
+ name: item.name,
17
+ ...(item.summary === undefined ? {} : { summary: item.summary }),
18
+ ...(item.description === undefined ? {} : { description: item.description }),
19
+ ...(keywords === undefined ? {} : { keywords }),
20
+ ...(item.promotionalText === undefined ? {} : { promotionalText: item.promotionalText }),
21
+ ...(item.supportUrl === undefined ? {} : { supportUrl: item.supportUrl }),
22
+ ...(item.marketingUrl === undefined ? {} : { marketingUrl: item.marketingUrl }),
23
+ ...(item.privacyPolicyUrl === undefined ? {} : { privacyPolicyUrl: item.privacyPolicyUrl }),
24
+ },
25
+ ];
26
+ }
27
+ //# sourceMappingURL=toAppStoreCurrentLocales.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toAppStoreCurrentLocales.js","sourceRoot":"","sources":["../../../src/providers/appStoreConnect/toAppStoreCurrentLocales.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,wBAAwB,CACtC,OAA+B;IAE/B,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;AAClD,CAAC;AAED,SAAS,eAAe,CAAC,IAA+C;IACtE,IAAI,IAAI,CAAC,qBAAqB,KAAK,SAAS,IAAI,IAAI,CAAC,qBAAqB,KAAK,SAAS;QACtF,OAAO,EAAE,CAAC;IACZ,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ;QAC5B,EAAE,KAAK,CAAC,GAAG,CAAC;SACX,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;SAC5B,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACvC,OAAO;QACL;YACE,MAAM,EAAE,IAAI,CAAC,eAAe;YAC5B,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,GAAG,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;YAChE,GAAG,CAAC,IAAI,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;YAC5E,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC;YAC/C,GAAG,CAAC,IAAI,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC;YACxF,GAAG,CAAC,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;YACzE,GAAG,CAAC,IAAI,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC;YAC/E,GAAG,CAAC,IAAI,CAAC,gBAAgB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC;SAC5F;KACF,CAAC;AACJ,CAAC","sourcesContent":["import type { StoreListingLocale } from '../../domain/storeListing/StoreListingLocale';\nimport type { AppStoreListingContext } from './AppStoreListingContext';\n\nexport function toAppStoreCurrentLocales(\n context: AppStoreListingContext,\n): readonly StoreListingLocale[] {\n return context.locales.flatMap(toCurrentLocale);\n}\n\nfunction toCurrentLocale(item: AppStoreListingContext['locales'][number]): StoreListingLocale[] {\n if (item.appInfoLocalizationId === undefined || item.versionLocalizationId === undefined)\n return [];\n if (item.name === undefined) return [];\n const keywords = item.keywords\n ?.split(',')\n .map((value) => value.trim())\n .filter((value) => value.length > 0);\n return [\n {\n locale: item.canonicalLocale,\n name: item.name,\n ...(item.summary === undefined ? {} : { summary: item.summary }),\n ...(item.description === undefined ? {} : { description: item.description }),\n ...(keywords === undefined ? {} : { keywords }),\n ...(item.promotionalText === undefined ? {} : { promotionalText: item.promotionalText }),\n ...(item.supportUrl === undefined ? {} : { supportUrl: item.supportUrl }),\n ...(item.marketingUrl === undefined ? {} : { marketingUrl: item.marketingUrl }),\n ...(item.privacyPolicyUrl === undefined ? {} : { privacyPolicyUrl: item.privacyPolicyUrl }),\n },\n ];\n}\n"]}
@@ -0,0 +1,9 @@
1
+ import type { GooglePlayTransport } from './GooglePlayTransport';
2
+ type GooglePlayBlockingStatus = 401 | 403 | null;
3
+ export interface GooglePlayRequestTracker {
4
+ readonly request: GooglePlayTransport;
5
+ readonly blockingStatus: () => GooglePlayBlockingStatus;
6
+ }
7
+ export declare function trackGooglePlayRequests(transport: GooglePlayTransport): GooglePlayRequestTracker;
8
+ export {};
9
+ //# sourceMappingURL=GooglePlayRequestTracker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GooglePlayRequestTracker.d.ts","sourceRoot":"","sources":["../../../src/providers/googlePlay/GooglePlayRequestTracker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAqB,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAEpF,KAAK,wBAAwB,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC;AAEjD,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,OAAO,EAAE,mBAAmB,CAAC;IACtC,QAAQ,CAAC,cAAc,EAAE,MAAM,wBAAwB,CAAC;CACzD;AAED,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,mBAAmB,GAAG,wBAAwB,CAUhG"}
@@ -0,0 +1,13 @@
1
+ export function trackGooglePlayRequests(transport) {
2
+ let blockingStatus = null;
3
+ return {
4
+ request: async (request) => {
5
+ const response = await transport(request);
6
+ if (response.status === 401 || response.status === 403)
7
+ blockingStatus = response.status;
8
+ return response;
9
+ },
10
+ blockingStatus: () => blockingStatus,
11
+ };
12
+ }
13
+ //# sourceMappingURL=GooglePlayRequestTracker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GooglePlayRequestTracker.js","sourceRoot":"","sources":["../../../src/providers/googlePlay/GooglePlayRequestTracker.ts"],"names":[],"mappings":"AASA,MAAM,UAAU,uBAAuB,CAAC,SAA8B;IACpE,IAAI,cAAc,GAA6B,IAAI,CAAC;IACpD,OAAO;QACL,OAAO,EAAE,KAAK,EAAE,OAA0B,EAAE,EAAE;YAC5C,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,CAAC;YAC1C,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG;gBAAE,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC;YACzF,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,cAAc,EAAE,GAAG,EAAE,CAAC,cAAc;KACrC,CAAC;AACJ,CAAC","sourcesContent":["import type { GooglePlayRequest, GooglePlayTransport } from './GooglePlayTransport';\n\ntype GooglePlayBlockingStatus = 401 | 403 | null;\n\nexport interface GooglePlayRequestTracker {\n readonly request: GooglePlayTransport;\n readonly blockingStatus: () => GooglePlayBlockingStatus;\n}\n\nexport function trackGooglePlayRequests(transport: GooglePlayTransport): GooglePlayRequestTracker {\n let blockingStatus: GooglePlayBlockingStatus = null;\n return {\n request: async (request: GooglePlayRequest) => {\n const response = await transport(request);\n if (response.status === 401 || response.status === 403) blockingStatus = response.status;\n return response;\n },\n blockingStatus: () => blockingStatus,\n };\n}\n"]}
@@ -0,0 +1,14 @@
1
+ import type { DeploymentFailure } from '../../domain/DeploymentFailure';
2
+ import type { DeploymentRequiredAction } from '../../domain/DeploymentRequiredAction';
3
+ import type { StoreListingTargetState } from '../../domain/storeListing/StoreListingTargetState';
4
+ export type GooglePlayStoreListingInspectionResult = {
5
+ readonly status: 'completed';
6
+ readonly state: StoreListingTargetState;
7
+ } | {
8
+ readonly status: 'action-required';
9
+ readonly action: DeploymentRequiredAction;
10
+ } | {
11
+ readonly status: 'failed';
12
+ readonly failure: DeploymentFailure;
13
+ };
14
+ //# sourceMappingURL=GooglePlayStoreListingResult.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GooglePlayStoreListingResult.d.ts","sourceRoot":"","sources":["../../../src/providers/googlePlay/GooglePlayStoreListingResult.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AACtF,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,mDAAmD,CAAC;AAEjG,MAAM,MAAM,sCAAsC,GAC9C;IAAE,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,uBAAuB,CAAA;CAAE,GACzE;IAAE,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,wBAAwB,CAAA;CAAE,GACjF;IAAE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAA;CAAE,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=GooglePlayStoreListingResult.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GooglePlayStoreListingResult.js","sourceRoot":"","sources":["../../../src/providers/googlePlay/GooglePlayStoreListingResult.ts"],"names":[],"mappings":"","sourcesContent":["import type { DeploymentFailure } from '../../domain/DeploymentFailure';\nimport type { DeploymentRequiredAction } from '../../domain/DeploymentRequiredAction';\nimport type { StoreListingTargetState } from '../../domain/storeListing/StoreListingTargetState';\n\nexport type GooglePlayStoreListingInspectionResult =\n | { readonly status: 'completed'; readonly state: StoreListingTargetState }\n | { readonly status: 'action-required'; readonly action: DeploymentRequiredAction }\n | { readonly status: 'failed'; readonly failure: DeploymentFailure };\n"]}
@@ -1,5 +1,5 @@
1
1
  export interface GooglePlayRequest {
2
- readonly method: 'GET' | 'POST' | 'PUT';
2
+ readonly method: 'DELETE' | 'GET' | 'PATCH' | 'POST' | 'PUT';
3
3
  readonly url: string;
4
4
  readonly token: string;
5
5
  readonly contentType?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"GooglePlayTransport.d.ts","sourceRoot":"","sources":["../../../src/providers/googlePlay/GooglePlayTransport.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,CAAC;IACxC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED,UAAU,kBAAkB;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,EAAE,iBAAiB,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAC;AAE9F,eAAO,MAAM,eAAe,EAAE,mBAS7B,CAAC"}
1
+ {"version":3,"file":"GooglePlayTransport.d.ts","sourceRoot":"","sources":["../../../src/providers/googlePlay/GooglePlayTransport.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,MAAM,EAAE,QAAQ,GAAG,KAAK,GAAG,OAAO,GAAG,MAAM,GAAG,KAAK,CAAC;IAC7D,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED,UAAU,kBAAkB;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,EAAE,iBAAiB,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAC;AAE9F,eAAO,MAAM,eAAe,EAAE,mBAS7B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"GooglePlayTransport.js","sourceRoot":"","sources":["../../../src/providers/googlePlay/GooglePlayTransport.ts"],"names":[],"mappings":"AAeA,MAAM,CAAC,MAAM,eAAe,GAAwB,KAAK,EAAE,OAAO,EAAE,EAAE;IACpE,MAAM,OAAO,GAA2B,EAAE,aAAa,EAAE,UAAU,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;IACrF,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS;QAAE,OAAO,CAAC,cAAc,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC;IACrF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QACxC,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,OAAO;QACP,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;KAC9D,CAAC,CAAC;IACH,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;AAClE,CAAC,CAAC","sourcesContent":["export interface GooglePlayRequest {\n readonly method: 'GET' | 'POST' | 'PUT';\n readonly url: string;\n readonly token: string;\n readonly contentType?: string;\n readonly body?: string | Blob;\n}\n\ninterface GooglePlayResponse {\n readonly status: number;\n readonly body: string;\n}\n\nexport type GooglePlayTransport = (request: GooglePlayRequest) => Promise<GooglePlayResponse>;\n\nexport const fetchGooglePlay: GooglePlayTransport = async (request) => {\n const headers: Record<string, string> = { Authorization: `Bearer ${request.token}` };\n if (request.contentType !== undefined) headers['Content-Type'] = request.contentType;\n const response = await fetch(request.url, {\n method: request.method,\n headers,\n ...(request.body === undefined ? {} : { body: request.body }),\n });\n return { status: response.status, body: await response.text() };\n};\n"]}
1
+ {"version":3,"file":"GooglePlayTransport.js","sourceRoot":"","sources":["../../../src/providers/googlePlay/GooglePlayTransport.ts"],"names":[],"mappings":"AAeA,MAAM,CAAC,MAAM,eAAe,GAAwB,KAAK,EAAE,OAAO,EAAE,EAAE;IACpE,MAAM,OAAO,GAA2B,EAAE,aAAa,EAAE,UAAU,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;IACrF,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS;QAAE,OAAO,CAAC,cAAc,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC;IACrF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QACxC,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,OAAO;QACP,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;KAC9D,CAAC,CAAC;IACH,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;AAClE,CAAC,CAAC","sourcesContent":["export interface GooglePlayRequest {\n readonly method: 'DELETE' | 'GET' | 'PATCH' | 'POST' | 'PUT';\n readonly url: string;\n readonly token: string;\n readonly contentType?: string;\n readonly body?: string | Blob;\n}\n\ninterface GooglePlayResponse {\n readonly status: number;\n readonly body: string;\n}\n\nexport type GooglePlayTransport = (request: GooglePlayRequest) => Promise<GooglePlayResponse>;\n\nexport const fetchGooglePlay: GooglePlayTransport = async (request) => {\n const headers: Record<string, string> = { Authorization: `Bearer ${request.token}` };\n if (request.contentType !== undefined) headers['Content-Type'] = request.contentType;\n const response = await fetch(request.url, {\n method: request.method,\n headers,\n ...(request.body === undefined ? {} : { body: request.body }),\n });\n return { status: response.status, body: await response.text() };\n};\n"]}
@@ -0,0 +1,4 @@
1
+ import type { StoreListingDesiredState } from '../../domain/storeListing/StoreListingDesiredState';
2
+ import type { StoreListingDiagnostic } from '../../domain/storeListing/StoreListingDiagnostic';
3
+ export declare function createGooglePlayListingDiagnostics(desired: StoreListingDesiredState): readonly StoreListingDiagnostic[];
4
+ //# sourceMappingURL=createGooglePlayListingDiagnostics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createGooglePlayListingDiagnostics.d.ts","sourceRoot":"","sources":["../../../src/providers/googlePlay/createGooglePlayListingDiagnostics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,oDAAoD,CAAC;AACnG,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kDAAkD,CAAC;AAkB/F,wBAAgB,kCAAkC,CAChD,OAAO,EAAE,wBAAwB,GAChC,SAAS,sBAAsB,EAAE,CAKnC"}
@@ -0,0 +1,52 @@
1
+ import { storeListingLocaleFieldValue } from '../../domain/storeListing/storeListingLocaleFieldValue';
2
+ import { GOOGLE_PLAY_STORE_LISTING_FIELDS } from './googlePlayStoreListingFields';
3
+ import { mapGooglePlayImageType } from './mapGooglePlayImageType';
4
+ const ALL_FIELDS = [
5
+ 'name',
6
+ 'summary',
7
+ 'description',
8
+ 'keywords',
9
+ 'promotionalText',
10
+ 'supportUrl',
11
+ 'marketingUrl',
12
+ 'privacyPolicyUrl',
13
+ 'promoVideoUrl',
14
+ ];
15
+ export function createGooglePlayListingDiagnostics(desired) {
16
+ return [
17
+ ...desired.locales.flatMap(localeDiagnostics),
18
+ ...desired.assetSets.flatMap(assetSetDiagnostics),
19
+ ];
20
+ }
21
+ function localeDiagnostics(locale) {
22
+ const supported = new Set(GOOGLE_PLAY_STORE_LISTING_FIELDS);
23
+ return ALL_FIELDS.flatMap((field) => {
24
+ if (supported.has(field) || storeListingLocaleFieldValue(locale, field) === undefined)
25
+ return [];
26
+ return [
27
+ {
28
+ severity: 'warning',
29
+ code: 'GOOGLE_PLAY_LISTING_FIELD_UNSUPPORTED',
30
+ message: `Google Play does not synchronize ${field}.`,
31
+ target: 'android',
32
+ locale: locale.locale,
33
+ field,
34
+ },
35
+ ];
36
+ });
37
+ }
38
+ function assetSetDiagnostics(set) {
39
+ if (set.target !== 'android' || mapGooglePlayImageType(set.variant) !== null)
40
+ return [];
41
+ return [
42
+ {
43
+ severity: 'error',
44
+ code: 'GOOGLE_PLAY_IMAGE_VARIANT_UNSUPPORTED',
45
+ message: `Google Play image variant ${set.variant} is unsupported.`,
46
+ target: 'android',
47
+ locale: set.locale,
48
+ variant: set.variant,
49
+ },
50
+ ];
51
+ }
52
+ //# sourceMappingURL=createGooglePlayListingDiagnostics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createGooglePlayListingDiagnostics.js","sourceRoot":"","sources":["../../../src/providers/googlePlay/createGooglePlayListingDiagnostics.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,4BAA4B,EAAE,MAAM,wDAAwD,CAAC;AACtG,OAAO,EAAE,gCAAgC,EAAE,MAAM,gCAAgC,CAAC;AAClF,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE,MAAM,UAAU,GAAiC;IAC/C,MAAM;IACN,SAAS;IACT,aAAa;IACb,UAAU;IACV,iBAAiB;IACjB,YAAY;IACZ,cAAc;IACd,kBAAkB;IAClB,eAAe;CAChB,CAAC;AAEF,MAAM,UAAU,kCAAkC,CAChD,OAAiC;IAEjC,OAAO;QACL,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC;QAC7C,GAAG,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,mBAAmB,CAAC;KAClD,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CACxB,MAAmD;IAEnD,MAAM,SAAS,GAAG,IAAI,GAAG,CAAoB,gCAAgC,CAAC,CAAC;IAC/E,OAAO,UAAU,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QAClC,IAAI,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,4BAA4B,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,SAAS;YACnF,OAAO,EAAE,CAAC;QACZ,OAAO;YACL;gBACE,QAAQ,EAAE,SAAS;gBACnB,IAAI,EAAE,uCAAuC;gBAC7C,OAAO,EAAE,oCAAoC,KAAK,GAAG;gBACrD,MAAM,EAAE,SAAS;gBACjB,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,KAAK;aACN;SACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,mBAAmB,CAC1B,GAAkD;IAElD,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,IAAI,sBAAsB,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,IAAI;QAAE,OAAO,EAAE,CAAC;IACxF,OAAO;QACL;YACE,QAAQ,EAAE,OAAO;YACjB,IAAI,EAAE,uCAAuC;YAC7C,OAAO,EAAE,6BAA6B,GAAG,CAAC,OAAO,kBAAkB;YACnE,MAAM,EAAE,SAAS;YACjB,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,OAAO,EAAE,GAAG,CAAC,OAAO;SACrB;KACF,CAAC;AACJ,CAAC","sourcesContent":["import type { StoreListingDesiredState } from '../../domain/storeListing/StoreListingDesiredState';\nimport type { StoreListingDiagnostic } from '../../domain/storeListing/StoreListingDiagnostic';\nimport type { StoreListingField } from '../../domain/storeListing/StoreListingField';\nimport { storeListingLocaleFieldValue } from '../../domain/storeListing/storeListingLocaleFieldValue';\nimport { GOOGLE_PLAY_STORE_LISTING_FIELDS } from './googlePlayStoreListingFields';\nimport { mapGooglePlayImageType } from './mapGooglePlayImageType';\n\nconst ALL_FIELDS: readonly StoreListingField[] = [\n 'name',\n 'summary',\n 'description',\n 'keywords',\n 'promotionalText',\n 'supportUrl',\n 'marketingUrl',\n 'privacyPolicyUrl',\n 'promoVideoUrl',\n];\n\nexport function createGooglePlayListingDiagnostics(\n desired: StoreListingDesiredState,\n): readonly StoreListingDiagnostic[] {\n return [\n ...desired.locales.flatMap(localeDiagnostics),\n ...desired.assetSets.flatMap(assetSetDiagnostics),\n ];\n}\n\nfunction localeDiagnostics(\n locale: StoreListingDesiredState['locales'][number],\n): StoreListingDiagnostic[] {\n const supported = new Set<StoreListingField>(GOOGLE_PLAY_STORE_LISTING_FIELDS);\n return ALL_FIELDS.flatMap((field) => {\n if (supported.has(field) || storeListingLocaleFieldValue(locale, field) === undefined)\n return [];\n return [\n {\n severity: 'warning',\n code: 'GOOGLE_PLAY_LISTING_FIELD_UNSUPPORTED',\n message: `Google Play does not synchronize ${field}.`,\n target: 'android',\n locale: locale.locale,\n field,\n },\n ];\n });\n}\n\nfunction assetSetDiagnostics(\n set: StoreListingDesiredState['assetSets'][number],\n): StoreListingDiagnostic[] {\n if (set.target !== 'android' || mapGooglePlayImageType(set.variant) !== null) return [];\n return [\n {\n severity: 'error',\n code: 'GOOGLE_PLAY_IMAGE_VARIANT_UNSUPPORTED',\n message: `Google Play image variant ${set.variant} is unsupported.`,\n target: 'android',\n locale: set.locale,\n variant: set.variant,\n },\n ];\n}\n"]}
@@ -0,0 +1,5 @@
1
+ export declare function googlePlayListingsUrl(packageName: string, editId: string): string;
2
+ export declare function googlePlayListingUrl(packageName: string, editId: string, locale: string): string;
3
+ export declare function googlePlayImagesUrl(packageName: string, editId: string, locale: string, imageType: string): string;
4
+ export declare function googlePlayImageUploadUrl(packageName: string, editId: string, locale: string, imageType: string): string;
5
+ //# sourceMappingURL=googlePlayListingUrls.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"googlePlayListingUrls.d.ts","sourceRoot":"","sources":["../../../src/providers/googlePlay/googlePlayListingUrls.ts"],"names":[],"mappings":"AAGA,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAEjF;AAED,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAEhG;AAED,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAChB,MAAM,CAER;AAED,wBAAgB,wBAAwB,CACtC,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAChB,MAAM,CAER"}
@@ -0,0 +1,21 @@
1
+ const API = 'https://androidpublisher.googleapis.com/androidpublisher/v3';
2
+ const UPLOAD = 'https://androidpublisher.googleapis.com/upload/androidpublisher/v3';
3
+ export function googlePlayListingsUrl(packageName, editId) {
4
+ return `${base(API, packageName, editId)}/listings`;
5
+ }
6
+ export function googlePlayListingUrl(packageName, editId, locale) {
7
+ return `${googlePlayListingsUrl(packageName, editId)}/${segment(locale)}`;
8
+ }
9
+ export function googlePlayImagesUrl(packageName, editId, locale, imageType) {
10
+ return `${googlePlayListingUrl(packageName, editId, locale)}/${segment(imageType)}`;
11
+ }
12
+ export function googlePlayImageUploadUrl(packageName, editId, locale, imageType) {
13
+ return `${base(UPLOAD, packageName, editId)}/listings/${segment(locale)}/${segment(imageType)}`;
14
+ }
15
+ function base(host, packageName, editId) {
16
+ return `${host}/applications/${segment(packageName)}/edits/${segment(editId)}`;
17
+ }
18
+ function segment(value) {
19
+ return encodeURIComponent(value);
20
+ }
21
+ //# sourceMappingURL=googlePlayListingUrls.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"googlePlayListingUrls.js","sourceRoot":"","sources":["../../../src/providers/googlePlay/googlePlayListingUrls.ts"],"names":[],"mappings":"AAAA,MAAM,GAAG,GAAG,6DAA6D,CAAC;AAC1E,MAAM,MAAM,GAAG,oEAAoE,CAAC;AAEpF,MAAM,UAAU,qBAAqB,CAAC,WAAmB,EAAE,MAAc;IACvE,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,WAAmB,EAAE,MAAc,EAAE,MAAc;IACtF,OAAO,GAAG,qBAAqB,CAAC,WAAW,EAAE,MAAM,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;AAC5E,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,WAAmB,EACnB,MAAc,EACd,MAAc,EACd,SAAiB;IAEjB,OAAO,GAAG,oBAAoB,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;AACtF,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,WAAmB,EACnB,MAAc,EACd,MAAc,EACd,SAAiB;IAEjB,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,CAAC,aAAa,OAAO,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;AAClG,CAAC;AAED,SAAS,IAAI,CAAC,IAAY,EAAE,WAAmB,EAAE,MAAc;IAC7D,OAAO,GAAG,IAAI,iBAAiB,OAAO,CAAC,WAAW,CAAC,UAAU,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;AACjF,CAAC;AAED,SAAS,OAAO,CAAC,KAAa;IAC5B,OAAO,kBAAkB,CAAC,KAAK,CAAC,CAAC;AACnC,CAAC","sourcesContent":["const API = 'https://androidpublisher.googleapis.com/androidpublisher/v3';\nconst UPLOAD = 'https://androidpublisher.googleapis.com/upload/androidpublisher/v3';\n\nexport function googlePlayListingsUrl(packageName: string, editId: string): string {\n return `${base(API, packageName, editId)}/listings`;\n}\n\nexport function googlePlayListingUrl(packageName: string, editId: string, locale: string): string {\n return `${googlePlayListingsUrl(packageName, editId)}/${segment(locale)}`;\n}\n\nexport function googlePlayImagesUrl(\n packageName: string,\n editId: string,\n locale: string,\n imageType: string,\n): string {\n return `${googlePlayListingUrl(packageName, editId, locale)}/${segment(imageType)}`;\n}\n\nexport function googlePlayImageUploadUrl(\n packageName: string,\n editId: string,\n locale: string,\n imageType: string,\n): string {\n return `${base(UPLOAD, packageName, editId)}/listings/${segment(locale)}/${segment(imageType)}`;\n}\n\nfunction base(host: string, packageName: string, editId: string): string {\n return `${host}/applications/${segment(packageName)}/edits/${segment(editId)}`;\n}\n\nfunction segment(value: string): string {\n return encodeURIComponent(value);\n}\n"]}
@@ -0,0 +1,2 @@
1
+ export declare const GOOGLE_PLAY_STORE_LISTING_FIELDS: readonly ["name", "summary", "description", "promoVideoUrl"];
2
+ //# sourceMappingURL=googlePlayStoreListingFields.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"googlePlayStoreListingFields.d.ts","sourceRoot":"","sources":["../../../src/providers/googlePlay/googlePlayStoreListingFields.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,gCAAgC,8DAKI,CAAC"}
@@ -0,0 +1,7 @@
1
+ export const GOOGLE_PLAY_STORE_LISTING_FIELDS = [
2
+ 'name',
3
+ 'summary',
4
+ 'description',
5
+ 'promoVideoUrl',
6
+ ];
7
+ //# sourceMappingURL=googlePlayStoreListingFields.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"googlePlayStoreListingFields.js","sourceRoot":"","sources":["../../../src/providers/googlePlay/googlePlayStoreListingFields.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,gCAAgC,GAAG;IAC9C,MAAM;IACN,SAAS;IACT,aAAa;IACb,eAAe;CACgC,CAAC","sourcesContent":["import type { StoreListingField } from '../../domain/storeListing/StoreListingField';\n\nexport const GOOGLE_PLAY_STORE_LISTING_FIELDS = [\n 'name',\n 'summary',\n 'description',\n 'promoVideoUrl',\n] as const satisfies readonly StoreListingField[];\n"]}
@@ -0,0 +1,15 @@
1
+ import type { DeploymentCredentialReference } from '../../domain/DeploymentCredentialReference';
2
+ import type { DeploymentSecretResolver } from '../../domain/DeploymentSecretResolver';
3
+ import type { StoreListingDesiredState } from '../../domain/storeListing/StoreListingDesiredState';
4
+ import type { GooglePlayStoreListingInspectionResult } from './GooglePlayStoreListingResult';
5
+ import type { GooglePlayTokenFactory } from './GooglePlayTokenFactory';
6
+ import type { GooglePlayTransport } from './GooglePlayTransport';
7
+ export declare function inspectGooglePlayStoreListing(options: {
8
+ readonly packageName: string;
9
+ readonly desired: StoreListingDesiredState;
10
+ readonly credentials: readonly DeploymentCredentialReference[];
11
+ readonly resolveSecret: DeploymentSecretResolver;
12
+ readonly createToken: GooglePlayTokenFactory;
13
+ readonly request: GooglePlayTransport;
14
+ }): Promise<GooglePlayStoreListingInspectionResult>;
15
+ //# sourceMappingURL=inspectGooglePlayStoreListing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inspectGooglePlayStoreListing.d.ts","sourceRoot":"","sources":["../../../src/providers/googlePlay/inspectGooglePlayStoreListing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,4CAA4C,CAAC;AAChG,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AACtF,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,oDAAoD,CAAC;AAKnG,OAAO,KAAK,EAAE,sCAAsC,EAAE,MAAM,gCAAgC,CAAC;AAC7F,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AACvE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAMjE,wBAAsB,6BAA6B,CAAC,OAAO,EAAE;IAC3D,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,wBAAwB,CAAC;IAC3C,QAAQ,CAAC,WAAW,EAAE,SAAS,6BAA6B,EAAE,CAAC;IAC/D,QAAQ,CAAC,aAAa,EAAE,wBAAwB,CAAC;IACjD,QAAQ,CAAC,WAAW,EAAE,sBAAsB,CAAC;IAC7C,QAAQ,CAAC,OAAO,EAAE,mBAAmB,CAAC;CACvC,GAAG,OAAO,CAAC,sCAAsC,CAAC,CAWlD"}
@@ -0,0 +1,105 @@
1
+ import { createGooglePlayListingDiagnostics } from './createGooglePlayListingDiagnostics';
2
+ import { googlePlayListingsUrl } from './googlePlayListingUrls';
3
+ import { trackGooglePlayRequests } from './GooglePlayRequestTracker';
4
+ import { GOOGLE_PLAY_STORE_LISTING_FIELDS } from './googlePlayStoreListingFields';
5
+ import { insertGooglePlayEdit } from './insertGooglePlayEdit';
6
+ import { parseGooglePlayListings } from './parseGooglePlayListings';
7
+ import { readGooglePlayAssetSets } from './readGooglePlayAssetSets';
8
+ import { resolveGooglePlayAccessToken } from './resolveGooglePlayAccessToken';
9
+ export async function inspectGooglePlayStoreListing(options) {
10
+ const access = await resolveGooglePlayAccessToken(options);
11
+ if (!access.ok)
12
+ return { status: 'action-required', action: access.action };
13
+ const tracker = trackGooglePlayRequests(options.request);
14
+ const editId = await insertGooglePlayEdit({
15
+ ...options,
16
+ token: access.token,
17
+ request: tracker.request,
18
+ });
19
+ if (editId === null)
20
+ return providerFailure(tracker.blockingStatus());
21
+ return inspectEdit(options, editId, access.token, tracker);
22
+ }
23
+ async function inspectEdit(options, editId, token, tracker) {
24
+ const response = await tracker.request({
25
+ method: 'GET',
26
+ url: googlePlayListingsUrl(options.packageName, editId),
27
+ token,
28
+ });
29
+ if (response.status < 200 || response.status >= 300) {
30
+ return providerFailure(tracker.blockingStatus());
31
+ }
32
+ const locales = parseListings(response.body, options.desired);
33
+ if (locales === null)
34
+ return failed();
35
+ const assetSets = await readGooglePlayAssetSets({
36
+ ...options,
37
+ editId,
38
+ token,
39
+ request: tracker.request,
40
+ });
41
+ if (assetSets === null)
42
+ return providerFailure(tracker.blockingStatus());
43
+ return {
44
+ status: 'completed',
45
+ state: {
46
+ target: 'android',
47
+ locales,
48
+ assetSets,
49
+ supportedFields: GOOGLE_PLAY_STORE_LISTING_FIELDS,
50
+ diagnostics: createGooglePlayListingDiagnostics(options.desired),
51
+ },
52
+ };
53
+ }
54
+ function parseListings(body, desired) {
55
+ try {
56
+ const value = JSON.parse(body);
57
+ return parseGooglePlayListings(value, new Set(desired.locales.map((item) => item.locale)));
58
+ }
59
+ catch {
60
+ return null;
61
+ }
62
+ }
63
+ function providerFailure(status) {
64
+ if (status === 401)
65
+ return authenticationRequired();
66
+ if (status === 403)
67
+ return permissionRequired();
68
+ return failed();
69
+ }
70
+ function authenticationRequired() {
71
+ return {
72
+ status: 'action-required',
73
+ action: {
74
+ type: 'authentication',
75
+ provider: 'google-play',
76
+ target: 'android',
77
+ code: 'GOOGLE_PLAY_AUTHENTICATION_REQUIRED',
78
+ message: 'Google Play authentication is required for store listing synchronization.',
79
+ },
80
+ };
81
+ }
82
+ function permissionRequired() {
83
+ return {
84
+ status: 'action-required',
85
+ action: {
86
+ type: 'manual-action',
87
+ provider: 'google-play',
88
+ target: 'android',
89
+ code: 'GOOGLE_PLAY_LISTING_PERMISSION_REQUIRED',
90
+ message: 'The Google Play service account needs store listing permissions.',
91
+ },
92
+ };
93
+ }
94
+ function failed() {
95
+ return {
96
+ status: 'failed',
97
+ failure: {
98
+ code: 'GOOGLE_PLAY_LISTING_INSPECTION_FAILED',
99
+ message: 'Google Play store listing state could not be inspected.',
100
+ target: 'android',
101
+ provider: 'google-play',
102
+ },
103
+ };
104
+ }
105
+ //# sourceMappingURL=inspectGooglePlayStoreListing.js.map