@ankhorage/deploy 0.7.0 → 0.8.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 (297) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +4 -1
  3. package/dist/domain/monetization/MonetizationBasePrice.d.ts +6 -0
  4. package/dist/domain/monetization/MonetizationBasePrice.d.ts.map +1 -0
  5. package/dist/domain/monetization/MonetizationBasePrice.js +2 -0
  6. package/dist/domain/monetization/MonetizationBasePrice.js.map +1 -0
  7. package/dist/domain/monetization/MonetizationDesiredState.d.ts +6 -0
  8. package/dist/domain/monetization/MonetizationDesiredState.d.ts.map +1 -0
  9. package/dist/domain/monetization/MonetizationDesiredState.js +2 -0
  10. package/dist/domain/monetization/MonetizationDesiredState.js.map +1 -0
  11. package/dist/domain/monetization/MonetizationDiagnostic.d.ts +9 -0
  12. package/dist/domain/monetization/MonetizationDiagnostic.d.ts.map +1 -0
  13. package/dist/domain/monetization/MonetizationDiagnostic.js +2 -0
  14. package/dist/domain/monetization/MonetizationDiagnostic.js.map +1 -0
  15. package/dist/domain/monetization/MonetizationLocalization.d.ts +6 -0
  16. package/dist/domain/monetization/MonetizationLocalization.d.ts.map +1 -0
  17. package/dist/domain/monetization/MonetizationLocalization.js +2 -0
  18. package/dist/domain/monetization/MonetizationLocalization.js.map +1 -0
  19. package/dist/domain/monetization/MonetizationObservedProduct.d.ts +12 -0
  20. package/dist/domain/monetization/MonetizationObservedProduct.d.ts.map +1 -0
  21. package/dist/domain/monetization/MonetizationObservedProduct.js +2 -0
  22. package/dist/domain/monetization/MonetizationObservedProduct.js.map +1 -0
  23. package/dist/domain/monetization/MonetizationPlan.d.ts +10 -0
  24. package/dist/domain/monetization/MonetizationPlan.d.ts.map +1 -0
  25. package/dist/domain/monetization/MonetizationPlan.js +2 -0
  26. package/dist/domain/monetization/MonetizationPlan.js.map +1 -0
  27. package/dist/domain/monetization/MonetizationPlanStep.d.ts +7 -0
  28. package/dist/domain/monetization/MonetizationPlanStep.d.ts.map +1 -0
  29. package/dist/domain/monetization/MonetizationPlanStep.js +2 -0
  30. package/dist/domain/monetization/MonetizationPlanStep.js.map +1 -0
  31. package/dist/domain/monetization/MonetizationProduct.d.ts +12 -0
  32. package/dist/domain/monetization/MonetizationProduct.d.ts.map +1 -0
  33. package/dist/domain/monetization/MonetizationProduct.js +2 -0
  34. package/dist/domain/monetization/MonetizationProduct.js.map +1 -0
  35. package/dist/domain/monetization/MonetizationSubscription.d.ts +7 -0
  36. package/dist/domain/monetization/MonetizationSubscription.d.ts.map +1 -0
  37. package/dist/domain/monetization/MonetizationSubscription.js +2 -0
  38. package/dist/domain/monetization/MonetizationSubscription.js.map +1 -0
  39. package/dist/domain/monetization/MonetizationTargetState.d.ts +9 -0
  40. package/dist/domain/monetization/MonetizationTargetState.d.ts.map +1 -0
  41. package/dist/domain/monetization/MonetizationTargetState.js +2 -0
  42. package/dist/domain/monetization/MonetizationTargetState.js.map +1 -0
  43. package/dist/domain/monetization/createMonetizationCurrentRevision.d.ts +3 -0
  44. package/dist/domain/monetization/createMonetizationCurrentRevision.d.ts.map +1 -0
  45. package/dist/domain/monetization/createMonetizationCurrentRevision.js +13 -0
  46. package/dist/domain/monetization/createMonetizationCurrentRevision.js.map +1 -0
  47. package/dist/domain/monetization/createMonetizationPlan.d.ts +9 -0
  48. package/dist/domain/monetization/createMonetizationPlan.d.ts.map +1 -0
  49. package/dist/domain/monetization/createMonetizationPlan.js +94 -0
  50. package/dist/domain/monetization/createMonetizationPlan.js.map +1 -0
  51. package/dist/index.d.ts +10 -0
  52. package/dist/index.d.ts.map +1 -1
  53. package/dist/index.js.map +1 -1
  54. package/dist/project/index.d.ts +13 -0
  55. package/dist/project/index.d.ts.map +1 -1
  56. package/dist/project/index.js +4 -0
  57. package/dist/project/index.js.map +1 -1
  58. package/dist/project/io/assertContainedPath.d.ts.map +1 -1
  59. package/dist/project/io/assertContainedPath.js +4 -3
  60. package/dist/project/io/assertContainedPath.js.map +1 -1
  61. package/dist/project/monetization/ExecuteProjectMonetizationSyncOptions.d.ts +8 -0
  62. package/dist/project/monetization/ExecuteProjectMonetizationSyncOptions.d.ts.map +1 -0
  63. package/dist/project/monetization/ExecuteProjectMonetizationSyncOptions.js +2 -0
  64. package/dist/project/monetization/ExecuteProjectMonetizationSyncOptions.js.map +1 -0
  65. package/dist/project/monetization/InspectProjectMonetizationOptions.d.ts +5 -0
  66. package/dist/project/monetization/InspectProjectMonetizationOptions.d.ts.map +1 -0
  67. package/dist/project/monetization/InspectProjectMonetizationOptions.js +2 -0
  68. package/dist/project/monetization/InspectProjectMonetizationOptions.js.map +1 -0
  69. package/dist/project/monetization/ProjectMonetizationAccess.d.ts +7 -0
  70. package/dist/project/monetization/ProjectMonetizationAccess.d.ts.map +1 -0
  71. package/dist/project/monetization/ProjectMonetizationAccess.js +2 -0
  72. package/dist/project/monetization/ProjectMonetizationAccess.js.map +1 -0
  73. package/dist/project/monetization/ProjectMonetizationExecutionResult.d.ts +16 -0
  74. package/dist/project/monetization/ProjectMonetizationExecutionResult.d.ts.map +1 -0
  75. package/dist/project/monetization/ProjectMonetizationExecutionResult.js +2 -0
  76. package/dist/project/monetization/ProjectMonetizationExecutionResult.js.map +1 -0
  77. package/dist/project/monetization/ProjectMonetizationInspection.d.ts +13 -0
  78. package/dist/project/monetization/ProjectMonetizationInspection.d.ts.map +1 -0
  79. package/dist/project/monetization/ProjectMonetizationInspection.js +2 -0
  80. package/dist/project/monetization/ProjectMonetizationInspection.js.map +1 -0
  81. package/dist/project/monetization/ProjectMonetizationInspectionResult.d.ts +10 -0
  82. package/dist/project/monetization/ProjectMonetizationInspectionResult.d.ts.map +1 -0
  83. package/dist/project/monetization/ProjectMonetizationInspectionResult.js +2 -0
  84. package/dist/project/monetization/ProjectMonetizationInspectionResult.js.map +1 -0
  85. package/dist/project/monetization/ProjectMonetizationPlan.d.ts +6 -0
  86. package/dist/project/monetization/ProjectMonetizationPlan.d.ts.map +1 -0
  87. package/dist/project/monetization/ProjectMonetizationPlan.js +2 -0
  88. package/dist/project/monetization/ProjectMonetizationPlan.js.map +1 -0
  89. package/dist/project/monetization/ProjectMonetizationRuntime.d.ts +12 -0
  90. package/dist/project/monetization/ProjectMonetizationRuntime.d.ts.map +1 -0
  91. package/dist/project/monetization/ProjectMonetizationRuntime.js +2 -0
  92. package/dist/project/monetization/ProjectMonetizationRuntime.js.map +1 -0
  93. package/dist/project/monetization/ProjectMonetizationTargets.d.ts +5 -0
  94. package/dist/project/monetization/ProjectMonetizationTargets.d.ts.map +1 -0
  95. package/dist/project/monetization/ProjectMonetizationTargets.js +2 -0
  96. package/dist/project/monetization/ProjectMonetizationTargets.js.map +1 -0
  97. package/dist/project/monetization/ResolvedProjectMonetizationAccess.d.ts +7 -0
  98. package/dist/project/monetization/ResolvedProjectMonetizationAccess.d.ts.map +1 -0
  99. package/dist/project/monetization/ResolvedProjectMonetizationAccess.js +2 -0
  100. package/dist/project/monetization/ResolvedProjectMonetizationAccess.js.map +1 -0
  101. package/dist/project/monetization/areProjectMonetizationPlansEqual.d.ts +3 -0
  102. package/dist/project/monetization/areProjectMonetizationPlansEqual.d.ts.map +1 -0
  103. package/dist/project/monetization/areProjectMonetizationPlansEqual.js +4 -0
  104. package/dist/project/monetization/areProjectMonetizationPlansEqual.js.map +1 -0
  105. package/dist/project/monetization/createProjectMonetizationPlan.d.ts +4 -0
  106. package/dist/project/monetization/createProjectMonetizationPlan.d.ts.map +1 -0
  107. package/dist/project/monetization/createProjectMonetizationPlan.js +14 -0
  108. package/dist/project/monetization/createProjectMonetizationPlan.js.map +1 -0
  109. package/dist/project/monetization/createProjectMonetizationRevision.d.ts +3 -0
  110. package/dist/project/monetization/createProjectMonetizationRevision.d.ts.map +1 -0
  111. package/dist/project/monetization/createProjectMonetizationRevision.js +5 -0
  112. package/dist/project/monetization/createProjectMonetizationRevision.js.map +1 -0
  113. package/dist/project/monetization/defaultProjectMonetizationRuntime.d.ts +3 -0
  114. package/dist/project/monetization/defaultProjectMonetizationRuntime.d.ts.map +1 -0
  115. package/dist/project/monetization/defaultProjectMonetizationRuntime.js +12 -0
  116. package/dist/project/monetization/defaultProjectMonetizationRuntime.js.map +1 -0
  117. package/dist/project/monetization/executeProjectMonetizationSync.d.ts +4 -0
  118. package/dist/project/monetization/executeProjectMonetizationSync.d.ts.map +1 -0
  119. package/dist/project/monetization/executeProjectMonetizationSync.js +6 -0
  120. package/dist/project/monetization/executeProjectMonetizationSync.js.map +1 -0
  121. package/dist/project/monetization/executeProjectMonetizationSyncWithRuntime.d.ts +5 -0
  122. package/dist/project/monetization/executeProjectMonetizationSyncWithRuntime.d.ts.map +1 -0
  123. package/dist/project/monetization/executeProjectMonetizationSyncWithRuntime.js +63 -0
  124. package/dist/project/monetization/executeProjectMonetizationSyncWithRuntime.js.map +1 -0
  125. package/dist/project/monetization/executeProjectMonetizationTargets.d.ts +23 -0
  126. package/dist/project/monetization/executeProjectMonetizationTargets.d.ts.map +1 -0
  127. package/dist/project/monetization/executeProjectMonetizationTargets.js +66 -0
  128. package/dist/project/monetization/executeProjectMonetizationTargets.js.map +1 -0
  129. package/dist/project/monetization/inspectProjectMonetization.d.ts +4 -0
  130. package/dist/project/monetization/inspectProjectMonetization.d.ts.map +1 -0
  131. package/dist/project/monetization/inspectProjectMonetization.js +6 -0
  132. package/dist/project/monetization/inspectProjectMonetization.js.map +1 -0
  133. package/dist/project/monetization/inspectProjectMonetizationWithRuntime.d.ts +5 -0
  134. package/dist/project/monetization/inspectProjectMonetizationWithRuntime.d.ts.map +1 -0
  135. package/dist/project/monetization/inspectProjectMonetizationWithRuntime.js +78 -0
  136. package/dist/project/monetization/inspectProjectMonetizationWithRuntime.js.map +1 -0
  137. package/dist/project/monetization/parseProjectMonetization.d.ts +3 -0
  138. package/dist/project/monetization/parseProjectMonetization.d.ts.map +1 -0
  139. package/dist/project/monetization/parseProjectMonetization.js +127 -0
  140. package/dist/project/monetization/parseProjectMonetization.js.map +1 -0
  141. package/dist/project/monetization/readProjectMonetization.d.ts +5 -0
  142. package/dist/project/monetization/readProjectMonetization.d.ts.map +1 -0
  143. package/dist/project/monetization/readProjectMonetization.js +19 -0
  144. package/dist/project/monetization/readProjectMonetization.js.map +1 -0
  145. package/dist/project/monetization/resolveProjectMonetizationAccess.d.ts +4 -0
  146. package/dist/project/monetization/resolveProjectMonetizationAccess.d.ts.map +1 -0
  147. package/dist/project/monetization/resolveProjectMonetizationAccess.js +7 -0
  148. package/dist/project/monetization/resolveProjectMonetizationAccess.js.map +1 -0
  149. package/dist/project/monetization/resolveProjectMonetizationTargets.d.ts +13 -0
  150. package/dist/project/monetization/resolveProjectMonetizationTargets.d.ts.map +1 -0
  151. package/dist/project/monetization/resolveProjectMonetizationTargets.js +27 -0
  152. package/dist/project/monetization/resolveProjectMonetizationTargets.js.map +1 -0
  153. package/dist/providers/appStoreConnect/AppStoreMonetizationExecutionResult.d.ts +14 -0
  154. package/dist/providers/appStoreConnect/AppStoreMonetizationExecutionResult.d.ts.map +1 -0
  155. package/dist/providers/appStoreConnect/AppStoreMonetizationExecutionResult.js +2 -0
  156. package/dist/providers/appStoreConnect/AppStoreMonetizationExecutionResult.js.map +1 -0
  157. package/dist/providers/appStoreConnect/AppStoreMonetizationResult.d.ts +14 -0
  158. package/dist/providers/appStoreConnect/AppStoreMonetizationResult.d.ts.map +1 -0
  159. package/dist/providers/appStoreConnect/AppStoreMonetizationResult.js +2 -0
  160. package/dist/providers/appStoreConnect/AppStoreMonetizationResult.js.map +1 -0
  161. package/dist/providers/appStoreConnect/AppStoreMonetizationSnapshot.d.ts +32 -0
  162. package/dist/providers/appStoreConnect/AppStoreMonetizationSnapshot.d.ts.map +1 -0
  163. package/dist/providers/appStoreConnect/AppStoreMonetizationSnapshot.js +2 -0
  164. package/dist/providers/appStoreConnect/AppStoreMonetizationSnapshot.js.map +1 -0
  165. package/dist/providers/appStoreConnect/AppStoreProductVersion.d.ts +7 -0
  166. package/dist/providers/appStoreConnect/AppStoreProductVersion.d.ts.map +1 -0
  167. package/dist/providers/appStoreConnect/AppStoreProductVersion.js +2 -0
  168. package/dist/providers/appStoreConnect/AppStoreProductVersion.js.map +1 -0
  169. package/dist/providers/appStoreConnect/AppStoreResolvedPricePoint.d.ts +5 -0
  170. package/dist/providers/appStoreConnect/AppStoreResolvedPricePoint.d.ts.map +1 -0
  171. package/dist/providers/appStoreConnect/AppStoreResolvedPricePoint.js +2 -0
  172. package/dist/providers/appStoreConnect/AppStoreResolvedPricePoint.js.map +1 -0
  173. package/dist/providers/appStoreConnect/appStoreMonetizationUrls.d.ts +25 -0
  174. package/dist/providers/appStoreConnect/appStoreMonetizationUrls.d.ts.map +1 -0
  175. package/dist/providers/appStoreConnect/appStoreMonetizationUrls.js +67 -0
  176. package/dist/providers/appStoreConnect/appStoreMonetizationUrls.js.map +1 -0
  177. package/dist/providers/appStoreConnect/createAppStoreMonetizationProduct.d.ts +10 -0
  178. package/dist/providers/appStoreConnect/createAppStoreMonetizationProduct.d.ts.map +1 -0
  179. package/dist/providers/appStoreConnect/createAppStoreMonetizationProduct.js +67 -0
  180. package/dist/providers/appStoreConnect/createAppStoreMonetizationProduct.js.map +1 -0
  181. package/dist/providers/appStoreConnect/ensureAppStoreProductVersion.d.ts +8 -0
  182. package/dist/providers/appStoreConnect/ensureAppStoreProductVersion.d.ts.map +1 -0
  183. package/dist/providers/appStoreConnect/ensureAppStoreProductVersion.js +67 -0
  184. package/dist/providers/appStoreConnect/ensureAppStoreProductVersion.js.map +1 -0
  185. package/dist/providers/appStoreConnect/ensureAppStoreSubscriptionFamily.d.ts +10 -0
  186. package/dist/providers/appStoreConnect/ensureAppStoreSubscriptionFamily.d.ts.map +1 -0
  187. package/dist/providers/appStoreConnect/ensureAppStoreSubscriptionFamily.js +78 -0
  188. package/dist/providers/appStoreConnect/ensureAppStoreSubscriptionFamily.js.map +1 -0
  189. package/dist/providers/appStoreConnect/executeAppStoreMonetizationPlan.d.ts +19 -0
  190. package/dist/providers/appStoreConnect/executeAppStoreMonetizationPlan.d.ts.map +1 -0
  191. package/dist/providers/appStoreConnect/executeAppStoreMonetizationPlan.js +117 -0
  192. package/dist/providers/appStoreConnect/executeAppStoreMonetizationPlan.js.map +1 -0
  193. package/dist/providers/appStoreConnect/inspectAppStoreMonetization.d.ts +16 -0
  194. package/dist/providers/appStoreConnect/inspectAppStoreMonetization.d.ts.map +1 -0
  195. package/dist/providers/appStoreConnect/inspectAppStoreMonetization.js +53 -0
  196. package/dist/providers/appStoreConnect/inspectAppStoreMonetization.js.map +1 -0
  197. package/dist/providers/appStoreConnect/mapAppStoreSubscriptionPeriod.d.ts +3 -0
  198. package/dist/providers/appStoreConnect/mapAppStoreSubscriptionPeriod.d.ts.map +1 -0
  199. package/dist/providers/appStoreConnect/mapAppStoreSubscriptionPeriod.js +14 -0
  200. package/dist/providers/appStoreConnect/mapAppStoreSubscriptionPeriod.js.map +1 -0
  201. package/dist/providers/appStoreConnect/normalizeAppStoreMonetization.d.ts +5 -0
  202. package/dist/providers/appStoreConnect/normalizeAppStoreMonetization.d.ts.map +1 -0
  203. package/dist/providers/appStoreConnect/normalizeAppStoreMonetization.js +65 -0
  204. package/dist/providers/appStoreConnect/normalizeAppStoreMonetization.js.map +1 -0
  205. package/dist/providers/appStoreConnect/readAppStoreCollection.d.ts +11 -0
  206. package/dist/providers/appStoreConnect/readAppStoreCollection.d.ts.map +1 -0
  207. package/dist/providers/appStoreConnect/readAppStoreCollection.js +43 -0
  208. package/dist/providers/appStoreConnect/readAppStoreCollection.js.map +1 -0
  209. package/dist/providers/appStoreConnect/readAppStoreMonetizationPrice.d.ts +17 -0
  210. package/dist/providers/appStoreConnect/readAppStoreMonetizationPrice.d.ts.map +1 -0
  211. package/dist/providers/appStoreConnect/readAppStoreMonetizationPrice.js +114 -0
  212. package/dist/providers/appStoreConnect/readAppStoreMonetizationPrice.js.map +1 -0
  213. package/dist/providers/appStoreConnect/readAppStoreMonetizationSnapshot.d.ts +11 -0
  214. package/dist/providers/appStoreConnect/readAppStoreMonetizationSnapshot.d.ts.map +1 -0
  215. package/dist/providers/appStoreConnect/readAppStoreMonetizationSnapshot.js +210 -0
  216. package/dist/providers/appStoreConnect/readAppStoreMonetizationSnapshot.js.map +1 -0
  217. package/dist/providers/appStoreConnect/readAppStoreProductVersion.d.ts +9 -0
  218. package/dist/providers/appStoreConnect/readAppStoreProductVersion.d.ts.map +1 -0
  219. package/dist/providers/appStoreConnect/readAppStoreProductVersion.js +56 -0
  220. package/dist/providers/appStoreConnect/readAppStoreProductVersion.js.map +1 -0
  221. package/dist/providers/appStoreConnect/readAppStoreVersionLocalizations.d.ts +9 -0
  222. package/dist/providers/appStoreConnect/readAppStoreVersionLocalizations.d.ts.map +1 -0
  223. package/dist/providers/appStoreConnect/readAppStoreVersionLocalizations.js +44 -0
  224. package/dist/providers/appStoreConnect/readAppStoreVersionLocalizations.js.map +1 -0
  225. package/dist/providers/appStoreConnect/resolveAppStorePricePoint.d.ts +11 -0
  226. package/dist/providers/appStoreConnect/resolveAppStorePricePoint.d.ts.map +1 -0
  227. package/dist/providers/appStoreConnect/resolveAppStorePricePoint.js +46 -0
  228. package/dist/providers/appStoreConnect/resolveAppStorePricePoint.js.map +1 -0
  229. package/dist/providers/appStoreConnect/syncAppStoreMonetizationLocalizations.d.ts +10 -0
  230. package/dist/providers/appStoreConnect/syncAppStoreMonetizationLocalizations.d.ts.map +1 -0
  231. package/dist/providers/appStoreConnect/syncAppStoreMonetizationLocalizations.js +80 -0
  232. package/dist/providers/appStoreConnect/syncAppStoreMonetizationLocalizations.js.map +1 -0
  233. package/dist/providers/appStoreConnect/toAppStoreSubscriptionPeriod.d.ts +3 -0
  234. package/dist/providers/appStoreConnect/toAppStoreSubscriptionPeriod.d.ts.map +1 -0
  235. package/dist/providers/appStoreConnect/toAppStoreSubscriptionPeriod.js +15 -0
  236. package/dist/providers/appStoreConnect/toAppStoreSubscriptionPeriod.js.map +1 -0
  237. package/dist/providers/appStoreConnect/toAppStoreTerritoryCode.d.ts +2 -0
  238. package/dist/providers/appStoreConnect/toAppStoreTerritoryCode.d.ts.map +1 -0
  239. package/dist/providers/appStoreConnect/toAppStoreTerritoryCode.js +255 -0
  240. package/dist/providers/appStoreConnect/toAppStoreTerritoryCode.js.map +1 -0
  241. package/dist/providers/appStoreConnect/updateAppStoreMonetizationPrice.d.ts +11 -0
  242. package/dist/providers/appStoreConnect/updateAppStoreMonetizationPrice.d.ts.map +1 -0
  243. package/dist/providers/appStoreConnect/updateAppStoreMonetizationPrice.js +83 -0
  244. package/dist/providers/appStoreConnect/updateAppStoreMonetizationPrice.js.map +1 -0
  245. package/dist/providers/appStoreConnect/updateAppStoreSubscription.d.ts +9 -0
  246. package/dist/providers/appStoreConnect/updateAppStoreSubscription.d.ts.map +1 -0
  247. package/dist/providers/appStoreConnect/updateAppStoreSubscription.js +24 -0
  248. package/dist/providers/appStoreConnect/updateAppStoreSubscription.js.map +1 -0
  249. package/dist/providers/appStoreConnect/writeAppStoreMonetizationProduct.d.ts +13 -0
  250. package/dist/providers/appStoreConnect/writeAppStoreMonetizationProduct.d.ts.map +1 -0
  251. package/dist/providers/appStoreConnect/writeAppStoreMonetizationProduct.js +94 -0
  252. package/dist/providers/appStoreConnect/writeAppStoreMonetizationProduct.js.map +1 -0
  253. package/dist/providers/googlePlay/GooglePlayMonetizationResult.d.ts +24 -0
  254. package/dist/providers/googlePlay/GooglePlayMonetizationResult.d.ts.map +1 -0
  255. package/dist/providers/googlePlay/GooglePlayMonetizationResult.js +2 -0
  256. package/dist/providers/googlePlay/GooglePlayMonetizationResult.js.map +1 -0
  257. package/dist/providers/googlePlay/GooglePlayPriceConversion.d.ts +4 -0
  258. package/dist/providers/googlePlay/GooglePlayPriceConversion.d.ts.map +1 -0
  259. package/dist/providers/googlePlay/GooglePlayPriceConversion.js +2 -0
  260. package/dist/providers/googlePlay/GooglePlayPriceConversion.js.map +1 -0
  261. package/dist/providers/googlePlay/convertGooglePlayRegionPrices.d.ts +10 -0
  262. package/dist/providers/googlePlay/convertGooglePlayRegionPrices.d.ts.map +1 -0
  263. package/dist/providers/googlePlay/convertGooglePlayRegionPrices.js +32 -0
  264. package/dist/providers/googlePlay/convertGooglePlayRegionPrices.js.map +1 -0
  265. package/dist/providers/googlePlay/executeGooglePlayMonetizationPlan.d.ts +18 -0
  266. package/dist/providers/googlePlay/executeGooglePlayMonetizationPlan.d.ts.map +1 -0
  267. package/dist/providers/googlePlay/executeGooglePlayMonetizationPlan.js +97 -0
  268. package/dist/providers/googlePlay/executeGooglePlayMonetizationPlan.js.map +1 -0
  269. package/dist/providers/googlePlay/googlePlayMonetizationUrls.d.ts +11 -0
  270. package/dist/providers/googlePlay/googlePlayMonetizationUrls.d.ts.map +1 -0
  271. package/dist/providers/googlePlay/googlePlayMonetizationUrls.js +36 -0
  272. package/dist/providers/googlePlay/googlePlayMonetizationUrls.js.map +1 -0
  273. package/dist/providers/googlePlay/inspectGooglePlayMonetization.d.ts +15 -0
  274. package/dist/providers/googlePlay/inspectGooglePlayMonetization.d.ts.map +1 -0
  275. package/dist/providers/googlePlay/inspectGooglePlayMonetization.js +49 -0
  276. package/dist/providers/googlePlay/inspectGooglePlayMonetization.js.map +1 -0
  277. package/dist/providers/googlePlay/normalizeGooglePlayMonetization.d.ts +8 -0
  278. package/dist/providers/googlePlay/normalizeGooglePlayMonetization.d.ts.map +1 -0
  279. package/dist/providers/googlePlay/normalizeGooglePlayMonetization.js +169 -0
  280. package/dist/providers/googlePlay/normalizeGooglePlayMonetization.js.map +1 -0
  281. package/dist/providers/googlePlay/readGooglePlayMonetizationResources.d.ts +12 -0
  282. package/dist/providers/googlePlay/readGooglePlayMonetizationResources.d.ts.map +1 -0
  283. package/dist/providers/googlePlay/readGooglePlayMonetizationResources.js +62 -0
  284. package/dist/providers/googlePlay/readGooglePlayMonetizationResources.js.map +1 -0
  285. package/dist/providers/googlePlay/toGooglePlayMoney.d.ts +3 -0
  286. package/dist/providers/googlePlay/toGooglePlayMoney.d.ts.map +1 -0
  287. package/dist/providers/googlePlay/toGooglePlayMoney.js +11 -0
  288. package/dist/providers/googlePlay/toGooglePlayMoney.js.map +1 -0
  289. package/dist/providers/googlePlay/updateGooglePlayMonetizationPrice.d.ts +10 -0
  290. package/dist/providers/googlePlay/updateGooglePlayMonetizationPrice.d.ts.map +1 -0
  291. package/dist/providers/googlePlay/updateGooglePlayMonetizationPrice.js +121 -0
  292. package/dist/providers/googlePlay/updateGooglePlayMonetizationPrice.js.map +1 -0
  293. package/dist/providers/googlePlay/writeGooglePlayMonetizationProduct.d.ts +13 -0
  294. package/dist/providers/googlePlay/writeGooglePlayMonetizationProduct.d.ts.map +1 -0
  295. package/dist/providers/googlePlay/writeGooglePlayMonetizationProduct.js +127 -0
  296. package/dist/providers/googlePlay/writeGooglePlayMonetizationProduct.js.map +1 -0
  297. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # @ankhorage/deploy
