@miso.ai/client-sdk-ui 1.13.2-beta.1 → 1.14.0-beta.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/asset/svgs.js +17 -4
- package/dist/cjs/combo/ask/index.js +2 -2
- package/dist/cjs/constants.js +120 -98
- package/dist/cjs/defaults/ask/controls.js +1 -1
- package/dist/cjs/defaults/hybrid-search/answer-box.js +4 -4
- package/dist/cjs/defaults.js +259 -0
- package/dist/cjs/element/container/index.js +28 -0
- package/dist/cjs/element/container/miso-ask.js +3 -3
- package/dist/cjs/element/container/miso-conversation.js +21 -0
- package/dist/cjs/element/container/miso-explore.js +1 -1
- package/dist/cjs/element/container/miso-history.js +21 -0
- package/dist/cjs/element/container/miso-hybrid-search.js +1 -1
- package/dist/cjs/element/container/miso-message-item.js +91 -0
- package/dist/cjs/element/container/miso-recommendation.js +1 -1
- package/dist/cjs/element/container/miso-search.js +1 -1
- package/dist/cjs/element/container/miso-thread-item.js +91 -0
- package/dist/cjs/element/context/miso-follow-ups.js +1 -1
- package/dist/cjs/element/role/index.js +49 -0
- package/dist/cjs/element/role/miso-delete.js +20 -0
- package/dist/cjs/element/role/miso-messages.js +20 -0
- package/dist/cjs/element/role/miso-new-thread.js +20 -0
- package/dist/cjs/element/role/miso-rename.js +20 -0
- package/dist/cjs/element/role/miso-subscription.js +20 -0
- package/dist/cjs/element/role/miso-threads.js +20 -0
- package/dist/cjs/element/role/miso-title.js +20 -0
- package/dist/cjs/layout/affiliation/affiliation.js +1 -1
- package/dist/cjs/layout/banner/banner.js +2 -1
- package/dist/cjs/layout/button/button.js +170 -0
- package/dist/cjs/layout/button/checkbox.js +116 -0
- package/dist/cjs/layout/button/more-button.js +3 -3
- package/dist/cjs/layout/container/container.js +1 -1
- package/dist/cjs/layout/container/item-container.js +99 -0
- package/dist/cjs/layout/error/error.js +2 -1
- package/dist/cjs/layout/index.js +42 -0
- package/dist/cjs/layout/input/facets.js +4 -3
- package/dist/cjs/layout/input/option-list.js +3 -2
- package/dist/cjs/layout/input/search-box.js +50 -12
- package/dist/cjs/layout/input/select.js +2 -1
- package/dist/cjs/layout/list/cards.js +2 -1
- package/dist/cjs/layout/list/carousel.js +2 -1
- package/dist/cjs/layout/list/collection.js +13 -1
- package/dist/cjs/layout/list/gallery.js +2 -1
- package/dist/cjs/layout/list/horizontal.js +2 -1
- package/dist/cjs/layout/list/list.js +2 -1
- package/dist/cjs/layout/list/messages.js +359 -0
- package/dist/cjs/layout/list/threads.js +199 -0
- package/dist/cjs/layout/mixin/trackable.js +4 -5
- package/dist/cjs/layout/mixin/triggerable.js +2 -2
- package/dist/cjs/layout/radio/feedback.js +4 -3
- package/dist/cjs/layout/templates.js +97 -0
- package/dist/cjs/layout/text/question.js +71 -0
- package/dist/cjs/layout/text/text.js +2 -1
- package/dist/cjs/layout/text/typewriter/index.js +18 -23
- package/dist/cjs/plugin.js +43 -104
- package/dist/cjs/util/confirm.js +33 -0
- package/dist/cjs/util/dom.js +21 -0
- package/dist/cjs/util/modal.js +48 -0
- package/dist/cjs/util/prompt.js +47 -0
- package/dist/cjs/version.js +1 -1
- package/package.json +5 -4
- package/src/CLAUDE.md +51 -104
- package/src/asset/svgs.js +16 -3
- package/src/combo/ask/index.js +2 -2
- package/src/constants.js +39 -147
- package/src/defaults/ask/controls.js +1 -1
- package/src/defaults/hybrid-search/answer-box.js +2 -2
- package/src/defaults.js +174 -0
- package/src/element/container/index.js +4 -0
- package/src/element/container/miso-ask.js +3 -3
- package/src/element/container/miso-conversation.js +19 -0
- package/src/element/container/miso-explore.js +1 -1
- package/src/element/container/miso-history.js +19 -0
- package/src/element/container/miso-hybrid-search.js +1 -1
- package/src/element/container/miso-message-item.js +94 -0
- package/src/element/container/miso-recommendation.js +1 -1
- package/src/element/container/miso-search.js +1 -1
- package/src/element/container/miso-thread-item.js +94 -0
- package/src/element/context/miso-follow-ups.js +1 -1
- package/src/element/role/index.js +7 -0
- package/src/element/role/miso-delete.js +16 -0
- package/src/element/role/miso-messages.js +16 -0
- package/src/element/role/miso-new-thread.js +16 -0
- package/src/element/role/miso-rename.js +16 -0
- package/src/element/role/miso-subscription.js +16 -0
- package/src/element/role/miso-threads.js +16 -0
- package/src/element/role/miso-title.js +16 -0
- package/src/layout/affiliation/affiliation.js +2 -2
- package/src/layout/banner/banner.js +2 -1
- package/src/layout/button/button.js +152 -0
- package/src/layout/button/checkbox.js +92 -0
- package/src/layout/button/more-button.js +3 -3
- package/src/layout/container/container.js +2 -2
- package/src/layout/container/item-container.js +99 -0
- package/src/layout/error/error.js +2 -1
- package/src/layout/index.js +6 -0
- package/src/layout/input/facets.js +3 -2
- package/src/layout/input/option-list.js +3 -2
- package/src/layout/input/search-box.js +45 -8
- package/src/layout/input/select.js +2 -1
- package/src/layout/list/cards.js +2 -1
- package/src/layout/list/carousel.js +2 -1
- package/src/layout/list/collection.js +15 -2
- package/src/layout/list/gallery.js +2 -1
- package/src/layout/list/horizontal.js +2 -1
- package/src/layout/list/list.js +2 -1
- package/src/layout/list/messages.js +316 -0
- package/src/layout/list/threads.js +166 -0
- package/src/layout/mixin/trackable.js +2 -3
- package/src/layout/mixin/triggerable.js +1 -1
- package/src/layout/radio/feedback.js +3 -2
- package/src/layout/templates.js +97 -0
- package/src/layout/text/question.js +58 -0
- package/src/layout/text/text.js +2 -1
- package/src/layout/text/typewriter/index.js +15 -18
- package/src/plugin.js +31 -117
- package/src/util/confirm.js +28 -0
- package/src/util/dom.js +16 -0
- package/src/util/modal.js +49 -0
- package/src/util/prompt.js +42 -0
- package/src/version.js +1 -1
- package/dist/cjs/actor/data.js +0 -132
- package/dist/cjs/actor/feedback.js +0 -29
- package/dist/cjs/actor/fields.js +0 -57
- package/dist/cjs/actor/filters.js +0 -161
- package/dist/cjs/actor/hub.js +0 -57
- package/dist/cjs/actor/index.js +0 -73
- package/dist/cjs/actor/interactions.js +0 -36
- package/dist/cjs/actor/sessions.js +0 -25
- package/dist/cjs/actor/tracker-states.js +0 -61
- package/dist/cjs/actor/tracker.js +0 -109
- package/dist/cjs/actor/trackers.js +0 -52
- package/dist/cjs/actor/utils.js +0 -15
- package/dist/cjs/actor/view.js +0 -294
- package/dist/cjs/actor/views.js +0 -209
- package/dist/cjs/source.js +0 -27
- package/dist/cjs/util/proxy.js +0 -88
- package/dist/cjs/util/trackers.js +0 -88
- package/dist/cjs/workflow/affiliations.js +0 -140
- package/dist/cjs/workflow/answer-based.js +0 -337
- package/dist/cjs/workflow/ask.js +0 -319
- package/dist/cjs/workflow/asks.js +0 -150
- package/dist/cjs/workflow/autocompletable.js +0 -63
- package/dist/cjs/workflow/autocomplete.js +0 -120
- package/dist/cjs/workflow/base.js +0 -418
- package/dist/cjs/workflow/context.js +0 -19
- package/dist/cjs/workflow/explore.js +0 -210
- package/dist/cjs/workflow/explores.js +0 -21
- package/dist/cjs/workflow/hybrid-search-answer.js +0 -88
- package/dist/cjs/workflow/hybrid-search-views.js +0 -109
- package/dist/cjs/workflow/hybrid-search.js +0 -213
- package/dist/cjs/workflow/index.js +0 -41
- package/dist/cjs/workflow/options/api.js +0 -41
- package/dist/cjs/workflow/options/auto-query.js +0 -97
- package/dist/cjs/workflow/options/configurable.js +0 -45
- package/dist/cjs/workflow/options/data-processor.js +0 -20
- package/dist/cjs/workflow/options/filters.js +0 -15
- package/dist/cjs/workflow/options/index.js +0 -126
- package/dist/cjs/workflow/options/interactions.js +0 -41
- package/dist/cjs/workflow/options/layouts.js +0 -79
- package/dist/cjs/workflow/options/options.js +0 -156
- package/dist/cjs/workflow/options/pagination.js +0 -25
- package/dist/cjs/workflow/options/roles.js +0 -15
- package/dist/cjs/workflow/options/templates.js +0 -30
- package/dist/cjs/workflow/options/trackers.js +0 -83
- package/dist/cjs/workflow/options/utils.js +0 -33
- package/dist/cjs/workflow/processors.js +0 -607
- package/dist/cjs/workflow/recommendation.js +0 -57
- package/dist/cjs/workflow/recommendations.js +0 -18
- package/dist/cjs/workflow/search-based.js +0 -337
- package/dist/cjs/workflow/search.js +0 -64
- package/dist/cjs/workflow/unit.js +0 -57
- package/dist/cjs/workflow/units.js +0 -42
- package/dist/cjs/workflow/use-link.js +0 -49
- package/src/actor/data.js +0 -106
- package/src/actor/feedback.js +0 -28
- package/src/actor/fields.js +0 -51
- package/src/actor/filters.js +0 -149
- package/src/actor/hub.js +0 -47
- package/src/actor/index.js +0 -10
- package/src/actor/interactions.js +0 -32
- package/src/actor/sessions.js +0 -21
- package/src/actor/tracker-states.js +0 -57
- package/src/actor/tracker.js +0 -104
- package/src/actor/trackers.js +0 -45
- package/src/actor/utils.js +0 -7
- package/src/actor/view.js +0 -272
- package/src/actor/views.js +0 -224
- package/src/source.js +0 -17
- package/src/util/proxy.js +0 -81
- package/src/util/trackers.js +0 -84
- package/src/workflow/affiliations.js +0 -121
- package/src/workflow/answer-based.js +0 -312
- package/src/workflow/ask.js +0 -284
- package/src/workflow/asks.js +0 -143
- package/src/workflow/autocompletable.js +0 -67
- package/src/workflow/autocomplete.js +0 -114
- package/src/workflow/base.js +0 -396
- package/src/workflow/context.js +0 -16
- package/src/workflow/explore.js +0 -194
- package/src/workflow/explores.js +0 -18
- package/src/workflow/hybrid-search-answer.js +0 -73
- package/src/workflow/hybrid-search-views.js +0 -116
- package/src/workflow/hybrid-search.js +0 -230
- package/src/workflow/index.js +0 -5
- package/src/workflow/options/api.js +0 -31
- package/src/workflow/options/auto-query.js +0 -70
- package/src/workflow/options/configurable.js +0 -48
- package/src/workflow/options/data-processor.js +0 -15
- package/src/workflow/options/filters.js +0 -10
- package/src/workflow/options/index.js +0 -11
- package/src/workflow/options/interactions.js +0 -36
- package/src/workflow/options/layouts.js +0 -73
- package/src/workflow/options/options.js +0 -175
- package/src/workflow/options/pagination.js +0 -18
- package/src/workflow/options/roles.js +0 -12
- package/src/workflow/options/templates.js +0 -27
- package/src/workflow/options/trackers.js +0 -80
- package/src/workflow/options/utils.js +0 -26
- package/src/workflow/processors.js +0 -490
- package/src/workflow/recommendation.js +0 -63
- package/src/workflow/recommendations.js +0 -14
- package/src/workflow/search-based.js +0 -329
- package/src/workflow/search.js +0 -73
- package/src/workflow/unit.js +0 -51
- package/src/workflow/units.js +0 -43
- package/src/workflow/use-link.js +0 -41
|
@@ -1,607 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.buildBaseInteraction = buildBaseInteraction;
|
|
7
|
-
exports.carryOverQuestionIdToData = carryOverQuestionIdToData;
|
|
8
|
-
exports.concatItemsFromMoreResponse = concatItemsFromMoreResponse;
|
|
9
|
-
exports.disableAnswerForNonQueryRequest = disableAnswerForNonQueryRequest;
|
|
10
|
-
exports.getRevision = getRevision;
|
|
11
|
-
exports.mappingAnswerData = mappingAnswerData;
|
|
12
|
-
exports.mappingFollowUpQuestionsData = mappingFollowUpQuestionsData;
|
|
13
|
-
exports.mappingReasoningData = mappingReasoningData;
|
|
14
|
-
exports.mappingSortData = mappingSortData;
|
|
15
|
-
exports.mappingSuggestionsData = mappingSuggestionsData;
|
|
16
|
-
exports.retainFacetCountsInData = retainFacetCountsInData;
|
|
17
|
-
exports.writeAffiliationInfoToInteraction = writeAffiliationInfoToInteraction;
|
|
18
|
-
exports.writeAnswerClickInfoToInteraction = writeAnswerClickInfoToInteraction;
|
|
19
|
-
exports.writeAnswerInfoToInteraction = writeAnswerInfoToInteraction;
|
|
20
|
-
exports.writeAnswerStageToMeta = writeAnswerStageToMeta;
|
|
21
|
-
exports.writeDataStatus = writeDataStatus;
|
|
22
|
-
exports.writeEventTargetToInteraction = writeEventTargetToInteraction;
|
|
23
|
-
exports.writeExhaustionToData = writeExhaustionToData;
|
|
24
|
-
exports.writeKeywordsToData = writeKeywordsToData;
|
|
25
|
-
exports.writeMisoIdAsRootMisoId = writeMisoIdAsRootMisoId;
|
|
26
|
-
exports.writeMisoIdFromSession = writeMisoIdFromSession;
|
|
27
|
-
exports.writeMisoIdToMeta = writeMisoIdToMeta;
|
|
28
|
-
exports.writeMisoIdToSession = writeMisoIdToSession;
|
|
29
|
-
exports.writeQuestionInfoToInteraction = writeQuestionInfoToInteraction;
|
|
30
|
-
exports.writeQuestionSourceToPayload = writeQuestionSourceToPayload;
|
|
31
|
-
exports.writeRequestFromPreviousData = writeRequestFromPreviousData;
|
|
32
|
-
exports.writeRequestInfoToInteraction = writeRequestInfoToInteraction;
|
|
33
|
-
exports.writeRequestMetadataToInteraction = writeRequestMetadataToInteraction;
|
|
34
|
-
exports.writeSessionInfoToInteraction = writeSessionInfoToInteraction;
|
|
35
|
-
exports.writeUnanswerableToMeta = writeUnanswerableToMeta;
|
|
36
|
-
var _commons = require("@miso.ai/commons");
|
|
37
|
-
var _constants = require("../constants.js");
|
|
38
|
-
var _index = require("../actor/index.js");
|
|
39
|
-
const _excluded = ["qs"],
|
|
40
|
-
_excluded2 = ["role", "type", "items"];
|
|
41
|
-
function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
|
|
42
|
-
// role mappings //
|
|
43
|
-
function mappingSortData(_, {
|
|
44
|
-
hub,
|
|
45
|
-
workflowOptions = {}
|
|
46
|
-
} = {}) {
|
|
47
|
-
const {
|
|
48
|
-
sort: {
|
|
49
|
-
options = []
|
|
50
|
-
} = {}
|
|
51
|
-
} = workflowOptions.filters || {};
|
|
52
|
-
if (!options.length) {
|
|
53
|
-
return [];
|
|
54
|
-
}
|
|
55
|
-
const {
|
|
56
|
-
sort
|
|
57
|
-
} = hub.states[_index.fields.filters()] || {};
|
|
58
|
-
const selectedField = sort && sort.field || findDefaultSortOption(options).field;
|
|
59
|
-
if (!selectedField) {
|
|
60
|
-
return options;
|
|
61
|
-
}
|
|
62
|
-
// mark selected
|
|
63
|
-
return options.map(option => {
|
|
64
|
-
return Object.assign({}, option, {
|
|
65
|
-
selected: option.field === selectedField
|
|
66
|
-
});
|
|
67
|
-
});
|
|
68
|
-
}
|
|
69
|
-
function findDefaultSortOption(options) {
|
|
70
|
-
for (const option of options) {
|
|
71
|
-
if (option.default) {
|
|
72
|
-
return option;
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
return options[0];
|
|
76
|
-
}
|
|
77
|
-
function mappingAnswerData(data) {
|
|
78
|
-
if (!data || !data.value) {
|
|
79
|
-
return undefined;
|
|
80
|
-
}
|
|
81
|
-
const {
|
|
82
|
-
answer = '',
|
|
83
|
-
answer_stage,
|
|
84
|
-
finished
|
|
85
|
-
} = data.value;
|
|
86
|
-
return Object.freeze({
|
|
87
|
-
value: answer,
|
|
88
|
-
stage: answer_stage,
|
|
89
|
-
finished: !!finished
|
|
90
|
-
});
|
|
91
|
-
}
|
|
92
|
-
function mappingReasoningData(data) {
|
|
93
|
-
if (!data || !data.value) {
|
|
94
|
-
return undefined;
|
|
95
|
-
}
|
|
96
|
-
const {
|
|
97
|
-
reasoning = '',
|
|
98
|
-
reasoning_finished
|
|
99
|
-
} = data.value;
|
|
100
|
-
return Object.freeze({
|
|
101
|
-
value: reasoning,
|
|
102
|
-
stage: 'reasoning',
|
|
103
|
-
finished: !!reasoning_finished
|
|
104
|
-
});
|
|
105
|
-
}
|
|
106
|
-
function mappingSuggestionsData(_, {
|
|
107
|
-
workflow
|
|
108
|
-
} = {}) {
|
|
109
|
-
const previous = workflow.previous;
|
|
110
|
-
const values = previous && previous.states[_index.fields.data()].value;
|
|
111
|
-
const value = values && (values.suggested_followup_questions || values.followup_questions || []);
|
|
112
|
-
return value && value.map(text => ({
|
|
113
|
-
text
|
|
114
|
-
}));
|
|
115
|
-
}
|
|
116
|
-
function mappingFollowUpQuestionsData(data) {
|
|
117
|
-
if (!data || !data.value) {
|
|
118
|
-
return undefined;
|
|
119
|
-
}
|
|
120
|
-
return (data.value.followup_questions || []).map(text => ({
|
|
121
|
-
text
|
|
122
|
-
}));
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
// payload //
|
|
126
|
-
function writeQuestionSourceToPayload(_ref = {}) {
|
|
127
|
-
let {
|
|
128
|
-
qs
|
|
129
|
-
} = _ref,
|
|
130
|
-
payload = _objectWithoutPropertiesLoose(_ref, _excluded);
|
|
131
|
-
return (0, _commons.mergeApiPayloads)(payload, {
|
|
132
|
-
metadata: {
|
|
133
|
-
question_source: qs || _constants.QUESTION_SOURCE.ORGANIC // might be null, not undefined
|
|
134
|
-
}
|
|
135
|
-
});
|
|
136
|
-
}
|
|
137
|
-
function disableAnswerForNonQueryRequest(payload, type) {
|
|
138
|
-
if (type === _constants.REQUEST_TYPE.QUERY) {
|
|
139
|
-
return payload;
|
|
140
|
-
}
|
|
141
|
-
return Object.assign({}, payload, {
|
|
142
|
-
answer: false
|
|
143
|
-
});
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
// data //
|
|
147
|
-
function getRevision(data) {
|
|
148
|
-
return data && data.value && data.value.revision;
|
|
149
|
-
}
|
|
150
|
-
function writeRequestFromPreviousData(data, oldData) {
|
|
151
|
-
// patch request in case user call updateData() without request object in custom data scenario
|
|
152
|
-
if (!data || !data.value || data.request || !oldData || !oldData.request) {
|
|
153
|
-
return data;
|
|
154
|
-
}
|
|
155
|
-
const {
|
|
156
|
-
request
|
|
157
|
-
} = oldData;
|
|
158
|
-
return Object.assign({}, data, {
|
|
159
|
-
request
|
|
160
|
-
});
|
|
161
|
-
}
|
|
162
|
-
function writeDataStatus(data) {
|
|
163
|
-
const status = getStatus(data);
|
|
164
|
-
const ongoing = status === _constants.STATUS.READY ? data.ongoing : undefined;
|
|
165
|
-
return (0, _commons.trimObj)(Object.assign({
|
|
166
|
-
status,
|
|
167
|
-
ongoing
|
|
168
|
-
}, data)); // let orinigal data override status and ongoing
|
|
169
|
-
}
|
|
170
|
-
function getStatus(data) {
|
|
171
|
-
if (!data) {
|
|
172
|
-
return _constants.STATUS.INITIAL;
|
|
173
|
-
}
|
|
174
|
-
const {
|
|
175
|
-
request,
|
|
176
|
-
error,
|
|
177
|
-
value
|
|
178
|
-
} = data;
|
|
179
|
-
return error ? _constants.STATUS.ERRONEOUS : value ? _constants.STATUS.READY : request ? _constants.STATUS.LOADING : _constants.STATUS.INITIAL;
|
|
180
|
-
}
|
|
181
|
-
function writeMisoIdToMeta(data) {
|
|
182
|
-
const {
|
|
183
|
-
value
|
|
184
|
-
} = data;
|
|
185
|
-
if (!value) {
|
|
186
|
-
return data;
|
|
187
|
-
}
|
|
188
|
-
const {
|
|
189
|
-
miso_id
|
|
190
|
-
} = value;
|
|
191
|
-
if (!miso_id) {
|
|
192
|
-
return data;
|
|
193
|
-
}
|
|
194
|
-
return Object.assign({}, data, {
|
|
195
|
-
meta: Object.assign({}, data.meta, {
|
|
196
|
-
miso_id
|
|
197
|
-
})
|
|
198
|
-
});
|
|
199
|
-
}
|
|
200
|
-
function writeMisoIdToSession(data) {
|
|
201
|
-
const {
|
|
202
|
-
session,
|
|
203
|
-
value
|
|
204
|
-
} = data;
|
|
205
|
-
if (!session || !value) {
|
|
206
|
-
return;
|
|
207
|
-
}
|
|
208
|
-
const {
|
|
209
|
-
miso_id
|
|
210
|
-
} = value;
|
|
211
|
-
if (!miso_id) {
|
|
212
|
-
return;
|
|
213
|
-
}
|
|
214
|
-
session.meta.miso_id = miso_id;
|
|
215
|
-
}
|
|
216
|
-
function writeMisoIdFromSession(data) {
|
|
217
|
-
const {
|
|
218
|
-
session,
|
|
219
|
-
value
|
|
220
|
-
} = data;
|
|
221
|
-
if (!session || !value) {
|
|
222
|
-
return data;
|
|
223
|
-
}
|
|
224
|
-
const {
|
|
225
|
-
meta: {
|
|
226
|
-
miso_id
|
|
227
|
-
} = {}
|
|
228
|
-
} = session;
|
|
229
|
-
if (!miso_id) {
|
|
230
|
-
return data;
|
|
231
|
-
}
|
|
232
|
-
return Object.assign({}, data, {
|
|
233
|
-
meta: Object.assign({}, data.meta, {
|
|
234
|
-
miso_id
|
|
235
|
-
})
|
|
236
|
-
});
|
|
237
|
-
}
|
|
238
|
-
function writeKeywordsToData(data) {
|
|
239
|
-
const {
|
|
240
|
-
request,
|
|
241
|
-
value
|
|
242
|
-
} = data;
|
|
243
|
-
// we still want the value in loading status
|
|
244
|
-
if (!request) {
|
|
245
|
-
return data;
|
|
246
|
-
}
|
|
247
|
-
const {
|
|
248
|
-
payload
|
|
249
|
-
} = request || {};
|
|
250
|
-
const {
|
|
251
|
-
q: keywords
|
|
252
|
-
} = payload || {};
|
|
253
|
-
if (!keywords) {
|
|
254
|
-
return data;
|
|
255
|
-
}
|
|
256
|
-
return Object.assign({}, data, {
|
|
257
|
-
value: Object.assign({}, value, {
|
|
258
|
-
keywords
|
|
259
|
-
})
|
|
260
|
-
});
|
|
261
|
-
}
|
|
262
|
-
function writeAnswerStageToMeta(data) {
|
|
263
|
-
const {
|
|
264
|
-
value
|
|
265
|
-
} = data;
|
|
266
|
-
if (!value) {
|
|
267
|
-
return data;
|
|
268
|
-
}
|
|
269
|
-
const {
|
|
270
|
-
answer_stage
|
|
271
|
-
} = value;
|
|
272
|
-
if (!answer_stage) {
|
|
273
|
-
return data;
|
|
274
|
-
}
|
|
275
|
-
// 1. put answer_stage to meta
|
|
276
|
-
// 2. mark ongoing flag
|
|
277
|
-
return Object.assign({}, data, {
|
|
278
|
-
ongoing: !value.finished,
|
|
279
|
-
meta: Object.assign({}, data.meta, {
|
|
280
|
-
answer_stage
|
|
281
|
-
})
|
|
282
|
-
});
|
|
283
|
-
}
|
|
284
|
-
function retainFacetCountsInData(data, currentFacetCounts) {
|
|
285
|
-
if (!currentFacetCounts) {
|
|
286
|
-
return data;
|
|
287
|
-
}
|
|
288
|
-
const {
|
|
289
|
-
status,
|
|
290
|
-
value
|
|
291
|
-
} = data;
|
|
292
|
-
switch (status) {
|
|
293
|
-
case _constants.STATUS.INITIAL:
|
|
294
|
-
case _constants.STATUS.LOADING:
|
|
295
|
-
break;
|
|
296
|
-
default:
|
|
297
|
-
return data;
|
|
298
|
-
}
|
|
299
|
-
if (value && value.facet_counts) {
|
|
300
|
-
return data;
|
|
301
|
-
}
|
|
302
|
-
return Object.assign({}, data, {
|
|
303
|
-
value: Object.assign({}, value, {
|
|
304
|
-
facet_counts: currentFacetCounts
|
|
305
|
-
})
|
|
306
|
-
});
|
|
307
|
-
}
|
|
308
|
-
function writeMisoIdAsRootMisoId(data) {
|
|
309
|
-
const {
|
|
310
|
-
value
|
|
311
|
-
} = data;
|
|
312
|
-
if (!value) {
|
|
313
|
-
return data;
|
|
314
|
-
}
|
|
315
|
-
const {
|
|
316
|
-
miso_id
|
|
317
|
-
} = value;
|
|
318
|
-
if (!miso_id) {
|
|
319
|
-
return data;
|
|
320
|
-
}
|
|
321
|
-
return Object.assign({}, data, {
|
|
322
|
-
value: Object.assign({}, value, {
|
|
323
|
-
root_miso_id: miso_id
|
|
324
|
-
})
|
|
325
|
-
});
|
|
326
|
-
}
|
|
327
|
-
function concatItemsFromMoreResponse(oldData, newData, {
|
|
328
|
-
role = _constants.ROLE.PRODUCTS
|
|
329
|
-
} = {}) {
|
|
330
|
-
if (!newData.value) {
|
|
331
|
-
return oldData;
|
|
332
|
-
}
|
|
333
|
-
const {
|
|
334
|
-
[role]: oldProducts = [],
|
|
335
|
-
facet_counts,
|
|
336
|
-
total,
|
|
337
|
-
root_miso_id
|
|
338
|
-
} = oldData.value;
|
|
339
|
-
const {
|
|
340
|
-
[role]: newProducts = []
|
|
341
|
-
} = newData.value;
|
|
342
|
-
// keep old exhaustion flag, just in case
|
|
343
|
-
// TODO
|
|
344
|
-
|
|
345
|
-
// use old values of facet_counts and total, for they are affected by product_id exclusion
|
|
346
|
-
return Object.assign({}, newData, {
|
|
347
|
-
value: Object.assign({}, newData.value, {
|
|
348
|
-
facet_counts,
|
|
349
|
-
total,
|
|
350
|
-
root_miso_id,
|
|
351
|
-
[role]: [...oldProducts, ...newProducts]
|
|
352
|
-
})
|
|
353
|
-
});
|
|
354
|
-
}
|
|
355
|
-
function writeExhaustionToData(data, {
|
|
356
|
-
role = _constants.ROLE.PRODUCTS
|
|
357
|
-
} = {}) {
|
|
358
|
-
const {
|
|
359
|
-
status,
|
|
360
|
-
request,
|
|
361
|
-
value
|
|
362
|
-
} = data;
|
|
363
|
-
// keep track of the exhaustion state
|
|
364
|
-
if (status !== _constants.STATUS.READY || !request || !value) {
|
|
365
|
-
return data;
|
|
366
|
-
}
|
|
367
|
-
const {
|
|
368
|
-
[role]: items
|
|
369
|
-
} = value;
|
|
370
|
-
if (!items) {
|
|
371
|
-
return data;
|
|
372
|
-
}
|
|
373
|
-
const {
|
|
374
|
-
rows
|
|
375
|
-
} = request.payload;
|
|
376
|
-
const {
|
|
377
|
-
length
|
|
378
|
-
} = items;
|
|
379
|
-
const exhausted = length < rows;
|
|
380
|
-
if (!exhausted) {
|
|
381
|
-
return data;
|
|
382
|
-
}
|
|
383
|
-
return Object.assign({}, data, {
|
|
384
|
-
meta: Object.assign({}, data.meta, {
|
|
385
|
-
exhausted: true
|
|
386
|
-
})
|
|
387
|
-
});
|
|
388
|
-
}
|
|
389
|
-
function carryOverQuestionIdToData(data, oldData) {
|
|
390
|
-
const {
|
|
391
|
-
question_id
|
|
392
|
-
} = oldData && oldData.value || {};
|
|
393
|
-
if (!question_id) {
|
|
394
|
-
return data;
|
|
395
|
-
}
|
|
396
|
-
return Object.assign({}, data, {
|
|
397
|
-
value: Object.assign({}, data.value, {
|
|
398
|
-
question_id
|
|
399
|
-
})
|
|
400
|
-
});
|
|
401
|
-
}
|
|
402
|
-
function writeUnanswerableToMeta(data) {
|
|
403
|
-
const {
|
|
404
|
-
value
|
|
405
|
-
} = data;
|
|
406
|
-
if (!value) {
|
|
407
|
-
return data;
|
|
408
|
-
}
|
|
409
|
-
if (!value.finished || value.finish_reason !== 'success' || value.sources && value.sources.length > 0) {
|
|
410
|
-
return data;
|
|
411
|
-
}
|
|
412
|
-
return Object.assign({}, data, {
|
|
413
|
-
meta: Object.assign({}, data.meta, {
|
|
414
|
-
unanswerable: true
|
|
415
|
-
})
|
|
416
|
-
});
|
|
417
|
-
}
|
|
418
|
-
|
|
419
|
-
// interactions //
|
|
420
|
-
function buildBaseInteraction(args) {
|
|
421
|
-
const {
|
|
422
|
-
role,
|
|
423
|
-
type,
|
|
424
|
-
items
|
|
425
|
-
} = args,
|
|
426
|
-
rest = _objectWithoutPropertiesLoose(args, _excluded2);
|
|
427
|
-
const payload = {
|
|
428
|
-
type: type === 'viewable' ? 'viewable_impression' : type,
|
|
429
|
-
context: {
|
|
430
|
-
custom_context: (0, _commons.trimObj)({
|
|
431
|
-
property: role
|
|
432
|
-
})
|
|
433
|
-
}
|
|
434
|
-
};
|
|
435
|
-
if ((0, _constants.isPerformanceEventType)(type)) {
|
|
436
|
-
if (areProducts(role, items)) {
|
|
437
|
-
payload.product_ids = (items || []).map(v => typeof v === 'string' ? v : v.product_id).filter(v => v);
|
|
438
|
-
} else {
|
|
439
|
-
payload.product_ids = [];
|
|
440
|
-
payload.context.custom_context.items = (items || []).map(v => v.text || v.id || v);
|
|
441
|
-
}
|
|
442
|
-
}
|
|
443
|
-
switch (type) {
|
|
444
|
-
case _constants.EVENT_TYPE.SUBMIT:
|
|
445
|
-
payload.context.custom_context.value = args.value;
|
|
446
|
-
break;
|
|
447
|
-
case _constants.EVENT_TYPE.FEEDBACK:
|
|
448
|
-
payload.context.custom_context.value = payload.value = args.value;
|
|
449
|
-
payload.context.custom_context.result_type = payload.result_type = args.result_type;
|
|
450
|
-
break;
|
|
451
|
-
case _constants.EVENT_TYPE.HEARTBEAT:
|
|
452
|
-
payload.type = 'custom';
|
|
453
|
-
payload.custom_action_name = 'heartbeat';
|
|
454
|
-
break;
|
|
455
|
-
case _constants.EVENT_TYPE.GENERIC_CLICK:
|
|
456
|
-
payload.type = 'custom';
|
|
457
|
-
payload.custom_action_name = 'generic_click';
|
|
458
|
-
payload.context.custom_context.href = args.href;
|
|
459
|
-
break;
|
|
460
|
-
}
|
|
461
|
-
return (0, _commons.trimObj)(payload);
|
|
462
|
-
}
|
|
463
|
-
function areProducts(role, items = []) {
|
|
464
|
-
return (0, _constants.isProductRole)(role) || items.length > 0 && typeof items[0] === 'object' && items[0].product_id;
|
|
465
|
-
}
|
|
466
|
-
function writeSessionInfoToInteraction(payload, args) {
|
|
467
|
-
const {
|
|
468
|
-
session
|
|
469
|
-
} = args && args.data || {};
|
|
470
|
-
if (!session) {
|
|
471
|
-
return payload;
|
|
472
|
-
}
|
|
473
|
-
const now = args.now || Date.now();
|
|
474
|
-
return (0, _commons.mergeInteractions)(payload, {
|
|
475
|
-
context: {
|
|
476
|
-
custom_context: {
|
|
477
|
-
session_id: session.uuid,
|
|
478
|
-
session_elapsed: now - session.startAt,
|
|
479
|
-
session_request_elapsed: session.meta.requestAt ? now - session.meta.requestAt : undefined
|
|
480
|
-
}
|
|
481
|
-
}
|
|
482
|
-
});
|
|
483
|
-
}
|
|
484
|
-
function writeRequestMetadataToInteraction(payload, args) {
|
|
485
|
-
const {
|
|
486
|
-
data
|
|
487
|
-
} = args;
|
|
488
|
-
if (!data) {
|
|
489
|
-
return payload;
|
|
490
|
-
}
|
|
491
|
-
const metadata = data.request && data.request.payload && data.request.payload.metadata;
|
|
492
|
-
if (!metadata) {
|
|
493
|
-
return payload;
|
|
494
|
-
}
|
|
495
|
-
return (0, _commons.mergeInteractions)(payload, {
|
|
496
|
-
context: {
|
|
497
|
-
custom_context: metadata
|
|
498
|
-
}
|
|
499
|
-
});
|
|
500
|
-
}
|
|
501
|
-
function writeRequestInfoToInteraction(payload, args) {
|
|
502
|
-
const {
|
|
503
|
-
data
|
|
504
|
-
} = args;
|
|
505
|
-
if (!data) {
|
|
506
|
-
return payload;
|
|
507
|
-
}
|
|
508
|
-
const requestPayload = data.request && data.request.payload;
|
|
509
|
-
if (!requestPayload) {
|
|
510
|
-
return payload;
|
|
511
|
-
}
|
|
512
|
-
const {
|
|
513
|
-
question,
|
|
514
|
-
q,
|
|
515
|
-
fq
|
|
516
|
-
} = requestPayload;
|
|
517
|
-
return (0, _commons.mergeInteractions)(payload, {
|
|
518
|
-
context: {
|
|
519
|
-
custom_context: {
|
|
520
|
-
question,
|
|
521
|
-
q,
|
|
522
|
-
fq
|
|
523
|
-
}
|
|
524
|
-
}
|
|
525
|
-
});
|
|
526
|
-
}
|
|
527
|
-
function writeAffiliationInfoToInteraction(payload, args) {
|
|
528
|
-
if (args.role !== _constants.ROLE.AFFILIATION) {
|
|
529
|
-
return payload;
|
|
530
|
-
}
|
|
531
|
-
const {
|
|
532
|
-
items
|
|
533
|
-
} = args;
|
|
534
|
-
const channel = items[0] && items[0].channel || undefined;
|
|
535
|
-
const positions = items.map(v => v.position);
|
|
536
|
-
return (0, _commons.mergeInteractions)(payload, {
|
|
537
|
-
context: {
|
|
538
|
-
custom_context: {
|
|
539
|
-
channel,
|
|
540
|
-
positions
|
|
541
|
-
}
|
|
542
|
-
}
|
|
543
|
-
});
|
|
544
|
-
}
|
|
545
|
-
function writeAnswerInfoToInteraction(payload, args) {
|
|
546
|
-
payload = writeQuestionInfoToInteraction(payload, args);
|
|
547
|
-
payload = writeAnswerClickInfoToInteraction(payload, args);
|
|
548
|
-
payload = writeEventTargetToInteraction(payload, args);
|
|
549
|
-
return payload;
|
|
550
|
-
}
|
|
551
|
-
function writeQuestionInfoToInteraction(payload = {}, {
|
|
552
|
-
data
|
|
553
|
-
} = {}) {
|
|
554
|
-
if (!data) {
|
|
555
|
-
return payload;
|
|
556
|
-
}
|
|
557
|
-
const {
|
|
558
|
-
request = {},
|
|
559
|
-
value = {}
|
|
560
|
-
} = data;
|
|
561
|
-
const {
|
|
562
|
-
question_source
|
|
563
|
-
} = request.payload && request.payload.metadata || {};
|
|
564
|
-
const {
|
|
565
|
-
question_id
|
|
566
|
-
} = value;
|
|
567
|
-
return (0, _commons.mergeInteractions)(payload, {
|
|
568
|
-
context: {
|
|
569
|
-
custom_context: {
|
|
570
|
-
question_source,
|
|
571
|
-
question_id
|
|
572
|
-
}
|
|
573
|
-
}
|
|
574
|
-
});
|
|
575
|
-
}
|
|
576
|
-
function writeAnswerClickInfoToInteraction(payload, args) {
|
|
577
|
-
if (args.role !== _constants.ROLE.ANSWER) {
|
|
578
|
-
return payload;
|
|
579
|
-
}
|
|
580
|
-
const {
|
|
581
|
-
items = []
|
|
582
|
-
} = args;
|
|
583
|
-
return (0, _commons.mergeInteractions)(payload, {
|
|
584
|
-
context: {
|
|
585
|
-
custom_context: {
|
|
586
|
-
urls: items.map(item => item.url),
|
|
587
|
-
texts: items.map(item => item.text),
|
|
588
|
-
class_names: items.map(item => item.className),
|
|
589
|
-
attributes: items.map(item => item.attributes)
|
|
590
|
-
}
|
|
591
|
-
}
|
|
592
|
-
});
|
|
593
|
-
}
|
|
594
|
-
function writeEventTargetToInteraction(payload, {
|
|
595
|
-
event_target
|
|
596
|
-
} = {}) {
|
|
597
|
-
if (!event_target) {
|
|
598
|
-
return payload;
|
|
599
|
-
}
|
|
600
|
-
return (0, _commons.mergeInteractions)(payload, {
|
|
601
|
-
context: {
|
|
602
|
-
custom_context: {
|
|
603
|
-
event_target
|
|
604
|
-
}
|
|
605
|
-
}
|
|
606
|
-
});
|
|
607
|
-
}
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = void 0;
|
|
7
|
-
var _commons = require("@miso.ai/commons");
|
|
8
|
-
var _unit = _interopRequireDefault(require("./unit.js"));
|
|
9
|
-
var _index = require("../layout/index.js");
|
|
10
|
-
var _constants = require("../constants.js");
|
|
11
|
-
var _index2 = require("./options/index.js");
|
|
12
|
-
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
13
|
-
const DEFAULT_API_OPTIONS = Object.freeze(Object.assign({}, _unit.default.DEFAULT_API_OPTIONS, {
|
|
14
|
-
group: _commons.API.GROUP.RECOMMENDATION,
|
|
15
|
-
name: _commons.API.NAME.USER_TO_PRODUCTS,
|
|
16
|
-
payload: Object.assign({}, _unit.default.DEFAULT_API_OPTIONS.payload, {
|
|
17
|
-
fl: ['*']
|
|
18
|
-
})
|
|
19
|
-
}));
|
|
20
|
-
const DEFAULT_LAYOUTS = Object.freeze(Object.assign({}, _unit.default.DEFAULT_LAYOUTS, {
|
|
21
|
-
[_constants.ROLE.PRODUCTS]: _index.ListLayout.type
|
|
22
|
-
}));
|
|
23
|
-
const DEFAULT_TRACKERS = Object.freeze(Object.assign({}, _unit.default.DEFAULT_TRACKERS, {
|
|
24
|
-
[_constants.ROLE.PRODUCTS]: _index2.DEFAULT_TRACKER_OPTIONS
|
|
25
|
-
}));
|
|
26
|
-
const DEFAULT_OPTIONS = Object.freeze(Object.assign({}, _unit.default.DEFAULT_OPTIONS, {
|
|
27
|
-
api: DEFAULT_API_OPTIONS,
|
|
28
|
-
layouts: DEFAULT_LAYOUTS,
|
|
29
|
-
trackers: DEFAULT_TRACKERS
|
|
30
|
-
}));
|
|
31
|
-
const ROLES_OPTIONS = (0, _index2.mergeRolesOptions)(_unit.default.ROLES_OPTIONS, {
|
|
32
|
-
main: _constants.ROLE.PRODUCTS,
|
|
33
|
-
members: Object.keys(DEFAULT_LAYOUTS)
|
|
34
|
-
});
|
|
35
|
-
class Recommendation extends _unit.default {
|
|
36
|
-
constructor(context, id) {
|
|
37
|
-
super({
|
|
38
|
-
name: 'recommendation',
|
|
39
|
-
context,
|
|
40
|
-
roles: ROLES_OPTIONS,
|
|
41
|
-
defaults: DEFAULT_OPTIONS,
|
|
42
|
-
id
|
|
43
|
-
});
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
// lifecycle //
|
|
47
|
-
start() {
|
|
48
|
-
// in recommendation workflow, start() triggers query
|
|
49
|
-
this._request();
|
|
50
|
-
return this;
|
|
51
|
-
}
|
|
52
|
-
notifyViewUpdate(role = _constants.ROLE.PRODUCTS, ...args) {
|
|
53
|
-
super.notifyViewUpdate(role, ...args);
|
|
54
|
-
return this;
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
exports.default = Recommendation;
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = void 0;
|
|
7
|
-
var _units = _interopRequireDefault(require("./units.js"));
|
|
8
|
-
var _recommendation = _interopRequireDefault(require("./recommendation.js"));
|
|
9
|
-
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
10
|
-
class Recommendations extends _units.default {
|
|
11
|
-
constructor(plugin, client) {
|
|
12
|
-
super('recommendations', plugin, client);
|
|
13
|
-
}
|
|
14
|
-
_create(unitId) {
|
|
15
|
-
return new _recommendation.default(this, unitId);
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
exports.default = Recommendations;
|