UNPKG

3.67 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3/**
4 * Copyright (c) Microsoft Corporation. All rights reserved.
5 * Licensed under the MIT License.
6 */
7const models = require("@conversationlearner/models");
8/**
9 * Given an app definition return an updated app definition.
10 * If no updates are performed, return undefined.
11 */
12function default_1(appDefinition, callbackMap) {
13 let isChanged = false;
14 const appDefinitionChanges = {
15 actions: appDefinition.actions.map(a => getActionChangeResult(a, callbackMap)),
16 entities: appDefinition.entities.map(getDefaultChangeResult),
17 trainDialogs: appDefinition.trainDialogs.map(getDefaultChangeResult)
18 };
19 const actionsChanged = appDefinitionChanges.actions.some(cr => cr.isChanged);
20 isChanged = isChanged || actionsChanged;
21 return isChanged
22 ? {
23 isChanged: true,
24 currentAppDefinition: appDefinition,
25 updatedAppDefinition: {
26 actions: appDefinitionChanges.actions.map(cr => cr.value),
27 entities: appDefinitionChanges.entities.map(cr => cr.value),
28 trainDialogs: appDefinitionChanges.trainDialogs.map(cr => cr.value)
29 },
30 appDefinitionChanges
31 }
32 : {
33 isChanged: false,
34 currentAppDefinition: appDefinition
35 };
36}
37exports.default = default_1;
38function getDefaultChangeResult(value) {
39 return {
40 isChanged: false,
41 value,
42 changes: []
43 };
44}
45exports.getDefaultChangeResult = getDefaultChangeResult;
46function getActionChangeResult(action, callbackMap) {
47 // By default no update is performed
48 const changeResult = {
49 isChanged: false,
50 value: action,
51 changes: []
52 };
53 if (action.actionType === models.ActionTypes.API_LOCAL) {
54 const untypedActionPayload = JSON.parse(action.payload);
55 if (Array.isArray(untypedActionPayload.arguments)) {
56 const legacyActionPayload = untypedActionPayload;
57 const callback = callbackMap[legacyActionPayload.payload];
58 const actionPayload = callback
59 ? getActionPayload(legacyActionPayload, callback)
60 : {
61 payload: legacyActionPayload.payload,
62 logicArguments: legacyActionPayload.arguments,
63 renderArguments: []
64 };
65 const updatedAction = Object.assign({}, action, { payload: JSON.stringify(actionPayload) });
66 changeResult.isChanged = true;
67 changeResult.value = updatedAction;
68 changeResult.changes.push(`Payload with old format using single array of arguments was updated to use the new form with separate logic and render arguments.`);
69 }
70 }
71 return changeResult;
72}
73exports.getActionChangeResult = getActionChangeResult;
74function getActionPayload(legacyActionPayload, callback) {
75 return legacyActionPayload.arguments.reduce((actionPayload, argument) => {
76 const isMovedToLogicArgument = callback.logicArguments.some(la => la === argument.parameter);
77 if (isMovedToLogicArgument) {
78 actionPayload.logicArguments.push(argument);
79 }
80 const isMovedToRenderArgument = callback.renderArguments.some(la => la === argument.parameter);
81 if (isMovedToRenderArgument) {
82 actionPayload.renderArguments.push(argument);
83 }
84 return actionPayload;
85 }, {
86 payload: legacyActionPayload.payload,
87 logicArguments: [],
88 renderArguments: []
89 });
90}
91exports.getActionPayload = getActionPayload;
92//# sourceMappingURL=upgrade.js.map
\No newline at end of file