UNPKG

ask-cli-x

Version:

Alexa Skills Kit (ASK) Command Line Interfaces

124 lines (123 loc) 4.86 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.SkillStatus = exports.InteractionModel = exports.LastUpdateRequest = exports.BuildDetailStep = exports.BuildLocale = void 0; const constants_1 = require("../../lib/utils/constants"); const ramda_1 = require("ramda"); var BuildLocale; (function (BuildLocale) { BuildLocale["ar-SA"] = "ar-SA"; BuildLocale["de-DE"] = "de-DE"; BuildLocale["en-AU"] = "en-AU"; BuildLocale["en-CA"] = "en-CA"; BuildLocale["en-GB"] = "en-GB"; BuildLocale["en-IN"] = "en-IN"; BuildLocale["en-US"] = "en-US"; BuildLocale["es-ES"] = "es-ES"; BuildLocale["es-MX"] = "es-MX"; BuildLocale["es-US"] = "es-US"; BuildLocale["fr-CA"] = "fr-CA"; BuildLocale["fr-FR"] = "fr-FR"; BuildLocale["hi-IN"] = "hi-IN"; BuildLocale["it-IT"] = "it-IT"; BuildLocale["ja-JP"] = "ja-JP"; BuildLocale["pt-BR"] = "pt-BR"; })(BuildLocale = exports.BuildLocale || (exports.BuildLocale = {})); /** * Class to abstract Build Details for a specific Step from the SMAPI getSkillStatus API response JSON * */ class BuildDetailStep { /** * Constructs a BuildDetailStep object which holds the BuildDetails Step's BuildType and BuildStatus * @param {BuildType} buildType The specific BuildType for this BuildDetails Step * @param {BuildStatus} buildStatus The BuildStatus for this BuildDetails Step */ constructor(buildType, buildStatus) { this.buildType = buildType; this.buildStatus = buildStatus; this.isACBuildType = buildType === "ALEXA_CONVERSATIONS_QUICK_BUILD" || buildType === "ALEXA_CONVERSATIONS_FULL_BUILD"; } } exports.BuildDetailStep = BuildDetailStep; /** * Class to abstract the LastUpdateRequest from the SMAPI getSkillStatus API response JSON * lastUpdateRequest: { * status: 'SUCCEEDED|FAILED|IN_PROGRESS', * buildDetails: { * steps: [ * { * name: <BuildType>, * status: <BuildStatus> * } * ... * ] * } * } */ class LastUpdateRequest { /** * Constructor for building a LastUpdateRequest Object * @param {BuildLocale} locale The InteractionModel Locale for this LastUpdateRequest object * @param lastUpdateRequest the InteractionModel Locale JSON node of the SMAPI getSkillStatus API response */ constructor(locale, lastUpdateRequest) { this.locale = locale; const currentBuildStatus = (0, ramda_1.view)((0, ramda_1.lensPath)(["lastUpdateRequest", "status"]), lastUpdateRequest) || ""; this.overallBuildStatus = currentBuildStatus; const steps = (0, ramda_1.view)((0, ramda_1.lensPath)(["lastUpdateRequest", "buildDetails", "steps"]), lastUpdateRequest) || []; this.buildDetailSteps = {}; steps.forEach((step) => { const name = (0, ramda_1.view)((0, ramda_1.lensPath)(["name"]), step) || ""; const status = (0, ramda_1.view)((0, ramda_1.lensPath)(["status"]), step) || ""; this.buildDetailSteps[name] = new BuildDetailStep(name, status); }); } /** * Retrieves BuildDetailStep using the Build Type Name * @param {string} buildTypeName build type name * @returns {BuildDetailStep} */ getBuildDetailStep(buildTypeName) { return this.buildDetailSteps[buildTypeName]; } } exports.LastUpdateRequest = LastUpdateRequest; /** * Class to abstract the InteractionModel from the SMAPI getSkillStatus API response JSON * body: { * interactionModel: { * 'en-US': { * <LastUpdateRequest content> * } * <...all other skill locales> * } * } */ class InteractionModel { /** * Constructor function to instantiate an InteractionModel object * @param skillStatusResponse the SMAPI getSkillStatus API response JSON which has the top level "body" field */ constructor(skillStatusResponse) { const interactionModel = (0, ramda_1.view)((0, ramda_1.lensPath)(["body", constants_1.SKILL.RESOURCES.INTERACTION_MODEL]), skillStatusResponse) || {}; this.lastUpdateRequests = new Array(); Object.keys(interactionModel).forEach((key) => { const locale = key; this.lastUpdateRequests.push(new LastUpdateRequest(locale, interactionModel[key])); }); } } exports.InteractionModel = InteractionModel; /** * Top Level Skill Status object representing a SMAPI getSkillStatus API response */ class SkillStatus { /** * Constructor function to instantiate a SkillStatus object * @param skillStatusResponse the SMAPI getSkillStatus API response JSON which has the "body" field */ constructor(skillStatusResponse) { this.interactionModel = new InteractionModel(skillStatusResponse); } } exports.SkillStatus = SkillStatus;