2
2
 
3
+ ## 0.8.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 32571a1: Add canonical monetization desired state, Google Play and App Store Connect product synchronization, and the project-level inspect/plan/execute monetization lifecycle.
8
+
3
9
  ## 0.7.0
4
10
 
5
11
  ### Minor Changes
package/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
 
4
4
  # @ankhorage/deploy
5
5
 
6
- ![license: MIT](././paradox/badges/license.svg) ![npm: v0.6.0](././paradox/badges/npm.svg) ![runtime: bun](././paradox/badges/runtime.svg) ![typescript: strict](././paradox/badges/typescript.svg) ![eslint: checked](././paradox/badges/eslint.svg) ![prettier: checked](././paradox/badges/prettier.svg) ![build: checked](././paradox/badges/build.svg) ![tests: checked](././paradox/badges/tests.svg) ![docs: paradox](././paradox/badges/docs.svg)
6
+ ![license: MIT](././paradox/badges/license.svg) ![npm: v0.7.0](././paradox/badges/npm.svg) ![runtime: bun](././paradox/badges/runtime.svg) ![typescript: strict](././paradox/badges/typescript.svg) ![eslint: checked](././paradox/badges/eslint.svg) ![prettier: checked](././paradox/badges/prettier.svg) ![build: checked](././paradox/badges/build.svg) ![tests: checked](././paradox/badges/tests.svg) ![docs: paradox](././paradox/badges/docs.svg)
7
7
 
