@thoughtspot/visual-embed-sdk 1.24.0 → 1.24.1

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.
Files changed (253) hide show
  1. package/cjs/package.json +2 -3
  2. package/cjs/src/embed/app.d.ts +1 -0
  3. package/cjs/src/embed/app.d.ts.map +1 -1
  4. package/cjs/src/embed/app.js +1 -0
  5. package/cjs/src/embed/app.js.map +1 -1
  6. package/cjs/src/embed/base.d.ts +2 -0
  7. package/cjs/src/embed/base.d.ts.map +1 -1
  8. package/cjs/src/embed/base.js +2 -0
  9. package/cjs/src/embed/base.js.map +1 -1
  10. package/cjs/src/embed/liveboard.d.ts +1 -0
  11. package/cjs/src/embed/liveboard.d.ts.map +1 -1
  12. package/cjs/src/embed/liveboard.js +1 -0
  13. package/cjs/src/embed/liveboard.js.map +1 -1
  14. package/cjs/src/embed/sage.d.ts +1 -0
  15. package/cjs/src/embed/sage.d.ts.map +1 -1
  16. package/cjs/src/embed/sage.js +1 -0
  17. package/cjs/src/embed/sage.js.map +1 -1
  18. package/cjs/src/embed/search-bar.d.ts +1 -0
  19. package/cjs/src/embed/search-bar.d.ts.map +1 -1
  20. package/cjs/src/embed/search-bar.js +1 -0
  21. package/cjs/src/embed/search-bar.js.map +1 -1
  22. package/cjs/src/embed/search.d.ts +1 -0
  23. package/cjs/src/embed/search.d.ts.map +1 -1
  24. package/cjs/src/embed/search.js +1 -0
  25. package/cjs/src/embed/search.js.map +1 -1
  26. package/cjs/src/embed/ts-embed.d.ts +1 -0
  27. package/cjs/src/embed/ts-embed.d.ts.map +1 -1
  28. package/cjs/src/embed/ts-embed.js +3 -0
  29. package/cjs/src/embed/ts-embed.js.map +1 -1
  30. package/cjs/src/embed/ts-embed.spec.js +47 -0
  31. package/cjs/src/embed/ts-embed.spec.js.map +1 -1
  32. package/cjs/src/index.d.ts +3 -2
  33. package/cjs/src/index.d.ts.map +1 -1
  34. package/cjs/src/index.js +3 -1
  35. package/cjs/src/index.js.map +1 -1
  36. package/cjs/src/mixpanel-service.d.ts.map +1 -1
  37. package/cjs/src/mixpanel-service.js +2 -0
  38. package/cjs/src/mixpanel-service.js.map +1 -1
  39. package/cjs/src/mixpanel-service.spec.js +1 -0
  40. package/cjs/src/mixpanel-service.spec.js.map +1 -1
  41. package/cjs/src/types.d.ts +46 -18
  42. package/cjs/src/types.d.ts.map +1 -1
  43. package/cjs/src/types.js +7 -13
  44. package/cjs/src/types.js.map +1 -1
  45. package/cjs/src/utils/answerService/answerService.d.ts +34 -0
  46. package/cjs/src/utils/answerService/answerService.d.ts.map +1 -0
  47. package/cjs/src/utils/answerService/answerService.js +142 -0
  48. package/cjs/src/utils/answerService/answerService.js.map +1 -0
  49. package/cjs/src/utils/answerService/answerService.spec.d.ts +1 -0
  50. package/cjs/src/utils/answerService/answerService.spec.d.ts.map +1 -0
  51. package/cjs/src/utils/answerService/answerService.spec.js +1 -0
  52. package/cjs/src/utils/answerService/answerService.spec.js.map +1 -0
  53. package/cjs/src/utils/answerService/graphql-queries.d.ts +6 -0
  54. package/cjs/src/utils/answerService/graphql-queries.d.ts.map +1 -0
  55. package/cjs/src/utils/answerService/graphql-queries.js +123 -0
  56. package/cjs/src/utils/answerService/graphql-queries.js.map +1 -0
  57. package/cjs/src/utils/graphql/answerService/answer-queries.d.ts +5 -0
  58. package/cjs/src/utils/graphql/answerService/answer-queries.d.ts.map +1 -0
  59. package/cjs/src/utils/graphql/answerService/answer-queries.js +80 -0
  60. package/cjs/src/utils/graphql/answerService/answer-queries.js.map +1 -0
  61. package/cjs/src/utils/graphql/answerService/answerService.d.ts +61 -0
  62. package/cjs/src/utils/graphql/answerService/answerService.d.ts.map +1 -0
  63. package/cjs/src/utils/graphql/answerService/answerService.js +182 -0
  64. package/cjs/src/utils/graphql/answerService/answerService.js.map +1 -0
  65. package/cjs/src/utils/graphql/answerService/answerService.spec.d.ts +2 -0
  66. package/cjs/src/utils/graphql/answerService/answerService.spec.d.ts.map +1 -0
  67. package/cjs/src/utils/graphql/answerService/answerService.spec.js +201 -0
  68. package/cjs/src/utils/graphql/answerService/answerService.spec.js.map +1 -0
  69. package/cjs/src/utils/graphql/answerService/graphql-queries.d.ts +5 -0
  70. package/cjs/src/utils/graphql/answerService/graphql-queries.d.ts.map +1 -0
  71. package/cjs/src/utils/graphql/answerService/graphql-queries.js +80 -0
  72. package/cjs/src/utils/graphql/answerService/graphql-queries.js.map +1 -0
  73. package/cjs/src/utils/graphql/graphql-request.d.ts +15 -0
  74. package/cjs/src/utils/graphql/graphql-request.d.ts.map +1 -0
  75. package/cjs/src/utils/graphql/graphql-request.js +40 -0
  76. package/cjs/src/utils/graphql/graphql-request.js.map +1 -0
  77. package/cjs/src/utils/graphql/sourceService.d.ts +8 -0
  78. package/cjs/src/utils/graphql/sourceService.d.ts.map +1 -0
  79. package/cjs/src/utils/graphql/sourceService.js +69 -0
  80. package/cjs/src/utils/graphql/sourceService.js.map +1 -0
  81. package/cjs/src/utils/graphql/sourceService.spec.d.ts +2 -0
  82. package/cjs/src/utils/graphql/sourceService.spec.d.ts.map +1 -0
  83. package/cjs/src/utils/graphql/sourceService.spec.js +12 -0
  84. package/cjs/src/utils/graphql/sourceService.spec.js.map +1 -0
  85. package/cjs/src/utils/processData.d.ts.map +1 -1
  86. package/cjs/src/utils/processData.js +7 -11
  87. package/cjs/src/utils/processData.js.map +1 -1
  88. package/cjs/src/utils/processData.spec.js +13 -17
  89. package/cjs/src/utils/processData.spec.js.map +1 -1
  90. package/cjs/src/utils.d.ts +6 -0
  91. package/cjs/src/utils.d.ts.map +1 -1
  92. package/cjs/src/utils.js +26 -1
  93. package/cjs/src/utils.js.map +1 -1
  94. package/dist/src/embed/app.d.ts +1 -0
  95. package/dist/src/embed/app.d.ts.map +1 -1
  96. package/dist/src/embed/base.d.ts +2 -0
  97. package/dist/src/embed/base.d.ts.map +1 -1
  98. package/dist/src/embed/liveboard.d.ts +1 -0
  99. package/dist/src/embed/liveboard.d.ts.map +1 -1
  100. package/dist/src/embed/sage.d.ts +1 -0
  101. package/dist/src/embed/sage.d.ts.map +1 -1
  102. package/dist/src/embed/search-bar.d.ts +1 -0
  103. package/dist/src/embed/search-bar.d.ts.map +1 -1
  104. package/dist/src/embed/search.d.ts +1 -0
  105. package/dist/src/embed/search.d.ts.map +1 -1
  106. package/dist/src/embed/ts-embed.d.ts +1 -0
  107. package/dist/src/embed/ts-embed.d.ts.map +1 -1
  108. package/dist/src/index.d.ts +3 -2
  109. package/dist/src/index.d.ts.map +1 -1
  110. package/dist/src/mixpanel-service.d.ts.map +1 -1
  111. package/dist/src/types.d.ts +46 -18
  112. package/dist/src/types.d.ts.map +1 -1
  113. package/dist/src/utils/graphql/answerService/answer-queries.d.ts +5 -0
  114. package/dist/src/utils/graphql/answerService/answer-queries.d.ts.map +1 -0
  115. package/dist/src/utils/graphql/answerService/answerService.d.ts +61 -0
  116. package/dist/src/utils/graphql/answerService/answerService.d.ts.map +1 -0
  117. package/dist/src/utils/graphql/answerService/answerService.spec.d.ts +2 -0
  118. package/dist/src/utils/graphql/answerService/answerService.spec.d.ts.map +1 -0
  119. package/dist/src/utils/graphql/graphql-request.d.ts +15 -0
  120. package/dist/src/utils/graphql/graphql-request.d.ts.map +1 -0
  121. package/dist/src/utils/graphql/sourceService.d.ts +8 -0
  122. package/dist/src/utils/graphql/sourceService.d.ts.map +1 -0
  123. package/dist/src/utils/graphql/sourceService.spec.d.ts +2 -0
  124. package/dist/src/utils/graphql/sourceService.spec.d.ts.map +1 -0
  125. package/dist/src/utils/processData.d.ts.map +1 -1
  126. package/dist/src/utils.d.ts +6 -0
  127. package/dist/src/utils.d.ts.map +1 -1
  128. package/dist/tsembed-react.es.js +384 -68
  129. package/dist/tsembed-react.js +384 -68
  130. package/dist/tsembed.es.js +435 -72
  131. package/dist/tsembed.js +435 -71
  132. package/dist/visual-embed-sdk-react-full.d.ts +110 -19
  133. package/dist/visual-embed-sdk-react.d.ts +110 -19
  134. package/dist/visual-embed-sdk.d.ts +110 -19
  135. package/lib/package.json +2 -3
  136. package/lib/src/.index.d.ts.swp +0 -0
  137. package/lib/src/embed/app.d.ts +1 -0
  138. package/lib/src/embed/app.d.ts.map +1 -1
  139. package/lib/src/embed/app.js +1 -0
  140. package/lib/src/embed/app.js.map +1 -1
  141. package/lib/src/embed/base.d.ts +2 -0
  142. package/lib/src/embed/base.d.ts.map +1 -1
  143. package/lib/src/embed/base.js +2 -0
  144. package/lib/src/embed/base.js.map +1 -1
  145. package/lib/src/embed/liveboard.d.ts +1 -0
  146. package/lib/src/embed/liveboard.d.ts.map +1 -1
  147. package/lib/src/embed/liveboard.js +1 -0
  148. package/lib/src/embed/liveboard.js.map +1 -1
  149. package/lib/src/embed/sage.d.ts +1 -0
  150. package/lib/src/embed/sage.d.ts.map +1 -1
  151. package/lib/src/embed/sage.js +1 -0
  152. package/lib/src/embed/sage.js.map +1 -1
  153. package/lib/src/embed/search-bar.d.ts +1 -0
  154. package/lib/src/embed/search-bar.d.ts.map +1 -1
  155. package/lib/src/embed/search-bar.js +1 -0
  156. package/lib/src/embed/search-bar.js.map +1 -1
  157. package/lib/src/embed/search.d.ts +1 -0
  158. package/lib/src/embed/search.d.ts.map +1 -1
  159. package/lib/src/embed/search.js +1 -0
  160. package/lib/src/embed/search.js.map +1 -1
  161. package/lib/src/embed/ts-embed.d.ts +1 -0
  162. package/lib/src/embed/ts-embed.d.ts.map +1 -1
  163. package/lib/src/embed/ts-embed.js +3 -0
  164. package/lib/src/embed/ts-embed.js.map +1 -1
  165. package/lib/src/embed/ts-embed.spec.js +47 -0
  166. package/lib/src/embed/ts-embed.spec.js.map +1 -1
  167. package/lib/src/index.d.ts +3 -2
  168. package/lib/src/index.d.ts.map +1 -1
  169. package/lib/src/index.js +2 -1
  170. package/lib/src/index.js.map +1 -1
  171. package/lib/src/mixpanel-service.d.ts.map +1 -1
  172. package/lib/src/mixpanel-service.js +2 -0
  173. package/lib/src/mixpanel-service.js.map +1 -1
  174. package/lib/src/mixpanel-service.spec.js +1 -0
  175. package/lib/src/mixpanel-service.spec.js.map +1 -1
  176. package/lib/src/types.d.ts +46 -18
  177. package/lib/src/types.d.ts.map +1 -1
  178. package/lib/src/types.js +6 -12
  179. package/lib/src/types.js.map +1 -1
  180. package/lib/src/utils/answerService/answerService.d.ts +34 -0
  181. package/lib/src/utils/answerService/answerService.d.ts.map +1 -0
  182. package/lib/src/utils/answerService/answerService.js +137 -0
  183. package/lib/src/utils/answerService/answerService.js.map +1 -0
  184. package/lib/src/utils/answerService/answerService.spec.d.ts +1 -0
  185. package/lib/src/utils/answerService/answerService.spec.d.ts.map +1 -0
  186. package/lib/src/utils/answerService/answerService.spec.js +1 -0
  187. package/lib/src/utils/answerService/answerService.spec.js.map +1 -0
  188. package/lib/src/utils/answerService/graphql-queries.d.ts +6 -0
  189. package/lib/src/utils/answerService/graphql-queries.d.ts.map +1 -0
  190. package/lib/src/utils/answerService/graphql-queries.js +120 -0
  191. package/lib/src/utils/answerService/graphql-queries.js.map +1 -0
  192. package/lib/src/utils/graphql/answerService/answer-queries.d.ts +5 -0
  193. package/lib/src/utils/graphql/answerService/answer-queries.d.ts.map +1 -0
  194. package/lib/src/utils/graphql/answerService/answer-queries.js +77 -0
  195. package/lib/src/utils/graphql/answerService/answer-queries.js.map +1 -0
  196. package/lib/src/utils/graphql/answerService/answerService.d.ts +61 -0
  197. package/lib/src/utils/graphql/answerService/answerService.d.ts.map +1 -0
  198. package/lib/src/utils/graphql/answerService/answerService.js +177 -0
  199. package/lib/src/utils/graphql/answerService/answerService.js.map +1 -0
  200. package/lib/src/utils/graphql/answerService/answerService.spec.d.ts +2 -0
  201. package/lib/src/utils/graphql/answerService/answerService.spec.d.ts.map +1 -0
  202. package/lib/src/utils/graphql/answerService/answerService.spec.js +199 -0
  203. package/lib/src/utils/graphql/answerService/answerService.spec.js.map +1 -0
  204. package/lib/src/utils/graphql/answerService/graphql-queries.d.ts +5 -0
  205. package/lib/src/utils/graphql/answerService/graphql-queries.d.ts.map +1 -0
  206. package/lib/src/utils/graphql/answerService/graphql-queries.js +77 -0
  207. package/lib/src/utils/graphql/answerService/graphql-queries.js.map +1 -0
  208. package/lib/src/utils/graphql/graphql-request.d.ts +15 -0
  209. package/lib/src/utils/graphql/graphql-request.d.ts.map +1 -0
  210. package/lib/src/utils/graphql/graphql-request.js +36 -0
  211. package/lib/src/utils/graphql/graphql-request.js.map +1 -0
  212. package/lib/src/utils/graphql/sourceService.d.ts +8 -0
  213. package/lib/src/utils/graphql/sourceService.d.ts.map +1 -0
  214. package/lib/src/utils/graphql/sourceService.js +65 -0
  215. package/lib/src/utils/graphql/sourceService.js.map +1 -0
  216. package/lib/src/utils/graphql/sourceService.spec.d.ts +2 -0
  217. package/lib/src/utils/graphql/sourceService.spec.d.ts.map +1 -0
  218. package/lib/src/utils/graphql/sourceService.spec.js +10 -0
  219. package/lib/src/utils/graphql/sourceService.spec.js.map +1 -0
  220. package/lib/src/utils/processData.d.ts.map +1 -1
  221. package/lib/src/utils/processData.js +8 -12
  222. package/lib/src/utils/processData.js.map +1 -1
  223. package/lib/src/utils/processData.spec.js +14 -18
  224. package/lib/src/utils/processData.spec.js.map +1 -1
  225. package/lib/src/utils.d.ts +6 -0
  226. package/lib/src/utils.d.ts.map +1 -1
  227. package/lib/src/utils.js +23 -0
  228. package/lib/src/utils.js.map +1 -1
  229. package/lib/src/visual-embed-sdk.d.ts +116 -20
  230. package/package.json +4 -5
  231. package/src/embed/app.ts +2 -0
  232. package/src/embed/base.ts +2 -0
  233. package/src/embed/liveboard.ts +2 -0
  234. package/src/embed/sage.ts +2 -0
  235. package/src/embed/search-bar.tsx +2 -0
  236. package/src/embed/search.ts +2 -0
  237. package/src/embed/ts-embed.spec.ts +49 -0
  238. package/src/embed/ts-embed.ts +4 -0
  239. package/src/index.ts +5 -0
  240. package/src/mixpanel-service.spec.ts +1 -0
  241. package/src/mixpanel-service.ts +1 -0
  242. package/src/types.ts +50 -19
  243. package/src/utils/graphql/answerService/answer-queries.ts +80 -0
  244. package/src/utils/graphql/answerService/answerService.spec.ts +231 -0
  245. package/src/utils/graphql/answerService/answerService.ts +234 -0
  246. package/src/utils/graphql/graphql-request.ts +45 -0
  247. package/src/utils/graphql/sourceService.spec.ts +10 -0
  248. package/src/utils/graphql/sourceService.ts +71 -0
  249. package/src/utils/processData.spec.ts +15 -25
  250. package/src/utils/processData.ts +13 -15
  251. package/src/utils.ts +24 -0
  252. package/src/utils/answerService.spec.ts +0 -41
  253. package/src/utils/answerService.ts +0 -63
