ask-cli-x
Version:
Alexa Skills Kit (ASK) Command Line Interfaces
124 lines (123 loc) • 4.86 kB
JavaScript
;
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;