8
8
  Declarative deployment engine for Expo apps across web, iOS, and Android.
9
9
 
@@ -16,3 +16,6 @@ Declarative deployment engine for Expo apps across web, iOS, and Android.
16
16
  - [Module relationships](././paradox/diagrams/module-relationships.mmd)
17
17
  - [Export graph](././paradox/diagrams/export-graph.mmd)
18
18
  - [createDeploymentPlan sequence](././paradox/diagrams/sequences/create-deployment-plan.mmd)
19
+ - [createProjectMonetizationPlan sequence](././paradox/diagrams/sequences/create-project-monetization-plan.mmd)
20
+ - [readProjectDeploymentConfig sequence](././paradox/diagrams/sequences/read-project-deployment-config.mmd)
21
+ - [resolveDeployProject sequence](././paradox/diagrams/sequences/resolve-deploy-project.mmd)
@@ -0,0 +1,6 @@
1
+ export interface MonetizationBasePrice {
2
+ readonly country: string;
3
+ readonly currency: string;
4
+ readonly amount: string;
5
+ }
6
+ //# sourceMappingURL=MonetizationBasePrice.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MonetizationBasePrice.d.ts","sourceRoot":"","sources":["../../../src/domain/monetization/MonetizationBasePrice.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=MonetizationBasePrice.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MonetizationBasePrice.js","sourceRoot":"","sources":["../../../src/domain/monetization/MonetizationBasePrice.ts"],"names":[],"mappings":"","sourcesContent":["export interface MonetizationBasePrice {\n readonly country: string;\n readonly currency: string;\n readonly amount: string;\n}\n"]}
@@ -0,0 +1,6 @@
1
+ import type { MonetizationProduct } from './MonetizationProduct';
2
+ export interface MonetizationDesiredState {
3
+ readonly revision: string;
4
+ readonly products: readonly MonetizationProduct[];
5
+ }
6
+ //# sourceMappingURL=MonetizationDesiredState.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MonetizationDesiredState.d.ts","sourceRoot":"","sources":["../../../src/domain/monetization/MonetizationDesiredState.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAEjE,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,SAAS,mBAAmB,EAAE,CAAC;CACnD"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=MonetizationDesiredState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MonetizationDesiredState.js","sourceRoot":"","sources":["../../../src/domain/monetization/MonetizationDesiredState.ts"],"names":[],"mappings":"","sourcesContent":["import type { MonetizationProduct } from './MonetizationProduct';\n\nexport interface MonetizationDesiredState {\n readonly revision: string;\n readonly products: readonly MonetizationProduct[];\n}\n"]}
@@ -0,0 +1,9 @@
1
+ export interface MonetizationDiagnostic {
2
+ readonly severity: 'warning' | 'error';
3
+ readonly code: string;
4
+ readonly message: string;
5
+ readonly target?: 'android' | 'ios';
6
+ readonly productId?: string;
7
+ readonly locale?: string;
8
+ }
9
+ //# sourceMappingURL=MonetizationDiagnostic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MonetizationDiagnostic.d.ts","sourceRoot":"","sources":["../../../src/domain/monetization/MonetizationDiagnostic.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,QAAQ,EAAE,SAAS,GAAG,OAAO,CAAC;IACvC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,GAAG,KAAK,CAAC;IACpC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=MonetizationDiagnostic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MonetizationDiagnostic.js","sourceRoot":"","sources":["../../../src/domain/monetization/MonetizationDiagnostic.ts"],"names":[],"mappings":"","sourcesContent":["export interface MonetizationDiagnostic {\n readonly severity: 'warning' | 'error';\n readonly code: string;\n readonly message: string;\n readonly target?: 'android' | 'ios';\n readonly productId?: string;\n readonly locale?: string;\n}\n"]}
@@ -0,0 +1,6 @@
1
+ export interface MonetizationLocalization {
2
+ readonly locale: string;
3
+ readonly name: string;
4
+ readonly description: string;
5
+ }
6
+ //# sourceMappingURL=MonetizationLocalization.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MonetizationLocalization.d.ts","sourceRoot":"","sources":["../../../src/domain/monetization/MonetizationLocalization.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=MonetizationLocalization.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MonetizationLocalization.js","sourceRoot":"","sources":["../../../src/domain/monetization/MonetizationLocalization.ts"],"names":[],"mappings":"","sourcesContent":["export interface MonetizationLocalization {\n readonly locale: string;\n readonly name: string;\n readonly description: string;\n}\n"]}
@@ -0,0 +1,12 @@
1
+ import type { MonetizationBasePrice } from './MonetizationBasePrice';
2
+ import type { MonetizationLocalization } from './MonetizationLocalization';
3
+ import type { MonetizationProductKind } from './MonetizationProduct';
4
+ import type { MonetizationSubscription } from './MonetizationSubscription';
5
+ export interface MonetizationObservedProduct {
6
+ readonly id: string;
7
+ readonly kind: MonetizationProductKind | 'one-time';
8
+ readonly localizations: readonly MonetizationLocalization[];
9
+ readonly basePrice?: MonetizationBasePrice;
10
+ readonly subscription?: MonetizationSubscription;
11
+ }
12
+ //# sourceMappingURL=MonetizationObservedProduct.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MonetizationObservedProduct.d.ts","sourceRoot":"","sources":["../../../src/domain/monetization/MonetizationObservedProduct.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AACrE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAC3E,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAE3E,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,uBAAuB,GAAG,UAAU,CAAC;IACpD,QAAQ,CAAC,aAAa,EAAE,SAAS,wBAAwB,EAAE,CAAC;IAC5D,QAAQ,CAAC,SAAS,CAAC,EAAE,qBAAqB,CAAC;IAC3C,QAAQ,CAAC,YAAY,CAAC,EAAE,wBAAwB,CAAC;CAClD"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=MonetizationObservedProduct.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MonetizationObservedProduct.js","sourceRoot":"","sources":["../../../src/domain/monetization/MonetizationObservedProduct.ts"],"names":[],"mappings":"","sourcesContent":["import type { MonetizationBasePrice } from './MonetizationBasePrice';\nimport type { MonetizationLocalization } from './MonetizationLocalization';\nimport type { MonetizationProductKind } from './MonetizationProduct';\nimport type { MonetizationSubscription } from './MonetizationSubscription';\n\nexport interface MonetizationObservedProduct {\n readonly id: string;\n readonly kind: MonetizationProductKind | 'one-time';\n readonly localizations: readonly MonetizationLocalization[];\n readonly basePrice?: MonetizationBasePrice;\n readonly subscription?: MonetizationSubscription;\n}\n"]}
@@ -0,0 +1,10 @@
1
+ import type { MonetizationDiagnostic } from './MonetizationDiagnostic';
2
+ import type { MonetizationPlanStep } from './MonetizationPlanStep';
3
+ export interface MonetizationPlan {
4
+ readonly status: 'no-change' | 'changes' | 'blocked';
5
+ readonly desiredRevision: string;
6
+ readonly currentRevision: string;
7
+ readonly steps: readonly MonetizationPlanStep[];
8
+ readonly diagnostics: readonly MonetizationDiagnostic[];
9
+ }
10
+ //# sourceMappingURL=MonetizationPlan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MonetizationPlan.d.ts","sourceRoot":"","sources":["../../../src/domain/monetization/MonetizationPlan.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AACvE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAEnE,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,SAAS,GAAG,SAAS,CAAC;IACrD,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,KAAK,EAAE,SAAS,oBAAoB,EAAE,CAAC;IAChD,QAAQ,CAAC,WAAW,EAAE,SAAS,sBAAsB,EAAE,CAAC;CACzD"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=MonetizationPlan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MonetizationPlan.js","sourceRoot":"","sources":["../../../src/domain/monetization/MonetizationPlan.ts"],"names":[],"mappings":"","sourcesContent":["import type { MonetizationDiagnostic } from './MonetizationDiagnostic';\nimport type { MonetizationPlanStep } from './MonetizationPlanStep';\n\nexport interface MonetizationPlan {\n readonly status: 'no-change' | 'changes' | 'blocked';\n readonly desiredRevision: string;\n readonly currentRevision: string;\n readonly steps: readonly MonetizationPlanStep[];\n readonly diagnostics: readonly MonetizationDiagnostic[];\n}\n"]}
@@ -0,0 +1,7 @@
1
+ export interface MonetizationPlanStep {
2
+ readonly id: string;
3
+ readonly target: 'android' | 'ios';
4
+ readonly productId: string;
5
+ readonly operation: 'ensure-subscription-family' | 'create-product' | 'update-metadata' | 'update-price' | 'update-subscription';
6
+ }
7
+ //# sourceMappingURL=MonetizationPlanStep.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MonetizationPlanStep.d.ts","sourceRoot":"","sources":["../../../src/domain/monetization/MonetizationPlanStep.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,KAAK,CAAC;IACnC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EACd,4BAA4B,GAC5B,gBAAgB,GAChB,iBAAiB,GACjB,cAAc,GACd,qBAAqB,CAAC;CAC3B"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=MonetizationPlanStep.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MonetizationPlanStep.js","sourceRoot":"","sources":["../../../src/domain/monetization/MonetizationPlanStep.ts"],"names":[],"mappings":"","sourcesContent":["export interface MonetizationPlanStep {\n readonly id: string;\n readonly target: 'android' | 'ios';\n readonly productId: string;\n readonly operation:\n | 'ensure-subscription-family'\n | 'create-product'\n | 'update-metadata'\n | 'update-price'\n | 'update-subscription';\n}\n"]}
@@ -0,0 +1,12 @@
1
+ import type { MonetizationBasePrice } from './MonetizationBasePrice';
2
+ import type { MonetizationLocalization } from './MonetizationLocalization';
3
+ import type { MonetizationSubscription } from './MonetizationSubscription';
4
+ export type MonetizationProductKind = 'consumable' | 'non-consumable' | 'subscription';
5
+ export interface MonetizationProduct {
6
+ readonly id: string;
7
+ readonly kind: MonetizationProductKind;
8
+ readonly localizations: readonly MonetizationLocalization[];
9
+ readonly basePrice: MonetizationBasePrice;
10
+ readonly subscription?: MonetizationSubscription;
11
+ }
12
+ //# sourceMappingURL=MonetizationProduct.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MonetizationProduct.d.ts","sourceRoot":"","sources":["../../../src/domain/monetization/MonetizationProduct.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AACrE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAC3E,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAE3E,MAAM,MAAM,uBAAuB,GAAG,YAAY,GAAG,gBAAgB,GAAG,cAAc,CAAC;AAEvF,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,uBAAuB,CAAC;IACvC,QAAQ,CAAC,aAAa,EAAE,SAAS,wBAAwB,EAAE,CAAC;IAC5D,QAAQ,CAAC,SAAS,EAAE,qBAAqB,CAAC;IAC1C,QAAQ,CAAC,YAAY,CAAC,EAAE,wBAAwB,CAAC;CAClD"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=MonetizationProduct.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MonetizationProduct.js","sourceRoot":"","sources":["../../../src/domain/monetization/MonetizationProduct.ts"],"names":[],"mappings":"","sourcesContent":["import type { MonetizationBasePrice } from './MonetizationBasePrice';\nimport type { MonetizationLocalization } from './MonetizationLocalization';\nimport type { MonetizationSubscription } from './MonetizationSubscription';\n\nexport type MonetizationProductKind = 'consumable' | 'non-consumable' | 'subscription';\n\nexport interface MonetizationProduct {\n readonly id: string;\n readonly kind: MonetizationProductKind;\n readonly localizations: readonly MonetizationLocalization[];\n readonly basePrice: MonetizationBasePrice;\n readonly subscription?: MonetizationSubscription;\n}\n"]}
@@ -0,0 +1,7 @@
1
+ export type MonetizationSubscriptionPeriod = 'P1W' | 'P1M' | 'P2M' | 'P3M' | 'P6M' | 'P1Y';
2
+ export interface MonetizationSubscription {
3
+ readonly family: string;
4
+ readonly period: MonetizationSubscriptionPeriod;
5
+ readonly level?: number;
6
+ }
7
+ //# sourceMappingURL=MonetizationSubscription.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MonetizationSubscription.d.ts","sourceRoot":"","sources":["../../../src/domain/monetization/MonetizationSubscription.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,8BAA8B,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;AAE3F,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,8BAA8B,CAAC;IAChD,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=MonetizationSubscription.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MonetizationSubscription.js","sourceRoot":"","sources":["../../../src/domain/monetization/MonetizationSubscription.ts"],"names":[],"mappings":"","sourcesContent":["export type MonetizationSubscriptionPeriod = 'P1W' | 'P1M' | 'P2M' | 'P3M' | 'P6M' | 'P1Y';\n\nexport interface MonetizationSubscription {\n readonly family: string;\n readonly period: MonetizationSubscriptionPeriod;\n readonly level?: number;\n}\n"]}
@@ -0,0 +1,9 @@
1
+ import type { MonetizationDiagnostic } from './MonetizationDiagnostic';
2
+ import type { MonetizationObservedProduct } from './MonetizationObservedProduct';
3
+ export interface MonetizationTargetState {
4
+ readonly target: 'android' | 'ios';
5
+ readonly products: readonly MonetizationObservedProduct[];
6
+ readonly subscriptionFamilies: readonly string[];
7
+ readonly diagnostics: readonly MonetizationDiagnostic[];
8
+ }
9
+ //# sourceMappingURL=MonetizationTargetState.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MonetizationTargetState.d.ts","sourceRoot":"","sources":["../../../src/domain/monetization/MonetizationTargetState.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AACvE,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAEjF,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,KAAK,CAAC;IACnC,QAAQ,CAAC,QAAQ,EAAE,SAAS,2BAA2B,EAAE,CAAC;IAC1D,QAAQ,CAAC,oBAAoB,EAAE,SAAS,MAAM,EAAE,CAAC;IACjD,QAAQ,CAAC,WAAW,EAAE,SAAS,sBAAsB,EAAE,CAAC;CACzD"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=MonetizationTargetState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MonetizationTargetState.js","sourceRoot":"","sources":["../../../src/domain/monetization/MonetizationTargetState.ts"],"names":[],"mappings":"","sourcesContent":["import type { MonetizationDiagnostic } from './MonetizationDiagnostic';\nimport type { MonetizationObservedProduct } from './MonetizationObservedProduct';\n\nexport interface MonetizationTargetState {\n readonly target: 'android' | 'ios';\n readonly products: readonly MonetizationObservedProduct[];\n readonly subscriptionFamilies: readonly string[];\n readonly diagnostics: readonly MonetizationDiagnostic[];\n}\n"]}
@@ -0,0 +1,3 @@
1
+ import type { MonetizationTargetState } from './MonetizationTargetState';
2
+ export declare function createMonetizationCurrentRevision(states: readonly MonetizationTargetState[]): string;
3
+ //# sourceMappingURL=createMonetizationCurrentRevision.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createMonetizationCurrentRevision.d.ts","sourceRoot":"","sources":["../../../src/domain/monetization/createMonetizationCurrentRevision.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAEzE,wBAAgB,iCAAiC,CAC/C,MAAM,EAAE,SAAS,uBAAuB,EAAE,GACzC,MAAM,CAUR"}
@@ -0,0 +1,13 @@
1
+ import { createHash } from 'node:crypto';
2
+ export function createMonetizationCurrentRevision(states) {
3
+ const canonical = states
4
+ .slice()
5
+ .sort((a, b) => a.target.localeCompare(b.target))
6
+ .map((state) => ({
7
+ target: state.target,
8
+ subscriptionFamilies: state.subscriptionFamilies.slice().sort(),
9
+ products: state.products.slice().sort((a, b) => a.id.localeCompare(b.id)),
10
+ }));
11
+ return createHash('sha256').update(JSON.stringify(canonical)).digest('hex');
12
+ }
13
+ //# sourceMappingURL=createMonetizationCurrentRevision.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createMonetizationCurrentRevision.js","sourceRoot":"","sources":["../../../src/domain/monetization/createMonetizationCurrentRevision.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAIzC,MAAM,UAAU,iCAAiC,CAC/C,MAA0C;IAE1C,MAAM,SAAS,GAAG,MAAM;SACrB,KAAK,EAAE;SACP,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;SAChD,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACf,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,oBAAoB,EAAE,KAAK,CAAC,oBAAoB,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE;QAC/D,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;KAC1E,CAAC,CAAC,CAAC;IACN,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC","sourcesContent":["import { createHash } from 'node:crypto';\n\nimport type { MonetizationTargetState } from './MonetizationTargetState';\n\nexport function createMonetizationCurrentRevision(\n states: readonly MonetizationTargetState[],\n): string {\n const canonical = states\n .slice()\n .sort((a, b) => a.target.localeCompare(b.target))\n .map((state) => ({\n target: state.target,\n subscriptionFamilies: state.subscriptionFamilies.slice().sort(),\n products: state.products.slice().sort((a, b) => a.id.localeCompare(b.id)),\n }));\n return createHash('sha256').update(JSON.stringify(canonical)).digest('hex');\n}\n"]}
@@ -0,0 +1,9 @@
1
+ import type { MonetizationDesiredState } from './MonetizationDesiredState';
2
+ import type { MonetizationPlan } from './MonetizationPlan';
3
+ import type { MonetizationTargetState } from './MonetizationTargetState';
4
+ export declare function createMonetizationPlan(options: {
5
+ readonly desired: MonetizationDesiredState;
6
+ readonly currentRevision: string;
7
+ readonly states: readonly MonetizationTargetState[];
8
+ }): MonetizationPlan;
9
+ //# sourceMappingURL=createMonetizationPlan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createMonetizationPlan.d.ts","sourceRoot":"","sources":["../../../src/domain/monetization/createMonetizationPlan.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAG3E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAG3D,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAUzE,wBAAgB,sBAAsB,CAAC,OAAO,EAAE;IAC9C,QAAQ,CAAC,OAAO,EAAE,wBAAwB,CAAC;IAC3C,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,SAAS,uBAAuB,EAAE,CAAC;CACrD,GAAG,gBAAgB,CAcnB"}
@@ -0,0 +1,94 @@
1
+ const OPERATION_RANK = {
2
+ 'ensure-subscription-family': 0,
3
+ 'create-product': 1,
4
+ 'update-metadata': 2,
5
+ 'update-subscription': 3,
6
+ 'update-price': 4,
7
+ };
8
+ export function createMonetizationPlan(options) {
9
+ const diagnostics = options.states.flatMap((state) => [
10
+ ...state.diagnostics,
11
+ ...kindDiagnostics(options.desired, state),
12
+ ]);
13
+ const steps = options.states.flatMap((state) => createTargetSteps(options.desired, state));
14
+ const blocked = diagnostics.some((item) => item.severity === 'error');
15
+ return {
16
+ status: blocked ? 'blocked' : steps.length === 0 ? 'no-change' : 'changes',
17
+ desiredRevision: options.desired.revision,
18
+ currentRevision: options.currentRevision,
19
+ steps: steps.slice().sort(compareSteps),
20
+ diagnostics,
21
+ };
22
+ }
23
+ function createTargetSteps(desired, state) {
24
+ return desired.products.flatMap((product) => productSteps(product, state));
25
+ }
26
+ function productSteps(desired, state) {
27
+ const steps = familySteps(desired, state);
28
+ const current = state.products.find((product) => product.id === desired.id);
29
+ if (current === undefined)
30
+ return [...steps, step(state, desired.id, 'create-product')];
31
+ if (!kindCompatible(desired, current))
32
+ return steps;
33
+ if (!same(desired.localizations, current.localizations)) {
34
+ steps.push(step(state, desired.id, 'update-metadata'));
35
+ }
36
+ if (desired.kind === 'subscription' && !same(desired.subscription, current.subscription)) {
37
+ steps.push(step(state, desired.id, 'update-subscription'));
38
+ }
39
+ if (!same(desired.basePrice, current.basePrice)) {
40
+ steps.push(step(state, desired.id, 'update-price'));
41
+ }
42
+ return steps;
43
+ }
44
+ function familySteps(product, state) {
45
+ const family = product.subscription?.family;
46
+ if (state.target !== 'ios' ||
47
+ family === undefined ||
48
+ state.subscriptionFamilies.includes(family)) {
49
+ return [];
50
+ }
51
+ return [step(state, product.id, 'ensure-subscription-family')];
52
+ }
53
+ function kindDiagnostics(desired, state) {
54
+ return desired.products.flatMap((product) => {
55
+ const current = state.products.find((item) => item.id === product.id);
56
+ if (current === undefined || kindCompatible(product, current))
57
+ return [];
58
+ return [
59
+ {
60
+ severity: 'error',
61
+ code: 'MONETIZATION_PRODUCT_KIND_CONFLICT',
62
+ message: `Product ${product.id} has an incompatible existing product kind.`,
63
+ target: state.target,
64
+ productId: product.id,
65
+ },
66
+ ];
67
+ });
68
+ }
69
+ function kindCompatible(desired, current) {
70
+ if (desired.kind === current.kind)
71
+ return true;
72
+ return current.kind === 'one-time' && desired.kind !== 'subscription';
73
+ }
74
+ function step(state, productId, operation) {
75
+ return {
76
+ id: `${state.target}:${productId}:${operation}`,
77
+ target: state.target,
78
+ productId,
79
+ operation,
80
+ };
81
+ }
82
+ function same(a, b) {
83
+ return JSON.stringify(a) === JSON.stringify(b);
84
+ }
85
+ function compareSteps(a, b) {
86
+ const target = a.target.localeCompare(b.target);
87
+ if (target !== 0)
88
+ return target;
89
+ const product = a.productId.localeCompare(b.productId);
90
+ if (product !== 0)
91
+ return product;
92
+ return OPERATION_RANK[a.operation] - OPERATION_RANK[b.operation];
93
+ }
94
+ //# sourceMappingURL=createMonetizationPlan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createMonetizationPlan.js","sourceRoot":"","sources":["../../../src/domain/monetization/createMonetizationPlan.ts"],"names":[],"mappings":"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","sourcesContent":["import type { MonetizationDesiredState } from './MonetizationDesiredState';\nimport type { MonetizationDiagnostic } from './MonetizationDiagnostic';\nimport type { MonetizationObservedProduct } from './MonetizationObservedProduct';\nimport type { MonetizationPlan } from './MonetizationPlan';\nimport type { MonetizationPlanStep } from './MonetizationPlanStep';\nimport type { MonetizationProduct } from './MonetizationProduct';\nimport type { MonetizationTargetState } from './MonetizationTargetState';\n\nconst OPERATION_RANK: Readonly<Record<MonetizationPlanStep['operation'], number>> = {\n 'ensure-subscription-family': 0,\n 'create-product': 1,\n 'update-metadata': 2,\n 'update-subscription': 3,\n 'update-price': 4,\n};\n\nexport function createMonetizationPlan(options: {\n readonly desired: MonetizationDesiredState;\n readonly currentRevision: string;\n readonly states: readonly MonetizationTargetState[];\n}): MonetizationPlan {\n const diagnostics = options.states.flatMap((state) => [\n ...state.diagnostics,\n ...kindDiagnostics(options.desired, state),\n ]);\n const steps = options.states.flatMap((state) => createTargetSteps(options.desired, state));\n const blocked = diagnostics.some((item) => item.severity === 'error');\n return {\n status: blocked ? 'blocked' : steps.length === 0 ? 'no-change' : 'changes',\n desiredRevision: options.desired.revision,\n currentRevision: options.currentRevision,\n steps: steps.slice().sort(compareSteps),\n diagnostics,\n };\n}\n\nfunction createTargetSteps(\n desired: MonetizationDesiredState,\n state: MonetizationTargetState,\n): MonetizationPlanStep[] {\n return desired.products.flatMap((product) => productSteps(product, state));\n}\n\nfunction productSteps(\n desired: MonetizationProduct,\n state: MonetizationTargetState,\n): MonetizationPlanStep[] {\n const steps = familySteps(desired, state);\n const current = state.products.find((product) => product.id === desired.id);\n if (current === undefined) return [...steps, step(state, desired.id, 'create-product')];\n if (!kindCompatible(desired, current)) return steps;\n if (!same(desired.localizations, current.localizations)) {\n steps.push(step(state, desired.id, 'update-metadata'));\n }\n if (desired.kind === 'subscription' && !same(desired.subscription, current.subscription)) {\n steps.push(step(state, desired.id, 'update-subscription'));\n }\n if (!same(desired.basePrice, current.basePrice)) {\n steps.push(step(state, desired.id, 'update-price'));\n }\n return steps;\n}\n\nfunction familySteps(\n product: MonetizationProduct,\n state: MonetizationTargetState,\n): MonetizationPlanStep[] {\n const family = product.subscription?.family;\n if (\n state.target !== 'ios' ||\n family === undefined ||\n state.subscriptionFamilies.includes(family)\n ) {\n return [];\n }\n return [step(state, product.id, 'ensure-subscription-family')];\n}\n\nfunction kindDiagnostics(\n desired: MonetizationDesiredState,\n state: MonetizationTargetState,\n): MonetizationDiagnostic[] {\n return desired.products.flatMap((product) => {\n const current = state.products.find((item) => item.id === product.id);\n if (current === undefined || kindCompatible(product, current)) return [];\n return [\n {\n severity: 'error',\n code: 'MONETIZATION_PRODUCT_KIND_CONFLICT',\n message: `Product ${product.id} has an incompatible existing product kind.`,\n target: state.target,\n productId: product.id,\n },\n ];\n });\n}\n\nfunction kindCompatible(\n desired: MonetizationProduct,\n current: MonetizationObservedProduct,\n): boolean {\n if (desired.kind === current.kind) return true;\n return current.kind === 'one-time' && desired.kind !== 'subscription';\n}\n\nfunction step(\n state: MonetizationTargetState,\n productId: string,\n operation: MonetizationPlanStep['operation'],\n): MonetizationPlanStep {\n return {\n id: `${state.target}:${productId}:${operation}`,\n target: state.target,\n productId,\n operation,\n };\n}\n\nfunction same(a: unknown, b: unknown): boolean {\n return JSON.stringify(a) === JSON.stringify(b);\n}\n\nfunction compareSteps(a: MonetizationPlanStep, b: MonetizationPlanStep): number {\n const target = a.target.localeCompare(b.target);\n if (target !== 0) return target;\n const product = a.productId.localeCompare(b.productId);\n if (product !== 0) return product;\n return OPERATION_RANK[a.operation] - OPERATION_RANK[b.operation];\n}\n"]}
package/dist/index.d.ts CHANGED
@@ -24,6 +24,16 @@ export * from './domain/DeploymentTargetPlanContributor';
24
24
  export * from './domain/DeploymentVerificationResult';