@@ -0,0 +1 @@
1
+ {"version":3,"file":"answerService.d.ts","sourceRoot":"","sources":["../../../../src/utils/answerService/answerService.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,gBAAgB;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CACnD;AAGD,oBAAY,aAAa;IACrB,gBAAgB,qBAAqB;IACrC,wBAAwB,6BAA6B;CACxD;AAED,qBAAa,aAAa;IAElB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,eAAe;gBAFf,OAAO,EAAE,gBAAgB,EACzB,MAAM,EAAE,GAAG,EACX,eAAe,EAAE,MAAM;IAKtB,eAAe;IAWf,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE;IASjC,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE;IAS9B,SAAS,CAAC,MAAM,SAAI,EAAE,IAAI,SAAO;;;;IAmBjC,yBAAyB,CAClC,aAAa,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,GAAG,CAAA;KAAE,EAAE,EACrD,iBAAiB,EAAE,MAAM,EAAE,EAC3B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM;;;;IA4BH,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG;CAa1D"}
@@ -0,0 +1,142 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AnswerService = exports.OperationType = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const utils_1 = require("../../utils");
6
+ const queries = tslib_1.__importStar(require("./graphql-queries"));
7
+ // eslint-disable-next-line no-shadow
8
+ var OperationType;
9
+ (function (OperationType) {
10
+ OperationType["GetChartWithData"] = "GetChartWithData";
11
+ OperationType["GetTableWithHeadlineData"] = "GetTableWithHeadlineData";
12
+ })(OperationType = exports.OperationType || (exports.OperationType = {}));
13
+ class AnswerService {
14
+ constructor(session, answer, thoughtSpotHost) {
15
+ this.session = session;
16
+ this.answer = answer;
17
+ this.thoughtSpotHost = thoughtSpotHost;
18
+ this.session = (0, utils_1.removeTypename)(session);
19
+ }
20
+ async getSourceDetail() {
21
+ const details = await graphqlQuery({
22
+ query: queries.getSourceDetail,
23
+ variables: {
24
+ ids: [this.answer.sources[0].header.guid],
25
+ },
26
+ thoughtSpotHost: this.thoughtSpotHost,
27
+ });
28
+ return details[0];
29
+ }
30
+ async removeColumns(columnIds) {
31
+ return this.executeQuery(queries.removeColumns, {
32
+ logicalColumnIds: columnIds,
33
+ });
34
+ }
35
+ async addColumns(columnIds) {
36
+ return this.executeQuery(queries.addColumns, {
37
+ columns: columnIds.map((colId) => ({ logicalColumnId: colId })),
38
+ });
39
+ }
40
+ async fetchData(offset = 0, size = 1000) {
41
+ const { answer } = await this.executeQuery(queries.getAnswerData, {
42
+ deadline: 0,
43
+ dataPaginationParams: {
44
+ isClientPaginated: true,
45
+ offset,
46
+ size,
47
+ },
48
+ });
49
+ const { columns, data } = answer.visualizations[0];
50
+ return {
51
+ columns,
52
+ data,
53
+ };
54
+ }
55
+ async getUnderlyingDataForPoint(selectedPoint, outputColumnNames, offset, size) {
56
+ const sourceDetail = await this.getSourceDetail();
57
+ const ouputColumnGuids = getGuidsFromColumnNames(sourceDetail, outputColumnNames);
58
+ const unAggAnswer = await graphqlQuery({
59
+ query: queries.getUnaggregatedAnswerSession,
60
+ variables: {
61
+ session: this.session,
62
+ columns: selectedPoint,
63
+ },
64
+ thoughtSpotHost: this.thoughtSpotHost,
65
+ });
66
+ const unaggAnswerSession = new AnswerService(unAggAnswer.id, unAggAnswer.answer, this.thoughtSpotHost);
67
+ const currentColumns = new Set(unAggAnswer.answer.visualizations[0].columns.map((c) => c.column.referencedColumns[0].guid));
68
+ const columnsToAdd = [...ouputColumnGuids].filter((col) => !currentColumns.has(col));
69
+ if (columnsToAdd.length) {
70
+ await unaggAnswerSession.addColumns(columnsToAdd);
71
+ }
72
+ const columnsToRemove = [...currentColumns].filter((col) => !ouputColumnGuids.has(col));
73
+ if (columnsToRemove.length) {
74
+ await unaggAnswerSession.removeColumns(columnsToRemove);
75
+ }
76
+ return unaggAnswerSession.fetchData(offset, size);
77
+ }
78
+ async executeQuery(query, variables) {
79
+ const data = await graphqlQuery({
80
+ query,
81
+ variables: {
82
+ session: this.session,
83
+ ...variables,
84
+ },
85
+ thoughtSpotHost: this.thoughtSpotHost,
86
+ isCompositeQuery: false,
87
+ });
88
+ this.session = (0, utils_1.deepMerge)(this.session, data.id);
89
+ return data;
90
+ }
91
+ }
92
+ exports.AnswerService = AnswerService;
93
+ /**
94
+ *
95
+ * @param root0
96
+ * @param root0.query
97
+ * @param root0.variables
98
+ * @param root0.thoughtSpotHost
99
+ * @param root0.isCompositeQuery
100
+ */
101
+ async function graphqlQuery({ query, variables, thoughtSpotHost, isCompositeQuery = false, }) {
102
+ const operationName = (0, utils_1.getOperationNameFromQuery)(query);
103
+ try {
104
+ const response = await fetch(`${thoughtSpotHost}/prism/?op=${operationName}`, {
105
+ method: 'POST',
106
+ headers: {
107
+ 'content-type': 'application/json;charset=UTF-8',
108
+ 'x-requested-by': 'ThoughtSpot',
109
+ accept: '*/*',
110
+ 'accept-language': 'en-us',
111
+ },
112
+ body: JSON.stringify({
113
+ operationName,
114
+ query,
115
+ variables,
116
+ }),
117
+ credentials: 'include',
118
+ });
119
+ const result = await response.json();
120
+ const dataValues = Object.values(result.data);
121
+ return (isCompositeQuery) ? result.data : dataValues[0];
122
+ }
123
+ catch (error) {
124
+ return error;
125
+ }
126
+ }
127
+ /**
128
+ *
129
+ * @param sourceDetail
130
+ * @param colNames
131
+ */
132
+ function getGuidsFromColumnNames(sourceDetail, colNames) {
133
+ const cols = sourceDetail.columns.reduce((colSet, col) => {
134
+ colSet[col.name] = col;
135
+ return colSet;
136
+ }, {});
137
+ return new Set(colNames.map((colName) => {
138
+ const col = cols[colName];
139
+ return col.id;
140
+ }));
141
+ }
142
+ //# sourceMappingURL=answerService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"answerService.js","sourceRoot":"","sources":["../../../../src/utils/answerService/answerService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=answerService.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"answerService.spec.d.ts","sourceRoot":"","sources":["../../../../src/utils/answerService/answerService.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=answerService.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"answerService.spec.js","sourceRoot":"","sources":["../../../../src/utils/answerService/answerService.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ export declare const getUnaggregatedAnswerSession: string;
2
+ export declare const removeColumns: string;
3
+ export declare const addColumns: string;
4
+ export declare const getAnswerData: string;
5
+ export declare const getSourceDetail = "\n query GetSourceDetail($ids: [GUID!]!) {\n getSourceDetailById(ids: $ids, type: LOGICAL_TABLE) {\n id\n name\n description\n authorName\n authorDisplayName\n isExternal\n type\n created\n modified\n columns {\n id\n name\n author\n authorDisplayName\n description\n dataType\n type\n modified\n ownerName\n owner\n dataRecency\n sources {\n tableId\n tableName\n columnId\n columnName\n __typename\n }\n synonyms\n cohortAnswerId\n __typename\n }\n relationships\n destinationRelationships\n dataSourceId\n __typename\n }\n } \n";
6
+ //# sourceMappingURL=graphql-queries.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graphql-queries.d.ts","sourceRoot":"","sources":["../../../../src/utils/answerService/graphql-queries.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,4BAA4B,QAsBxC,CAAC;AAEF,eAAO,MAAM,aAAa,QAUrB,CAAC;AAEN,eAAO,MAAM,UAAU,QAMlB,CAAC;AAEN,eAAO,MAAM,aAAa,QAwBzB,CAAC;AAEF,eAAO,MAAM,eAAe,43BAyC3B,CAAC"}
@@ -0,0 +1,123 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getSourceDetail = exports.getAnswerData = exports.addColumns = exports.removeColumns = exports.getUnaggregatedAnswerSession = void 0;
4
+ const bachSessionId = `
5
+ id {
6
+ sessionId
7
+ genNo
8
+ acSession {
9
+ sessionId
10
+ genNo
11
+ }
12
+ }
13
+ `;
14
+ exports.getUnaggregatedAnswerSession = `
15
+ mutation GetUnAggregatedAnswerSession($session: BachSessionIdInput!, $columns: [UserPointSelectionInput!]!) {
16
+ Answer__getUnaggregatedAnswer(session: $session, columns: $columns) {
17
+ ${bachSessionId}
18
+ answer {
19
+ visualizations {
20
+ ... on TableViz {
21
+ columns {
22
+ column {
23
+ id
24
+ name
25
+ referencedColumns {
26
+ guid
27
+ displayName
28
+ }
29
+ }
30
+ }
31
+ }
32
+ }
33
+ }
34
+ }
35
+ }
36
+ `;
37
+ exports.removeColumns = `
38
+ mutation RemoveColumns($session: BachSessionIdInput!, $logicalColumnIds: [GUID!], $columnIds: [GUID!]) {
39
+ Answer__removeColumns(
40
+ session: $session
41
+ logicalColumnIds: $logicalColumnIds
42
+ columnIds: $columnIds
43
+ ) {
44
+ ${bachSessionId}
45
+ }
46
+ }
47
+ `;
48
+ exports.addColumns = `
49
+ mutation AddColumns($session: BachSessionIdInput!, $columns: [AnswerColumnInfo!]!) {
50
+ Answer__addColumn(session: $session, columns: $columns) {
51
+ ${bachSessionId}
52
+ }
53
+ }
54
+ `;
55
+ exports.getAnswerData = `
56
+ query GetTableWithHeadlineData($session: BachSessionIdInput!, $deadline: Int!, $dataPaginationParams: DataPaginationParamsInput!) {
57
+ getAnswer(session: $session) {
58
+ ${bachSessionId}
59
+ answer {
60
+ id
61
+ visualizations {
62
+ id
63
+ ... on TableViz {
64
+ columns {
65
+ column {
66
+ id
67
+ name
68
+ type
69
+ aggregationType
70
+ dataType
71
+ }
72
+ }
73
+ data(deadline: $deadline, pagination: $dataPaginationParams)
74
+ }
75
+ }
76
+ }
77
+ }
78
+ }
79
+ `;
80
+ exports.getSourceDetail = `
81
+ query GetSourceDetail($ids: [GUID!]!) {
82
+ getSourceDetailById(ids: $ids, type: LOGICAL_TABLE) {
83
+ id
84
+ name
85
+ description
86
+ authorName
87
+ authorDisplayName
88
+ isExternal
89
+ type
90
+ created
91
+ modified
92
+ columns {
93
+ id
94
+ name
95
+ author
96
+ authorDisplayName
97
+ description
98
+ dataType
99
+ type
100
+ modified
101
+ ownerName
102
+ owner
103
+ dataRecency
104
+ sources {
105
+ tableId
106
+ tableName
107
+ columnId
108
+ columnName
109
+ __typename
110
+ }
111
+ synonyms
112
+ cohortAnswerId
113
+ __typename
114
+ }
115
+ relationships
116
+ destinationRelationships
117
+ dataSourceId
118
+ __typename
119
+ }
120
+ }
121
+ `;
122
+ const operations = {};
123
+ //# sourceMappingURL=graphql-queries.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graphql-queries.js","sourceRoot":"","sources":["../../../../src/utils/answerService/graphql-queries.ts"],"names":[],"mappings":";;;AAAA,MAAM,aAAa,GAAG;;;;;;;;;CASrB,CAAC;AAEW,QAAA,4BAA4B,GAAG;;;UAGlC,aAAa;;;;;;;;;;;;;;;;;;;CAmBtB,CAAC;AAEW,QAAA,aAAa,GAAG;;;;;;;cAOf,aAAa;;;KAGtB,CAAC;AAEO,QAAA,UAAU,GAAG;;;cAGZ,aAAa;;;KAGtB,CAAC;AAEO,QAAA,aAAa,GAAG;;;cAGf,aAAa;;;;;;;;;;;;;;;;;;;;;CAqB1B,CAAC;AAEW,QAAA,eAAe,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyC9B,CAAC;AAEF,MAAM,UAAU,GAAG,EAElB,CAAC"}
@@ -0,0 +1,5 @@
1
+ export declare const getUnaggregatedAnswerSession: string;
2
+ export declare const removeColumns: string;
3
+ export declare const addColumns: string;
4
+ export declare const getAnswerData: string;
5
+ //# sourceMappingURL=answer-queries.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"answer-queries.d.ts","sourceRoot":"","sources":["../../../../../src/utils/graphql/answerService/answer-queries.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,4BAA4B,QAsBxC,CAAC;AAEF,eAAO,MAAM,aAAa,QAUrB,CAAC;AAEN,eAAO,MAAM,UAAU,QAMlB,CAAC;AAEN,eAAO,MAAM,aAAa,QAwBzB,CAAC"}
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getAnswerData = exports.addColumns = exports.removeColumns = exports.getUnaggregatedAnswerSession = void 0;
4
+ const bachSessionId = `
5
+ id {
6
+ sessionId
7
+ genNo
8
+ acSession {
9
+ sessionId
10
+ genNo
11
+ }
12
+ }
13
+ `;
14
+ exports.getUnaggregatedAnswerSession = `
15
+ mutation GetUnAggregatedAnswerSession($session: BachSessionIdInput!, $columns: [UserPointSelectionInput!]!) {
16
+ Answer__getUnaggregatedAnswer(session: $session, columns: $columns) {
17
+ ${bachSessionId}
18
+ answer {
19
+ visualizations {
20
+ ... on TableViz {
21
+ columns {
22
+ column {
23
+ id
24
+ name
25
+ referencedColumns {
26
+ guid
27
+ displayName
28
+ }
29
+ }
30
+ }
31
+ }
32
+ }
33
+ }
34
+ }
35
+ }
36
+ `;
37
+ exports.removeColumns = `
38
+ mutation RemoveColumns($session: BachSessionIdInput!, $logicalColumnIds: [GUID!], $columnIds: [GUID!]) {
39
+ Answer__removeColumns(
40
+ session: $session
41
+ logicalColumnIds: $logicalColumnIds
42
+ columnIds: $columnIds
43
+ ) {
44
+ ${bachSessionId}
45
+ }
46
+ }
47
+ `;
48
+ exports.addColumns = `
49
+ mutation AddColumns($session: BachSessionIdInput!, $columns: [AnswerColumnInfo!]!) {
50
+ Answer__addColumn(session: $session, columns: $columns) {
51
+ ${bachSessionId}
52
+ }
53
+ }
54
+ `;
55
+ exports.getAnswerData = `
56
+ query GetTableWithHeadlineData($session: BachSessionIdInput!, $deadline: Int!, $dataPaginationParams: DataPaginationParamsInput!) {
57
+ getAnswer(session: $session) {
58
+ ${bachSessionId}
59
+ answer {
60
+ id
61
+ visualizations {
62
+ id
63
+ ... on TableViz {
64
+ columns {
65
+ column {
66
+ id
67
+ name
68
+ type
69
+ aggregationType
70
+ dataType
71
+ }
72
+ }
73
+ data(deadline: $deadline, pagination: $dataPaginationParams)
74
+ }
75
+ }
76
+ }
77
+ }
78
+ }
79
+ `;
80
+ //# sourceMappingURL=answer-queries.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"answer-queries.js","sourceRoot":"","sources":["../../../../../src/utils/graphql/answerService/answer-queries.ts"],"names":[],"mappings":";;;AAAA,MAAM,aAAa,GAAG;;;;;;;;;CASrB,CAAC;AAEW,QAAA,4BAA4B,GAAG;;;UAGlC,aAAa;;;;;;;;;;;;;;;;;;;CAmBtB,CAAC;AAEW,QAAA,aAAa,GAAG;;;;;;;cAOf,aAAa;;;KAGtB,CAAC;AAEO,QAAA,UAAU,GAAG;;;cAGZ,aAAa;;;KAGtB,CAAC;AAEO,QAAA,aAAa,GAAG;;;cAGf,aAAa;;;;;;;;;;;;;;;;;;;;;CAqB1B,CAAC"}
@@ -0,0 +1,61 @@
1
+ import type { VizPoint } from '../../../types';
2
+ export interface SessionInterface {
3
+ sessionId: string;
4
+ genNo: number;
5
+ acSession: {
6
+ sessionId: string;
7
+ genNo: number;
8
+ };
9
+ }
10
+ export declare enum OperationType {
11
+ GetChartWithData = "GetChartWithData",
12
+ GetTableWithHeadlineData = "GetTableWithHeadlineData"
13
+ }
14
+ interface UnderlyingDataPoint {
15
+ columnId: string;
16
+ dataValue: any;
17
+ }
18
+ /**
19
+ * Class representing the answer service provided with the
20
+ * custom action payload. This service could be used to run
21
+ * graphql queries in the context of the answer on which the
22
+ * custom action was triggered.
23
+ *
24
+ * @example
25
+ * ```js
26
+ * embed.on(EmbedEvent.CustomAction, e => {
27
+ * const underlying = await e.answerService.getUnderlyingDataForPoint([
28
+ * 'col name 1'
29
+ * ]);
30
+ * const data = await underlying.fetchData(0, 100);
31
+ * })
32
+ * ```
33
+ * @version
34
+ * ThoughtSpot: 9.9.0.cl / SDK: 1.25.0
35
+ */
36
+ export declare class AnswerService {
37
+ private session;
38
+ private answer;
39
+ private thoughtSpotHost;
40
+ private selectedPoints?;
41
+ constructor(session: SessionInterface, answer: any, thoughtSpotHost: string, selectedPoints?: VizPoint[]);
42
+ getSourceDetail(): Promise<any>;
43
+ removeColumns(columnIds: string[]): Promise<any>;
44
+ addColumns(columnIds: string[]): Promise<any>;
45
+ fetchData(offset?: number, size?: number): Promise<{
46
+ columns: any;
47
+ data: any;
48
+ }>;
49
+ /**
50
+ *
51
+ * @param userLocale
52
+ * @param omitInfo Omit the download Info on top of the CSV
53
+ * @returns Response
54
+ */
55
+ fetchCSVBlob(userLocale?: string, omitInfo?: boolean): Promise<Response>;
56
+ getUnderlyingDataForPoint(outputColumnNames: string[], selectedPoints?: UnderlyingDataPoint[]): Promise<AnswerService>;
57
+ executeQuery(query: string, variables: any): Promise<any>;
58
+ getSession(): SessionInterface;
59
+ }
60
+ export {};
61
+ //# sourceMappingURL=answerService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"answerService.d.ts","sourceRoot":"","sources":["../../../../../src/utils/graphql/answerService/answerService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAe,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAM5D,MAAM,WAAW,gBAAgB;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CACnD;AAGD,oBAAY,aAAa;IACrB,gBAAgB,qBAAqB;IACrC,wBAAwB,6BAA6B;CACxD;AAED,UAAU,mBAAmB;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,GAAG,CAAC;CAClB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,aAAa;IAElB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,eAAe;IACvB,OAAO,CAAC,cAAc,CAAC;gBAHf,OAAO,EAAE,gBAAgB,EACzB,MAAM,EAAE,GAAG,EACX,eAAe,EAAE,MAAM,EACvB,cAAc,CAAC,EAAE,QAAQ,EAAE;IAK1B,eAAe;IAQf,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE;IASjC,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE;IAS9B,SAAS,CAAC,MAAM,SAAI,EAAE,IAAI,SAAO;;;;IAmB9C;;;;;OAKG;IACU,YAAY,CAAC,UAAU,SAAU,EAAE,QAAQ,UAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAUvE,yBAAyB,CAClC,iBAAiB,EAAE,MAAM,EAAE,EAC3B,cAAc,CAAC,EAAE,mBAAmB,EAAE,GACvC,OAAO,CAAC,aAAa,CAAC;IA8CZ,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IAe/D,UAAU;CAGpB"}
@@ -0,0 +1,182 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AnswerService = exports.OperationType = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const utils_1 = require("../../../utils");
6
+ const graphql_request_1 = require("../graphql-request");
7
+ const sourceService_1 = require("../sourceService");
8
+ const queries = tslib_1.__importStar(require("./answer-queries"));
9
+ // eslint-disable-next-line no-shadow
10
+ var OperationType;
11
+ (function (OperationType) {
12
+ OperationType["GetChartWithData"] = "GetChartWithData";
13
+ OperationType["GetTableWithHeadlineData"] = "GetTableWithHeadlineData";
14
+ })(OperationType = exports.OperationType || (exports.OperationType = {}));
15
+ /**
16
+ * Class representing the answer service provided with the
17
+ * custom action payload. This service could be used to run
18
+ * graphql queries in the context of the answer on which the
19
+ * custom action was triggered.
20
+ *
21
+ * @example
22
+ * ```js
23
+ * embed.on(EmbedEvent.CustomAction, e => {
24
+ * const underlying = await e.answerService.getUnderlyingDataForPoint([
25
+ * 'col name 1'
26
+ * ]);
27
+ * const data = await underlying.fetchData(0, 100);
28
+ * })
29
+ * ```
30
+ * @version
31
+ * ThoughtSpot: 9.9.0.cl / SDK: 1.25.0
32
+ */
33
+ class AnswerService {
34
+ constructor(session, answer, thoughtSpotHost, selectedPoints) {
35
+ this.session = session;
36
+ this.answer = answer;
37
+ this.thoughtSpotHost = thoughtSpotHost;
38
+ this.selectedPoints = selectedPoints;
39
+ this.session = (0, utils_1.removeTypename)(session);
40
+ }
41
+ async getSourceDetail() {
42
+ const sourceId = this.answer.sources[0].header.guid;
43
+ return (0, sourceService_1.getSourceDetail)(this.thoughtSpotHost, sourceId);
44
+ }
45
+ async removeColumns(columnIds) {
46
+ return this.executeQuery(queries.removeColumns, {
47
+ logicalColumnIds: columnIds,
48
+ });
49
+ }
50
+ async addColumns(columnIds) {
51
+ return this.executeQuery(queries.addColumns, {
52
+ columns: columnIds.map((colId) => ({ logicalColumnId: colId })),
53
+ });
54
+ }
55
+ async fetchData(offset = 0, size = 1000) {
56
+ const { answer } = await this.executeQuery(queries.getAnswerData, {
57
+ deadline: 0,
58
+ dataPaginationParams: {
59
+ isClientPaginated: true,
60
+ offset,
61
+ size,
62
+ },
63
+ });
64
+ const { columns, data } = answer.visualizations[0];
65
+ return {
66
+ columns,
67
+ data,
68
+ };
69
+ }
70
+ /**
71
+ *
72
+ * @param userLocale
73
+ * @param omitInfo Omit the download Info on top of the CSV
74
+ * @returns Response
75
+ */
76
+ async fetchCSVBlob(userLocale = 'en-us', omitInfo = false) {
77
+ if (omitInfo) {
78
+ console.warn('omitInfo not supported yet.');
79
+ }
80
+ const fetchUrl = `${this.thoughtSpotHost}/prism/download/answer/csv?sessionId=${this.session.sessionId}&genNo=${this.session.genNo}&userLocale=${userLocale}&exportFileName=data&omitInfo=${omitInfo}`;
81
+ return fetch(fetchUrl, {
82
+ credentials: 'include',
83
+ });
84
+ }
85
+ async getUnderlyingDataForPoint(outputColumnNames, selectedPoints) {
86
+ if (!selectedPoints && !this.selectedPoints) {
87
+ throw new Error('Needs to be triggered in context of a point');
88
+ }
89
+ if (!selectedPoints) {
90
+ selectedPoints = getSelectedPointsForUnderlyingDataQuery(this.selectedPoints);
91
+ }
92
+ const sourceDetail = await this.getSourceDetail();
93
+ const ouputColumnGuids = getGuidsFromColumnNames(sourceDetail, outputColumnNames);
94
+ const unAggAnswer = await (0, graphql_request_1.graphqlQuery)({
95
+ query: queries.getUnaggregatedAnswerSession,
96
+ variables: {
97
+ session: this.session,
98
+ columns: selectedPoints,
99
+ },
100
+ thoughtSpotHost: this.thoughtSpotHost,
101
+ });
102
+ const unaggAnswerSession = new AnswerService(unAggAnswer.id, unAggAnswer.answer, this.thoughtSpotHost);
103
+ const currentColumns = new Set(unAggAnswer.answer.visualizations[0].columns
104
+ .map((c) => c.column.referencedColumns[0].guid));
105
+ const columnsToAdd = [...ouputColumnGuids].filter((col) => !currentColumns.has(col));
106
+ if (columnsToAdd.length) {
107
+ await unaggAnswerSession.addColumns(columnsToAdd);
108
+ }
109
+ const columnsToRemove = [...currentColumns].filter((col) => !ouputColumnGuids.has(col));
110
+ if (columnsToRemove.length) {
111
+ await unaggAnswerSession.removeColumns(columnsToRemove);
112
+ }
113
+ return unaggAnswerSession;
114
+ }
115
+ async executeQuery(query, variables) {
116
+ const data = await (0, graphql_request_1.graphqlQuery)({
117
+ query,
118
+ variables: {
119
+ session: this.session,
120
+ ...variables,
121
+ },
122
+ thoughtSpotHost: this.thoughtSpotHost,
123
+ isCompositeQuery: false,
124
+ });
125
+ this.session = (0, utils_1.deepMerge)(this.session, (data === null || data === void 0 ? void 0 : data.id) || {});
126
+ return data;
127
+ }
128
+ getSession() {
129
+ return this.session;
130
+ }
131
+ }
132
+ exports.AnswerService = AnswerService;
133
+ /**
134
+ *
135
+ * @param sourceDetail
136
+ * @param colNames
137
+ */
138
+ function getGuidsFromColumnNames(sourceDetail, colNames) {
139
+ const cols = sourceDetail.columns.reduce((colSet, col) => {
140
+ colSet[col.name] = col;
141
+ return colSet;
142
+ }, {});
143
+ return new Set(colNames.map((colName) => {
144
+ const col = cols[colName];
145
+ return col.id;
146
+ }));
147
+ }
148
+ /**
149
+ *
150
+ * @param selectedPoints
151
+ */
152
+ function getSelectedPointsForUnderlyingDataQuery(selectedPoints) {
153
+ const underlyingDataPoint = [];
154
+ /**
155
+ *
156
+ * @param colVal
157
+ */
158
+ function addPointFromColVal(colVal) {
159
+ const dataType = colVal.column.dataType;
160
+ const id = colVal.column.id;
161
+ let dataValue;
162
+ if (dataType === 'DATE') {
163
+ dataValue = [{
164
+ epochRange: {
165
+ startEpoch: colVal.value,
166
+ },
167
+ }];
168
+ }
169
+ else {
170
+ dataValue = [{ value: colVal.value }];
171
+ }
172
+ underlyingDataPoint.push({
173
+ columnId: colVal.column.id,
174
+ dataValue,
175
+ });
176
+ }
177
+ selectedPoints.forEach((p) => {
178
+ p.selectedAttributes.forEach(addPointFromColVal);
179
+ });
180
+ return underlyingDataPoint;
181
+ }
182
+ //# sourceMappingURL=answerService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"answerService.js","sourceRoot":"","sources":["../../../../../src/utils/graphql/answerService/answerService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import 'jest-fetch-mock';
2
+ //# sourceMappingURL=answerService.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"answerService.spec.d.ts","sourceRoot":"","sources":["../../../../../src/utils/graphql/answerService/answerService.spec.ts"],"names":[],"mappings":"AAAA,OAAO,iBAAiB,CAAC"}