diff options
| author | rxliuli <rxliuli@gmail.com> | 2025-11-04 05:03:50 +0800 |
|---|---|---|
| committer | rxliuli <rxliuli@gmail.com> | 2025-11-04 05:03:50 +0800 |
| commit | bce557cc2dc767628bed6aac87301a1be7c5431b (patch) | |
| tree | b51a051228d01fe3306cd7626d4a96768aadb944 /node_modules/@jet-app/app-store/tmp/src/api | |
init commit
Diffstat (limited to 'node_modules/@jet-app/app-store/tmp/src/api')
57 files changed, 4341 insertions, 0 deletions
diff --git a/node_modules/@jet-app/app-store/tmp/src/api/intents/app-event-page-intent.js b/node_modules/@jet-app/app-store/tmp/src/api/intents/app-event-page-intent.js new file mode 100644 index 0000000..1913f2a --- /dev/null +++ b/node_modules/@jet-app/app-store/tmp/src/api/intents/app-event-page-intent.js @@ -0,0 +1,14 @@ +import { normalizePreviewPlaform } from "../models/preview-platform"; +const APP_EVENT_PAGE_INTENT_KIND = "AppEventPageIntent"; +export function makeAppEventPageIntent(opts) { + const { platform, ...rest } = opts; + return { + ...rest, + $kind: APP_EVENT_PAGE_INTENT_KIND, + platform: normalizePreviewPlaform(platform), + }; +} +export function isAppEventPageIntent(intent) { + return (intent === null || intent === void 0 ? void 0 : intent.$kind) === APP_EVENT_PAGE_INTENT_KIND; +} +//# sourceMappingURL=app-event-page-intent.js.map
\ No newline at end of file diff --git a/node_modules/@jet-app/app-store/tmp/src/api/intents/arcade-grouping-page-intent.js b/node_modules/@jet-app/app-store/tmp/src/api/intents/arcade-grouping-page-intent.js new file mode 100644 index 0000000..a24df96 --- /dev/null +++ b/node_modules/@jet-app/app-store/tmp/src/api/intents/arcade-grouping-page-intent.js @@ -0,0 +1,10 @@ +import { normalizePreviewPlaform } from "../models/preview-platform"; +export function makeArcadeGroupingPageIntent(opts) { + const { platform, ...rest } = opts; + return { + ...rest, + platform: normalizePreviewPlaform(platform), + $kind: "ArcadeGroupingPageIntent", + }; +} +//# sourceMappingURL=arcade-grouping-page-intent.js.map
\ No newline at end of file diff --git a/node_modules/@jet-app/app-store/tmp/src/api/intents/bundle-page-intent.js b/node_modules/@jet-app/app-store/tmp/src/api/intents/bundle-page-intent.js new file mode 100644 index 0000000..b6bed12 --- /dev/null +++ b/node_modules/@jet-app/app-store/tmp/src/api/intents/bundle-page-intent.js @@ -0,0 +1,16 @@ +import { normalizeAdamID } from "../util"; +import { normalizePreviewPlaform } from "../models/preview-platform"; +export function makeBundlePageIntent(opts) { + const { id, platform, lic, ...rest } = opts; + return { + $kind: "BundlePageIntent", + id: normalizeAdamID(id), + platform: normalizePreviewPlaform(platform), + lic, + ...rest, + }; +} +export function isBundlePageIntent(intent) { + return (intent === null || intent === void 0 ? void 0 : intent.$kind) === "BundlePageIntent"; +} +//# sourceMappingURL=bundle-page-intent.js.map
\ No newline at end of file diff --git a/node_modules/@jet-app/app-store/tmp/src/api/intents/category-tabs-intent.js b/node_modules/@jet-app/app-store/tmp/src/api/intents/category-tabs-intent.js new file mode 100644 index 0000000..0b2ec9e --- /dev/null +++ b/node_modules/@jet-app/app-store/tmp/src/api/intents/category-tabs-intent.js @@ -0,0 +1,8 @@ +import { normalizePreviewPlaform } from "../models/preview-platform"; +export function makeCategoryTabsIntent(opts) { + return { + $kind: "CategoryTabsIntent", + platform: normalizePreviewPlaform(opts.platform), + }; +} +//# sourceMappingURL=category-tabs-intent.js.map
\ No newline at end of file diff --git a/node_modules/@jet-app/app-store/tmp/src/api/intents/charts-hub-page-intent.js b/node_modules/@jet-app/app-store/tmp/src/api/intents/charts-hub-page-intent.js new file mode 100644 index 0000000..bb964f0 --- /dev/null +++ b/node_modules/@jet-app/app-store/tmp/src/api/intents/charts-hub-page-intent.js @@ -0,0 +1,13 @@ +import { normalizePreviewPlaform } from "../models/preview-platform"; +/** + * Create a {@linkcode ChartsHubPageIntent} + */ +export function makeChartsHubPageIntent(opts) { + const { platform, ...rest } = opts; + return { + ...rest, + platform: normalizePreviewPlaform(platform), + $kind: "ChartsHubPageIntent", + }; +} +//# sourceMappingURL=charts-hub-page-intent.js.map
\ No newline at end of file diff --git a/node_modules/@jet-app/app-store/tmp/src/api/intents/charts-page-intent.js b/node_modules/@jet-app/app-store/tmp/src/api/intents/charts-page-intent.js new file mode 100644 index 0000000..e900b06 --- /dev/null +++ b/node_modules/@jet-app/app-store/tmp/src/api/intents/charts-page-intent.js @@ -0,0 +1,13 @@ +import { normalizePreviewPlaform } from "../models/preview-platform"; +const CHARTS_PAGE_INTENT_KIND = "ChartsPageIntent"; +export function makeChartsPageIntent({ platform, ...rest }) { + return { + ...rest, + platform: normalizePreviewPlaform(platform), + $kind: CHARTS_PAGE_INTENT_KIND, + }; +} +export function isChartsPageIntent(intent) { + return (intent === null || intent === void 0 ? void 0 : intent.$kind) === CHARTS_PAGE_INTENT_KIND; +} +//# sourceMappingURL=charts-page-intent.js.map
\ No newline at end of file diff --git a/node_modules/@jet-app/app-store/tmp/src/api/intents/developer-page-intent.js b/node_modules/@jet-app/app-store/tmp/src/api/intents/developer-page-intent.js new file mode 100644 index 0000000..a9633b6 --- /dev/null +++ b/node_modules/@jet-app/app-store/tmp/src/api/intents/developer-page-intent.js @@ -0,0 +1,19 @@ +import { normalizeAdamID } from "../util"; +const DEVELOPER_PAGE_INTENT_KIND = "DeveloperPageIntent"; +/** + * Determines if {@linkcode intent} is a {@linkcode DeveloperPageIntent} + */ +export function isDeveloperPageIntent(intent) { + return intent.$kind === DEVELOPER_PAGE_INTENT_KIND; +} +/** + * Creates a {@linkcode DeveloperPageIntent} + */ +export function makeDeveloperPageIntent({ id, ...rest }) { + return { + ...rest, + id: normalizeAdamID(id), + $kind: DEVELOPER_PAGE_INTENT_KIND, + }; +} +//# sourceMappingURL=developer-page-intent.js.map
\ No newline at end of file diff --git a/node_modules/@jet-app/app-store/tmp/src/api/intents/editorial/editorial-page-intent.js b/node_modules/@jet-app/app-store/tmp/src/api/intents/editorial/editorial-page-intent.js new file mode 100644 index 0000000..353a168 --- /dev/null +++ b/node_modules/@jet-app/app-store/tmp/src/api/intents/editorial/editorial-page-intent.js @@ -0,0 +1,37 @@ +import { normalizePreviewPlaform } from "../../models/preview-platform"; +export function isEditorialPageIntent(intent) { + return (intent === null || intent === void 0 ? void 0 : intent.$kind) === "EditorialPageIntent"; +} +export function isEditorialPageIntentByID(intent) { + return isEditorialPageIntent(intent) && "id" in intent; +} +export function isEditorialPageIntentByName(intent) { + return isEditorialPageIntent(intent) && "name" in intent; +} +/** + * Creates an {@link EditorialPageIntent} that fetches an Editorial Page by "name" + * + * @param options the properties of the created {@link EditorialPageIntentByName} + */ +export function makeEditorialPageIntentByName(options) { + const { platform, ...rest } = options; + return { + ...rest, + $kind: "EditorialPageIntent", + platform: normalizePreviewPlaform(platform), + }; +} +/** + * Creates an {@link EditorialPageIntent} that fetches an Editorial Page by "id" + * + * @param options the properties of the created {@linkcode EditorialPageIntentById} + */ +export function makeEditorialPageIntentByID(options) { + const { platform, ...rest } = options; + return { + $kind: "EditorialPageIntent", + platform: normalizePreviewPlaform(platform), + ...rest, + }; +} +//# sourceMappingURL=editorial-page-intent.js.map
\ No newline at end of file diff --git a/node_modules/@jet-app/app-store/tmp/src/api/intents/editorial/editorial-shelf-collection-page-intent.js b/node_modules/@jet-app/app-store/tmp/src/api/intents/editorial/editorial-shelf-collection-page-intent.js new file mode 100644 index 0000000..0e9b9af --- /dev/null +++ b/node_modules/@jet-app/app-store/tmp/src/api/intents/editorial/editorial-shelf-collection-page-intent.js @@ -0,0 +1,14 @@ +import { normalizePreviewPlaform } from "../../models/preview-platform"; +const EDITORIAL_SHELF_COLLECTION_PAGE_INTENT_KIND = "EditorialShelfCollectionPageIntent"; +export function isEditorialShelfCollectionPageIntent(intent) { + return intent.$kind === EDITORIAL_SHELF_COLLECTION_PAGE_INTENT_KIND; +} +export function makeEditorialShelfCollectionPageIntent(opts) { + const { platform, ...rest } = opts; + return { + ...rest, + $kind: EDITORIAL_SHELF_COLLECTION_PAGE_INTENT_KIND, + platform: normalizePreviewPlaform(platform), + }; +} +//# sourceMappingURL=editorial-shelf-collection-page-intent.js.map
\ No newline at end of file diff --git a/node_modules/@jet-app/app-store/tmp/src/api/intents/eula-page-intent.js b/node_modules/@jet-app/app-store/tmp/src/api/intents/eula-page-intent.js new file mode 100644 index 0000000..f040ff9 --- /dev/null +++ b/node_modules/@jet-app/app-store/tmp/src/api/intents/eula-page-intent.js @@ -0,0 +1,19 @@ +const EULA_PAGE_INTENT_KIND = "EulaPageIntent"; +/** + * Determines if {@linkcode intent} is a {@linkcode EulaPageIntent} + */ +export function isEulaPageIntent(intent) { + return intent.$kind === EULA_PAGE_INTENT_KIND; +} +/** + * Creates a {@linkcode EulaPageIntent} + */ +export function makeEulaPageIntent({ resourceId, resourceType, ...rest }) { + return { + ...rest, + resourceId, + resourceType, + $kind: EULA_PAGE_INTENT_KIND, + }; +} +//# sourceMappingURL=eula-page-intent.js.map
\ No newline at end of file diff --git a/node_modules/@jet-app/app-store/tmp/src/api/intents/grouping-page-intent.js b/node_modules/@jet-app/app-store/tmp/src/api/intents/grouping-page-intent.js new file mode 100644 index 0000000..5d381a0 --- /dev/null +++ b/node_modules/@jet-app/app-store/tmp/src/api/intents/grouping-page-intent.js @@ -0,0 +1,33 @@ +import { normalizePreviewPlaform } from "../models/preview-platform"; +import { normalizeAdamID } from "../util"; +export function isGroupingPageIntent(intent) { + return intent.$kind === "GroupingPageIntent"; +} +/** + * Creates a {@link GroupingPageIntent} "by name" + * + * @param options the properties of the created {@link GroupingPageIntent} + */ +export function makeGroupingPageIntentByName(options) { + const { platform, ...rest } = options; + return { + ...rest, + $kind: "GroupingPageIntent", + platform: normalizePreviewPlaform(platform), + }; +} +/** + * Creates a {@link GroupingPageIntent} "by ID" + * + * @param options the properties of the created {@link GroupingPageIntent} + */ +export function makeGroupingPageIntentByID(options) { + const { platform, id, ...rest } = options; + return { + ...rest, + $kind: "GroupingPageIntent", + id: normalizeAdamID(id), + platform: normalizePreviewPlaform(platform), + }; +} +//# sourceMappingURL=grouping-page-intent.js.map
\ No newline at end of file diff --git a/node_modules/@jet-app/app-store/tmp/src/api/intents/product-page-intent.js b/node_modules/@jet-app/app-store/tmp/src/api/intents/product-page-intent.js new file mode 100644 index 0000000..d8100ea --- /dev/null +++ b/node_modules/@jet-app/app-store/tmp/src/api/intents/product-page-intent.js @@ -0,0 +1,17 @@ +import { normalizeAdamID } from "../util"; +import { normalizePreviewPlaform } from "../models/preview-platform"; +export function makeProductPageIntent(opts) { + const { id, platform, ppid, lic, ...rest } = opts; + return { + ...rest, + $kind: "ProductPageIntent", + id: normalizeAdamID(id), + platform: normalizePreviewPlaform(platform), + ppid, + lic, + }; +} +export function isProductPageIntent(intent) { + return (intent === null || intent === void 0 ? void 0 : intent.$kind) === "ProductPageIntent"; +} +//# sourceMappingURL=product-page-intent.js.map
\ No newline at end of file diff --git a/node_modules/@jet-app/app-store/tmp/src/api/intents/room-page-intent.js b/node_modules/@jet-app/app-store/tmp/src/api/intents/room-page-intent.js new file mode 100644 index 0000000..f5ee4bf --- /dev/null +++ b/node_modules/@jet-app/app-store/tmp/src/api/intents/room-page-intent.js @@ -0,0 +1,16 @@ +import { normalizePreviewPlaform } from "../models/preview-platform"; +import { normalizeAdamID } from "../util"; +const ROOM_PAGE_INTENT_KIND = "RoomPageIntent"; +export function makeRoomPageIntent(opts) { + const { platform, id, ...rest } = opts; + return { + ...rest, + platform: normalizePreviewPlaform(platform), + id: normalizeAdamID(id), + $kind: ROOM_PAGE_INTENT_KIND, + }; +} +export function isRoomPageIntent(intent) { + return (intent === null || intent === void 0 ? void 0 : intent.$kind) === ROOM_PAGE_INTENT_KIND; +} +//# sourceMappingURL=room-page-intent.js.map
\ No newline at end of file diff --git a/node_modules/@jet-app/app-store/tmp/src/api/intents/routable-arcade-see-all-page-intent.js b/node_modules/@jet-app/app-store/tmp/src/api/intents/routable-arcade-see-all-page-intent.js new file mode 100644 index 0000000..0a09491 --- /dev/null +++ b/node_modules/@jet-app/app-store/tmp/src/api/intents/routable-arcade-see-all-page-intent.js @@ -0,0 +1,11 @@ +import { normalizePreviewPlaform } from "../models/preview-platform"; +const ROUTABLE_ARCADE_SEE_ALL_PAGE_INTENT_KIND = "RoutableArcadeSeeAllPageIntent"; +export function makeRoutableArcadeSeeAllPageIntent(opts) { + const { platform, ...rest } = opts; + return { + ...rest, + platform: normalizePreviewPlaform(platform), + $kind: "RoutableArcadeSeeAllPageIntent", + }; +} +//# sourceMappingURL=routable-arcade-see-all-page-intent.js.map
\ No newline at end of file diff --git a/node_modules/@jet-app/app-store/tmp/src/api/intents/routable-article-page-intent.js b/node_modules/@jet-app/app-store/tmp/src/api/intents/routable-article-page-intent.js new file mode 100644 index 0000000..1f41b32 --- /dev/null +++ b/node_modules/@jet-app/app-store/tmp/src/api/intents/routable-article-page-intent.js @@ -0,0 +1,13 @@ +import { normalizePreviewPlaform } from "../models/preview-platform"; +import { normalizeAdamID } from "../util"; +const ROUTABLE_ARTICLE_PAGE_INTENT_KIND = "RoutableArticlePageIntent"; +export function makeRoutableArticlePageIntent(opts) { + const { id, platform, ...rest } = opts; + return { + ...rest, + id: normalizeAdamID(id), + platform: normalizePreviewPlaform(platform), + $kind: ROUTABLE_ARTICLE_PAGE_INTENT_KIND, + }; +} +//# sourceMappingURL=routable-article-page-intent.js.map
\ No newline at end of file diff --git a/node_modules/@jet-app/app-store/tmp/src/api/intents/routable-intent.js b/node_modules/@jet-app/app-store/tmp/src/api/intents/routable-intent.js new file mode 100644 index 0000000..3769762 --- /dev/null +++ b/node_modules/@jet-app/app-store/tmp/src/api/intents/routable-intent.js @@ -0,0 +1,4 @@ +export function isRoutableIntent(intent) { + return "storefront" in intent && "language" in intent; +} +//# sourceMappingURL=routable-intent.js.map
\ No newline at end of file diff --git a/node_modules/@jet-app/app-store/tmp/src/api/intents/routable-today-page-intent.js b/node_modules/@jet-app/app-store/tmp/src/api/intents/routable-today-page-intent.js new file mode 100644 index 0000000..0a5c109 --- /dev/null +++ b/node_modules/@jet-app/app-store/tmp/src/api/intents/routable-today-page-intent.js @@ -0,0 +1,10 @@ +import { normalizePreviewPlaform } from "../models/preview-platform"; +export function makeRoutableTodayPageIntent(opts) { + const { platform, ...rest } = opts; + return { + ...rest, + platform: normalizePreviewPlaform(platform), + $kind: "RoutableTodayPageIntent", + }; +} +//# sourceMappingURL=routable-today-page-intent.js.map
\ No newline at end of file diff --git a/node_modules/@jet-app/app-store/tmp/src/api/intents/search-results-page-intent.js b/node_modules/@jet-app/app-store/tmp/src/api/intents/search-results-page-intent.js new file mode 100644 index 0000000..94edcf7 --- /dev/null +++ b/node_modules/@jet-app/app-store/tmp/src/api/intents/search-results-page-intent.js @@ -0,0 +1,19 @@ +import { normalizePreviewPlaform } from "../models/preview-platform"; +export function makeSearchResultsPageIntent(opts) { + const { platform, ...rest } = opts; + return { + ...rest, + platform: normalizePreviewPlaform(platform), + $kind: "SearchResultsPageIntent", + }; +} +export function makeSearchResultsPageIntentFromURLParams(opts) { + return makeSearchResultsPageIntent({ + ...opts, + origin: "userText", + }); +} +export function isSearchResultsPageIntent(intent) { + return intent.$kind === "SearchResultsPageIntent"; +} +//# sourceMappingURL=search-results-page-intent.js.map
\ No newline at end of file diff --git a/node_modules/@jet-app/app-store/tmp/src/api/intents/search/search-landing-page-intent.js b/node_modules/@jet-app/app-store/tmp/src/api/intents/search/search-landing-page-intent.js new file mode 100644 index 0000000..74b6374 --- /dev/null +++ b/node_modules/@jet-app/app-store/tmp/src/api/intents/search/search-landing-page-intent.js @@ -0,0 +1,14 @@ +import { normalizePreviewPlaform } from "../../models/preview-platform"; +const SEARCH_LANDING_PAGE_INTENT_KIND = "SearchLandingPageIntent"; +export function makeSearchLandingPageIntent(opts) { + const { platform, ...rest } = opts; + return { + ...rest, + platform: normalizePreviewPlaform(platform), + $kind: SEARCH_LANDING_PAGE_INTENT_KIND, + }; +} +export function isSearchLandingPageIntent(intent) { + return (intent === null || intent === void 0 ? void 0 : intent.$kind) === SEARCH_LANDING_PAGE_INTENT_KIND; +} +//# sourceMappingURL=search-landing-page-intent.js.map
\ No newline at end of file diff --git a/node_modules/@jet-app/app-store/tmp/src/api/intents/see-all-page-intent.js b/node_modules/@jet-app/app-store/tmp/src/api/intents/see-all-page-intent.js new file mode 100644 index 0000000..2fb8203 --- /dev/null +++ b/node_modules/@jet-app/app-store/tmp/src/api/intents/see-all-page-intent.js @@ -0,0 +1,13 @@ +import { normalizePreviewPlaform } from "../models/preview-platform"; +import { normalizeAdamID } from "../util"; +export const SEE_ALL_TYPES = ["reviews", "customers-also-bought-apps", "developer-other-apps"]; +export function makeSeeAllPageIntent(opts) { + return { + ...opts, + "$kind": "SeeAllPageIntent", + "id": normalizeAdamID(opts.id), + "platform": normalizePreviewPlaform(opts.platform), + "see-all": opts["see-all"], + }; +} +//# sourceMappingURL=see-all-page-intent.js.map
\ No newline at end of file diff --git a/node_modules/@jet-app/app-store/tmp/src/api/models/accessibility.js b/node_modules/@jet-app/app-store/tmp/src/api/models/accessibility.js new file mode 100644 index 0000000..5af649e --- /dev/null +++ b/node_modules/@jet-app/app-store/tmp/src/api/models/accessibility.js @@ -0,0 +1,37 @@ +import * as models from "./index"; +/** + * @public + * A model that represents an accessibility feature of a product. + */ +export class AccessibilityFeature extends models.Model { + constructor(title, description, artwork) { + super(); + this.title = title; + this.description = description; + this.artwork = artwork; + } +} +/** + * @public + * A model that represents a set of accessibility features of a product. + */ +export class AccessibilityFeatures extends models.ViewModel { + constructor(title, artwork, features) { + super(); + this.title = title; + this.artwork = artwork; + this.features = features; + } +} +/** + * @public + * A model that represents a paragraph of linkable text, displayed in the accessibility section. + */ +export class AccessibilityParagraph extends models.ViewModel { + constructor(text, actions) { + super(); + this.text = text; + this.actions = actions; + } +} +//# sourceMappingURL=accessibility.js.map
\ No newline at end of file diff --git a/node_modules/@jet-app/app-store/tmp/src/api/models/actions/actions.js b/node_modules/@jet-app/app-store/tmp/src/api/models/actions/actions.js new file mode 100644 index 0000000..9316414 --- /dev/null +++ b/node_modules/@jet-app/app-store/tmp/src/api/models/actions/actions.js @@ -0,0 +1,525 @@ +/** + * Created by km on 2/13/17. + */ +import { isSome } from "@jet/environment/types/optional"; +import * as base from "../base"; +import { Action } from "./base-action"; +import { ActionMetrics } from "../metrics/metrics"; +/** @public */ +export class TabChangeAction extends Action { + constructor(navigationTab) { + super("TabChangeAction"); + this.navigationTab = navigationTab; + this.actions = []; + this.popToRoot = false; + } +} +/** @public */ +export class TabBadgeAction extends Action { + constructor(navigationTab, text) { + super("TabBadgeAction"); + this.navigationTab = navigationTab; + this.text = text; + } +} +/** @public */ +export class ExternalUrlAction extends Action { + constructor(url, isSensitive = true, actionMetrics = new ActionMetrics()) { + super("ExternalUrlAction", actionMetrics); + this.url = url; + this.isSensitive = isSensitive; + } +} +/** @public */ +export class CompoundAction extends Action { + constructor(actions) { + super("CompoundAction"); + const sanitizedActions = []; + for (const action of actions) { + if (isSome(action.actionMetrics)) { + this.actionMetrics.addManyMetricsData(action.actionMetrics.data); + Object.assign(this.actionMetrics.custom, action.actionMetrics.custom); + action.actionMetrics.clearAll(); + } + sanitizedActions.push(action); + } + this.actions = sanitizedActions; + } +} +/** @public */ +export class OfferAction extends Action { + constructor(title, adamId, purchaseConfiguration, parentAdamId) { + super("OfferAction"); + this.title = title; + this.adamId = adamId; + this.parentAdamId = parentAdamId; + this.purchaseConfiguration = purchaseConfiguration; + if (purchaseConfiguration) { + this.bundleId = purchaseConfiguration.bundleId; + this.lineItem = purchaseConfiguration.lineItem; + } + this.includeBetaApps = false; + } +} +/** @public */ +export class OfferConfirmationAction extends Action { + constructor(buyAction, confirmationInitiationAction) { + super("OfferConfirmationAction"); + this.buyAction = buyAction; + this.confirmationInitiationAction = confirmationInitiationAction; + } +} +/** @public */ +export class OfferAlertAction extends Action { + constructor() { + super("OfferAlertAction"); + this.title = null; + this.message = null; + this.footerMessage = null; + this.isCancelable = true; + this.shouldCheckForAvailableDiskSpace = false; + this.checkRestrictionsForContentRating = null; + this.remoteControllerRequirement = "NO_BADGE"; + this.spatialControllerRequirement = null; + this.shouldCheckForGameController = false; + this.shouldIncludeActiveAccountInFooterMessage = false; + this.shouldPromptForConfirmation = false; + this.completionAction = null; + } +} +/** @public */ +export class CancelPreorderAction extends Action { + constructor(preorderAdamId, isArcade) { + super("CancelPreorderAction"); + this.preorderAdamId = preorderAdamId; + this.isArcade = isArcade; + } +} +/** @public */ +export class InAppPurchaseAction extends Action { + constructor(productIdentifier, appAdamId, appBundleId, installRequiredAction, minimumShortVersionSupportingInAppPurchaseFlow) { + super("InAppPurchaseAction"); + this.productIdentifier = productIdentifier; + this.appAdamId = appAdamId; + this.appBundleId = appBundleId; + this.installRequiredAction = installRequiredAction; + this.minimumShortVersionSupportingInAppPurchaseFlow = minimumShortVersionSupportingInAppPurchaseFlow; + } +} +/** @public */ +export class OfferStateAction extends Action { + constructor(adamId, defaultAction) { + super("OfferStateAction"); + this.title = defaultAction.title; + this.adamId = adamId; + this.defaultAction = defaultAction; + this.includeBetaApps = false; + } +} +/** @public */ +export class OpenAppAction extends Action { + constructor(adamId, destination = "app") { + super("OpenAppAction"); + this.adamId = adamId; + this.destination = destination; + } +} +/** @public */ +export class OpenGamesUIAction extends Action { + constructor(target) { + super("OpenGamesUIAction"); + this.target = target; + } +} +/** @public + * Purchase action that contains multiple offers for a set of Arcade games. + * It is used for "Get all" button in Arcade Download/Starter Pack feature + * to make a single purchase via App Store Daemon. + * The action implementation doesn't execute its `offerActions` + * but uses them as data objects, extracting required parameters. + * */ +export class ArcadePackOfferAction extends Action { + constructor(offerActions) { + super("ArcadePackOfferAction"); + this.offerActions = offerActions; + } +} +/** @public + * An action representing the "selection" of an app, from the offer button. + * The intention is to communicate this app was selected to another process, not actually + * purchase/download/etc. + * Currently used for the browser selection flow. + */ +export class SelectAppAction extends Action { + constructor(adamId) { + super("SelectAppAction"); + this.adamId = adamId; + } +} +/** @public */ +export class HttpAction extends Action { + constructor(url) { + super("HttpAction"); + this.url = url; + this.method = "GET"; + this.headers = {}; + this.body = null; + this.isStoreRequest = false; + this.needsAuthentication = false; + this.needsMediaToken = false; + this.retryCount = 0; + this.disableCache = false; + this.successAction = null; + this.failureAction = null; + } +} +/** @public */ +export class HttpTemplateParameter { + constructor(key, target, inputType, title) { + this.key = key; + this.target = target; + this.inputType = inputType; + this.title = title; + this.isRequired = true; + this.maximumLength = null; + } +} +/** @public */ +export class HttpTemplateAction extends Action { + constructor(url) { + super("HttpTemplateAction"); + this.message = null; + this.url = url; + this.method = "GET"; + this.headers = {}; + this.body = null; + this.bodyDictionary = {}; + this.parameters = []; + this.isStoreRequest = false; + this.needsAuthentication = false; + this.needsMediaToken = false; + this.retryCount = 0; + this.disableCache = false; + this.successAction = null; + this.failureAction = null; + } +} +/** @public */ +export class RateAction extends HttpTemplateAction { +} +export class ShowSettingsAction extends Action { + constructor() { + super("ShowSettingsAction"); + } +} +/** @public */ +export class WriteReviewAction extends Action { + constructor(adamId, url) { + super("WriteReviewAction"); + this.adamId = adamId; + this.url = url; + } +} +/** @public */ +export class PageTabChangeAction extends Action { + constructor(selectedTabId, title, actionClass) { + super(actionClass !== null && actionClass !== void 0 ? actionClass : "PageTabChangeAction"); + this.selectedTabId = selectedTabId; + this.title = title; + } +} +/** @public */ +export class SearchPageSegmentChangeAction extends PageTabChangeAction { + constructor(selectedTabId, selectedTabTitle, switchToOtherSegmentText) { + super(selectedTabId, "SearchPageSegmentChangeAction"); + this.switchToOtherSegmentText = switchToOtherSegmentText; + this.title = selectedTabTitle; + } +} +/** @public */ +export class GameCenterDashboardAction extends Action { + constructor() { + super("GameCenterDashboardAction"); + } +} +/** @public */ +export class SheetAction extends Action { + constructor(actions) { + super("SheetAction"); + this.actions = actions; + this.isCancelable = false; + this.cancelTitle = null; + this.message = null; + this.style = "default"; + this.isCustom = false; + this.destructiveActionIndex = null; + } +} +/** @public */ +export class AlertAction extends Action { + constructor(style) { + super("AlertAction"); + this.style = style; + this.title = null; + this.message = null; + this.isCancelable = false; + this.cancelTitle = null; + this.cancelAction = null; + this.buttonActions = []; + this.buttonTitles = []; + this.destructiveActionIndex = null; + this.imageName = null; + } +} +/** @public */ +export class ScrollingAlertAction extends Action { + constructor(title, message) { + super("ScrollingAlertAction"); + this.title = title; + this.message = message; + } +} +/** + * @public + * Describes a unique activity as used in a Share Sheet. + */ +export class ShareSheetActivity extends base.ViewModel { + constructor(activityType, action) { + super(); + this.activityType = activityType; + this.action = action; + } +} +/** @public */ +export class ShareSheetAction extends Action { + constructor(data, activities, style = "expanded") { + super("ShareSheetAction"); + this.data = data; + this.activities = activities; + this.shareSheetStyle = style; + } +} +/** @public */ +export class ReportConcernAction extends Action { + constructor(reasons) { + super("ReportConcernAction"); + this.reasons = reasons; + } +} +/** @public */ +export class ReviewSummaryReportConcernAction extends Action { + constructor(concerns, title, explanation, sendAction) { + super("ReviewSummaryReportConcernAction"); + this.concerns = concerns; + this.title = title; + this.explanation = explanation; + this.sendAction = sendAction; + } +} +/** @public */ +export class ProductPageScrollAction extends Action { + constructor(section, clicksOnScroll) { + super("ProductPageScrollAction"); + this.section = section; + this.clicksOnScroll = clicksOnScroll; + } +} +/** @public */ +export class ArcadeAction extends Action { + constructor(productIdentifier, appAdamId, subscriptionToken, postSubscribeAction) { + super("ArcadeAction"); + this.productIdentifier = productIdentifier; + this.appAdamId = appAdamId; + this.postSubscribeAction = postSubscribeAction; + this.subscriptionToken = subscriptionToken; + } +} +export class FamilyCircleAction extends Action { + constructor(clientName, eventType, additionalParameters) { + super("FamilyCircleAction"); + this.clientName = clientName; + this.eventType = eventType; + this.additionalParameters = additionalParameters; + } +} +/** @public */ +export class BlankAction extends Action { + constructor() { + super("BlankAction"); + } +} +/** @public */ +export class SearchAdAction extends Action { + constructor(action) { + super("SearchAdAction"); + this.action = action; + } +} +/** @public */ +export class RateLimitedAction extends Action { + constructor(actionKey, primaryAction) { + super("RateLimitedAction"); + this.actionKey = actionKey; + this.primaryAction = primaryAction; + } +} +/** @public */ +export class ArcadeSubscriptionStateAction extends Action { + constructor(notSubscribedAction, purchasingAction, subscribedAction, unknownAction) { + super("ArcadeSubscriptionStateAction"); + this.notSubscribedAction = notSubscribedAction; + this.purchasingAction = purchasingAction; + this.subscribedAction = subscribedAction; + this.unknownAction = unknownAction; + } +} +/** + * @public + * An action for changing the page segment in the Arcade See All Games page. + */ +export class ArcadeSeeAllGamesPageSegmentChangeAction extends Action { + constructor(facet, selectedOption) { + super("ArcadeSeeAllGamesPageSegmentChangeAction"); + this.facet = facet; + this.selectedOption = selectedOption; + } +} +/** @public */ +export class GameCenterPlayerProfileAction extends Action { + constructor(playerId) { + super("GameCenterPlayerProfileAction"); + this.playerId = playerId; + } +} +/** @public */ +export class GameCenterAchievementsAction extends Action { + constructor(bundleId) { + super("GameCenterAchievementsAction"); + this.bundleId = bundleId; + } +} +/** @public */ +export class LegacyGameCenterInvitePlayerAction extends Action { + constructor(contactId) { + super("GameCenterInvitePlayerAction"); + this.contactId = contactId; + } +} +/** @public */ +export class GameCenterInvitePlayerAction extends Action { + constructor(invitationType) { + super("GameCenterInvitePlayerAction"); + this.invitationType = invitationType; + } +} +/** @public */ +export class GameCenterDenylistPlayerAction extends Action { + constructor(contactId) { + super("GameCenterDenylistPlayerAction"); + this.contactId = contactId; + } +} +/** @public */ +export class PageFacetsChangeAction extends Action { + constructor(filterParameter) { + super("PageFacetsChangeAction"); + this.filterParameter = filterParameter; + } +} +/** @public */ +export class EngagementToggleAction extends Action { + constructor(identifier, value) { + super("EngagementToggleAction"); + this.identifier = identifier; + this.value = value; + } +} +/** @public */ +export class ShelfBasedPageScrollAction extends Action { + constructor(shelfId, notPurchasedShelfId, purchasedShelfId, adamId, index, clicksOnScroll) { + super("ShelfBasedPageScrollAction"); + this.shelfId = shelfId; + this.notPurchasedShelfId = notPurchasedShelfId; + this.purchasedShelfId = purchasedShelfId; + this.adamId = adamId; + this.index = index; + this.clicksOnScroll = clicksOnScroll; + } +} +/** @public */ +export class InvalidateAllWidgetsAction extends Action { + constructor() { + super("InvalidateAllWidgetsAction"); + } +} +/** @public */ +export class AppLaunchTrampolineAction extends Action { + constructor(bundleId, payloadUrl, fallbackAction) { + super("AppLaunchTrampolineAction"); + this.bundleId = bundleId; + this.payloadUrl = payloadUrl; + this.fallbackAction = fallbackAction; + } +} +/** @public */ +export class CreateCalendarEventAction extends Action { + constructor(startDate, endDate, isAllDay, name, location, notes, url, notAuthorizedAction, availability) { + super("CreateCalendarEventAction"); + this.startDate = startDate; + this.endDate = endDate; + this.isAllDay = isAllDay; + this.name = name; + this.location = location; + this.notes = notes; + this.url = url; + this.notAuthorizedAction = notAuthorizedAction; + this.availability = availability; + } +} +/** @public + * + */ +export class CopyTextAction extends Action { + constructor(text) { + super("CopyTextAction"); + this.text = text; + } +} +/** @public + * + */ +export class ClearAppUsageDataAction extends Action { + constructor() { + super("ClearAppUsageDataAction"); + } +} +/** @public + * An action describing a request to delete all recent searches from on-device storage. + */ +export class ClearSearchHistoryAction extends Action { + constructor() { + super("ClearSearchHistoryAction"); + } +} +/** + * @public + * An action describing an ad interaction, that passes data on to native ad instrumentation + * via Ad Platforms frameworks. + */ +export class AdInteractionAction extends Action { + constructor(adActionMetrics) { + super("AdInteractionAction"); + this.adActionMetrics = adActionMetrics; + } +} +/** + * @public + * An action describes a begin of crossfire referral flow, that will pass the `ReferrerData` on to native to mark the beginning of crossfire flow. + */ +export class CrossfireReferralAction extends Action { + constructor(referrerData) { + super("CrossfireReferralAction"); + this.referrerData = referrerData; + } +} +//# sourceMappingURL=actions.js.map
\ No newline at end of file diff --git a/node_modules/@jet-app/app-store/tmp/src/api/models/actions/base-action.js b/node_modules/@jet-app/app-store/tmp/src/api/models/actions/base-action.js new file mode 100644 index 0000000..fa6da41 --- /dev/null +++ b/node_modules/@jet-app/app-store/tmp/src/api/models/actions/base-action.js @@ -0,0 +1,15 @@ +import * as base from "../base"; +import { ActionMetrics } from "../metrics/metrics"; +/** @public */ +export class Action extends base.ViewModel { + constructor(actionClass, actionMetrics = new ActionMetrics()) { + super(); + this.title = null; + this.artwork = null; + this.presentationStyle = []; + this.actionClass = actionClass; + this.$kind = actionClass; + this.actionMetrics = actionMetrics; + } +} +//# sourceMappingURL=base-action.js.map
\ No newline at end of file diff --git a/node_modules/@jet-app/app-store/tmp/src/api/models/actions/flow-action.js b/node_modules/@jet-app/app-store/tmp/src/api/models/actions/flow-action.js new file mode 100644 index 0000000..2317142 --- /dev/null +++ b/node_modules/@jet-app/app-store/tmp/src/api/models/actions/flow-action.js @@ -0,0 +1,26 @@ +import { Action } from "./base-action"; +/** @public */ +export class FlowBackAction extends Action { + constructor(dismissal) { + super("FlowBackAction"); + this.dismissal = dismissal; + } +} +/** @public */ +export class FlowAction extends Action { + constructor(flowPage, pageUrl) { + super("FlowAction"); + this.$kind = "flowAction"; + this.page = flowPage; + this.pageUrl = pageUrl; + this.pageData = null; + this.referrerData = undefined; + this.presentationContext = "infer"; + this.animationBehavior = "infer"; + this.origin = "inapp"; + } +} +export function isFlowAction(action) { + return action.$kind === "flowAction"; +} +//# sourceMappingURL=flow-action.js.map
\ No newline at end of file diff --git a/node_modules/@jet-app/app-store/tmp/src/api/models/ad-incidents.js b/node_modules/@jet-app/app-store/tmp/src/api/models/ad-incidents.js new file mode 100644 index 0000000..d62caa5 --- /dev/null +++ b/node_modules/@jet-app/app-store/tmp/src/api/models/ad-incidents.js @@ -0,0 +1,26 @@ +/** + * Models for Ad Incidents that may occur while building model. + */ +import { Model } from "./base"; +/** + * @public + * Base Incident Type + */ +export class AdIncident extends Model { + constructor(incidentType) { + super(); + this.incidentType = incidentType; + } +} +/** + * @public + * Type of Ad Incident where Ad was discarded due to some reason + */ +export class DiscardAdIncident extends AdIncident { + constructor(instanceId, reason) { + super("discard"); + this.instanceId = instanceId; + this.reason = reason; + } +} +//# sourceMappingURL=ad-incidents.js.map
\ No newline at end of file diff --git a/node_modules/@jet-app/app-store/tmp/src/api/models/annotation.js b/node_modules/@jet-app/app-store/tmp/src/api/models/annotation.js new file mode 100644 index 0000000..92f41ba --- /dev/null +++ b/node_modules/@jet-app/app-store/tmp/src/api/models/annotation.js @@ -0,0 +1,50 @@ +import * as base from "./base"; +/** + * The `Annotation` model describes a category of information about an app, + * such as supported languages, app size, content ratings, in-app-purchase + * info, etc. + * + * `Annotations` always have a title and summary, and most also have an `items` + * array of `AnnotationItem`s with more fine-grained details. + * + * @public + */ +export class Annotation extends base.Model { + constructor(title, items, summary, linkAction) { + super(); + this.title = title; + this.summary = summary; + this.items = items; + this.items_V3 = []; + this.shouldAlwaysPresentExpanded = false; + this.linkAction = linkAction; + } +} +/** + * A single item used to show more details in an `Annotation`. This could be an + * In-App Purchase, supported language list, a link to an editorial item, etc. + * @public + */ +export class AnnotationItem extends base.Model { + constructor(text, options = {}) { + super(); + this.text = text; + this.heading = options.heading; + this.headingArtworks = options.headingArtworks; + this.listText = options.listText; + this.textPairs = options.textPairs; + } +} +/** + * Used on tvOS to visually group related `Annotation` objects into a column. + * @public + */ +export class AnnotationGroup extends base.Model { + constructor(title, annotations, forceExpanded) { + super(); + this.title = title; + this.annotations = annotations; + this.forceExpanded = forceExpanded; + } +} +//# sourceMappingURL=annotation.js.map
\ No newline at end of file diff --git a/node_modules/@jet-app/app-store/tmp/src/api/models/app-promotions.js b/node_modules/@jet-app/app-store/tmp/src/api/models/app-promotions.js new file mode 100644 index 0000000..cf0c242 --- /dev/null +++ b/node_modules/@jet-app/app-store/tmp/src/api/models/app-promotions.js @@ -0,0 +1,186 @@ +import * as base from "./base"; +import * as models from "./index"; +import * as metrics from "./metrics/metrics"; +/** @public */ +export class AppEventFormattedDate extends models.Model { + constructor(showLiveIndicator, displayFromDate, displayText, countdownToDate, countdownStringKey) { + super(); + this.showLiveIndicator = showLiveIndicator; + this.displayFromDate = displayFromDate; + this.displayText = displayText; + this.countdownToDate = countdownToDate; + this.countdownStringKey = countdownStringKey; + } +} +/** @public */ +export var AppEventBadgeKind; +(function (AppEventBadgeKind) { + AppEventBadgeKind["available"] = "available"; + AppEventBadgeKind["happening"] = "happening"; + AppEventBadgeKind["live"] = "live"; +})(AppEventBadgeKind || (AppEventBadgeKind = {})); +export var AppPromotionType; +(function (AppPromotionType) { + AppPromotionType["AppEvent"] = "appEvent"; + AppPromotionType["ContingentOffer"] = "contingentOffer"; + AppPromotionType["OfferItem"] = "offerItem"; +})(AppPromotionType || (AppPromotionType = {})); +/** @public */ +export class AppPromotion extends base.ViewModel { + constructor(promotionType) { + super(); + this.promotionType = promotionType; + } +} +/** @public */ +export class AppEvent extends AppPromotion { + constructor(appEventId, moduleArtwork, moduleVideo, title, subtitle, detail, startDate, endDate, appEventBadgeKind, kind, requirements, lockup, hideLockupWhenNotInstalled, formattedDates, mediaOverlayStyle, includeBorderInDarkMode) { + super(AppPromotionType.AppEvent); + this.appEventId = appEventId; + this.moduleArtwork = moduleArtwork; + this.moduleVideo = moduleVideo; + this.title = title; + this.subtitle = subtitle; + this.detail = detail; + this.startDate = startDate; + this.endDate = endDate; + this.kind = kind; + this.appEventBadgeKind = appEventBadgeKind; + this.requirements = requirements; + this.lockup = lockup; + this.hideLockupWhenNotInstalled = hideLockupWhenNotInstalled; + this.formattedDates = formattedDates; + this.mediaOverlayStyle = mediaOverlayStyle; + this.includeBorderInDarkMode = includeBorderInDarkMode; + this.clickAction = null; + } +} +/** @public */ +export class AppEventDetailPage extends models.Model { + constructor(appEvent, artwork, video, shareAction, mediaOverlayStyle, includeBorderInDarkMode) { + super(); + this.appEvent = appEvent; + this.artwork = artwork; + this.video = video; + this.shareAction = shareAction; + this.mediaOverlayStyle = mediaOverlayStyle; + this.includeBorderInDarkMode = includeBorderInDarkMode; + this.pageMetrics = new metrics.PageMetrics(); + this.pageRenderMetrics = {}; + } +} +/** + * Determines if a {@linkcode shelves.Shelf} is actually a {@linkcode AppEventDetailShelf} + */ +export function isAppEventDetailShelf(shelf) { + return shelf.contentType === "appEventDetail"; +} +/** + * `Shelf` definition that wraps a single {@linkcode AppEventDetailPage} + * + * This is used to power the "web" client UI for an `app-event` detail page + * + * @public + */ +export class AppEventDetailShelf extends models.Shelf { + constructor(detailPage) { + super("appEventDetail", null, [detailPage]); + } +} +/** @public */ +export class AppEventNotificationConfig extends models.Model { + constructor(appEventId, title, detail, artworkUrl, displayTime, scheduledAction, notAuthorizedAction, failureAction, destinationUrl, scheduleClickEvent, cancelScheduleClickEvent) { + super(); + this.appEventId = appEventId; + this.title = title; + this.detail = detail; + this.artworkUrl = artworkUrl; + this.displayTime = displayTime; + this.scheduledAction = scheduledAction; + this.notAuthorizedAction = notAuthorizedAction; + this.failureAction = failureAction; + this.destinationUrl = destinationUrl; + this.scheduleClickEvent = scheduleClickEvent; + this.cancelScheduleClickEvent = cancelScheduleClickEvent; + } +} +/** @public */ +export class ContingentOffer extends AppPromotion { + constructor(backgroundArtwork, mediaOverlayStyle, isStreamlinedBuy, learnMoreTitle, titleFormatted, subtitle, description, label, badge, additionalInfo, trunkAppIcon, offerLockup) { + super(AppPromotionType.ContingentOffer); + this.backgroundArtwork = backgroundArtwork; + this.isStreamlinedBuy = isStreamlinedBuy; + this.mediaOverlayStyle = mediaOverlayStyle; + this.titleFormatted = titleFormatted; + this.subtitle = subtitle; + this.additionalInfo = additionalInfo; + this.description = description; + this.label = label; + this.badge = badge; + this.offerLockup = offerLockup; + this.trunkAppIcon = trunkAppIcon; + this.learnMoreTitle = learnMoreTitle; + this.clickAction = null; + } +} +/** @public */ +export class AppPromotionDetailPage extends base.ViewModel { + constructor(promotionType) { + super(); + this.promotionType = promotionType; + } +} +/** @public */ +export class ContingentOfferDetailPage extends AppPromotionDetailPage { + constructor(contingentOffer, artwork, mediaOverlayStyle) { + super(AppPromotionType.ContingentOffer); + this.contingentOffer = contingentOffer; + this.artwork = artwork; + this.mediaOverlayStyle = mediaOverlayStyle; + this.pageMetrics = new metrics.PageMetrics(); + this.pageRenderMetrics = {}; + this.learnMoreActionMetrics = new metrics.ActionMetrics(); + this.backButtonActionMetrics = new metrics.ActionMetrics(); + this.closeButtonActionMetrics = new metrics.ActionMetrics(); + } +} +/** @public + * + * + */ +export class OfferItem extends AppPromotion { + constructor(moduleArtwork, moduleVideo, mediaOverlayStyle, isStreamlinedBuy, titleFormatted, expiryDateFormatted, subtitle, description, badge, endDate, iapArtwork, offerLockup) { + super(AppPromotionType.OfferItem); + this.moduleArtwork = moduleArtwork; + this.moduleVideo = moduleVideo; + this.isStreamlinedBuy = isStreamlinedBuy; + this.mediaOverlayStyle = mediaOverlayStyle; + this.titleFormatted = titleFormatted; + this.description = description; + this.badge = badge; + this.offerLockup = offerLockup; + this.subtitle = subtitle; + this.endDate = endDate; + this.expiryDateFormatted = expiryDateFormatted; + this.iapArtwork = iapArtwork; + this.clickAction = null; + } +} +/** @public */ +export class OfferItemDetailPage extends AppPromotionDetailPage { + constructor(offerItem, artwork, video, mediaOverlayStyle, includeBorderInDarkMode, learnMoreTitle, additionalInfo) { + super(AppPromotionType.OfferItem); + this.offerItem = offerItem; + this.artwork = artwork; + this.learnMoreTitle = learnMoreTitle; + this.video = video; + this.mediaOverlayStyle = mediaOverlayStyle; + this.pageMetrics = new metrics.PageMetrics(); + this.additionalInfo = additionalInfo; + this.pageRenderMetrics = {}; + this.learnMoreActionMetrics = new metrics.ActionMetrics(); + this.backButtonActionMetrics = new metrics.ActionMetrics(); + this.closeButtonActionMetrics = new metrics.ActionMetrics(); + } +} +//# sourceMappingURL=app-promotions.js.map
\ No newline at end of file diff --git a/node_modules/@jet-app/app-store/tmp/src/api/models/arcade-upsell.js b/node_modules/@jet-app/app-store/tmp/src/api/models/arcade-upsell.js new file mode 100644 index 0000000..8d8eac3 --- /dev/null +++ b/node_modules/@jet-app/app-store/tmp/src/api/models/arcade-upsell.js @@ -0,0 +1,18 @@ +/** + * Created by Jellenbogen on 11/19/19. + */ +import * as base from "./base"; +/** @public */ +export class UpsellBreakout extends base.ViewModel { + constructor(details, offerDisplayProperties, displayProperties, offerButtonAction, buttonCallToAction, artwork, video) { + super(); + this.details = details; + this.displayProperties = displayProperties; + this.offerButtonAction = offerButtonAction; + this.buttonCallToAction = buttonCallToAction; + this.offerDisplayProperties = offerDisplayProperties; + this.artwork = artwork; + this.video = video; + } +} +//# sourceMappingURL=arcade-upsell.js.map
\ No newline at end of file diff --git a/node_modules/@jet-app/app-store/tmp/src/api/models/arcade.js b/node_modules/@jet-app/app-store/tmp/src/api/models/arcade.js new file mode 100644 index 0000000..a016e3b --- /dev/null +++ b/node_modules/@jet-app/app-store/tmp/src/api/models/arcade.js @@ -0,0 +1,240 @@ +import * as models from "./index"; +import * as metrics from "./metrics/metrics"; +export function marketingItemContextFromString(context) { + var _a, _b; + if (preprocessor.GAMES_TARGET) { + switch (context) { + case "generic": + return "gameCenterGeneric"; + case "groupingLockup": + return "gameCenterLockup"; + case "arcadeTabHeader": + return "gameCenterEditorialPageHeader"; + case "productPage": + return "gameCenterProductPage"; + case "arcadeComingSoon": + return "gameCenterComingSoon"; + case "gameCenterEditorialPage": // TBD + return "gameCenterEditorialPage"; + default: + return (_a = context) !== null && _a !== void 0 ? _a : "gameCenterGeneric"; + } + } + switch (context) { + case "askToBuy": + return "arcadeAskToBuy"; + case "generic": + return "arcadeGeneric"; + case "groupingLockup": + return "arcadeGroupingLockup"; + case "launchRepair": + return "arcadeLaunchRepair"; + case "productPage": + return "arcadeProductPage"; + case "topShelfATV": + return "arcadeTopShelfATV"; + case "topShelfATVClickThrough": + return "arcadeTopShelfATVClickThrough"; + case "editorialItem": + return "arcadeTodayCard"; + case "editorialItemCanvas": + return "arcadeStoryCanvas"; + case "arcadeComingSoon": + return "arcadeComingSoon"; + case "arcadeTabHeader": + return "arcadeTabHeader"; + case "arcadeTabNavBar": + return "arcadeTabNavBar"; + default: + return (_b = context) !== null && _b !== void 0 ? _b : "arcadeGeneric"; + } +} +export function isContextualUpsellContext(context) { + if (preprocessor.GAMES_TARGET) { + switch (context) { + case "gameCenterLockup": + case "gameCenterProductPage": + return true; + default: + return false; + } + } + switch (context) { + case "arcadeGroupingLockup": + case "arcadeProductPage": + case "productPage": + case "groupingLockup": + return true; + default: + return false; + } +} +/** @public */ +export class ArcadeSubscribePage extends models.Model { + constructor(details, dismissButtonTitle, offerButtonAction, offerDisplayProperties) { + super(); + this.details = details; + this.dismissButtonTitle = dismissButtonTitle; + this.offerButtonAction = offerButtonAction; + this.offerDisplayProperties = offerDisplayProperties; + this.pageMetrics = new metrics.PageMetrics(); + this.pageRenderMetrics = {}; + } +} +/** @public */ +export class ArcadeWelcomeItem extends models.Model { + constructor(headline, body, artwork) { + super(); + this.headline = headline; + this.body = body; + this.artwork = artwork; + } +} +/** @public */ +export class ArcadeWelcomeContent extends models.Model { + constructor(title, subtitle, items, continueAction, familyAction) { + super(); + this.title = title; + this.subtitle = subtitle; + this.items = items; + this.continueAction = continueAction; + this.familyAction = familyAction; + } +} +/** @public */ +export class ArcadeWelcomePage extends models.Model { + constructor(individualContent, familyMemberContent) { + super(); + this.individualContent = individualContent; + this.familyMemberContent = familyMemberContent; + this.pageMetrics = new metrics.PageMetrics(); + this.pageRenderMetrics = {}; + } +} +/** @public */ +export class MarketingItemRequestInfo extends models.Model { + constructor(serviceType, placement, metricsTopic, seed, clientOptions) { + super(); + this.serviceType = serviceType; + this.placement = placement; + this.seed = seed; + this.clientOptions = clientOptions; + this.metricsOverlay = { topic: metricsTopic }; + } +} +/** @public */ +export class DynamicUIRequestInfo extends models.Model { + constructor(metricsTopic, clientOptions) { + super(); + this.clientOptions = clientOptions; + this.metricsOverlay = { topic: metricsTopic }; + } +} +/** @public */ +export class UpsellGridContent extends models.Model { + constructor(primaryIcon, icons) { + super(); + this.primaryIcon = primaryIcon; + this.icons = icons; + } +} +/** @public */ +export class AppStoreEngagementTask extends models.Model { + constructor(action) { + super(); + this.action = action; + } +} +/** @public + * A model for game category button on Arcade download pack screen. + */ +export class ArcadeDownloadPackCategory extends models.ViewModel { + constructor(id, title, artwork, gradientStartColor, gradientEndColor) { + super(); + this.id = id; + this.title = title; + this.artwork = artwork; + this.gradientStartColor = gradientStartColor; + this.gradientEndColor = gradientEndColor; + this.selectActionMetrics = new models.ActionMetrics(); + this.deselectActionMetrics = new models.ActionMetrics(); + } +} +/** @public + * Initial Arcade download pack screen with game categories to select by user. + */ +export class ArcadeDownloadPackCategoriesPage extends models.Model { + constructor(title, categories, maxNumberOfCategoriesToChoose, maxNumberOfCategoriesToChooseTemplate, numberOfChosenCategoriesTemplate, primaryAction, dismissAction) { + super(); + this.title = title; + this.categories = categories; + this.maxNumberOfCategoriesToChoose = maxNumberOfCategoriesToChoose; + this.maxNumberOfCategoriesToChooseTemplate = maxNumberOfCategoriesToChooseTemplate; + this.numberOfChosenCategoriesTemplate = numberOfChosenCategoriesTemplate; + this.primaryAction = primaryAction; + this.dismissAction = dismissAction; + this.pageMetrics = new metrics.PageMetrics(); + this.pageRenderMetrics = {}; + } +} +/** @public + * A lockup model for Arcade download suggestions pack screen with linked Arcade category. + */ +export class ArcadeDownloadPackSuggestion extends models.Model { + constructor(lockup, categoryId) { + super(); + this.lockup = lockup; + this.categoryId = categoryId; + } +} +/** @public + * Follow up Arcade download pack screen with the list of suggested games. + */ +export class ArcadeDownloadPackSuggestionsPage extends models.Model { + constructor(title, suggestions, getAllAction, getAllButtonStyle, primaryAction, primaryActionKind, primaryActionSecondaryTitle) { + super(); + this.title = title; + this.suggestions = suggestions; + this.getAllAction = getAllAction; + this.getAllButtonStyle = getAllButtonStyle; + this.primaryAction = primaryAction; + this.primaryActionKind = primaryActionKind; + this.primaryActionSecondaryTitle = primaryActionSecondaryTitle; + this.pageMetrics = new metrics.PageMetrics(); + this.pageRenderMetrics = {}; + } +} +/** + * Matches untyped string with `ArcadeOnboardingSubscriptionStatus` typed value. + * It is used to convert opaque `string` value that is passed across JS bridge from native code. + * @param value `string` value with the same content. + */ +export function arcadeOnboardingSubscriptionStatusFromString(value) { + switch (value) { + case "new": + return "new"; + case "existing": + return "existing"; + default: + return "unknown"; + } +} +/** @public + * Purchase params to use in`ASDPurchaseManager.purchaseBatch` call. + */ +export class BatchPurchaseParams { + constructor(items, commonBuyParams) { + this.items = items; + this.commonBuyParams = commonBuyParams; + } +} +/** @public + * Decorated purchase for a product with a separate buyParams map. + */ +export class BatchPurchaseItem { + constructor(purchase, buyParams) { + this.purchase = purchase; + this.buyParams = buyParams; + } +} +//# sourceMappingURL=arcade.js.map
\ No newline at end of file diff --git a/node_modules/@jet-app/app-store/tmp/src/api/models/article-page.js b/node_modules/@jet-app/app-store/tmp/src/api/models/article-page.js new file mode 100644 index 0000000..9d5d6c0 --- /dev/null +++ b/node_modules/@jet-app/app-store/tmp/src/api/models/article-page.js @@ -0,0 +1,18 @@ +/** + * Created by km on 2/13/17. + */ +import * as models from "./base"; +import * as metrics from "./metrics/metrics"; +/** @public */ +export class ArticlePage extends models.Model { + constructor(card, shelfModels, shareAction) { + super(); + this.card = card; + this.shelves = shelfModels; + this.shareAction = shareAction; + this.isIncomplete = false; + this.pageMetrics = new metrics.PageMetrics(); + this.pageRenderMetrics = {}; + } +} +//# sourceMappingURL=article-page.js.map
\ No newline at end of file diff --git a/node_modules/@jet-app/app-store/tmp/src/api/models/base.js b/node_modules/@jet-app/app-store/tmp/src/api/models/base.js new file mode 100644 index 0000000..8281f6a --- /dev/null +++ b/node_modules/@jet-app/app-store/tmp/src/api/models/base.js @@ -0,0 +1,596 @@ +/** + * Created by km on 2/13/17. + */ +// region Core +/** @public */ +export class Model { + constructor() { + this.$incidents = undefined; + } + /** + * Indicates whether this model is valid. Subclasses should override if there are specific + * properties that are required for proper functioning + * @returns {boolean} Whether the model is valid. Defaults to true. + */ + isValid() { + return true; + } +} +/** + * @public + * @todo Make this implement JetEngine ViewModel once we migrate ImpressionMetrics + */ +export class ViewModel extends Model { + constructor(impressionMetrics = null) { + super(); + this.impressionMetrics = impressionMetrics; + } +} +/** @public */ +export class PurchaseConfiguration extends Model { + constructor(buyParams, vendor, appName, bundleId, appPlatforms, isPreorder, excludeAttribution, metricsPlatformDisplayStyle, lineItem, isRedownload, preflightPackageUrl, isArcadeApp, isHalva, supportsVisionOSCompatibleIOSBinary, inAppEventId, extRefApp2, extRefUrl2, additionalHeaders, appCapabilities, isDefaultBrowser, remoteDownloadIdentifiers, hasMacIPAPackage, contentRating) { + super(); + this.buyParams = buyParams; + this.vendor = vendor; + this.appName = appName; + this.bundleId = bundleId; + this.appPlatforms = appPlatforms; + this.isPreorder = isPreorder === null || isPreorder === undefined ? false : isPreorder; + this.excludeAttribution = + excludeAttribution === null || excludeAttribution === undefined ? true : excludeAttribution; + this.metricsPlatformDisplayStyle = metricsPlatformDisplayStyle; + this.isRedownload = isRedownload === null || isRedownload === undefined ? false : isRedownload; + this.lineItem = lineItem; + this.preflightPackageUrl = preflightPackageUrl === undefined ? null : preflightPackageUrl; + this.isArcadeApp = isArcadeApp; + this.isHalva = isHalva; + this.supportsVisionOSCompatibleIOSBinary = supportsVisionOSCompatibleIOSBinary; + this.inAppEventId = inAppEventId; + this.extRefApp2 = extRefApp2; + this.extRefUrl2 = extRefUrl2; + this.additionalHeaders = additionalHeaders; + this.appCapabilities = appCapabilities; + this.isDefaultBrowser = isDefaultBrowser; + this.remoteDownloadIdentifiers = remoteDownloadIdentifiers; + this.hasMacIPAPackage = hasMacIPAPackage; + this.contentRating = contentRating; + } +} +/** @public */ +export class OfferDisplayProperties extends Model { + constructor(offerType, adamId, bundleId, style, parentAdamId, environment, offerTint, titles, titleSymbolNames, subtitles, hasInAppPurchases, hasExternalPurchases, isDeletableSystemApp, isFree, isPreorder, offerLabelStyle, hasDiscount, contentRating, subscriptionFamilyId, useAdsLocale, priceFormatted, isStreamlinedBuy, appCapabilities, isRedownloadDisallowed = false, isOpenBundleAllowed = false) { + super(); + this.offerType = offerType; + this.adamId = adamId; + this.bundleId = bundleId; + this.parentAdamId = parentAdamId; + this.style = style === null || style === undefined ? "infer" : style; + this.environment = environment === null || environment === undefined ? "light" : environment; + this.offerTint = offerTint === null || offerTint === undefined ? { type: "blue" } : offerTint; + this.titles = titles === null || titles === undefined ? {} : titles; + this.titleSymbolNames = titleSymbolNames === null || titleSymbolNames === undefined ? {} : titleSymbolNames; + this.subtitles = subtitles === null || subtitles === undefined ? {} : subtitles; + this.hasInAppPurchases = hasInAppPurchases; + this.hasExternalPurchases = hasExternalPurchases; + this.isDeletableSystemApp = isDeletableSystemApp; + this.isFree = isFree; + this.isPreorder = isPreorder; + this.offerLabelStyle = offerLabelStyle === null || offerLabelStyle === undefined ? "none" : offerLabelStyle; + this.hasDiscount = hasDiscount; + this.contentRating = contentRating; + this.subscriptionFamilyId = subscriptionFamilyId; + this.useAdsLocale = useAdsLocale; + this.priceFormatted = priceFormatted; + this.isStreamlinedBuy = isStreamlinedBuy; + this.appCapabilities = appCapabilities; + this.isRedownloadDisallowed = isRedownloadDisallowed; + this.isOpenBundleAllowed = isOpenBundleAllowed; + } + /** + * Create new offer display properties changing appearance. + * @param {boolean} overrideDisabledStyle When false, an offer style of 'disabled' is maintained. When true, the style is overridden regardless of being disabled to begin with. + * @param {OfferStyle} style The new style to apply. + * @param {OfferEnvironment} environment The new environment to apply. + * @param {OfferTint} offerTint + * @return {string} A new instance of OfferDisplayProperties with the desired modifications. + */ + newOfferDisplayPropertiesChangingAppearance(overrideDisabledStyle, style, environment, offerTint) { + return new OfferDisplayProperties(this.offerType, this.adamId, this.bundleId, style === null || style === undefined || (!overrideDisabledStyle && this.style === "disabled") + ? this.style + : style, this.parentAdamId, environment === null || environment === undefined ? this.environment : environment, offerTint === null || offerTint === undefined ? this.offerTint : offerTint, this.titles, this.titleSymbolNames, this.subtitles, this.hasInAppPurchases, this.hasExternalPurchases, this.isDeletableSystemApp, this.isFree, this.isPreorder, this.offerLabelStyle, this.hasDiscount, this.contentRating, this.subscriptionFamilyId, this.useAdsLocale, this.priceFormatted, this.isStreamlinedBuy, this.appCapabilities, this.isRedownloadDisallowed, this.isOpenBundleAllowed); + } +} +/** + * @public + * Information needed to personalize offerActions and how they are displayed. + */ +export class PersonalizedOfferContext extends Model { + constructor(personalizedOfferType, offerAction, offerDisplayProperties) { + super(); + this.offerAction = offerAction; + this.offerDisplayProperties = offerDisplayProperties; + this.personalizedOfferType = personalizedOfferType; + } +} +export var ArtworkContentMode; +(function (ArtworkContentMode) { + ArtworkContentMode[ArtworkContentMode["scaleToFill"] = 0] = "scaleToFill"; + ArtworkContentMode[ArtworkContentMode["scaleAspectFit"] = 1] = "scaleAspectFit"; + ArtworkContentMode[ArtworkContentMode["scaleAspectFill"] = 2] = "scaleAspectFill"; + ArtworkContentMode[ArtworkContentMode["redraw"] = 3] = "redraw"; + ArtworkContentMode[ArtworkContentMode["center"] = 4] = "center"; + ArtworkContentMode[ArtworkContentMode["top"] = 5] = "top"; + ArtworkContentMode[ArtworkContentMode["bottom"] = 6] = "bottom"; + ArtworkContentMode[ArtworkContentMode["left"] = 7] = "left"; + ArtworkContentMode[ArtworkContentMode["right"] = 8] = "right"; + ArtworkContentMode[ArtworkContentMode["topLeft"] = 9] = "topLeft"; + ArtworkContentMode[ArtworkContentMode["topRight"] = 10] = "topRight"; + ArtworkContentMode[ArtworkContentMode["bottomLeft"] = 11] = "bottomLeft"; + ArtworkContentMode[ArtworkContentMode["bottomRight"] = 12] = "bottomRight"; +})(ArtworkContentMode || (ArtworkContentMode = {})); +/** @public */ +export class ArtworkVariant extends Model { + constructor(format, quality, supportsWideGamut) { + super(); + this.format = format; + this.quality = quality; + this.supportsWideGamut = supportsWideGamut; + } + isValid() { + return this.format && this.supportsWideGamut !== undefined; + } +} +const systemImages = [ + "app.3.stack.3d", + "app.3.stack.3d.fill", + "applewatch", + "appstore", + "hammer", + "hammer.fill", + "house", + "ipad.gen2.landscape", + "iphone.gen2", + "joystickcontroller", + "joystickcontroller.fill", + "macbook.gen2", + "magnifyingglass", + "paintbrush", + "paintbrush.fill", + "paperplane", + "paperplane.fill", + "person.crop.square", + "rocket", + "rocket.fill", + "safari", + "square.grid.2x2", + "square.grid.2x2.fill", + "star", + "star.fill", + "text.rectangle.page", + "text.rectangle.page.fill", + "tv", + "visionpro", +]; +/** + * @public + * Type guard to narrow and ensure a string is a valid `SystemImage`. + */ +export function isSystemImage(systemImage) { + return typeof systemImage === "string" && systemImages.includes(systemImage); +} +/** @public */ +export class Artwork extends Model { + constructor(template, width, height, variants, backgroundColor, textColor) { + super(); + this.checksum = null; + this.backgroundColor = null; + this.textColor = null; // Represents a valid text color that can be used alongside this artwork + this.style = null; + this.crop = "bb"; + this.contentMode = null; + this.imageScale = null; + this.template = template; + this.width = width; + this.height = height; + this.variants = variants; + this.backgroundColor = backgroundColor; + this.textColor = textColor; + } + isPortrait() { + return this.height >= this.width; + } + isLandscape() { + return !this.isPortrait(); + } + isValid() { + return this.template !== "" && this.width > 0 && this.height > 0 && this.variants.length > 0; + } +} +/** @public */ +export class Screenshots extends Model { + constructor(artwork, mediaPlatform) { + super(); + this.artwork = artwork; + this.mediaPlatform = mediaPlatform; + } +} +/** @public */ +export class MediaPlatform extends Model { + constructor(appPlatform, mediaType, systemImageName, supplementaryAppPlatforms, deviceCornerRadiusFactor, deviceBorderThickness, outerDeviceCornerRadiusFactor) { + super(); + this.appPlatform = appPlatform; + this.supplementaryAppPlatforms = supplementaryAppPlatforms || []; + this.deviceCornerRadiusFactor = deviceCornerRadiusFactor; + this.mediaType = mediaType; + this.systemImageName = systemImageName; + this.deviceBorderThickness = deviceBorderThickness; + this.outerDeviceCornerRadiusFactor = outerDeviceCornerRadiusFactor; + } + isEqualTo(mediaPlatform) { + this.supplementaryAppPlatforms.sort(); + mediaPlatform.supplementaryAppPlatforms.sort(); + const supplementaryPlatformsAreEqual = this.supplementaryAppPlatforms.join(",") === mediaPlatform.supplementaryAppPlatforms.join(","); + return (mediaPlatform.appPlatform === this.appPlatform && + mediaPlatform.mediaType === this.mediaType && + mediaPlatform.systemImageName === this.systemImageName && + supplementaryPlatformsAreEqual && + mediaPlatform.deviceCornerRadiusFactor === this.deviceCornerRadiusFactor); + } +} +/** + * @public + * Generic size class used to describe an size in points + */ +export class Size { + constructor(width, height) { + this.width = width; + this.height = height; + } + static fromNativeSize(nativeSize) { + return new Size(nativeSize.width, nativeSize.height); + } + isEqualTo(size) { + return size.width === this.width && size.height === this.height; + } +} +// endregion +// region Share +/** @public */ +export class ShareSheetNotesMetadata extends Model { + constructor(itemName, url, developer, category, fileSize, mediaType) { + super(); + this.itemName = itemName; + this.url = url; + this.developer = developer; + this.category = category; + this.fileSize = fileSize; + this.mediaType = mediaType; + } +} +/** @public */ +export class ShareSheetArticleMetadata extends Model { + constructor(id, text, subtitle, artwork) { + super(); + this.context = "article"; + this.id = id; + this.text = text; + this.subtitle = subtitle; + this.artwork = artwork; + } +} +/** @public */ +export class ShareSheetAppEventMetadata extends Model { + constructor(text, subtitle, artwork) { + super(); + this.context = "appEvent"; + this.text = text; + this.subtitle = subtitle; + this.artwork = artwork; + } +} +/** @public */ +export class ShareSheetProductMetadata extends Model { + constructor(adamId, storeFrontIdentifier, name, platform, icon, screenshots, videos, isMessagesOnlyApp, subtitle, genreName, messagesAppIcon, notesMetadata) { + super(); + this.context = "product"; + this.adamId = adamId; + this.storeFrontIdentifier = storeFrontIdentifier; + this.name = name; + this.platform = platform; + this.icon = icon; + this.screenshots = screenshots; + this.videos = videos; + this.isMessagesOnlyApp = isMessagesOnlyApp; + this.subtitle = subtitle; + this.genreName = genreName; + this.messagesAppIcon = messagesAppIcon; + this.notesMetadata = notesMetadata; + } +} +/** @public */ +export class ShareSheetGenericMetadata extends Model { + constructor(text, subtitle, artwork) { + super(); + this.context = "generic"; + this.text = text; + this.subtitle = subtitle; + this.artwork = artwork; + } +} +/** @public */ +export class ShareSheetData extends Model { + constructor(metadata, url, shortUrl) { + super(); + this.metadata = metadata; + this.url = url; + this.shortUrl = shortUrl; + } +} +// endregion +// region ReportConcern +/** @public */ +export class ReportConcernReason extends Model { + constructor(reasonId, name, uppercaseName) { + super(); + this.reasonId = reasonId; + this.name = name; + this.uppercaseName = uppercaseName; + } +} +/** @public */ +export class StyledText extends Model { + constructor(rawText, rawTextType = "text/plain") { + super(); + this.rawText = rawText; + this.rawTextType = rawTextType; + } +} +/** @public */ +export class Paragraph extends ViewModel { + constructor(text, mediaType, style) { + super(); + this.text = text; + this.mediaType = mediaType || "text/plain"; + this.style = style || "standard"; + this.alignment = "localized"; + this.isCollapsed = false; + this.suppressVerticalMargins = false; + this.wantsCollapsedNewlines = true; + } +} +// endregion +// region Flow Preview +/** @public */ +export class FlowPreviewActionsConfiguration extends Model { + constructor(actionss, offerDisplayProperties = null, offerActionIndex = null) { + super(); + this.actions = actionss; + this.offerDisplayProperties = offerDisplayProperties; + this.offerActionIndex = offerActionIndex; + } +} +// region Arcade Footer +/** @public */ +export class ArcadeFooter extends ViewModel { +} +// endregion +/** @public + * Arcade download (starter) pack shelf data model. + * Currently used only for iPhone (see `ArcadeDownloadPackShelfController`). + */ +export class ArcadeDownloadPackCard extends ViewModel { +} +/** @public */ +export class TitleEffect extends Model { + constructor(type) { + super(); + this.isFallbackStyle = false; + this.type = type; + } +} +// endregion +// region Game Center +/** @public */ +export class GameCenterPlayerGameAchievementSummary extends ViewModel { + constructor(bundleId, completedAchievements, totalAchievements, completedText, action, achievements) { + super(); + this.bundleId = bundleId; + this.completedAchievements = completedAchievements; + this.totalAchievements = totalAchievements; + this.completedText = completedText; + this.action = action; + this.achievements = achievements; + } +} +/** @public */ +export class GameCenterPlayer extends ViewModel { + constructor(playerId, alias, displayName, size, artwork, action) { + super(); + this.playerId = playerId; + this.alias = alias; + this.displayName = displayName; + this.artwork = artwork; + this.action = action; + this.size = size; + } +} +/** @public */ +export class GameCenterActivityFeedCard extends ViewModel { + constructor(id, avatarImageURL, avatarActionURL, body, supplementaryViewImageURL, supplementaryViewActionURL, adamID) { + super(); + this.id = id; + this.avatarImageURL = avatarImageURL; + this.avatarActionURL = avatarActionURL; + this.body = body; + this.supplementaryViewImageURL = supplementaryViewImageURL; + this.supplementaryViewActionURL = supplementaryViewActionURL; + this.adamID = adamID; + } +} +/** @public */ +export class SmallContactCard extends ViewModel { + constructor(id, title, subtitle, buttonText, contactId, buttonAction, removeButtonAction, shouldShowMessagesBadge) { + super(); + this.id = id; + this.title = title; + this.subtitle = subtitle; + this.buttonText = buttonText; + this.contactId = contactId; + this.buttonAction = buttonAction; + this.removeButtonAction = removeButtonAction; + this.shouldShowMessagesBadge = shouldShowMessagesBadge; + } +} +/** @public */ +export class GameCenterAchievementStatus extends Model { + constructor(type) { + super(); + this.type = type; + } +} +/** @public */ +export class GameCenterAchievement extends Model { + constructor(id, title, subtitle, status) { + super(); + this.id = id; + this.title = title; + this.subtitle = subtitle; + this.status = status; + } +} +/** @public */ +export class GameCenterGameplayHistory extends Model { + constructor(adamId, platformId, isArcade, records) { + super(); + this.adamId = adamId; + this.platformId = platformId; + this.isArcade = isArcade; + this.records = records; + } +} +/** @public */ +export class GameCenterGameplayHistoryRecord extends Model { + constructor(playerId, timestamp) { + super(); + this.playerId = playerId; + this.timestamp = timestamp; + } +} +/** @public */ +export class Video extends Model { + constructor(videoUrl, preview, videoConfiguration) { + super(); + this.videoUrl = videoUrl; + this.preview = preview; + this.allowsAutoPlay = videoConfiguration.allowsAutoPlay; + this.looping = videoConfiguration.looping; + this.canPlayFullScreen = videoConfiguration.canPlayFullScreen; + this.playbackControls = { ...videoConfiguration.playbackControls }; + this.autoPlayPlaybackControls = { ...videoConfiguration.autoPlayPlaybackControls }; + this.templateMediaEvent = null; + } +} +export class CombinedFileSize { + constructor(fileSizeByDevice, maxDownloadSizeInBytes, maxInstallSizeInBytes, maxEssentialInstallSizeInBytes) { + this.fileSizeByDevice = fileSizeByDevice; + this.maxDownloadSizeInBytes = maxDownloadSizeInBytes; + this.maxInstallSizeInBytes = maxInstallSizeInBytes; + this.maxEssentialInstallSizeInBytes = maxEssentialInstallSizeInBytes; + } +} +/** @public */ +export class PageHeader extends ViewModel { + constructor(badge, title, subtitle) { + super(); + this.badge = badge; + this.title = title; + this.subtitle = subtitle; + } +} +export class MediaPageHeader extends PageHeader { + constructor(badge, title, subtitle, artwork, video, collectionIcons, useGeneratedBackgroundGradient, backgroundColor, style, backgroundStyle) { + super(badge, title, subtitle); + this.artwork = artwork; + this.video = video; + this.collectionIcons = collectionIcons; + this.useGeneratedBackgroundGradient = useGeneratedBackgroundGradient; + this.backgroundColor = backgroundColor; + this.style = style; + this.backgroundStyle = backgroundStyle; + } +} +export const EdgeInsetsZero = { + top: 0.0, + left: 0.0, + bottom: 0.0, + right: 0.0, +}; +/** + * The `Priority` is used when sorting the metrics to match for a given + * today card, so if we're looking for a layout for a given priority we + * will match that first + */ +export var TodayCardArtworkSizedLayoutMetricsPriority; +(function (TodayCardArtworkSizedLayoutMetricsPriority) { + TodayCardArtworkSizedLayoutMetricsPriority["Mini"] = "mini"; + TodayCardArtworkSizedLayoutMetricsPriority["ExtraWide"] = "extraWide"; + TodayCardArtworkSizedLayoutMetricsPriority["None"] = "none"; +})(TodayCardArtworkSizedLayoutMetricsPriority || (TodayCardArtworkSizedLayoutMetricsPriority = {})); +export class ChartOrCategorySafeAreaLocation { +} +export var ChartOrCategorySafeAreaRelativeLocation; +(function (ChartOrCategorySafeAreaRelativeLocation) { + ChartOrCategorySafeAreaRelativeLocation["TopRight"] = "topRight"; + ChartOrCategorySafeAreaRelativeLocation["TopLeft"] = "topLeft"; + ChartOrCategorySafeAreaRelativeLocation["MiddleLeft"] = "middleLeft"; +})(ChartOrCategorySafeAreaRelativeLocation || (ChartOrCategorySafeAreaRelativeLocation = {})); +export var ChartOrCategorySafeAreaSizeConstraint; +(function (ChartOrCategorySafeAreaSizeConstraint) { + ChartOrCategorySafeAreaSizeConstraint["SquareByWidth"] = "squareByWidth"; + ChartOrCategorySafeAreaSizeConstraint["SquareByHeight"] = "squareByHeight"; + ChartOrCategorySafeAreaSizeConstraint["FreeForm"] = "freeForm"; +})(ChartOrCategorySafeAreaSizeConstraint || (ChartOrCategorySafeAreaSizeConstraint = {})); +export class ChartOrCategorySafeAreaLocationDistance { +} +export class ChartOrCategorySafeArea { + constructor(width, height, asRatioOfSize, location, constraint) { + this.width = width; + this.height = height; + this.asRatioOfSize = asRatioOfSize !== null && asRatioOfSize !== void 0 ? asRatioOfSize : false; + this.location = location; + this.constraint = constraint; + } +} +/// The default tile safe area displays the artwork in a square in the top trailing corner of the cell. +ChartOrCategorySafeArea.defaultTileArtworkSafeArea = { + width: 0.4, + height: 0.4, + asRatioOfSize: true, + constraint: ChartOrCategorySafeAreaSizeConstraint.SquareByWidth, + location: { + relativeLocation: ChartOrCategorySafeAreaRelativeLocation.TopRight, + }, +}; +/// The default pill safe area displays the artwork on the middle leading side of the cell. +ChartOrCategorySafeArea.defaultPillArtworkSafeArea = { + width: 0.28, + height: 1.0, + asRatioOfSize: true, + constraint: ChartOrCategorySafeAreaSizeConstraint.FreeForm, + location: { + relativeLocation: ChartOrCategorySafeAreaRelativeLocation.MiddleLeft, + }, +}; +/// The default tile safe area increases the width available to render the text for the cell. +ChartOrCategorySafeArea.defaultTileTextSafeArea = { + width: 0.15, + height: 0.0, + asRatioOfSize: true, +}; +/// The default pill safe area increases the width available to render the text for the cell. +ChartOrCategorySafeArea.defaultPillTextSafeArea = { + width: 0.28, + height: 0.0, + asRatioOfSize: true, +}; +//# sourceMappingURL=base.js.map
\ No newline at end of file diff --git a/node_modules/@jet-app/app-store/tmp/src/api/models/categories.js b/node_modules/@jet-app/app-store/tmp/src/api/models/categories.js new file mode 100644 index 0000000..2435540 --- /dev/null +++ b/node_modules/@jet-app/app-store/tmp/src/api/models/categories.js @@ -0,0 +1,20 @@ +import * as models from "./index"; +/** @public */ +export class Category extends models.Model { + constructor(name, genreId, artwork, ageBandId, children) { + super(); + this.name = name; + this.genreId = genreId; + this.artwork = artwork; + this.ageBandId = ageBandId; + this.children = children; + } +} +/** @public */ +export class CategoryList extends models.Model { + constructor(categories) { + super(); + this.categories = categories; + } +} +//# sourceMappingURL=categories.js.map
\ No newline at end of file diff --git a/node_modules/@jet-app/app-store/tmp/src/api/models/dynamic-generic-page.js b/node_modules/@jet-app/app-store/tmp/src/api/models/dynamic-generic-page.js new file mode 100644 index 0000000..6037275 --- /dev/null +++ b/node_modules/@jet-app/app-store/tmp/src/api/models/dynamic-generic-page.js @@ -0,0 +1,15 @@ +import * as base from "./base"; +import * as metrics from "./metrics/metrics"; +/** @public */ +export class DynamicGenericPage extends base.Model { + constructor() { + super(); + this.shelfOrderings = {}; + this.shelfMapping = {}; + this.presentationOptions = []; + this.isIncomplete = false; + this.pageMetrics = new metrics.PageMetrics(); + this.pageRenderMetrics = {}; + } +} +//# sourceMappingURL=dynamic-generic-page.js.map
\ No newline at end of file diff --git a/node_modules/@jet-app/app-store/tmp/src/api/models/generic-page.js b/node_modules/@jet-app/app-store/tmp/src/api/models/generic-page.js new file mode 100644 index 0000000..1ee16fb --- /dev/null +++ b/node_modules/@jet-app/app-store/tmp/src/api/models/generic-page.js @@ -0,0 +1,47 @@ +/** + * Created by km on 2/13/17. + */ +import * as base from "./base"; +import * as metrics from "./metrics/metrics"; +/** @public */ +export class GenericPage extends base.Model { + constructor(shelfModels) { + super(); + this.shelves = shelfModels; + this.title = null; + this.presentationOptions = []; + this.isIncomplete = false; + this.pageMetrics = new metrics.PageMetrics(); + } +} +/** @public */ +export class InAppPurchaseInstallPage extends base.Model { + constructor() { + super(); + this.pageMetrics = new metrics.PageMetrics(); + this.pageRenderMetrics = {}; + } +} +/** + * @public + * Screen shown in search tab when search bar is focused but empty. + */ +export class SearchFocusPage extends GenericPage { +} +/** + * @public + * Initial screen shown in search tab when search bar is unfocused. + */ +export class SearchLandingPage extends GenericPage { +} +/** @public */ +export class ArcadePage extends GenericPage { +} +/** @public */ +export class ArcadeSeeAllGamesPage extends GenericPage { + constructor(shelfModels) { + super(shelfModels); + this.pageSegments = []; + } +} +//# sourceMappingURL=generic-page.js.map
\ No newline at end of file diff --git a/node_modules/@jet-app/app-store/tmp/src/api/models/hero-carousel.js b/node_modules/@jet-app/app-store/tmp/src/api/models/hero-carousel.js new file mode 100644 index 0000000..85b9514 --- /dev/null +++ b/node_modules/@jet-app/app-store/tmp/src/api/models/hero-carousel.js @@ -0,0 +1,37 @@ +import { isSome } from "@jet/environment/types/optional"; +import * as models from "./index"; +/** @public */ +export class HeroCarouselItemOverlay extends models.ViewModel { + isValid() { + const hasButtonRequirements = this.callToActionText !== undefined && + this.callToActionText !== null && + this.clickAction !== undefined && + this.clickAction !== null; + const hasTitle = this.titleText !== undefined && this.titleText !== null; + const hasLockupRequirements = this.lockup !== undefined && this.lockup !== null; + const hasCollectionIcons = this.collectionIcons !== undefined && this.collectionIcons !== null; + return hasTitle && (hasLockupRequirements || hasCollectionIcons || hasButtonRequirements); + } +} +/** @public */ +export class HeroCarouselItem extends models.ViewModel { + isValid() { + const hasCollectionIcons = isSome(this.collectionIcons) && this.collectionIcons.length > 0; + const hasValidArtwork = isSome(this.artwork) && this.artwork.isValid(); + const hasValidVideo = isSome(this.video) && this.video.isValid(); + const hasMedia = hasValidArtwork || hasValidVideo || hasCollectionIcons; + const hasOverlay = isSome(this.overlay) && this.overlay.isValid(); + return hasMedia && hasOverlay; + } +} +/** @public */ +export class HeroCarousel extends models.ViewModel { + constructor() { + super(...arguments); + /// The different items to display in the carousel + this.items = []; + /// The different items to display in the carousel, in RTL + this.rtlItems = []; + } +} +//# sourceMappingURL=hero-carousel.js.map
\ No newline at end of file diff --git a/node_modules/@jet-app/app-store/tmp/src/api/models/metrics/advert-action-metrics.js b/node_modules/@jet-app/app-store/tmp/src/api/models/metrics/advert-action-metrics.js new file mode 100644 index 0000000..4560458 --- /dev/null +++ b/node_modules/@jet-app/app-store/tmp/src/api/models/metrics/advert-action-metrics.js @@ -0,0 +1,21 @@ +/** + * Models for Advert Actions + */ +import * as models from "../base"; +/** + * @public + * Object that provides metrics data for actions pertaining to advert's native instrumentation. + */ +export class AdvertActionMetrics extends models.Model { + constructor(instanceId, adamId, bundleId, advertType, invocation, purchaseType, reportingDestination) { + super(); + this.instanceId = instanceId; + this.adamId = adamId; + this.bundleId = bundleId; + this.advertType = advertType; + this.invocation = invocation; + this.purchaseType = purchaseType; + this.reportingDestination = reportingDestination; + } +} +//# sourceMappingURL=advert-action-metrics.js.map
\ No newline at end of file diff --git a/node_modules/@jet-app/app-store/tmp/src/api/models/metrics/metrics.js b/node_modules/@jet-app/app-store/tmp/src/api/models/metrics/metrics.js new file mode 100644 index 0000000..23e26bd --- /dev/null +++ b/node_modules/@jet-app/app-store/tmp/src/api/models/metrics/metrics.js @@ -0,0 +1,101 @@ +/** + * Created by joel on 2/13/17. + */ +import * as JetMetrics from "@jet/environment/types/metrics"; +import * as models from "../base"; +// TS only allows extending **type information** in `declare module`s. +// These members **must** be initialized. +// TODO: The root cause for this workaround is because the Jet type `PageInvocationPoint` is not a `const enum`. +// Consider changing the Jet type to a `const enum`, and the compiler will automatically inline these values. +// eslint-disable-next-line @typescript-eslint/no-explicit-any +const extendedPageInvocationPoint = JetMetrics.PageInvocationPoint; +extendedPageInvocationPoint["search"] = "search"; +extendedPageInvocationPoint["timer"] = "timer"; +extendedPageInvocationPoint["never"] = "never"; +extendedPageInvocationPoint["pageChange"] = "pageChange"; +/** @public */ +export class AppStoreMetricsData { + constructor(fields, includingFields, excludingFields, topic, shouldFlush = false) { + this.fields = fields; + this.includingFields = includingFields; + this.excludingFields = excludingFields; + this.topic = topic; + this.shouldFlush = shouldFlush; + } +} +/** @public */ +export class LintedMetricsEvent extends models.Model { + constructor(fields) { + super(); + this.fields = fields; + } +} +/** @public */ +export class ActionMetrics extends models.Model { + constructor(events) { + super(); + this.data = events || []; + this.custom = {}; + } + addMetricsData(data) { + this.data.push(data); + } + addManyMetricsData(dataArray) { + for (const data of dataArray) { + this.addMetricsData(data); + } + } + clearAll() { + this.data.length = 0; + } +} +/** @public */ +export class PageMetrics extends models.Model { + constructor() { + super(); + this.instructions = []; + this.custom = {}; + } + addInstruction(instruction) { + this.instructions.push(instruction); + } + addManyInstructions(instructions) { + for (const instruction of instructions) { + this.addInstruction(instruction); + } + } + addData(data, invocationPoints) { + const event = { + data, + invocationPoints, + }; + this.instructions.push(event); + } + addManyData(dataArray, invocationPoints) { + for (const data of dataArray) { + this.addData(data, invocationPoints); + } + } +} +// TODO: This needs to be migrated to the JetEngine version of ImpressionMetrics +// The primary challenge is ID is required in the JetEngine representation, which will require +// some refactoring both in JS and native to get right +/** @public */ +export class ImpressionMetrics { + constructor(fields, id, custom) { + this.fields = fields; + this.id = id; + this.custom = custom; + } +} +/** @public */ +export class FastImpressionMetrics extends ImpressionMetrics { + constructor(metrics, isFast) { + super(metrics.fields, metrics.id, metrics.custom || {}); + if (this.custom !== undefined) { + this.custom["isFast"] = isFast; + } + this.isFast = isFast; + } +} +//# sourceMappingURL=metrics.js.map
\ No newline at end of file diff --git a/node_modules/@jet-app/app-store/tmp/src/api/models/page-facets.js b/node_modules/@jet-app/app-store/tmp/src/api/models/page-facets.js new file mode 100644 index 0000000..a534c8e --- /dev/null +++ b/node_modules/@jet-app/app-store/tmp/src/api/models/page-facets.js @@ -0,0 +1,88 @@ +import { isSome } from "@jet/environment/types/optional"; +import * as models from "./base"; +/** @public */ +export class PageFacetOption extends models.Model { + constructor(title, value, metricsValue = null, systemImageName = undefined) { + super(); + this.title = title; + this.value = value; + this.systemImageName = systemImageName; + this.metricsValue = metricsValue; + } +} +PageFacetOption.defaultValue = "pageFacetsDefaultValue"; +PageFacetOption.trueValue = new PageFacetOption("true", "false"); +PageFacetOption.falseValue = new PageFacetOption("false", "false"); +/** @public */ +export class PageFacetsFacet extends models.Model { + constructor(id, parameterName, title, displayType, options = [], defaultOptions = null, metricsParameterName = null, clickAction = null, displayOptionsInline = false, showsSelectedOptions = false, isHiddenFromMenu = false) { + super(); + this.id = id; + this.parameterName = parameterName; + this.title = title; + this.displayType = displayType; + this.defaultOptions = defaultOptions; + this.options = options; + this.metricsParameterName = metricsParameterName; + this.clickAction = clickAction; + this.displayOptionsInline = displayOptionsInline; + this.showsSelectedOptions = showsSelectedOptions; + this.isHiddenFromMenu = isHiddenFromMenu; + } +} +/** @public */ +export class PageFacetsGroup extends models.Model { + constructor(facets = [], title = null) { + super(); + this.title = title; + this.facets = facets; + } +} +/** @public */ +export class PageFacets extends models.Model { + constructor(facetGroups, allowsResetButton, resetButtonTitle) { + super(); + this.facetGroups = facetGroups; + this.allowsResetButton = allowsResetButton; + this.resetButtonTitle = resetButtonTitle; + } + static isDefinedNonNullNonEmpty(object) { + return isSome(object) && Object.keys(object).length !== 0; + } +} +/** + * Facet out nil values / join all values together returning the string used for a query parameter value + * returns null if resulting string would be empty or selectedOptions is null + * @param selectedOptions + */ +PageFacets.requestValuesForSelectedFacetOptions = function (selectedOptions) { + if (PageFacets.isDefinedNonNullNonEmpty(selectedOptions)) { + const facetOptionValue = selectedOptions + .filter((option) => { + return PageFacets.isDefinedNonNullNonEmpty(option.value); + }) + .map((option) => { + return option.value; + }) + .join(","); + const allFacetOptionValues = facetOptionValue.split("&"); + const primaryValue = allFacetOptionValues[0]; + const additionalQueryValues = allFacetOptionValues.splice(1); + const additionalKeyValuePairs = {}; + for (const additionalQueryValue of additionalQueryValues) { + const keyValue = additionalQueryValue.split("="); + if (keyValue.length !== 2) { + continue; + } + additionalKeyValuePairs[keyValue[0]] = keyValue[1]; + } + return { + value: primaryValue, + additionalKeyValuePairs: additionalKeyValuePairs, + }; + } + else { + return null; + } +}; +//# sourceMappingURL=page-facets.js.map
\ No newline at end of file diff --git a/node_modules/@jet-app/app-store/tmp/src/api/models/page-refresh-policy.js b/node_modules/@jet-app/app-store/tmp/src/api/models/page-refresh-policy.js new file mode 100644 index 0000000..96a0732 --- /dev/null +++ b/node_modules/@jet-app/app-store/tmp/src/api/models/page-refresh-policy.js @@ -0,0 +1,17 @@ +/** + * Model for Page Refresh Policy + */ +import { Model } from "./base"; +/** @public */ +export class PageRefreshPolicy extends Model { + constructor(strategy, updateDelayInterval, timeSinceOnScreenInterval, timeToLiveEndDate, refreshWhileVisible = false, refreshForDeviceDrivenContentChange = false) { + super(); + this.strategy = strategy; + this.updateDelayInterval = updateDelayInterval; + this.timeSinceOnScreenInterval = timeSinceOnScreenInterval; + this.timeToLiveEndDate = timeToLiveEndDate; + this.refreshWhileVisible = refreshWhileVisible; + this.refreshForDeviceDrivenContentChange = refreshForDeviceDrivenContentChange; + } +} +//# sourceMappingURL=page-refresh-policy.js.map
\ No newline at end of file diff --git a/node_modules/@jet-app/app-store/tmp/src/api/models/preview-platform.js b/node_modules/@jet-app/app-store/tmp/src/api/models/preview-platform.js new file mode 100644 index 0000000..387e689 --- /dev/null +++ b/node_modules/@jet-app/app-store/tmp/src/api/models/preview-platform.js @@ -0,0 +1,25 @@ +import { isNothing } from "@jet/environment/types/optional"; +/** + * All {@linkcode PreviewPlatform}, defined in their order of precidence + */ +export const allPreviewPlatforms = ["iphone", "ipad", "mac", "vision", "watch", "tv"]; +/** + * Determines if {@linkcode input} is a {@linkcode PreviewPlatform} + */ +export function isPreviewPlatform(input) { + return allPreviewPlatforms.includes(input); +} +/** + * Normalize some {@linkcode input} into a {@linkcode PreviewPlatform}, if possible + */ +export function normalizePreviewPlaform(input) { + if (isNothing(input)) { + return undefined; + } + const normalized = input.toLocaleLowerCase(); + if (isPreviewPlatform(normalized)) { + return normalized; + } + return undefined; +} +//# sourceMappingURL=preview-platform.js.map
\ No newline at end of file diff --git a/node_modules/@jet-app/app-store/tmp/src/api/models/privacy.js b/node_modules/@jet-app/app-store/tmp/src/api/models/privacy.js new file mode 100644 index 0000000..f866cc5 --- /dev/null +++ b/node_modules/@jet-app/app-store/tmp/src/api/models/privacy.js @@ -0,0 +1,75 @@ +import * as models from "./index"; +/** @public */ +export class PrivacyHeader extends models.Model { + constructor(bodyText, isDetailHeader, privacyTypes, bodyActions, supplementaryItems, seeDetailsAction) { + super(); + this.bodyText = bodyText; + this.isDetailHeader = isDetailHeader; + this.privacyTypes = privacyTypes; + this.bodyActions = bodyActions; + this.supplementaryItems = supplementaryItems; + this.seeDetailsAction = seeDetailsAction; + } +} +/** @public */ +export class PrivacyHeaderSupplementaryItem extends models.Model { + constructor(bodyText, action) { + super(); + this.bodyText = bodyText; + this.action = action; + } +} +/** @public */ +export class PrivacyFooter extends models.Model { + constructor(bodyText, actions, privacyTypesCount) { + super(); + this.bodyText = bodyText; + this.actions = actions; + this.privacyTypesCount = privacyTypesCount; + } +} +/** @public */ +export class PrivacyType extends models.ViewModel { + constructor(identifier, title, detail, artwork, style, purposes, categories, clickAction) { + super(); + this.identifier = identifier; + this.title = title; + this.detail = detail; + this.artwork = artwork; + this.style = style; + this.purposes = purposes; + this.categories = categories; + this.clickAction = clickAction; + this.wantsScrollFocus = false; + } +} +/** @public */ +export class PrivacyPurpose extends models.Model { + constructor(identifier, title, categories) { + super(); + this.identifier = identifier; + this.title = title; + this.categories = categories; + } +} +/** @public */ +export class PrivacyCategory extends models.Model { + constructor(identifier, title, artwork, style, dataTypes = []) { + super(); + this.identifier = identifier; + this.title = title; + this.artwork = artwork; + this.style = style; + this.dataTypes = dataTypes; + this.prefersSmallArtwork = false; + } +} +/** @public */ +export class PrivacyDefinition extends models.Model { + constructor(title, definition) { + super(); + this.title = title; + this.definition = definition; + } +} +//# sourceMappingURL=privacy.js.map
\ No newline at end of file diff --git a/node_modules/@jet-app/app-store/tmp/src/api/models/product-media-gallery-page.js b/node_modules/@jet-app/app-store/tmp/src/api/models/product-media-gallery-page.js new file mode 100644 index 0000000..a736532 --- /dev/null +++ b/node_modules/@jet-app/app-store/tmp/src/api/models/product-media-gallery-page.js @@ -0,0 +1,12 @@ +import * as base from "./base"; +import * as metrics from "./metrics/metrics"; +/** @public */ +export class ProductMediaGalleryPage extends base.Model { + constructor(productMedia) { + super(); + this.productMedia = productMedia; + this.pageMetrics = new metrics.PageMetrics(); + this.pageRenderMetrics = {}; + } +} +//# sourceMappingURL=product-media-gallery-page.js.map
\ No newline at end of file diff --git a/node_modules/@jet-app/app-store/tmp/src/api/models/product-page-shelf-ids.js b/node_modules/@jet-app/app-store/tmp/src/api/models/product-page-shelf-ids.js new file mode 100644 index 0000000..63a4cbf --- /dev/null +++ b/node_modules/@jet-app/app-store/tmp/src/api/models/product-page-shelf-ids.js @@ -0,0 +1,45 @@ +/** + * Created by jellenbogen 4/12/21. + */ +// This is the set of ProductPageShelfIds that were previously containerized, this is needed +// for backwards compatibility converting shelfBased to non-shelfBased +export const legacyProductPageNonShelfSections = new Set([ + "header", + "topLockup", + "screenshots", +]); +// This is the list of productPageShelfIds that are able to be used on non-shelfBasaed product +// pages +export const legacyProductPageKnownShelfIds = new Set([ + "accessibilityDeveloperLink", + "accessibilityFeatures", + "accessibilityHeader", + "achievements", + "actionLinks", + "appEvents", + "bundleChildren", + "bundleParents", + "capabilities", + "description", + "editorialQuote", + "featuredIn", + "friendsPlaying", + "inAppPurchases", + "information", + "informationRibbon", + "notPurchasedLinks", + "purchasedLinks", + "moreByDeveloper", + "mostRecentVersion", + "preorderDisclaimer", + "privacyFooter", + "privacyHeader", + "privacyTypes", + "reviews", + "similarItems", + "subscriptions", + "textCards", + "textLinksShelf", + "videos", +]); +//# sourceMappingURL=product-page-shelf-ids.js.map
\ No newline at end of file diff --git a/node_modules/@jet-app/app-store/tmp/src/api/models/product.js b/node_modules/@jet-app/app-store/tmp/src/api/models/product.js new file mode 100644 index 0000000..a5764f3 --- /dev/null +++ b/node_modules/@jet-app/app-store/tmp/src/api/models/product.js @@ -0,0 +1,58 @@ +/** + * Created by km on 2/13/17. + */ +import * as base from "./base"; +import * as metrics from "./metrics/metrics"; +import * as shelves from "./shelves"; +/** @public */ +export class Badge extends base.Model { + constructor(type, key, content, style, heading, caption, longCaption, accessibilityTitle, accessibilityCaption, leadingValue = "infer") { + super(); + this.type = type; + this.key = key; + this.content = content; + this.heading = heading; + this.caption = caption; + this.longCaption = longCaption; + this.leadingValue = leadingValue; + this.accessibilityTitle = accessibilityTitle; + this.accessibilityCaption = accessibilityCaption; + this.style = style; + this.isMonochrome = true; + } +} +/** @public */ +export class TextCard extends base.Model { + constructor(headingType, title, subtitle) { + super(); + this.titleStyle = headingType; + this.title = title; + this.subtitle = subtitle; + this.isExpanded = false; + } +} +/** @public */ +export class ProductPageSection extends base.Model { + constructor(type, shelfId) { + super(); + this.type = type; + this.shelfId = shelfId; + } +} +/** @public */ +export class ProductPageExpandedOfferDetails extends base.Model { + constructor(title, subtitle) { + super(); + this.title = title; + this.subtitle = subtitle; + } +} +/** @public */ +export class ProductPage extends shelves.Lockup { + constructor() { + super(); + this.pageMetrics = new metrics.PageMetrics(); + this.pageRenderMetrics = {}; + } +} +//# sourceMappingURL=product.js.map
\ No newline at end of file diff --git a/node_modules/@jet-app/app-store/tmp/src/api/models/reviews.js b/node_modules/@jet-app/app-store/tmp/src/api/models/reviews.js new file mode 100644 index 0000000..e71a139 --- /dev/null +++ b/node_modules/@jet-app/app-store/tmp/src/api/models/reviews.js @@ -0,0 +1,115 @@ +/** + * Created by phare on 3/28/17. + */ +import * as base from "./base"; +import * as page from "./generic-page"; +/* tslint:disable:no-unsafe-any */ +/** @public */ +export class ReviewsPageSortOption extends base.Model { + constructor(id, title, selectedActionTitle, url) { + super(); + this.id = id; + this.title = title; + this.selectedActionTitle = selectedActionTitle; + this.url = url; + } +} +/** @public */ +export class ReviewsPage extends page.GenericPage { + constructor() { + super([]); + } +} +/** @public */ +export class Ratings extends base.Model { +} +/** @public */ +export class Review extends base.ViewModel { +} +/** @public */ +export class Response extends base.Model { +} +/** @public */ +export class TapToRate extends base.Model { + constructor() { + super(...arguments); + this.componentType = "tapToRate"; + } +} +/** @public */ +export class ProductReviewActions extends base.Model { + constructor() { + super(...arguments); + this.componentType = "productReviewActions"; + } +} +/** @public */ +export class EditorsChoice extends base.Model { + constructor(notes) { + super(); + this.showsBadge = false; + this.title = null; + this.notes = notes; + this.isCollapsed = true; + } +} +/** @public */ +export class ReviewsContainer extends base.Model { +} +/** @public */ +export class ProductReviewAction extends base.Model { +} +/** @public */ +export class ProductWriteAReview extends base.Model { +} +/** @public */ +export class ProductStarRatings extends Ratings { + constructor() { + super(...arguments); + this.componentType = "starRatings"; + } +} +/** @public */ +export class ProductStarRatingsHistogram extends Ratings { + constructor() { + super(...arguments); + this.componentType = "starRatingsHistogram"; + } +} +/** @public */ +export class ProductNoRatings extends Ratings { + constructor() { + super(...arguments); + this.componentType = "noRatings"; + } +} +/** @public */ +export class ProductRatingsAndReviewsMessage extends base.Model { + constructor(messageText) { + super(); + this.componentType = "message"; + this.messageText = messageText; + } +} +/** @public */ +export class ReviewSummary extends base.ViewModel { + constructor(body, bodyNoTitle, subtitle, subtitleArtwork, subtitleArtworkAlignment, bodyMediaType, flowPreviewActionsConfiguration) { + super(); + this.body = body; + this.bodyNoTitle = bodyNoTitle; + this.subtitle = subtitle; + this.subtitleArtwork = subtitleArtwork; + this.subtitleArtworkAlignment = subtitleArtworkAlignment; + this.bodyMediaType = bodyMediaType; + this.flowPreviewActionsConfiguration = flowPreviewActionsConfiguration; + } +} +/** @public */ +export class ProductReview extends base.ViewModel { + constructor() { + super(...arguments); + this.componentType = "productReview"; + } +} +/* tslint:enable:no-unsafe-any */ +//# sourceMappingURL=reviews.js.map
\ No newline at end of file diff --git a/node_modules/@jet-app/app-store/tmp/src/api/models/search/guided-search-actions.js b/node_modules/@jet-app/app-store/tmp/src/api/models/search/guided-search-actions.js new file mode 100644 index 0000000..047f60f --- /dev/null +++ b/node_modules/@jet-app/app-store/tmp/src/api/models/search/guided-search-actions.js @@ -0,0 +1,31 @@ +/** + * Actions for Guided Search Feature + */ +import * as actions from "../actions"; +/** + * @public + * An action that toggles a specified guided search token on and off. + * + * @note + * The same instance of this object must handle both selection and deselection + * as it can fire multiple times without JS refresh + */ +export class GuidedSearchTokenToggleAction extends actions.Action { + constructor(targetToken, searchOrigin) { + super("GuidedSearchTokenToggleAction"); + this.targetToken = targetToken; + this.searchOrigin = searchOrigin; + } +} +/** + * @public + * An action that changes the selected search entity (replacing existing, if any) + */ +export class SearchEntityChangeAction extends actions.Action { + constructor(entity, searchOrigin) { + super("SearchEntityChangeAction"); + this.entity = entity; + this.searchOrigin = searchOrigin; + } +} +//# sourceMappingURL=guided-search-actions.js.map
\ No newline at end of file diff --git a/node_modules/@jet-app/app-store/tmp/src/api/models/search/guided-search.js b/node_modules/@jet-app/app-store/tmp/src/api/models/search/guided-search.js new file mode 100644 index 0000000..cda8c16 --- /dev/null +++ b/node_modules/@jet-app/app-store/tmp/src/api/models/search/guided-search.js @@ -0,0 +1,48 @@ +import * as models from "../base"; +/** + * @public + * Returns the system image for the given search entity. + */ +export function searchEntitySystemImage(entity) { + switch (entity) { + case "developer": + return "person.crop.square"; + case "story": + return "appstore"; + case "watch": + return "applewatch"; + case "arcade": + return "joystickcontroller.fill"; + default: + return undefined; + } +} +/** + * @public + * Model representing selectable displayed token for Guided Search + */ +export class GuidedSearchToken extends models.ViewModel { + constructor(value, isSelected, leadingIcon, displayName, clickAction) { + super(); + this.value = value; + this.isSelected = isSelected; + this.leadingIcon = leadingIcon; + this.displayName = displayName; + this.clickAction = clickAction; + } +} +/** + * @public + * Object storing mapping of: + * Search Term + [Set of Guided Search Tokens] = Optimization Term. + * I.e. how the search term and token swill be comined for final query term search results are searched for. + */ +export class GuidedSearchQuery extends models.Model { + constructor(searchTerm, selectedTokens, optimizationTerm) { + super(); + this.searchTerm = searchTerm; + this.selectedTokens = selectedTokens; + this.optimizationTerm = optimizationTerm; + } +} +//# sourceMappingURL=guided-search.js.map
\ No newline at end of file diff --git a/node_modules/@jet-app/app-store/tmp/src/api/models/search/search-categories.js b/node_modules/@jet-app/app-store/tmp/src/api/models/search/search-categories.js new file mode 100644 index 0000000..1d0b588 --- /dev/null +++ b/node_modules/@jet-app/app-store/tmp/src/api/models/search/search-categories.js @@ -0,0 +1,96 @@ +import * as dynamicGenericPage from "../dynamic-generic-page"; +import * as models from "../base"; +export class SearchChartsAndCategoriesPage extends dynamicGenericPage.DynamicGenericPage { +} +/** + * @public + * Model representing a piece of UI for a chart or category on the search landing page. + */ +export class SearchChartOrCategory extends models.ViewModel { + constructor(title, artwork, collectionIcons, backgroundColor, badge, action, density, artworkSafeArea, textSafeArea) { + super(); + this.title = title; + this.artwork = artwork; + this.collectionIcons = collectionIcons; + this.backgroundColor = backgroundColor; + this.badge = badge; + this.action = action; + this.density = density; + this.artworkSafeArea = artworkSafeArea; + this.textSafeArea = textSafeArea; + } +} +/** + * @public + * Model representing a piece of UI for a medium ad lockup with custom creative artwork on the search landing page. + */ +export class MediumAdLockupWithAlignedRegionBackground extends models.ViewModel { + constructor(lockup, alignedRegionArtwork) { + super(); + this.lockup = lockup; + this.alignedRegionArtwork = alignedRegionArtwork; + } +} +/** + * @public + * Model representing a piece of UI for a medium ad lockup with screenshots on the search landing page. + */ +export class MediumAdLockupWithScreenshotsBackground extends models.ViewModel { + constructor(lockup, screenshots, isAnimated, secondaryTextColor, backgroundColor, riverSpeed) { + super(); + this.lockup = lockup; + this.screenshots = screenshots; + this.isAnimated = isAnimated; + this.secondaryTextColor = secondaryTextColor; + this.backgroundColor = backgroundColor; + this.riverSpeed = riverSpeed; + } +} +/** + * @public + * Model representing a piece of UI for a condensed ad lockup on the search landing page. + */ +export class CondensedAdLockupWithIconBackground extends models.ViewModel { + constructor(lockup, backgroundArtwork) { + super(); + this.lockup = lockup; + this.backgroundArtwork = backgroundArtwork; + } +} +export class SearchShelfAttributes { + constructor(id, title, displayStyle, displayCount, hasSeeAll, seeAllLink, searchLandingItemDisplayStyle = null, searchShelfKind) { + this.id = id; + this.title = title; + this.searchLandingItemDisplayStyle = searchLandingItemDisplayStyle; + this.displayStyle = displayStyle; + this.displayCount = displayCount; + this.hasSeeAll = hasSeeAll; + this.seeAllLink = seeAllLink; + this.searchShelfKind = searchShelfKind; + } +} +export var SearchLandingPageContentKind; +(function (SearchLandingPageContentKind) { + SearchLandingPageContentKind["Suggestion"] = "Query"; + SearchLandingPageContentKind["CategoriesAndCharts"] = "EditorialLink"; + SearchLandingPageContentKind["Apps"] = "AppsLockup"; + SearchLandingPageContentKind["EditorialCollection"] = "EditorialCollection"; +})(SearchLandingPageContentKind || (SearchLandingPageContentKind = {})); +export var SearchPageKind; +(function (SearchPageKind) { + SearchPageKind[SearchPageKind["Default"] = 0] = "Default"; + SearchPageKind[SearchPageKind["CategoriesAndCharts"] = 1] = "CategoriesAndCharts"; +})(SearchPageKind || (SearchPageKind = {})); +export var GenericSearchPageShelfDisplayStyleDensity; +(function (GenericSearchPageShelfDisplayStyleDensity) { + GenericSearchPageShelfDisplayStyleDensity["Density1"] = "density_1"; + GenericSearchPageShelfDisplayStyleDensity["Density2"] = "density_2"; + GenericSearchPageShelfDisplayStyleDensity["Density3"] = "density_3"; +})(GenericSearchPageShelfDisplayStyleDensity || (GenericSearchPageShelfDisplayStyleDensity = {})); +export var SearchLandingPageShelfItemIconKind; +(function (SearchLandingPageShelfItemIconKind) { + SearchLandingPageShelfItemIconKind["Chiclet"] = "chiclet"; + SearchLandingPageShelfItemIconKind["App"] = "app"; + SearchLandingPageShelfItemIconKind["Symbol"] = "symbol"; +})(SearchLandingPageShelfItemIconKind || (SearchLandingPageShelfItemIconKind = {})); +//# sourceMappingURL=search-categories.js.map
\ No newline at end of file diff --git a/node_modules/@jet-app/app-store/tmp/src/api/models/search/search.js b/node_modules/@jet-app/app-store/tmp/src/api/models/search/search.js new file mode 100644 index 0000000..4876f03 --- /dev/null +++ b/node_modules/@jet-app/app-store/tmp/src/api/models/search/search.js @@ -0,0 +1,283 @@ +/** + * Created by km on 2/13/17. + */ +import * as actions from "../actions"; +import * as base from "../base"; +import * as metrics from "../metrics/metrics"; +/** @public */ +export class BaseSearchPage extends base.Model { + constructor() { + super(); + this.pageMetrics = new metrics.PageMetrics(); + this.pageRenderMetrics = {}; + } +} +/** @public */ +export class SearchResults extends BaseSearchPage { +} +/** + * @public + * Message to show user when search results need additional context. + * Currently supported by: + * - iOS, for NLS Safety UI + */ +export class SearchResultsContextCard extends base.ViewModel { + constructor(message, action) { + super(); + this.message = message; + this.action = action; + } +} +/** @public */ +export class SearchResultsPage extends BaseSearchPage { + constructor(shelfModels = []) { + super(); + /// The shelves of the results page. + this.shelves = []; + this.shelves = shelfModels; + } +} +export class SegmentedSearchResultsPage { + constructor() { + this.selectedSegmentId = null; + this.segments = []; + } +} +export var SegmentedSearchResultsPageSegmentType; +(function (SegmentedSearchResultsPageSegmentType) { + SegmentedSearchResultsPageSegmentType["visionOS"] = "xros"; + SegmentedSearchResultsPageSegmentType["iOS"] = "ios"; +})(SegmentedSearchResultsPageSegmentType || (SegmentedSearchResultsPageSegmentType = {})); +export class SegmentedSearchResultsPageSegment { +} +/** @public */ +export class SearchFacetSet extends base.Model { + constructor(type, values) { + super(); + this.type = type; + this.values = values; + } +} +/** @public */ +export class SearchFacetValue extends base.Model { + constructor(name, value, selectedValue = null) { + super(); + this.name = name; + this.value = value; + this.isSelected = value === selectedValue; + } +} +/** @public */ +export class SearchAdOpportunity extends base.Model { + constructor(instanceId, searchLifecycleEventPayloads, searchAd) { + super(); + this.instanceId = instanceId; + this.eventPayloads = searchLifecycleEventPayloads; + this.searchAd = searchAd; + } + /** + * Sets the template type on the event payloads for metrics tracking + * @param templateType The native ad template type + */ + setTemplateType(templateType) { + this.eventPayloads.placed.iAdTemplateType = templateType; + } + /** + * Sets the duplicate position on the event payloads for metrics tracking. This is only expected for search results + * @param position The position of the duplicate organic app lockup that appeared in the shelf's contents + */ + setDuplicatePosition(position) { + this.eventPayloads.placed.duplicatePosition = position; + } + /** + * Sets the missed reason code on the event payloads for metrics tracking + * @param reasonCode The reason that the opportunity was not filled + */ + setMissedOpportunityReason(reasonCode) { + this.eventPayloads.placed.missedOpportunityReason = reasonCode; + } +} +/** @public */ +export class SearchAd extends base.Model { + constructor(instanceId, iAdObject, searchAdLifecycleEventPayloads, impressionId, transparencyAction) { + super(); + this.instanceId = instanceId; + this.iAd = iAdObject; + this.eventPayloads = searchAdLifecycleEventPayloads; + this.impressionId = impressionId; + this.transparencyAction = transparencyAction; + } + /** + * Sets the template type on the event payloads for metrics tracking + * @param templateType The native ad template type + */ + setTemplateType(templateType) { + this.eventPayloads.placed.iAdTemplateType = templateType; + } + /** + * Sets the duplicate position on the event payloads for metrics tracking. This is only expected for search results + * @param position The position of the duplicate organic app lockup that appeared in the shelf's contents + */ + setDuplicatePosition(position) { + this.eventPayloads.placed.duplicatePosition = position; + } +} +/** @public */ +export class AdTransparencyAction extends actions.Action { + constructor(adTransparencyData) { + super("AdTransparencyAction"); + this.adTransparencyData = adTransparencyData; + } +} +/** @public */ +export class SearchAction extends actions.Action { + constructor(title, term, url, origin, entity, source, presentationStyle, referrerData) { + super("SearchAction"); + /** + * Whether or not Search should opt-in to spell-checking, which will: + * - Correct high-confidence misspellings server-side. + * - Suggest queries for low-confidence misspellings + * + * This defaults to `false`. Currently `true` for user-typed term and hints terms. + */ + this.spellCheckEnabled = false; + this.title = title; + this.term = term; + this.url = url; + this.origin = origin; + this.entity = entity; + this.source = source; + this.presentationStyle = presentationStyle !== null && presentationStyle !== void 0 ? presentationStyle : ["textFollowsTintColor"]; + this.referrerData = referrerData; + } +} +// endregion +// region Search Hints +/** @public */ +export class SearchHintSet extends base.Model { + constructor(hints, ghostHintTerm) { + super(); + this.hints = hints; + this.ghostHintTerm = ghostHintTerm; + this.pageMetrics = new metrics.PageMetrics(); + this.pageRenderMetrics = {}; + } +} +// endregion +// region Trending Searches +/** @public */ +export class TrendingSearches extends base.Model { + constructor(title, searches) { + super(); + this.title = title; + this.searches = searches; + } +} +// endregion +// region Search Message +/** + * @public + * Message associated with a set of Search Results. + * Currently supported by: + * - iOS, for Spell Correction feature. + */ +export class SearchResultsMessage extends base.Model { + constructor(primaryText, secondaryText, messageClickAction = null) { + super(); + this.primaryText = primaryText; + this.secondaryText = secondaryText; + this.messageClickAction = messageClickAction; + } +} +/** @public */ +export class SearchResult extends base.ViewModel { + constructor(resultType) { + super(); + this.resultType = resultType; + this.clickAction = null; + } +} +/** + * @public + * Search result for a single app + */ +export class AppSearchResult extends SearchResult { + constructor(lockup) { + super("content"); + this.lockup = lockup; + } +} +/** @public */ +export class InAppPurchaseSearchResult extends SearchResult { + constructor(lockup) { + super("inAppPurchase"); + this.lockup = lockup; + } +} +/** @public */ +export class BundleSearchResult extends SearchResult { + constructor(lockup) { + super("bundle"); + this.lockup = lockup; + } +} +/** @public */ +export class AdvertsSearchResult extends SearchResult { + constructor() { + super("advert"); + this.lockups = []; + this.displaysScreenshots = true; + this.itemBackground = "ad"; + } +} +/** @public */ +export class AppEventSearchResult extends SearchResult { + constructor() { + super("appEvent"); + } +} +/** @public */ +export class EditorialSearchResult extends SearchResult { + constructor(title) { + super("editorial"); + this.title = title; + } +} +/** + * @public + * Collection of lockups with shared heading and title. + * May include an action to show additional details (e.g. FlowAction to Article) + */ +export class SearchLockupCollection extends SearchResult { + constructor(heading, title, items, detailAction, headingArtwork) { + super("lockupCollection"); + this.heading = heading; + this.headingArtwork = headingArtwork; + this.title = title; + this.items = items; + this.detailAction = detailAction; + } +} +/** + * @public + * Guided search suggestions shown mid-scroll alongside other search results. + */ +export class GuidedSearchResult extends SearchResult { + constructor(title, tokens) { + super("guidedSearch"); + this.title = title; + this.tokens = tokens; + } +} +/** + * @public + * A model for the search results learn more notice. + */ +export class SearchResultsLearnMoreNotice extends base.ViewModel { + constructor(linkableText) { + super(); + this.linkableText = linkableText; + } +} +// endregion +//# sourceMappingURL=search.js.map
\ No newline at end of file diff --git a/node_modules/@jet-app/app-store/tmp/src/api/models/shelf-based-product.js b/node_modules/@jet-app/app-store/tmp/src/api/models/shelf-based-product.js new file mode 100644 index 0000000..7291687 --- /dev/null +++ b/node_modules/@jet-app/app-store/tmp/src/api/models/shelf-based-product.js @@ -0,0 +1,25 @@ +/** + * Created by km on 2/13/17. + */ +import * as dynamicGenericPage from "./dynamic-generic-page"; +export const shelfBasedProductPageOrderingIdPurcahsed = "purchasedOrdering"; +export const shelfBasedProductPageOrderingIdNotPurcahsed = "notPurchasedOrdering"; +export const shelfBasedProductPageOrderingIdPurcahsedExpandedMedia = "purchasedOrdering_ExpandedMedia"; +export const shelfBasedProductPageOrderingIdNotPurcahsedExpandedMedia = "notPurchasedOrdering_ExpandedMedia"; +export const shelfBasedProductPageOrderingIdPurcahsedCompact = "purchasedOrdering_Compact"; +export const shelfBasedProductPageOrderingIdNotPurcahsedCompact = "notPurchasedOrdering_Compact"; +export const shelfBasedProductPageOrderingIdPurcahsedExpandedMediaCompact = "purchasedOrdering_ExpandedMedia_Compact"; +export const shelfBasedProductPageOrderingIdNotPurcahsedExpandedMediaCompact = "notPurchasedOrdering_ExpandedMedia_Compact"; +export const shelfBasedProductPageOrderingIdDownloading = "downloadingOrdering"; +export const shelfBasedProductPageOrderingIdDownloadingExpandedMedia = "downloadingOrdering_ExpandedMedia"; +export const shelfBasedProductPageOrderingIdDownloadingCompact = "downloadingOrdering_Compact"; +export const shelfBasedProductPageOrderingIdDownloadingExpandedMediaCompact = "downloadingOrdering_ExpandedMedia_Compact"; +/** @public */ +export class ShelfBasedProductPage extends dynamicGenericPage.DynamicGenericPage { + constructor() { + super(...arguments); + // Reviews + this.appPlatforms = []; + } +} +//# sourceMappingURL=shelf-based-product.js.map
\ No newline at end of file diff --git a/node_modules/@jet-app/app-store/tmp/src/api/models/shelves.js b/node_modules/@jet-app/app-store/tmp/src/api/models/shelves.js new file mode 100644 index 0000000..5a68c4c --- /dev/null +++ b/node_modules/@jet-app/app-store/tmp/src/api/models/shelves.js @@ -0,0 +1,709 @@ +/** + * Created by km on 2/13/17. + */ +import { isSome } from "@jet/environment/types/optional"; +import * as base from "./base"; +/** @public */ +export class InformationContainer extends base.Model { + constructor(annotationGroups) { + super(); + this.annotationGroups = annotationGroups; + } +} +/** @public */ +export class ImpressionableArtwork extends base.ViewModel { + constructor(art) { + super(); + this.art = art; + } +} +/** @public */ +export class AppShowcase extends base.Model { + constructor(type, lockup) { + super(); + this.type = type; + this.lockup = lockup; + } +} +/** @public */ +export class Banner extends base.Model { + constructor(message, focusedMessage, action, fullProductAction, leadingArtwork, leadingArtworkTintColor, includeBackgroundBorder, kind, hideCriteria) { + super(); + this.message = message; + this.focusedMessage = focusedMessage; + this.action = action; + this.fullProductAction = fullProductAction; + this.leadingArtwork = leadingArtwork; + this.leadingArtworkTintColor = leadingArtworkTintColor; + this.includeBackgroundBorder = includeBackgroundBorder; + this.kind = kind; + this.hideCriteria = hideCriteria; + } +} +/** + * @public + * Defines which banner to show for various app states so the client can update dynamically. + */ +export class AppStateBanner extends base.Model { + constructor(unknownBanner, buyBanner, downloadBanner, updateBanner, openBanner) { + super(); + this.unknownBanner = unknownBanner; + this.buyBanner = buyBanner; + this.downloadBanner = downloadBanner; + this.updateBanner = updateBanner; + this.openBanner = openBanner; + } +} +/** @public */ +export class InAppPurchaseShowcase extends base.Model { + constructor(lockup) { + super(); + this.lockup = lockup; + } +} +// endregion +/** @public */ +export class ProductMediaItem extends base.Model { +} +/** @public */ +export class ProductMedia extends base.Model { + constructor(items, mediaPlatform, allPlatforms, platformDescription, allPlatformsDescription, allPlatformsDescriptionPlacement) { + super(); + this.items = items; + this.mediaPlatform = mediaPlatform; + this.allPlatforms = allPlatforms; + this.platformDescription = platformDescription; + this.allPlatformsDescription = allPlatformsDescription; + this.allPlatformsDescriptionPlacement = allPlatformsDescriptionPlacement; + } +} +/** @public */ +export class ProductCapability extends base.Model { + constructor(type, title, caption, captionTrailingArtwork, linkAction, artwork, artworkTintColor) { + super(); + this.type = type; + this.title = title; + this.caption = caption; + this.captionTrailingArtwork = captionTrailingArtwork; + this.linkAction = linkAction; + this.artwork = artwork; + this.artworkTintColor = artworkTintColor; + } +} +/** @public */ +export class ProductDescription extends base.Model { + constructor(paragraph, developerLinks, tags, developerAction) { + super(); + this.paragraph = paragraph; + this.developerAction = developerAction; + this.tags = tags; + this.developerLinks = developerLinks; + } +} +/** @public */ +export class Footnote extends base.Model { + constructor(text) { + super(); + this.text = text; + this.presentationStyle = []; + this.clickAction = null; + } +} +/** @public */ +export class LockupContextMenuData extends base.Model { +} +/** @public */ +export class Lockup extends base.ViewModel { + isValid() { + if (!this.title) { + return false; + } + if (!this.icon || !this.icon.isValid()) { + return false; + } + return super.isValid(); + } +} +/** @public */ +export class ScreenshotsLockup extends Lockup { + constructor() { + super(); + this.screenshots = []; + /// Force a 4 screenshot portrait display style to ensure alignment with landscape screenshots + this.screenshotsDisplayStyle = "four-screenshots"; + } + isValid() { + const hasScreenshots = this.screenshots && this.screenshots.length; + if (!hasScreenshots) { + return false; + } + return super.isValid(); + } +} +/** @public */ +export class MixedMediaLockup extends Lockup { + constructor() { + super(); + this.screenshots = []; + this.trailers = []; + this.overrideLockupPosition = null; + this.screenshotsDisplayStyle = "control"; + this.metadataRibbonItems = []; + this.showMetadataInformationInLockup = false; + this.alignedRegionArtwork = null; + this.alignedRegionVideo = null; + } +} +export class UpdatesLockup extends Lockup { + constructor() { + super(); + this.whatsNew = undefined; + this.version = undefined; + this.size = undefined; + this.externalVersionId = undefined; + this.releaseDate = undefined; + this.installDate = undefined; + } +} +/** + * @public + * The metadata ribbon item used to contain any content of a metadata ribbon view. + * Keys will be present based on which metadata ribbon item type is being presented. + * This is using specific keys rather than creating them on the fly because the key + * names get mangled if they're not defined. + */ +export class MetadataRibbonItem extends base.ViewModel { + constructor(viewType) { + super(); + this.viewType = viewType; + this.moduleType = null; + this.labelText = null; + this.borderedText = null; + this.highlightedText = null; + this.starRating = null; + this.secondaryViewPlacement = "leading"; + this.artwork = null; + this.maxCharacterCount = null; + this.truncationLegibilityCharacterCountThreshold = null; + this.allowsTruncation = null; + } +} +/** @public */ +export class TrailersLockup extends Lockup { + isValid() { + const hasTrailers = this.trailers && this.trailers.isValid(); + if (!hasTrailers) { + return false; + } + if (!this.editorialTagline || this.editorialTagline.length === 0) { + return false; + } + return super.isValid(); + } +} +/** @public */ +export class Trailers extends base.Model { + constructor(videos, mediaPlatform) { + super(); + if (videos) { + this.videos = videos; + } + if (mediaPlatform) { + this.mediaPlatform = mediaPlatform; + } + } + isValid() { + return this.videos && this.videos.length > 0 && super.isValid(); + } +} +/** @public */ +export class InAppPurchaseLockup extends Lockup { +} +/** + * @public + * This is a lockup that represents the Arcade *service* (in contrast to lockups for Arcade *apps*) + * It is used in: + * - Today Card Overlay (iOS) + * - Article Persistent Lockup (iOS, macOS) + * - Maybe more + * + * This object does *not* subclass `Lockup`, as we cannot populate the app-specific properties. Decision was made to use a separate codepath altogether for delivering this + * fake lockup to views we otherwise display standard `Lockup`, as opposed to trying to reconcile the use-cases at this time. + * + * This class deliberately maintains two button actions to fire for subscribed and unsubscribed state, respectively, instead of a single hypothetical `ArcadeStateAction` + * that switches behavior based on subscription state. This is since the subscription state can switch between model apply time (what is visually represented in UI), + * and when it is run in action runner. + */ +export class ArcadeLockup extends base.ViewModel { +} +export class ImageLockup extends base.ViewModel { + constructor(artwork, lockup, caption, title, isDark = false) { + super(); + this.isDark = false; + this.artwork = artwork; + this.lockup = lockup; + this.caption = caption; + this.title = title; + this.isDark = isDark; + } + isValid() { + return this.lockup.isValid() && this.artwork.isValid(); + } +} +/** @public */ +export class TitledParagraph extends base.Model { + constructor(text, style, mediaType) { + super(); + this.text = text; + this.style = style; + this.mediaType = mediaType; + this.wantsCollapsedNewlines = true; + } +} +/** @public */ +export class EditorialCard extends base.ViewModel { + constructor() { + super(); + this.adamId = null; + this.caption = null; + this.title = null; + this.subtitle = null; + this.artwork = null; + this.shelfBackground = null; + this.clickAction = null; + this.decorations = []; + this.flowPreviewActionsConfiguration = null; + this.appEventFormattedDates = null; + this.mediaOverlayStyle = null; + } + isValid() { + if (!this.clickAction) { + return false; + } + if (!this.artwork || !this.artwork.isValid()) { + return false; + } + if (!this.caption || !this.title) { + return false; + } + return super.isValid(); + } +} +/** + * @public + * Used for: + * - Arcade Continue Playing. + */ +export class VideoCard extends base.ViewModel { + constructor() { + super(); + this.flowPreviewActionsConfiguration = null; + } +} +/** + * @public + * Used within a `RibbonBar` which is a horizontal scrolling bar that contains multiple `RibbonBarItem`s. + * E.g. a `RibbonBarItem` that defines an Arcade category within an Arcade category ribbon bar. + * + * Each bar item should have a title and a click action alongside with an optional artwork. + * Empty artworks are potentially handled by a fallback icon by client side. + */ +export class RibbonBarItem extends base.ViewModel { + constructor(title, clickAction) { + super(); + this.title = title; + this.clickAction = clickAction; + this.artwork = null; + this.accessibilityLabel = null; + } +} +/** @public */ +export class Brick extends base.ViewModel { + constructor() { + super(); + this.artworks = null; + this.accessibilityLabel = null; + this.shortEditorialDescription = null; + this.clickAction = null; + this.personalizationStyle = "none"; + this.shelfBackground = null; + this.flowPreviewActionsConfiguration = null; + this.editorialDisplayOptions = {}; + this.artworkSafeArea = null; + this.textSafeArea = null; + } + isValid() { + var _a, _b, _c, _d; + const hasValidArtwork = (_b = (_a = this.artworks) === null || _a === void 0 ? void 0 : _a.every((artwork, index) => { + return isSome(artwork) && artwork.isValid(); + })) !== null && _b !== void 0 ? _b : false; + const hasCollectionIcons = ((_d = (_c = this.collectionIcons) === null || _c === void 0 ? void 0 : _c.length) !== null && _d !== void 0 ? _d : 0) > 0; + const hasBackgroundColor = isSome(this.backgroundColor); + return (isSome(this.clickAction) && (hasValidArtwork || hasCollectionIcons || hasBackgroundColor) && super.isValid()); + } +} +/** @public */ +export class EditorialLink extends base.ViewModel { + constructor(descriptionText, summaryText, clickAction, linkPresentationEnabled = true) { + super(); + this.descriptionText = descriptionText; + this.summaryText = summaryText; + this.clickAction = clickAction; + this.linkPresentationEnabled = linkPresentationEnabled; + } +} +/** @public */ +export class SearchLink extends base.ViewModel { + constructor(title, clickAction, artwork, imageName) { + super(); + this.title = title; + this.clickAction = clickAction; + this.imageName = imageName; + this.artwork = artwork; + } +} +/** @public */ +export class LinkableText extends base.Model { + constructor(styledText, linkedSubstrings) { + super(); + this.styledText = styledText; + this.linkedSubstrings = linkedSubstrings; + } +} +/** @public */ +export class ProductPageLink extends base.Model { + constructor(text, clickAction, systemImageName, adamIdForPurchaseHistoryFilter) { + super(); + this.text = text; + this.clickAction = clickAction; + this.systemImageName = systemImageName; + this.adamIdForPurchaseHistoryFilter = adamIdForPurchaseHistoryFilter; + } +} +/** @public */ +export class PreorderDisclaimer extends base.Model { + constructor(disclaimer) { + super(); + this.disclaimer = disclaimer; + } +} +/** @public */ +export class TitledButtonStack extends base.Model { + constructor(buttons) { + super(); + this.buttons = buttons; + } +} +/** @public */ +export class TitledButton extends base.Model { + constructor(title, action) { + super(); + this.title = title; + this.action = action; + } +} +/** @public */ +export class FramedArtwork extends base.ViewModel { + constructor(artwork, isFullWidth, captionMediaType = "text/plain", caption = null, ordinal = null, hasRoundedCorners = null) { + super(); + this.artwork = artwork; + this.isFullWidth = isFullWidth; + this.hasRoundedCorners = typeof hasRoundedCorners === "boolean" ? hasRoundedCorners : !this.isFullWidth; + this.ordinal = ordinal; + this.caption = caption; + this.captionMediaType = captionMediaType; + } +} +/** @public */ +export class FramedVideo extends base.ViewModel { + constructor(video, isFullWidth, captionMediaType = "text/plain", caption = null, ordinal = null, hasRoundedCorners = null) { + super(); + this.video = video; + this.isFullWidth = isFullWidth; + this.hasRoundedCorners = typeof hasRoundedCorners === "boolean" ? hasRoundedCorners : !this.isFullWidth; + this.ordinal = ordinal; + this.caption = caption; + this.captionMediaType = captionMediaType; + } +} +/** @public */ +export class RoundedButton extends base.Model { + constructor(type, title, hasDivider, action) { + super(); + this.type = type; + this.title = title; + this.hasDivider = hasDivider; + this.action = action; + } +} +/** @public */ +export class Quote extends base.ViewModel { + constructor(text, credit, artwork, isFullWidthArtwork) { + super(); + this.text = text; + this.credit = credit; + this.artwork = artwork; + this.isFullWidthArtwork = isFullWidthArtwork || false; + } +} +/** @public */ +export class EditorialQuote extends base.ViewModel { + constructor(text, attribution) { + super(); + this.text = text; + this.attribution = attribution; + } +} +/** @public */ +export class HorizontalRule extends base.Model { + constructor(style, ruleColor, isFullWidth) { + super(); + this.style = style; + this.color = ruleColor; + this.isFullWidth = isFullWidth; + } +} +/** + * @public + * A horizontal scrolling bar that contains multiple `RibbonBarItem`s. + * + * E.g. category ribbon bar displaying different Arcade categories in a horizontal scrolling bar. + */ +export class RibbonBar extends base.ViewModel { + constructor(items) { + super(); + this.items = items; + } +} +/** @public */ +export class InformationRibbon extends base.ViewModel { + constructor(badges, hasTopSeparator, hasBottomSeparator, separatorsAreFullWidth, alignment) { + super(); + this.badges = badges; + this.hasTopSeparator = hasTopSeparator; + this.hasBottomSeparator = hasBottomSeparator; + this.separatorsAreFullWidth = separatorsAreFullWidth; + this.alignment = alignment; + } +} +// region Client Control Button +/** + * @public + * A client control button is an button appearing within Article pages. + * This is currently used so MAS editorial articles to link into OS Updates in preferences. + */ +export class ClientControlButton extends base.ViewModel { + constructor(title, buttonAction) { + super(); + this.title = title; + this.buttonAction = buttonAction; + } +} +/** @public */ +export class BreakoutDetails extends base.Model { + constructor(title, description, badgeType, callToActionButtonAction, backgroundStyle, textAlignment) { + super(); + this.badgeType = badgeType; + this.badge = badgeType.title; + this.title = title; + this.description = description; + this.callToActionButtonAction = callToActionButtonAction; + this.backgroundStyle = backgroundStyle; + this.textAlignment = textAlignment; + } +} +/** @public */ +export class LargeHeroBreakout extends base.ViewModel { + constructor(details, detailsDisplayProperties, heading, artwork, video, collectionIcons, backgroundColor) { + super(); + this.details = details; + this.detailsDisplayProperties = detailsDisplayProperties; + this.heading = heading; + this.artwork = artwork; + this.video = video; + this.collectionIcons = collectionIcons; + this.backgroundColor = backgroundColor; + this.editorialDisplayOptions = {}; + } +} +/** @public */ +export class SmallBreakout extends base.ViewModel { + constructor(details, iconArtwork, backgroundColor) { + super(); + this.details = details; + this.iconArtwork = iconArtwork; + this.backgroundColor = backgroundColor; + } +} +/** + * The `Placeholder` is a dummy model used so a shelf with content type Placeholder can be populated with items representing the amount of placeholders to show + */ +export class Placeholder extends base.ViewModel { +} +// region ArcadeShowcase +/** + * @public + * The `ArcadeShowcase` is a model that is similar to the upsell breakout on the grouping pages, but appears inline in article pages. + * This module is specialized for Arcade service, since we don't have other subscription services currently. + * On some platforms, it may display some icon artwork. + */ +export class ArcadeShowcase extends base.ViewModel { + /** + * Initialize arcade showcase with required values + * @param unsubscribedAction Action to run in non-subscribed state. + * @param subscribedAction Action to run in subscribed state. + */ + constructor(unsubscribedAction, subscribedAction) { + super(); + this.unsubscribedAction = unsubscribedAction; + this.subscribedAction = subscribedAction; + } +} +/** @public */ +export class GameCenterReengagement extends base.ViewModel { + constructor(badgeGlyph, badge, title, subtitle, achievement, lockup, backgroundColor, backgroundArtwork, heroAction) { + super(); + this.badgeGlyph = badgeGlyph; + this.badge = badge; + this.title = title; + this.subtitle = subtitle; + this.achievement = achievement; + this.backgroundColor = backgroundColor; + this.backgroundArtwork = backgroundArtwork; + this.lockup = lockup; + this.heroAction = heroAction; + } +} +export class UnifiedMessage extends base.ViewModel { + constructor(placement, context, deliveryMethod) { + super(); + this.placement = placement; + this.context = context; + this.deliveryMethod = deliveryMethod !== null && deliveryMethod !== void 0 ? deliveryMethod : "pushAndPull"; + } +} +export const genericShelfBatchGroupBase = "shelfBatchGroup_"; +export var IncompleteShelfFetchStrategy; +(function (IncompleteShelfFetchStrategy) { + /** + * Indicates the shelf should be fetched as soon as the page is loaded, + * this is the behavior we've always had, where all incomplete shelves are + * fetched after the page loads + */ + IncompleteShelfFetchStrategy["OnPageLoad"] = "onPageLoad"; + /** + * Indicates the shelf should be fetched when it is about to be scrolled into view + */ + IncompleteShelfFetchStrategy["OnShelfWillAppear"] = "onShelfWillAppear"; +})(IncompleteShelfFetchStrategy || (IncompleteShelfFetchStrategy = {})); +// Describes the snapping behaviour for horizontally scrolling shelves. +export var ShelfHorizontalScrollTargetBehavior; +(function (ShelfHorizontalScrollTargetBehavior) { + // The default behaviour, where scrolling will snap to the leading edge of the view. + ShelfHorizontalScrollTargetBehavior["ViewAligned"] = "viewAligned"; + // Scrolling will snap so that views are center aligned in their container. Primarily + // used for large components that take up most of the container. + ShelfHorizontalScrollTargetBehavior["CenterAligned"] = "centerAligned"; +})(ShelfHorizontalScrollTargetBehavior || (ShelfHorizontalScrollTargetBehavior = {})); +/** @public */ +export class Shelf extends base.ViewModel { + constructor(contentType, marker = null, items = null) { + super(); + // - Item Properties + this.contentType = contentType; + this.marker = marker; + this.items = items || []; + this.header = undefined; + // - Incomplete Shelf Properties + this.url = null; + this.mergeWhenFetched = false; + this.fetchStrategy = IncompleteShelfFetchStrategy.OnPageLoad; + this.batchGroup = null; + // - Overflow Properties + this.seeAllAction = null; + // - Footer Properties + this.footerTitle = null; + this.footerAction = null; + // - Presentation Properties + this.eyebrow = null; + this.eyebrowArtwork = null; + this.footerStyle = null; + this.title = null; + this.titleArtwork = null; + this.subtitle = null; + this.isHorizontal = false; + this.isHidden = false; + this.rowsPerColumn = null; + this.background = { type: "none" }; + this.contentsMetadata = { type: "none" }; + // - Personalization & Filtering Properties + this.isPersonalized = false; + this.shouldFilterApps = false; + } +} +/** @public */ +export var ShelfBackgroundGradientLocation; +(function (ShelfBackgroundGradientLocation) { + ShelfBackgroundGradientLocation["TopLeading"] = "topLeading"; + ShelfBackgroundGradientLocation["Top"] = "top"; + ShelfBackgroundGradientLocation["TopTrailing"] = "topTrailing"; + ShelfBackgroundGradientLocation["Trailing"] = "trailing"; + ShelfBackgroundGradientLocation["BottomTrailing"] = "bottomTrailing"; + ShelfBackgroundGradientLocation["Bottom"] = "bottom"; + ShelfBackgroundGradientLocation["BottomLeading"] = "bottomLeading"; + ShelfBackgroundGradientLocation["Leading"] = "leading"; +})(ShelfBackgroundGradientLocation || (ShelfBackgroundGradientLocation = {})); +export var GroupDisplayStyle; +(function (GroupDisplayStyle) { + GroupDisplayStyle["Grid"] = "grid"; + GroupDisplayStyle["Hero"] = "hero"; + GroupDisplayStyle["Standard"] = "standard"; +})(GroupDisplayStyle || (GroupDisplayStyle = {})); +/// The different artwork types we can display in the header +export var ShelfHeaderArtworkType; +(function (ShelfHeaderArtworkType) { + /// The image displayed is a content icon + ShelfHeaderArtworkType["Icon"] = "icon"; + /// The image displayed is a category image + ShelfHeaderArtworkType["Category"] = "category"; +})(ShelfHeaderArtworkType || (ShelfHeaderArtworkType = {})); +/** @public */ +export class EditorialStoryCard extends base.ViewModel { + constructor(title, artwork, video, heading, badge, description, clickAction) { + super(); + this.title = title; + this.artwork = artwork; + this.video = video; + this.heading = heading; + this.badge = badge; + this.description = description; + this.clickAction = clickAction; + this.shelfBackground = null; + this.collectionIcons = null; + this.editorialDisplayOptions = {}; + } +} +/** @public */ +export class PosterLockup extends Lockup { + isValid() { + const hasPosterArtwork = this.posterArtwork; + const hasPosterVideo = this.posterVideo; + // We require at least one type of poster media. + if (!(hasPosterArtwork || hasPosterVideo)) { + return false; + } + return super.isValid(); + } +} +/** @public */ +export class PageTab extends base.Model { +} +/** @public */ +export class PageTabs extends base.Model { + constructor() { + super(); + /// The id is not from a payload and should be unique to the container + this.id = random.nextUUID(); + } +} +//# sourceMappingURL=shelves.js.map
\ No newline at end of file diff --git a/node_modules/@jet-app/app-store/tmp/src/api/models/today-page.js b/node_modules/@jet-app/app-store/tmp/src/api/models/today-page.js new file mode 100644 index 0000000..58017fa --- /dev/null +++ b/node_modules/@jet-app/app-store/tmp/src/api/models/today-page.js @@ -0,0 +1,300 @@ +import * as base from "./base"; +import * as metrics from "./metrics/metrics"; +export var AdPlacementBehavior; +(function (AdPlacementBehavior) { + AdPlacementBehavior["insertIntoShelf"] = "insertIntoShelf"; + AdPlacementBehavior["replaceOrganic"] = "replaceOrganic"; + AdPlacementBehavior["dropAd"] = "dropAd"; +})(AdPlacementBehavior || (AdPlacementBehavior = {})); +/** @public */ +export class TodayCardMedia extends base.ViewModel { + constructor(kind) { + super(); + this.kind = kind; + } + /** + * @returns The best background color for the media. This is used to + * determine the color the section background gradients. If undefined, the + * default section background color will be used. + */ + bestBackgroundColor() { + return undefined; + } +} +/** @public */ +export class TodayCardMediaWithArtwork extends TodayCardMedia { + constructor(kind, artworks, videos, artworkLayoutsWithMetrics) { + super(kind); + this.artworks = artworks; + this.videos = videos; + this.artworkLayoutsWithMetrics = artworkLayoutsWithMetrics; + } + bestBackgroundColor() { + var _a, _b, _c; + return (_b = (_a = this.videos[0]) === null || _a === void 0 ? void 0 : _a.preview.backgroundColor) !== null && _b !== void 0 ? _b : (_c = this.artworks[0]) === null || _c === void 0 ? void 0 : _c.backgroundColor; + } +} +/** @public */ +export class TodayCardMediaHero extends TodayCardMediaWithArtwork { + constructor(artworks, videos) { + super("hero", artworks, videos, []); + } + isValid() { + const isArtworkValid = this.artworks.every((artwork) => artwork.isValid()) && this.artworks.length > 0; + const isVideoValid = this.videos.every((video) => video.isValid()) && this.videos.length > 0; + return (isArtworkValid || isVideoValid) && super.isValid(); + } +} +/** @public */ +export class TodayCardMediaArtwork extends TodayCardMediaWithArtwork { + constructor(artworks, videos, artworkLayoutsWithMetrics, titleBackingGradient) { + super("artwork", artworks, videos, artworkLayoutsWithMetrics); + this.titleBackingGradient = titleBackingGradient; + } +} +/** @public */ +export class TodayCardMediaAppIcon extends TodayCardMedia { + constructor(icon) { + super("appIcon"); + this.icon = icon; + } + bestBackgroundColor() { + return this.icon.backgroundColor; + } +} +/** @public */ +export class TodayCardMediaBrandedSingleApp extends TodayCardMediaWithArtwork { + constructor(icon, artworks, videos, artworkLayoutsWithMetrics, titleBackingGradient) { + super("brandedSingleApp", artworks, videos, artworkLayoutsWithMetrics); + this.icon = icon; + this.titleBackingGradient = titleBackingGradient; + } + bestBackgroundColor() { + var _a; + return (_a = super.bestBackgroundColor()) !== null && _a !== void 0 ? _a : this.icon.backgroundColor; + } +} +/** @public */ +export class TodayCardMediaList extends TodayCardMediaWithArtwork { + constructor(lockups, artworks, videos, artworkLayoutsWithMetrics, marketingText, isMediaDark) { + super("list", artworks, videos, artworkLayoutsWithMetrics); + this.lockups = lockups; + this.marketingText = marketingText; + this.isMediaDark = isMediaDark; + } +} +/** @public */ +export class TodayCardMediaMultiApp extends TodayCardMedia { + constructor(lockups, additionalText) { + super("multiApp"); + this.lockups = lockups; + this.additionalText = additionalText; + } +} +/** @public */ +export class TodayCardInAppPurchase extends TodayCardMedia { + constructor(lockup) { + super("inAppPurchase"); + this.lockup = lockup; + } + bestBackgroundColor() { + return this.lockup.icon.backgroundColor; + } +} +/** @public */ +export class TodayCardMediaRiver extends TodayCardMedia { + constructor(lockups) { + super("river"); + this.lockups = lockups; + this.lockupImpressionLimit = 10; + } +} +/** @public */ +export class TodayCardMediaGrid extends TodayCardMedia { + constructor(lockups, artworkGridType) { + super("grid"); + this.lockups = lockups; + this.artworkGridType = artworkGridType; + this.lockupImpressionLimit = 3; + } +} +/** @public */ +export class TodayCardMediaVideo extends TodayCardMediaWithArtwork { + constructor(videos, artworkLayoutsWithMetrics, description) { + super("video", [], videos, artworkLayoutsWithMetrics); + this.description = description; + } +} +/** @public */ +export class TodayCardMediaAppEvent extends TodayCardMediaWithArtwork { + constructor(formattedDates, startDate, tintColor, artworks, videos, artworkLayoutsWithMetrics, blurStyle) { + super("appEvent", artworks, videos, artworkLayoutsWithMetrics); + this.formattedDates = formattedDates; + this.startDate = startDate; + this.tintColor = tintColor; + this.blurStyle = blurStyle; + } +} +/** @public */ +export class TodayCardMediaMediumLockupWithAlignedRegion extends TodayCardMedia { + constructor(mediumAdLockupWithAlignedRegionBackground) { + super("mediumLockupWithAlignedRegion"); + this.mediumAdLockupWithAlignedRegionBackground = mediumAdLockupWithAlignedRegionBackground; + } +} +/** @public */ +export class TodayCardMediaMediumLockupWithScreenshots extends TodayCardMedia { + constructor(mediumAdLockupWithScreenshotsBackground) { + super("mediumLockupWithScreenshots"); + this.mediumAdLockupWithScreenshotsBackground = mediumAdLockupWithScreenshotsBackground; + } +} +/** + * @public + * Media for a today card with a single lockup. + */ export class TodayCardMediaSingleLockup extends TodayCardMedia { + constructor(condensedAdLockupWithIconBackground) { + super("singleLockup"); + this.condensedAdLockupWithIconBackground = condensedAdLockupWithIconBackground; + } + /** + * @returns The best background color for the media. This is used to + * determine the color the section background gradients. If undefined, the + * default section background color will be used. + */ + bestBackgroundColor() { + var _a; + return (_a = this.condensedAdLockupWithIconBackground) === null || _a === void 0 ? void 0 : _a.backgroundArtwork.backgroundColor; + } +} +/** @public */ +export class TodayCardOverlay extends base.Model { + constructor(kind) { + super(); + this.kind = kind; + } +} +/** @public */ +export class TodayCardLockupOverlay extends TodayCardOverlay { + constructor(lockup) { + super("lockup"); + this.lockup = lockup; + this.displaysIcon = true; + } +} +/** + * @public + * Variant of `TodayCardLockupOverlay` with additional functionality, + * like optionally showing a transient `TodayCardParagraphOverlay` style overlay + */ +export class TodayCardMarketingLockupOverlay extends TodayCardOverlay { + constructor(lockup, paragraph, hideBackground, artworkBackgroundColor) { + super("marketingLockup"); + this.lockup = lockup; + this.paragraph = paragraph; + this.hideBackground = hideBackground; + this.artworkBackgroundColor = artworkBackgroundColor; + } +} +/** @public */ +export class TodayCardLockupListOverlay extends TodayCardOverlay { + constructor(lockups) { + super("lockupList"); + this.lockups = lockups; + } +} +/** @public */ +export class TodayCardParagraphOverlay extends TodayCardOverlay { + constructor(paragraph, style) { + super("paragraph"); + this.paragraph = paragraph; + this.style = style; + } +} +/** @public */ +export class TodayCardActionOverlay extends TodayCardOverlay { + constructor(action) { + super("action"); + this.action = action; + } +} +/** @public */ +export class TodayCardThreeLineOverlay extends TodayCardOverlay { + constructor(heading, title, description) { + super("threeLine"); + this.heading = heading; + this.title = title; + this.description = description; + } +} +/** + * @public + * Overlay for Acquisition Editorial Items that promote the Arcade Service. + */ +export class TodayCardArcadeLockupOverlay extends TodayCardOverlay { + constructor(arcadeLockup) { + super("arcadeLockup"); + this.arcadeLockup = arcadeLockup; + } +} +/** + * @public + * Overlay for App Event lockups. + */ +export class TodayCardAppEventLockupOverlay extends TodayCardOverlay { + constructor(lockup) { + super("appEventLockup"); + this.lockup = lockup; + } +} +// endregion +// region Cards +/** @public */ +export class TodayCard extends base.ViewModel { + constructor() { + super(); + this.heading = undefined; + this.title = undefined; + this.shortTitle = undefined; + this.titleArtwork = undefined; + this.media = undefined; + this.heroMedia = undefined; + this.overlay = undefined; + this.style = undefined; + this.clickAction = undefined; + this.backgroundColor = undefined; + this.inlineDescription = undefined; + this.collapsedHeading = undefined; + this.editorialDisplayOptions = undefined; + this.supportsMediaMirroring = undefined; + } +} +/** @public */ +export class InlineTodayCards extends base.ViewModel { + constructor(cards) { + super(); + this.cards = cards; + } +} +// endregion +/** @public */ +export class TodayPage extends base.Model { + constructor(shelfModels, onboardingCardIds, title, tabTitle, titleDetail, shortTitleDetail) { + super(); + this.shelves = shelfModels; + this.title = title; + this.titleDetail = titleDetail; + this.shortTitleDetail = shortTitleDetail; + this.tabTitle = tabTitle; + this.nextPage = null; + if (onboardingCardIds) { + this.onboardingCardIds = onboardingCardIds; + } + else { + this.onboardingCardIds = []; + } + this.pageMetrics = new metrics.PageMetrics(); + this.pageRenderMetrics = {}; + } +} +//# sourceMappingURL=today-page.js.map
\ No newline at end of file diff --git a/node_modules/@jet-app/app-store/tmp/src/api/models/top-charts.js b/node_modules/@jet-app/app-store/tmp/src/api/models/top-charts.js new file mode 100644 index 0000000..52f229f --- /dev/null +++ b/node_modules/@jet-app/app-store/tmp/src/api/models/top-charts.js @@ -0,0 +1,63 @@ +/** + * Created by km on 2/13/17. + */ +import * as models from "./index"; +import * as metrics from "./metrics/metrics"; +/** @public */ +export class TopChartSegment extends models.Model { + constructor(shortName, longName, chart, shelfModels) { + super(); + this.shortName = shortName; + this.longName = longName; + this.chart = chart; + this.shelves = shelfModels; + this.nextPage = null; + this.pageMetrics = new metrics.PageMetrics(); + this.pageRenderMetrics = {}; + } +} +/** @public */ +export class TopChartCategory extends models.Category { + constructor(category, url, children) { + super(category.name, category.genreId, category.artwork, category.ageBandId, children); + this.shortName = this.name; + this.longName = this.name; + this.url = url; + } +} +/** + * Shared "Top Charts" view-model + * + * @see {@linkcode TopChartsPage} for when "Top Charts" should be rendered as a page + * @see {@linkcode ChartsHubChart} for when a "chart" exists on a page with other "charts" + */ +export class TopChartsPage extends models.Model { + constructor(genreId, ageBandId, title, segments, categoriesButtonTitle, categories) { + super(); + this.genreId = genreId; + this.ageBandId = ageBandId; + this.title = title; + this.segments = segments; + this.categoriesButtonTitle = categoriesButtonTitle; + this.categories = categories; + this.initialSegmentIndex = 0; + } +} +/** + * A single chart within a {@linkcode ChartsHubPage} + */ +export class ChartsHubChart extends TopChartsPage { +} +/** + * View-model for the "Charts Hub" page + * + * This is used by the "web" client to power the charts overview, which includes + * multiple charts in the same view + */ +export class ChartsHubPage extends models.Model { + constructor(charts) { + super(); + this.charts = charts; + } +} +//# sourceMappingURL=top-charts.js.map
\ No newline at end of file diff --git a/node_modules/@jet-app/app-store/tmp/src/api/models/uber.js b/node_modules/@jet-app/app-store/tmp/src/api/models/uber.js new file mode 100644 index 0000000..1fd7d78 --- /dev/null +++ b/node_modules/@jet-app/app-store/tmp/src/api/models/uber.js @@ -0,0 +1,19 @@ +import * as base from "./base"; +/** @public */ +export class Uber extends base.Model { + constructor(style) { + super(); + this.style = style; + } + isValidUber(isTV, isVision) { + function isDefinedNonNullNonEmpty(object) { + return object !== undefined && object !== null && Object.keys(object).length !== 0; + } + return (isDefinedNonNullNonEmpty(this.artwork) || + isDefinedNonNullNonEmpty(this.compactArtwork) || + isDefinedNonNullNonEmpty(this.video) || + isDefinedNonNullNonEmpty(this.compactVideo) || + ((isTV || isVision) && isDefinedNonNullNonEmpty(this.iconArtwork))); + } +} +//# sourceMappingURL=uber.js.map
\ No newline at end of file diff --git a/node_modules/@jet-app/app-store/tmp/src/api/models/web-renderable-page.js b/node_modules/@jet-app/app-store/tmp/src/api/models/web-renderable-page.js new file mode 100644 index 0000000..67be95f --- /dev/null +++ b/node_modules/@jet-app/app-store/tmp/src/api/models/web-renderable-page.js @@ -0,0 +1,4 @@ +export function injectSEOData(page, seoData) { + page.seoData = seoData; +} +//# sourceMappingURL=web-renderable-page.js.map
\ No newline at end of file diff --git a/node_modules/@jet-app/app-store/tmp/src/api/typings/constants.js b/node_modules/@jet-app/app-store/tmp/src/api/typings/constants.js new file mode 100644 index 0000000..7c04c8c --- /dev/null +++ b/node_modules/@jet-app/app-store/tmp/src/api/typings/constants.js @@ -0,0 +1,21 @@ +import { makeMetatype } from "@jet/environment/util/metatype"; +export const storeMetrics = makeMetatype("app-store:storeMetrics"); +export const amsEngagement = makeMetatype("app-store:amsEngagement"); +export const device = makeMetatype("app-store:device"); +export const user = makeMetatype("app-store:user"); +export const player = makeMetatype("games:player"); +export const metricsIdentifiers = makeMetatype("app-store:metricsIdentifiers"); +export const arcade = makeMetatype("app-store:arcade"); +export const gameCenter = makeMetatype("app-store:gameCenter"); +export const resilientDeepLinks = makeMetatype("app-store:resilientDeepLinks"); +export const ads = makeMetatype("app-store:ads"); +export const onDeviceRecommendationsManager = makeMetatype("app-store:onDeviceRecommendationsManager"); +export const onDeviceSearchHistoryManager = makeMetatype("app-store:onDeviceSearchHistoryManager"); +export const featureFlags = makeMetatype("app-store:featureFlags"); +export const mediaToken = makeMetatype("app-store:mediaTokenService"); +export const adsLocalizer = makeMetatype("app-store:adsLocalizer"); +export const appDistribution = makeMetatype("app-store:appDistribution"); +export const timeoutManager = makeMetatype("app-store:timeoutManager"); +export const treatmentStore = makeMetatype("app-store:treatmentStore"); +export const userDefaults = makeMetatype("app-store:userDefaults"); +//# sourceMappingURL=constants.js.map
\ No newline at end of file diff --git a/node_modules/@jet-app/app-store/tmp/src/api/util.js b/node_modules/@jet-app/app-store/tmp/src/api/util.js new file mode 100644 index 0000000..a6d199c --- /dev/null +++ b/node_modules/@jet-app/app-store/tmp/src/api/util.js @@ -0,0 +1,16 @@ +/** + * Ensures that Adam IDs are always represented with the same format + * + * "ID" segments in a URL typically include an `id` prefix that should + * not be present when using the value as an identifier for a resource + * in the Media APi. + * + * This function strips the prefix if present + */ +export function normalizeAdamID(raw) { + if (raw.startsWith("id")) { + return raw.substring(2); + } + return raw; +} +//# sourceMappingURL=util.js.map
\ No newline at end of file |