25
25
  export type { IosDeploymentIntent } from './domain/IosDeploymentIntent';
26
26
  export type { IosDeploymentPublication } from './domain/IosDeploymentPublication';
27
+ export type { MonetizationBasePrice } from './domain/monetization/MonetizationBasePrice';
28
+ export type { MonetizationDesiredState } from './domain/monetization/MonetizationDesiredState';
29
+ export type { MonetizationDiagnostic } from './domain/monetization/MonetizationDiagnostic';
30
+ export type { MonetizationLocalization } from './domain/monetization/MonetizationLocalization';
31
+ export type { MonetizationObservedProduct } from './domain/monetization/MonetizationObservedProduct';
32
+ export type { MonetizationPlan } from './domain/monetization/MonetizationPlan';
33
+ export type { MonetizationPlanStep } from './domain/monetization/MonetizationPlanStep';
34
+ export type { MonetizationProduct, MonetizationProductKind, } from './domain/monetization/MonetizationProduct';
35
+ export type { MonetizationSubscription, MonetizationSubscriptionPeriod, } from './domain/monetization/MonetizationSubscription';
36
+ export type { MonetizationTargetState } from './domain/monetization/MonetizationTargetState';
27
37
  export * from './domain/WebDeploymentPublication';
28
38
  export * from './domain/WebDeploymentPublishIntent';
29
39
  export * from './engine/createDeploymentChanges';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,uBAAuB,EACvB,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,kCAAkC,CAAC;AAC1C,YAAY,EAAE,4BAA4B,EAAE,MAAM,uCAAuC,CAAC;AAC1F,cAAc,wCAAwC,CAAC;AACvD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,wCAAwC,CAAC;AACvD,cAAc,iCAAiC,CAAC;AAChD,cAAc,qCAAqC,CAAC;AACpD,cAAc,oCAAoC,CAAC;AACnD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yBAAyB,CAAC;AACxC,cAAc,mCAAmC,CAAC;AAClD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4CAA4C,CAAC;AAC3D,cAAc,yCAAyC,CAAC;AACxD,cAAc,yCAAyC,CAAC;AACxD,cAAc,4CAA4C,CAAC;AAC3D,cAAc,kDAAkD,CAAC;AACjE,cAAc,4CAA4C,CAAC;AAC3D,cAAc,mCAAmC,CAAC;AAClD,cAAc,mCAAmC,CAAC;AAClD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,iCAAiC,CAAC;AAChD,cAAc,0CAA0C,CAAC;AACzD,cAAc,uCAAuC,CAAC;AACtD,YAAY,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACxE,YAAY,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AAClF,cAAc,mCAAmC,CAAC;AAClD,cAAc,qCAAqC,CAAC;AACpD,cAAc,kCAAkC,CAAC;AACjD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,yCAAyC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,uBAAuB,EACvB,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,kCAAkC,CAAC;AAC1C,YAAY,EAAE,4BAA4B,EAAE,MAAM,uCAAuC,CAAC;AAC1F,cAAc,wCAAwC,CAAC;AACvD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,wCAAwC,CAAC;AACvD,cAAc,iCAAiC,CAAC;AAChD,cAAc,qCAAqC,CAAC;AACpD,cAAc,oCAAoC,CAAC;AACnD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yBAAyB,CAAC;AACxC,cAAc,mCAAmC,CAAC;AAClD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4CAA4C,CAAC;AAC3D,cAAc,yCAAyC,CAAC;AACxD,cAAc,yCAAyC,CAAC;AACxD,cAAc,4CAA4C,CAAC;AAC3D,cAAc,kDAAkD,CAAC;AACjE,cAAc,4CAA4C,CAAC;AAC3D,cAAc,mCAAmC,CAAC;AAClD,cAAc,mCAAmC,CAAC;AAClD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,iCAAiC,CAAC;AAChD,cAAc,0CAA0C,CAAC;AACzD,cAAc,uCAAuC,CAAC;AACtD,YAAY,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACxE,YAAY,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AAClF,YAAY,EAAE,qBAAqB,EAAE,MAAM,6CAA6C,CAAC;AACzF,YAAY,EAAE,wBAAwB,EAAE,MAAM,gDAAgD,CAAC;AAC/F,YAAY,EAAE,sBAAsB,EAAE,MAAM,8CAA8C,CAAC;AAC3F,YAAY,EAAE,wBAAwB,EAAE,MAAM,gDAAgD,CAAC;AAC/F,YAAY,EAAE,2BAA2B,EAAE,MAAM,mDAAmD,CAAC;AACrG,YAAY,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAC/E,YAAY,EAAE,oBAAoB,EAAE,MAAM,4CAA4C,CAAC;AACvF,YAAY,EACV,mBAAmB,EACnB,uBAAuB,GACxB,MAAM,2CAA2C,CAAC;AACnD,YAAY,EACV,wBAAwB,EACxB,8BAA8B,GAC/B,MAAM,gDAAgD,CAAC;AACxD,YAAY,EAAE,uBAAuB,EAAE,MAAM,+CAA+C,CAAC;AAC7F,cAAc,mCAAmC,CAAC;AAClD,cAAc,qCAAqC,CAAC;AACpD,cAAc,kCAAkC,CAAC;AACjD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,yCAAyC,CAAC"}
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAMA,cAAc,wCAAwC,CAAC;AACvD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,wCAAwC,CAAC;AACvD,cAAc,iCAAiC,CAAC;AAChD,cAAc,qCAAqC,CAAC;AACpD,cAAc,oCAAoC,CAAC;AACnD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yBAAyB,CAAC;AACxC,cAAc,mCAAmC,CAAC;AAClD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4CAA4C,CAAC;AAC3D,cAAc,yCAAyC,CAAC;AACxD,cAAc,yCAAyC,CAAC;AACxD,cAAc,4CAA4C,CAAC;AAC3D,cAAc,kDAAkD,CAAC;AACjE,cAAc,4CAA4C,CAAC;AAC3D,cAAc,mCAAmC,CAAC;AAClD,cAAc,mCAAmC,CAAC;AAClD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,iCAAiC,CAAC;AAChD,cAAc,0CAA0C,CAAC;AACzD,cAAc,uCAAuC,CAAC;AAGtD,cAAc,mCAAmC,CAAC;AAClD,cAAc,qCAAqC,CAAC;AACpD,cAAc,kCAAkC,CAAC;AACjD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,yCAAyC,CAAC","sourcesContent":["export type {\n AndroidDeploymentIntent,\n AndroidDeploymentTrack,\n AndroidReleaseStatus,\n} from './domain/AndroidDeploymentIntent';\nexport type { AndroidDeploymentPublication } from './domain/AndroidDeploymentPublication';\nexport * from './domain/DeploymentAuthenticationState';\nexport * from './domain/DeploymentCapability';\nexport * from './domain/DeploymentCredentialReference';\nexport * from './domain/DeploymentCurrentState';\nexport * from './domain/DeploymentDesiredRevisions';\nexport * from './domain/DeploymentExecutionResult';\nexport * from './domain/DeploymentFailure';\nexport * from './domain/DeploymentPlan';\nexport * from './domain/DeploymentPlanDiagnostic';\nexport * from './domain/DeploymentPlanStep';\nexport * from './domain/DeploymentProviderCapabilityState';\nexport * from './domain/DeploymentProviderSetupAdapter';\nexport * from './domain/DeploymentProviderSetupContext';\nexport * from './domain/DeploymentProviderSetupInspection';\nexport * from './domain/DeploymentProviderSetupInspectionResult';\nexport * from './domain/DeploymentProvisioningRequirement';\nexport * from './domain/DeploymentRequiredAction';\nexport * from './domain/DeploymentSecretResolver';\nexport * from './domain/DeploymentStepOutcome';\nexport * from './domain/DeploymentTargetChange';\nexport * from './domain/DeploymentTargetPlanContributor';\nexport * from './domain/DeploymentVerificationResult';\nexport type { IosDeploymentIntent } from './domain/IosDeploymentIntent';\nexport type { IosDeploymentPublication } from './domain/IosDeploymentPublication';\nexport * from './domain/WebDeploymentPublication';\nexport * from './domain/WebDeploymentPublishIntent';\nexport * from './engine/createDeploymentChanges';\nexport * from './engine/createDeploymentPlan';\nexport * from './engine/executeDeploymentPlan';\nexport * from './engine/inspectDeploymentProviderSetup';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAMA,cAAc,wCAAwC,CAAC;AACvD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,wCAAwC,CAAC;AACvD,cAAc,iCAAiC,CAAC;AAChD,cAAc,qCAAqC,CAAC;AACpD,cAAc,oCAAoC,CAAC;AACnD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yBAAyB,CAAC;AACxC,cAAc,mCAAmC,CAAC;AAClD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4CAA4C,CAAC;AAC3D,cAAc,yCAAyC,CAAC;AACxD,cAAc,yCAAyC,CAAC;AACxD,cAAc,4CAA4C,CAAC;AAC3D,cAAc,kDAAkD,CAAC;AACjE,cAAc,4CAA4C,CAAC;AAC3D,cAAc,mCAAmC,CAAC;AAClD,cAAc,mCAAmC,CAAC;AAClD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,iCAAiC,CAAC;AAChD,cAAc,0CAA0C,CAAC;AACzD,cAAc,uCAAuC,CAAC;AAmBtD,cAAc,mCAAmC,CAAC;AAClD,cAAc,qCAAqC,CAAC;AACpD,cAAc,kCAAkC,CAAC;AACjD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,yCAAyC,CAAC","sourcesContent":["export type {\n AndroidDeploymentIntent,\n AndroidDeploymentTrack,\n AndroidReleaseStatus,\n} from './domain/AndroidDeploymentIntent';\nexport type { AndroidDeploymentPublication } from './domain/AndroidDeploymentPublication';\nexport * from './domain/DeploymentAuthenticationState';\nexport * from './domain/DeploymentCapability';\nexport * from './domain/DeploymentCredentialReference';\nexport * from './domain/DeploymentCurrentState';\nexport * from './domain/DeploymentDesiredRevisions';\nexport * from './domain/DeploymentExecutionResult';\nexport * from './domain/DeploymentFailure';\nexport * from './domain/DeploymentPlan';\nexport * from './domain/DeploymentPlanDiagnostic';\nexport * from './domain/DeploymentPlanStep';\nexport * from './domain/DeploymentProviderCapabilityState';\nexport * from './domain/DeploymentProviderSetupAdapter';\nexport * from './domain/DeploymentProviderSetupContext';\nexport * from './domain/DeploymentProviderSetupInspection';\nexport * from './domain/DeploymentProviderSetupInspectionResult';\nexport * from './domain/DeploymentProvisioningRequirement';\nexport * from './domain/DeploymentRequiredAction';\nexport * from './domain/DeploymentSecretResolver';\nexport * from './domain/DeploymentStepOutcome';\nexport * from './domain/DeploymentTargetChange';\nexport * from './domain/DeploymentTargetPlanContributor';\nexport * from './domain/DeploymentVerificationResult';\nexport type { IosDeploymentIntent } from './domain/IosDeploymentIntent';\nexport type { IosDeploymentPublication } from './domain/IosDeploymentPublication';\nexport type { MonetizationBasePrice } from './domain/monetization/MonetizationBasePrice';\nexport type { MonetizationDesiredState } from './domain/monetization/MonetizationDesiredState';\nexport type { MonetizationDiagnostic } from './domain/monetization/MonetizationDiagnostic';\nexport type { MonetizationLocalization } from './domain/monetization/MonetizationLocalization';\nexport type { MonetizationObservedProduct } from './domain/monetization/MonetizationObservedProduct';\nexport type { MonetizationPlan } from './domain/monetization/MonetizationPlan';\nexport type { MonetizationPlanStep } from './domain/monetization/MonetizationPlanStep';\nexport type {\n MonetizationProduct,\n MonetizationProductKind,\n} from './domain/monetization/MonetizationProduct';\nexport type {\n MonetizationSubscription,\n MonetizationSubscriptionPeriod,\n} from './domain/monetization/MonetizationSubscription';\nexport type { MonetizationTargetState } from './domain/monetization/MonetizationTargetState';\nexport * from './domain/WebDeploymentPublication';\nexport * from './domain/WebDeploymentPublishIntent';\nexport * from './engine/createDeploymentChanges';\nexport * from './engine/createDeploymentPlan';\nexport * from './engine/executeDeploymentPlan';\nexport * from './engine/inspectDeploymentProviderSetup';\n"]}
@@ -1,3 +1,4 @@
1
+ export type { MonetizationDesiredState } from '../domain/monetization/MonetizationDesiredState';
1
2
  export { createProjectAndroidDeploymentPlan } from './android/createProjectAndroidDeploymentPlan';
2
3
  export { executeProjectAndroidDeployment, type ExecuteProjectAndroidDeploymentOptions, } from './android/executeProjectAndroidDeployment';
3
4
  export { inspectProjectAndroidDeployment, type InspectProjectAndroidDeploymentOptions, } from './android/inspectProjectAndroidDeployment';
@@ -15,6 +16,18 @@ export { inspectProjectIosDeployment, type InspectProjectIosDeploymentOptions, }
15
16
  export type { ProjectIosDeploymentAccess } from './ios/ProjectIosDeploymentAccess';
16
17
  export type { ProjectIosDeploymentExecution } from './ios/ProjectIosDeploymentExecution';
17
18
  export type { ProjectIosDeploymentInspection, ProjectIosDeploymentInspectionResult, } from './ios/ProjectIosDeploymentInspection';
19
+ export { createProjectMonetizationPlan } from './monetization/createProjectMonetizationPlan';
20
+ export { executeProjectMonetizationSync } from './monetization/executeProjectMonetizationSync';
21
+ export type { ExecuteProjectMonetizationSyncOptions } from './monetization/ExecuteProjectMonetizationSyncOptions';
22
+ export { inspectProjectMonetization } from './monetization/inspectProjectMonetization';
23
+ export type { InspectProjectMonetizationOptions } from './monetization/InspectProjectMonetizationOptions';
24
+ export type { ProjectMonetizationAccess } from './monetization/ProjectMonetizationAccess';
25
+ export type { ProjectMonetizationExecutionResult } from './monetization/ProjectMonetizationExecutionResult';
26
+ export type { ProjectMonetizationInspection } from './monetization/ProjectMonetizationInspection';
27
+ export type { ProjectMonetizationInspectionResult } from './monetization/ProjectMonetizationInspectionResult';
28
+ export type { ProjectMonetizationPlan } from './monetization/ProjectMonetizationPlan';
29
+ export type { ProjectMonetizationTargets } from './monetization/ProjectMonetizationTargets';
30
+ export { readProjectMonetization } from './monetization/readProjectMonetization';
18
31
  export type { ProjectDeploymentPaths } from './ProjectDeploymentPaths';
19
32
  export { readProjectDeploymentConfig } from './readProjectDeploymentConfig';
20
33
  export type { ResolvedDeployProject } from './ResolvedDeployProject';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/project/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kCAAkC,EAAE,MAAM,8CAA8C,CAAC;AAClG,OAAO,EACL,+BAA+B,EAC/B,KAAK,sCAAsC,GAC5C,MAAM,2CAA2C,CAAC;AACnD,OAAO,EACL,+BAA+B,EAC/B,KAAK,sCAAsC,GAC5C,MAAM,2CAA2C,CAAC;AACnD,YAAY,EAAE,8BAA8B,EAAE,MAAM,0CAA0C,CAAC;AAC/F,YAAY,EAAE,iCAAiC,EAAE,MAAM,6CAA6C,CAAC;AACrG,YAAY,EACV,kCAAkC,EAClC,wCAAwC,GACzC,MAAM,8CAA8C,CAAC;AACtD,OAAO,EAAE,yCAAyC,EAAE,MAAM,gCAAgC,CAAC;AAC3F,OAAO,EAAE,4BAA4B,EAAE,MAAM,wCAAwC,CAAC;AACtF,YAAY,EAAE,8BAA8B,EAAE,MAAM,0CAA0C,CAAC;AAC/F,OAAO,EAAE,4BAA4B,EAAE,MAAM,wCAAwC,CAAC;AACtF,OAAO,EAAE,8BAA8B,EAAE,MAAM,0CAA0C,CAAC;AAC1F,OAAO,EAAE,8BAA8B,EAAE,MAAM,sCAAsC,CAAC;AACtF,OAAO,EACL,2BAA2B,EAC3B,KAAK,kCAAkC,GACxC,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACL,2BAA2B,EAC3B,KAAK,kCAAkC,GACxC,MAAM,mCAAmC,CAAC;AAC3C,YAAY,EAAE,0BAA0B,EAAE,MAAM,kCAAkC,CAAC;AACnF,YAAY,EAAE,6BAA6B,EAAE,MAAM,qCAAqC,CAAC;AACzF,YAAY,EACV,8BAA8B,EAC9B,oCAAoC,GACrC,MAAM,sCAAsC,CAAC;AAC9C,YAAY,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AACvE,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAC5E,YAAY,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AAChF,OAAO,EACL,KAAK,8BAA8B,EACnC,6BAA6B,GAC9B,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,8BAA8B,EAAE,MAAM,sCAAsC,CAAC;AACtF,OAAO,EACL,2BAA2B,EAC3B,KAAK,kCAAkC,GACxC,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACL,2BAA2B,EAC3B,KAAK,kCAAkC,GACxC,MAAM,mCAAmC,CAAC;AAC3C,YAAY,EAAE,0BAA0B,EAAE,MAAM,kCAAkC,CAAC;AACnF,YAAY,EAAE,6BAA6B,EAAE,MAAM,qCAAqC,CAAC;AACzF,YAAY,EACV,8BAA8B,EAC9B,oCAAoC,GACrC,MAAM,sCAAsC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/project/index.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,10 @@ export { recordProjectDeploymentHistory } from './history/recordProjectDeploymen
8
8
  export { createProjectIosDeploymentPlan } from './ios/createProjectIosDeploymentPlan';
9
9
  export { executeProjectIosDeployment, } from './ios/executeProjectIosDeployment';
10
10
  export { inspectProjectIosDeployment, } from './ios/inspectProjectIosDeployment';
11
+ export { createProjectMonetizationPlan } from './monetization/createProjectMonetizationPlan';
12
+ export { executeProjectMonetizationSync } from './monetization/executeProjectMonetizationSync';
13
+ export { inspectProjectMonetization } from './monetization/inspectProjectMonetization';
14
+ export { readProjectMonetization } from './monetization/readProjectMonetization';
11
15
  export { readProjectDeploymentConfig } from './readProjectDeploymentConfig';
12
16
  export { resolveDeployProject } from './resolveDeployProject';
13
17
  export { resolveProjectDeploymentPaths } from './resolveProjectDeploymentPaths';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/project/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kCAAkC,EAAE,MAAM,8CAA8C,CAAC;AAClG,OAAO,EACL,+BAA+B,GAEhC,MAAM,2CAA2C,CAAC;AACnD,OAAO,EACL,+BAA+B,GAEhC,MAAM,2CAA2C,CAAC;AAOnD,OAAO,EAAE,yCAAyC,EAAE,MAAM,gCAAgC,CAAC;AAC3F,OAAO,EAAE,4BAA4B,EAAE,MAAM,wCAAwC,CAAC;AAEtF,OAAO,EAAE,4BAA4B,EAAE,MAAM,wCAAwC,CAAC;AACtF,OAAO,EAAE,8BAA8B,EAAE,MAAM,0CAA0C,CAAC;AAC1F,OAAO,EAAE,8BAA8B,EAAE,MAAM,sCAAsC,CAAC;AACtF,OAAO,EACL,2BAA2B,GAE5B,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACL,2BAA2B,GAE5B,MAAM,mCAAmC,CAAC;AAQ3C,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAE5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AAChF,OAAO,EAEL,6BAA6B,GAC9B,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,8BAA8B,EAAE,MAAM,sCAAsC,CAAC;AACtF,OAAO,EACL,2BAA2B,GAE5B,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACL,2BAA2B,GAE5B,MAAM,mCAAmC,CAAC","sourcesContent":["export { createProjectAndroidDeploymentPlan } from './android/createProjectAndroidDeploymentPlan';\nexport {\n executeProjectAndroidDeployment,\n type ExecuteProjectAndroidDeploymentOptions,\n} from './android/executeProjectAndroidDeployment';\nexport {\n inspectProjectAndroidDeployment,\n type InspectProjectAndroidDeploymentOptions,\n} from './android/inspectProjectAndroidDeployment';\nexport type { ProjectAndroidDeploymentAccess } from './android/ProjectAndroidDeploymentAccess';\nexport type { ProjectAndroidDeploymentExecution } from './android/ProjectAndroidDeploymentExecution';\nexport type {\n ProjectAndroidDeploymentInspection,\n ProjectAndroidDeploymentInspectionResult,\n} from './android/ProjectAndroidDeploymentInspection';\nexport { PROJECT_DEPLOYMENT_HISTORY_SCHEMA_VERSION } from './history/historySchemaVersion';\nexport { listProjectDeploymentHistory } from './history/listProjectDeploymentHistory';\nexport type { ProjectDeploymentHistoryRecord } from './history/ProjectDeploymentHistoryRecord';\nexport { readProjectDeploymentHistory } from './history/readProjectDeploymentHistory';\nexport { recordProjectDeploymentHistory } from './history/recordProjectDeploymentHistory';\nexport { createProjectIosDeploymentPlan } from './ios/createProjectIosDeploymentPlan';\nexport {\n executeProjectIosDeployment,\n type ExecuteProjectIosDeploymentOptions,\n} from './ios/executeProjectIosDeployment';\nexport {\n inspectProjectIosDeployment,\n type InspectProjectIosDeploymentOptions,\n} from './ios/inspectProjectIosDeployment';\nexport type { ProjectIosDeploymentAccess } from './ios/ProjectIosDeploymentAccess';\nexport type { ProjectIosDeploymentExecution } from './ios/ProjectIosDeploymentExecution';\nexport type {\n ProjectIosDeploymentInspection,\n ProjectIosDeploymentInspectionResult,\n} from './ios/ProjectIosDeploymentInspection';\nexport type { ProjectDeploymentPaths } from './ProjectDeploymentPaths';\nexport { readProjectDeploymentConfig } from './readProjectDeploymentConfig';\nexport type { ResolvedDeployProject } from './ResolvedDeployProject';\nexport { resolveDeployProject } from './resolveDeployProject';\nexport { resolveProjectDeploymentPaths } from './resolveProjectDeploymentPaths';\nexport {\n type ProjectDeploymentConfigUpdater,\n updateProjectDeploymentConfig,\n} from './updateProjectDeploymentConfig';\nexport { createProjectWebDeploymentPlan } from './web/createProjectWebDeploymentPlan';\nexport {\n executeProjectWebDeployment,\n type ExecuteProjectWebDeploymentOptions,\n} from './web/executeProjectWebDeployment';\nexport {\n inspectProjectWebDeployment,\n type InspectProjectWebDeploymentOptions,\n} from './web/inspectProjectWebDeployment';\nexport type { ProjectWebDeploymentAccess } from './web/ProjectWebDeploymentAccess';\nexport type { ProjectWebDeploymentExecution } from './web/ProjectWebDeploymentExecution';\nexport type {\n ProjectWebDeploymentInspection,\n ProjectWebDeploymentInspectionResult,\n} from './web/ProjectWebDeploymentInspection';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/project/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kCAAkC,EAAE,MAAM,8CAA8C,CAAC;AAClG,OAAO,EACL,+BAA+B,GAEhC,MAAM,2CAA2C,CAAC;AACnD,OAAO,EACL,+BAA+B,GAEhC,MAAM,2CAA2C,CAAC;AAOnD,OAAO,EAAE,yCAAyC,EAAE,MAAM,gCAAgC,CAAC;AAC3F,OAAO,EAAE,4BAA4B,EAAE,MAAM,wCAAwC,CAAC;AAEtF,OAAO,EAAE,4BAA4B,EAAE,MAAM,wCAAwC,CAAC;AACtF,OAAO,EAAE,8BAA8B,EAAE,MAAM,0CAA0C,CAAC;AAC1F,OAAO,EAAE,8BAA8B,EAAE,MAAM,sCAAsC,CAAC;AACtF,OAAO,EACL,2BAA2B,GAE5B,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACL,2BAA2B,GAE5B,MAAM,mCAAmC,CAAC;AAO3C,OAAO,EAAE,6BAA6B,EAAE,MAAM,8CAA8C,CAAC;AAC7F,OAAO,EAAE,8BAA8B,EAAE,MAAM,+CAA+C,CAAC;AAE/F,OAAO,EAAE,0BAA0B,EAAE,MAAM,2CAA2C,CAAC;AAQvF,OAAO,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AAEjF,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAE5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AAChF,OAAO,EAEL,6BAA6B,GAC9B,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,8BAA8B,EAAE,MAAM,sCAAsC,CAAC;AACtF,OAAO,EACL,2BAA2B,GAE5B,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACL,2BAA2B,GAE5B,MAAM,mCAAmC,CAAC","sourcesContent":["export type { MonetizationDesiredState } from '../domain/monetization/MonetizationDesiredState';\nexport { createProjectAndroidDeploymentPlan } from './android/createProjectAndroidDeploymentPlan';\nexport {\n executeProjectAndroidDeployment,\n type ExecuteProjectAndroidDeploymentOptions,\n} from './android/executeProjectAndroidDeployment';\nexport {\n inspectProjectAndroidDeployment,\n type InspectProjectAndroidDeploymentOptions,\n} from './android/inspectProjectAndroidDeployment';\nexport type { ProjectAndroidDeploymentAccess } from './android/ProjectAndroidDeploymentAccess';\nexport type { ProjectAndroidDeploymentExecution } from './android/ProjectAndroidDeploymentExecution';\nexport type {\n ProjectAndroidDeploymentInspection,\n ProjectAndroidDeploymentInspectionResult,\n} from './android/ProjectAndroidDeploymentInspection';\nexport { PROJECT_DEPLOYMENT_HISTORY_SCHEMA_VERSION } from './history/historySchemaVersion';\nexport { listProjectDeploymentHistory } from './history/listProjectDeploymentHistory';\nexport type { ProjectDeploymentHistoryRecord } from './history/ProjectDeploymentHistoryRecord';\nexport { readProjectDeploymentHistory } from './history/readProjectDeploymentHistory';\nexport { recordProjectDeploymentHistory } from './history/recordProjectDeploymentHistory';\nexport { createProjectIosDeploymentPlan } from './ios/createProjectIosDeploymentPlan';\nexport {\n executeProjectIosDeployment,\n type ExecuteProjectIosDeploymentOptions,\n} from './ios/executeProjectIosDeployment';\nexport {\n inspectProjectIosDeployment,\n type InspectProjectIosDeploymentOptions,\n} from './ios/inspectProjectIosDeployment';\nexport type { ProjectIosDeploymentAccess } from './ios/ProjectIosDeploymentAccess';\nexport type { ProjectIosDeploymentExecution } from './ios/ProjectIosDeploymentExecution';\nexport type {\n ProjectIosDeploymentInspection,\n ProjectIosDeploymentInspectionResult,\n} from './ios/ProjectIosDeploymentInspection';\nexport { createProjectMonetizationPlan } from './monetization/createProjectMonetizationPlan';\nexport { executeProjectMonetizationSync } from './monetization/executeProjectMonetizationSync';\nexport type { ExecuteProjectMonetizationSyncOptions } from './monetization/ExecuteProjectMonetizationSyncOptions';\nexport { inspectProjectMonetization } from './monetization/inspectProjectMonetization';\nexport type { InspectProjectMonetizationOptions } from './monetization/InspectProjectMonetizationOptions';\nexport type { ProjectMonetizationAccess } from './monetization/ProjectMonetizationAccess';\nexport type { ProjectMonetizationExecutionResult } from './monetization/ProjectMonetizationExecutionResult';\nexport type { ProjectMonetizationInspection } from './monetization/ProjectMonetizationInspection';\nexport type { ProjectMonetizationInspectionResult } from './monetization/ProjectMonetizationInspectionResult';\nexport type { ProjectMonetizationPlan } from './monetization/ProjectMonetizationPlan';\nexport type { ProjectMonetizationTargets } from './monetization/ProjectMonetizationTargets';\nexport { readProjectMonetization } from './monetization/readProjectMonetization';\nexport type { ProjectDeploymentPaths } from './ProjectDeploymentPaths';\nexport { readProjectDeploymentConfig } from './readProjectDeploymentConfig';\nexport type { ResolvedDeployProject } from './ResolvedDeployProject';\nexport { resolveDeployProject } from './resolveDeployProject';\nexport { resolveProjectDeploymentPaths } from './resolveProjectDeploymentPaths';\nexport {\n type ProjectDeploymentConfigUpdater,\n updateProjectDeploymentConfig,\n} from './updateProjectDeploymentConfig';\nexport { createProjectWebDeploymentPlan } from './web/createProjectWebDeploymentPlan';\nexport {\n executeProjectWebDeployment,\n type ExecuteProjectWebDeploymentOptions,\n} from './web/executeProjectWebDeployment';\nexport {\n inspectProjectWebDeployment,\n type InspectProjectWebDeploymentOptions,\n} from './web/inspectProjectWebDeployment';\nexport type { ProjectWebDeploymentAccess } from './web/ProjectWebDeploymentAccess';\nexport type { ProjectWebDeploymentExecution } from './web/ProjectWebDeploymentExecution';\nexport type {\n ProjectWebDeploymentInspection,\n ProjectWebDeploymentInspectionResult,\n} from './web/ProjectWebDeploymentInspection';\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"assertContainedPath.d.ts","sourceRoot":"","sources":["../../../src/project/io/assertContainedPath.ts"],"names":[],"mappings":"AAGA,wBAAsB,wBAAwB,CAC5C,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAYf"}
1
+ {"version":3,"file":"assertContainedPath.d.ts","sourceRoot":"","sources":["../../../src/project/io/assertContainedPath.ts"],"names":[],"mappings":"AAGA,wBAAsB,wBAAwB,CAC5C,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAaf"}
@@ -1,14 +1,15 @@
1
1
  import { promises as fs } from 'node:fs';
2
2
  import path from 'node:path';
3
3
  export async function assertContainedWritePath(projectRoot, targetPath) {
4
- const root = await fs.realpath(projectRoot);
4
+ const resolvedRoot = path.resolve(projectRoot);
5
5
  const resolvedTarget = path.resolve(targetPath);
6
- if (!isContained(root, resolvedTarget)) {
6
+ if (!isContained(resolvedRoot, resolvedTarget)) {
7
7
  throw new Error(`Deploy project path escapes project root: ${targetPath}`);
8
8
  }
9
+ const realRoot = await fs.realpath(resolvedRoot);
9
10
  const existingParent = await findExistingParent(path.dirname(resolvedTarget));
10
11
  const realParent = await fs.realpath(existingParent);
11
- if (!isContained(root, realParent)) {
12
+ if (!isContained(realRoot, realParent)) {
12
13
  throw new Error(`Deploy project path resolves outside project root: ${targetPath}`);
13
14
  }
14
15
  }
@@ -1 +1 @@
1
- {"version":3,"file":"assertContainedPath.js","sourceRoot":"","sources":["../../../src/project/io/assertContainedPath.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,WAAmB,EACnB,UAAkB;IAElB,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAC5C,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAChD,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,cAAc,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CAAC,6CAA6C,UAAU,EAAE,CAAC,CAAC;IAC7E,CAAC;IAED,MAAM,cAAc,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC;IAC9E,MAAM,UAAU,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;IACrD,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CAAC,sDAAsD,UAAU,EAAE,CAAC,CAAC;IACtF,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,IAAY,EAAE,SAAiB;IAClD,OAAO,SAAS,KAAK,IAAI,IAAI,SAAS,CAAC,UAAU,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;AAC1E,CAAC;AAED,KAAK,UAAU,kBAAkB,CAAC,SAAiB;IACjD,IAAI,OAAO,GAAG,SAAS,CAAC;IAExB,SAAS,CAAC;QACR,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACzB,OAAO,OAAO,CAAC;QACjB,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACrC,IAAI,MAAM,KAAK,OAAO;gBAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,SAAS,EAAE,CAAC,CAAC;YACrF,OAAO,GAAG,MAAM,CAAC;QACnB,CAAC;IACH,CAAC;AACH,CAAC","sourcesContent":["import { promises as fs } from 'node:fs';\nimport path from 'node:path';\n\nexport async function assertContainedWritePath(\n projectRoot: string,\n targetPath: string,\n): Promise<void> {\n const root = await fs.realpath(projectRoot);\n const resolvedTarget = path.resolve(targetPath);\n if (!isContained(root, resolvedTarget)) {\n throw new Error(`Deploy project path escapes project root: ${targetPath}`);\n }\n\n const existingParent = await findExistingParent(path.dirname(resolvedTarget));\n const realParent = await fs.realpath(existingParent);\n if (!isContained(root, realParent)) {\n throw new Error(`Deploy project path resolves outside project root: ${targetPath}`);\n }\n}\n\nfunction isContained(root: string, candidate: string): boolean {\n return candidate === root || candidate.startsWith(`${root}${path.sep}`);\n}\n\nasync function findExistingParent(startPath: string): Promise<string> {\n let current = startPath;\n\n for (;;) {\n try {\n await fs.access(current);\n return current;\n } catch {\n const parent = path.dirname(current);\n if (parent === current) throw new Error(`No existing parent for path: ${startPath}`);\n current = parent;\n }\n }\n}\n"]}
1
+ {"version":3,"file":"assertContainedPath.js","sourceRoot":"","sources":["../../../src/project/io/assertContainedPath.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,WAAmB,EACnB,UAAkB;IAElB,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAC/C,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAChD,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,cAAc,CAAC,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CAAC,6CAA6C,UAAU,EAAE,CAAC,CAAC;IAC7E,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IACjD,MAAM,cAAc,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC;IAC9E,MAAM,UAAU,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;IACrD,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CAAC,sDAAsD,UAAU,EAAE,CAAC,CAAC;IACtF,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,IAAY,EAAE,SAAiB;IAClD,OAAO,SAAS,KAAK,IAAI,IAAI,SAAS,CAAC,UAAU,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;AAC1E,CAAC;AAED,KAAK,UAAU,kBAAkB,CAAC,SAAiB;IACjD,IAAI,OAAO,GAAG,SAAS,CAAC;IAExB,SAAS,CAAC;QACR,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACzB,OAAO,OAAO,CAAC;QACjB,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACrC,IAAI,MAAM,KAAK,OAAO;gBAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,SAAS,EAAE,CAAC,CAAC;YACrF,OAAO,GAAG,MAAM,CAAC;QACnB,CAAC;IACH,CAAC;AACH,CAAC","sourcesContent":["import { promises as fs } from 'node:fs';\nimport path from 'node:path';\n\nexport async function assertContainedWritePath(\n projectRoot: string,\n targetPath: string,\n): Promise<void> {\n const resolvedRoot = path.resolve(projectRoot);\n const resolvedTarget = path.resolve(targetPath);\n if (!isContained(resolvedRoot, resolvedTarget)) {\n throw new Error(`Deploy project path escapes project root: ${targetPath}`);\n }\n\n const realRoot = await fs.realpath(resolvedRoot);\n const existingParent = await findExistingParent(path.dirname(resolvedTarget));\n const realParent = await fs.realpath(existingParent);\n if (!isContained(realRoot, realParent)) {\n throw new Error(`Deploy project path resolves outside project root: ${targetPath}`);\n }\n}\n\nfunction isContained(root: string, candidate: string): boolean {\n return candidate === root || candidate.startsWith(`${root}${path.sep}`);\n}\n\nasync function findExistingParent(startPath: string): Promise<string> {\n let current = startPath;\n\n for (;;) {\n try {\n await fs.access(current);\n return current;\n } catch {\n const parent = path.dirname(current);\n if (parent === current) throw new Error(`No existing parent for path: ${startPath}`);\n current = parent;\n }\n }\n}\n"]}