@thoughtspot/ts-chart-sdk 0.0.1-alpha.0 → 0.0.1-alpha.2

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 (104) hide show
  1. package/README.md +782 -0
  2. package/cjs/index.d.ts +8 -0
  3. package/cjs/index.d.ts.map +1 -0
  4. package/cjs/index.js +24 -0
  5. package/cjs/index.js.map +1 -0
  6. package/cjs/main/custom-chart-context.d.ts +39 -0
  7. package/cjs/main/custom-chart-context.d.ts.map +1 -0
  8. package/cjs/main/custom-chart-context.js +211 -0
  9. package/cjs/main/custom-chart-context.js.map +1 -0
  10. package/cjs/main/custom-chart-context.spec.d.ts +2 -0
  11. package/cjs/main/custom-chart-context.spec.d.ts.map +1 -0
  12. package/cjs/main/custom-chart-context.spec.js +379 -0
  13. package/cjs/main/custom-chart-context.spec.js.map +1 -0
  14. package/cjs/main/post-message-event-bridge.d.ts +6 -0
  15. package/cjs/main/post-message-event-bridge.d.ts.map +1 -0
  16. package/cjs/main/post-message-event-bridge.js +46 -0
  17. package/cjs/main/post-message-event-bridge.js.map +1 -0
  18. package/cjs/main/post-message-event-bridge.spec.d.ts +2 -0
  19. package/cjs/main/post-message-event-bridge.spec.d.ts.map +1 -0
  20. package/cjs/main/post-message-event-bridge.spec.js +124 -0
  21. package/cjs/main/post-message-event-bridge.spec.js.map +1 -0
  22. package/cjs/react/custom-chart-context-service.d.ts +33 -0
  23. package/cjs/react/custom-chart-context-service.d.ts.map +1 -0
  24. package/cjs/react/custom-chart-context-service.js +118 -0
  25. package/cjs/react/custom-chart-context-service.js.map +1 -0
  26. package/cjs/react/custom-chart.context.d.ts +26 -0
  27. package/cjs/react/custom-chart.context.d.ts.map +1 -0
  28. package/cjs/react/custom-chart.context.js +105 -0
  29. package/cjs/react/custom-chart.context.js.map +1 -0
  30. package/cjs/react/custom-chart.spec.d.ts +2 -0
  31. package/cjs/react/custom-chart.spec.d.ts.map +1 -0
  32. package/cjs/react/custom-chart.spec.js +72 -0
  33. package/cjs/react/custom-chart.spec.js.map +1 -0
  34. package/cjs/test/test-utils.d.ts +7 -0
  35. package/cjs/test/test-utils.d.ts.map +1 -0
  36. package/cjs/test/test-utils.js +14 -0
  37. package/cjs/test/test-utils.js.map +1 -0
  38. package/cjs/types/answer-column.types.d.ts +69 -0
  39. package/cjs/types/answer-column.types.d.ts.map +1 -0
  40. package/cjs/types/answer-column.types.js +59 -0
  41. package/cjs/types/answer-column.types.js.map +1 -0
  42. package/cjs/types/chart-to-ts-event.types.d.ts +63 -0
  43. package/cjs/types/chart-to-ts-event.types.d.ts.map +1 -0
  44. package/cjs/types/chart-to-ts-event.types.js +22 -0
  45. package/cjs/types/chart-to-ts-event.types.js.map +1 -0
  46. package/cjs/types/common.types.d.ts +50 -0
  47. package/cjs/types/common.types.d.ts.map +1 -0
  48. package/cjs/types/common.types.js +3 -0
  49. package/cjs/types/common.types.js.map +1 -0
  50. package/cjs/types/configurator.types.d.ts +15 -0
  51. package/cjs/types/configurator.types.d.ts.map +1 -0
  52. package/cjs/types/configurator.types.js +3 -0
  53. package/cjs/types/configurator.types.js.map +1 -0
  54. package/cjs/types/ts-to-chart-event.types.d.ts +69 -0
  55. package/cjs/types/ts-to-chart-event.types.d.ts.map +1 -0
  56. package/cjs/types/ts-to-chart-event.types.js +16 -0
  57. package/cjs/types/ts-to-chart-event.types.js.map +1 -0
  58. package/cjs/types/visual-prop.types.d.ts +47 -0
  59. package/cjs/types/visual-prop.types.d.ts.map +1 -0
  60. package/cjs/types/visual-prop.types.js +3 -0
  61. package/cjs/types/visual-prop.types.js.map +1 -0
  62. package/lib/main/custom-chart-context.d.ts +2 -1
  63. package/lib/main/custom-chart-context.d.ts.map +1 -1
  64. package/lib/main/custom-chart-context.js +11 -7
  65. package/lib/main/custom-chart-context.js.map +1 -1
  66. package/lib/main/custom-chart-context.spec.js +64 -25
  67. package/lib/main/custom-chart-context.spec.js.map +1 -1
  68. package/lib/main/post-message-event-bridge.js +1 -1
  69. package/lib/main/post-message-event-bridge.js.map +1 -1
  70. package/lib/main/post-message-event-bridge.spec.js +5 -3
  71. package/lib/main/post-message-event-bridge.spec.js.map +1 -1
  72. package/lib/react/custom-chart-context-service.d.ts +33 -0
  73. package/lib/react/custom-chart-context-service.d.ts.map +1 -0
  74. package/lib/react/custom-chart-context-service.js +91 -0
  75. package/lib/react/custom-chart-context-service.js.map +1 -0
  76. package/lib/react/custom-chart.context.d.ts +26 -0
  77. package/lib/react/custom-chart.context.d.ts.map +1 -0
  78. package/lib/react/custom-chart.context.js +78 -0
  79. package/lib/react/custom-chart.context.js.map +1 -0
  80. package/lib/react/custom-chart.spec.d.ts +2 -0
  81. package/lib/react/custom-chart.spec.d.ts.map +1 -0
  82. package/lib/react/custom-chart.spec.js +67 -0
  83. package/lib/react/custom-chart.spec.js.map +1 -0
  84. package/lib/types/chart-to-ts-event.types.d.ts +26 -11
  85. package/lib/types/chart-to-ts-event.types.d.ts.map +1 -1
  86. package/lib/types/chart-to-ts-event.types.js +3 -0
  87. package/lib/types/chart-to-ts-event.types.js.map +1 -1
  88. package/lib/types/common.types.d.ts +7 -8
  89. package/lib/types/common.types.d.ts.map +1 -1
  90. package/lib/types/ts-to-chart-event.types.d.ts +2 -0
  91. package/lib/types/ts-to-chart-event.types.d.ts.map +1 -1
  92. package/lib/types/ts-to-chart-event.types.js +1 -0
  93. package/lib/types/ts-to-chart-event.types.js.map +1 -1
  94. package/package.json +2 -2
  95. package/src/main/custom-chart-context.spec.ts +87 -26
  96. package/src/main/custom-chart-context.ts +26 -16
  97. package/src/main/post-message-event-bridge.spec.ts +5 -3
  98. package/src/main/post-message-event-bridge.ts +3 -3
  99. package/src/types/answer-column.types.ts +5 -5
  100. package/src/types/chart-to-ts-event.types.ts +68 -30
  101. package/src/types/common.types.ts +22 -25
  102. package/src/types/configurator.types.ts +8 -8
  103. package/src/types/ts-to-chart-event.types.ts +10 -4
  104. package/src/types/visual-prop.types.ts +11 -11
@@ -0,0 +1,379 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ const test_utils_1 = require("../test/test-utils");
27
+ const chart_to_ts_event_types_1 = require("../types/chart-to-ts-event.types");
28
+ const ts_to_chart_event_types_1 = require("../types/ts-to-chart-event.types");
29
+ const custom_chart_context_1 = require("./custom-chart-context");
30
+ const PostMessageEventBridge = __importStar(require("./post-message-event-bridge"));
31
+ jest.mock('./post-message-event-bridge');
32
+ jest.spyOn(console, 'log').mockImplementation(() => {
33
+ });
34
+ describe('CustomChartContext', () => {
35
+ let eventProcessor;
36
+ let getDefaultChartConfig = jest.fn();
37
+ let getQueriesFromChartConfig = jest.fn();
38
+ let renderChart = jest.fn();
39
+ const mockInitMessage = jest.spyOn(PostMessageEventBridge, 'initMessageListener');
40
+ const mockPostMessageToHost = jest.spyOn(PostMessageEventBridge, 'postMessageToHostApp');
41
+ beforeEach(() => {
42
+ getDefaultChartConfig = jest.fn();
43
+ getQueriesFromChartConfig = jest.fn();
44
+ renderChart = jest.fn();
45
+ mockInitMessage.mockImplementation((fn) => {
46
+ eventProcessor = fn;
47
+ });
48
+ mockPostMessageToHost.mockImplementation(() => {
49
+ return global.Promise.resolve();
50
+ });
51
+ });
52
+ describe('initialize', () => {
53
+ let customChartContext;
54
+ beforeEach(() => {
55
+ customChartContext = new custom_chart_context_1.CustomChartContext({
56
+ getDefaultChartConfig,
57
+ getQueriesFromChartConfig,
58
+ renderChart,
59
+ });
60
+ });
61
+ afterEach(() => {
62
+ jest.resetAllMocks();
63
+ customChartContext.destroy();
64
+ eventProcessor = null;
65
+ });
66
+ test('should wait till the parent calls initialize', async () => {
67
+ expect(mockInitMessage).toHaveBeenCalled();
68
+ const promise = customChartContext.initialize();
69
+ const rej = jest.fn();
70
+ const res = jest.fn();
71
+ promise.then(() => rej()).catch(() => res());
72
+ await new global.Promise((resolve) => {
73
+ setTimeout(() => resolve(null), 3000);
74
+ });
75
+ expect(rej).not.toHaveBeenCalled();
76
+ expect(res).not.toHaveBeenCalled();
77
+ });
78
+ test('should return a promise that resolves when the chart context is initialized', async () => {
79
+ expect(mockInitMessage).toHaveBeenCalled();
80
+ const promise = customChartContext.initialize();
81
+ const mockPostMessage = jest.fn();
82
+ eventProcessor({
83
+ data: {
84
+ payload: test_utils_1.mockInitializeContextPayload,
85
+ eventType: ts_to_chart_event_types_1.TSToChartEvent.Initialize,
86
+ source: 'ts-host-app',
87
+ },
88
+ ports: [{ postMessage: mockPostMessage }],
89
+ });
90
+ eventProcessor({
91
+ data: {
92
+ payload: {},
93
+ eventType: ts_to_chart_event_types_1.TSToChartEvent.InitializeComplete,
94
+ source: 'ts-host-app',
95
+ },
96
+ ports: [{ postMessage: mockPostMessage }],
97
+ });
98
+ await expect(promise).resolves.toBeUndefined();
99
+ expect(mockPostMessage).toHaveBeenCalledTimes(2);
100
+ expect(mockPostMessage.mock.calls[0][0]).toEqual({
101
+ isConfigValid: false,
102
+ defaultChartConfig: undefined,
103
+ chartConfigEditorDefinition: undefined,
104
+ visualPropEditorDefinition: undefined,
105
+ });
106
+ expect(mockPostMessage).toHaveBeenCalled();
107
+ expect(mockPostMessageToHost).not.toHaveBeenCalled();
108
+ });
109
+ test('multiple intializations should throw an error', async () => {
110
+ const promise = customChartContext.initialize();
111
+ const mockPostMessage = jest.fn();
112
+ eventProcessor({
113
+ data: {
114
+ payload: test_utils_1.mockInitializeContextPayload,
115
+ eventType: ts_to_chart_event_types_1.TSToChartEvent.Initialize,
116
+ source: 'ts-host-app',
117
+ },
118
+ ports: [{ postMessage: mockPostMessage }],
119
+ });
120
+ eventProcessor({
121
+ data: {
122
+ payload: {},
123
+ eventType: ts_to_chart_event_types_1.TSToChartEvent.InitializeComplete,
124
+ source: 'ts-host-app',
125
+ },
126
+ ports: [{ postMessage: mockPostMessage }],
127
+ });
128
+ await expect(promise).resolves.toBeUndefined();
129
+ let error;
130
+ try {
131
+ customChartContext = new custom_chart_context_1.CustomChartContext({
132
+ getDefaultChartConfig,
133
+ getQueriesFromChartConfig,
134
+ renderChart,
135
+ });
136
+ }
137
+ catch (err) {
138
+ error = err.message;
139
+ }
140
+ expect(error).toBe(chart_to_ts_event_types_1.ErrorType.MultipleContextsNotSupported);
141
+ try {
142
+ await (0, custom_chart_context_1.getChartContext)({
143
+ getDefaultChartConfig,
144
+ getQueriesFromChartConfig,
145
+ renderChart,
146
+ });
147
+ }
148
+ catch (err) {
149
+ error = err.message;
150
+ }
151
+ expect(error).toBe(chart_to_ts_event_types_1.ErrorType.MultipleContextsNotSupported);
152
+ });
153
+ });
154
+ describe('on', () => {
155
+ let customChartContext;
156
+ beforeEach(() => {
157
+ customChartContext = new custom_chart_context_1.CustomChartContext({
158
+ getDefaultChartConfig,
159
+ getQueriesFromChartConfig,
160
+ renderChart,
161
+ });
162
+ });
163
+ afterEach(() => {
164
+ jest.resetAllMocks();
165
+ customChartContext.destroy();
166
+ eventProcessor = null;
167
+ });
168
+ test('should not trigger post message if host is not accurate', () => {
169
+ expect(mockInitMessage).toHaveBeenCalled();
170
+ const mockPostMessage = jest.fn();
171
+ eventProcessor({
172
+ data: {
173
+ payload: test_utils_1.mockInitializeContextPayload,
174
+ eventType: ts_to_chart_event_types_1.TSToChartEvent.ChartConfigValidate,
175
+ source: 'incorrect-source',
176
+ },
177
+ ports: [{ postMessage: mockPostMessage }],
178
+ });
179
+ expect(mockPostMessage).not.toHaveBeenCalled();
180
+ });
181
+ test('default internal function testing', () => {
182
+ expect(mockInitMessage).toHaveBeenCalled();
183
+ const mockPostMessage = jest.fn();
184
+ eventProcessor({
185
+ data: {
186
+ payload: test_utils_1.mockInitializeContextPayload,
187
+ eventType: ts_to_chart_event_types_1.TSToChartEvent.ChartConfigValidate,
188
+ source: 'ts-host-app',
189
+ },
190
+ ports: [{ postMessage: mockPostMessage }],
191
+ });
192
+ expect(mockPostMessage).toHaveBeenCalledWith({
193
+ isValid: true,
194
+ });
195
+ mockPostMessage.mockReset();
196
+ eventProcessor({
197
+ data: {
198
+ payload: test_utils_1.mockInitializeContextPayload,
199
+ eventType: ts_to_chart_event_types_1.TSToChartEvent.VisualPropsValidate,
200
+ source: 'ts-host-app',
201
+ },
202
+ ports: [{ postMessage: mockPostMessage }],
203
+ });
204
+ expect(mockPostMessage).toHaveBeenCalledWith({
205
+ isValid: true,
206
+ });
207
+ mockPostMessage.mockReset();
208
+ eventProcessor({
209
+ data: {
210
+ payload: test_utils_1.mockInitializeContextPayload,
211
+ eventType: ts_to_chart_event_types_1.TSToChartEvent.TriggerRenderChart,
212
+ source: 'ts-host-app',
213
+ },
214
+ ports: [{ postMessage: mockPostMessage }],
215
+ });
216
+ expect(mockPostMessage).toHaveBeenCalledWith({});
217
+ expect(renderChart).toHaveBeenCalled();
218
+ mockPostMessage.mockReset();
219
+ eventProcessor({
220
+ data: {
221
+ payload: test_utils_1.mockInitializeContextPayload,
222
+ eventType: ts_to_chart_event_types_1.TSToChartEvent.GetDataQuery,
223
+ source: 'ts-host-app',
224
+ },
225
+ ports: [{ postMessage: mockPostMessage }],
226
+ });
227
+ expect(mockPostMessage).toHaveBeenCalledWith({});
228
+ expect(getQueriesFromChartConfig).toHaveBeenCalled();
229
+ });
230
+ test('default external function testing', () => {
231
+ expect(mockInitMessage).toHaveBeenCalled();
232
+ const mockPostMessage = jest.fn();
233
+ eventProcessor({
234
+ data: {
235
+ payload: {
236
+ data: 'random data',
237
+ },
238
+ eventType: ts_to_chart_event_types_1.TSToChartEvent.DataUpdate,
239
+ source: 'ts-host-app',
240
+ },
241
+ ports: [{ postMessage: mockPostMessage }],
242
+ });
243
+ expect(mockPostMessage).toHaveBeenCalledWith({
244
+ triggerRenderChart: true,
245
+ });
246
+ expect(customChartContext.getChartModel().data).toBe('random data');
247
+ mockPostMessage.mockReset();
248
+ eventProcessor({
249
+ data: {
250
+ payload: {
251
+ chartModel: {
252
+ data: 'random data2',
253
+ visualProps: null,
254
+ },
255
+ },
256
+ eventType: ts_to_chart_event_types_1.TSToChartEvent.ChartModelUpdate,
257
+ source: 'ts-host-app',
258
+ },
259
+ ports: [{ postMessage: mockPostMessage }],
260
+ });
261
+ expect(mockPostMessage).toHaveBeenCalledWith({
262
+ triggerRenderChart: true,
263
+ });
264
+ expect(customChartContext.getChartModel().data).toBe('random data2');
265
+ expect(customChartContext.getChartModel().visualProps).toBe(null);
266
+ mockPostMessage.mockReset();
267
+ eventProcessor({
268
+ data: {
269
+ payload: {
270
+ visualProps: 'random data',
271
+ },
272
+ eventType: ts_to_chart_event_types_1.TSToChartEvent.VisualPropsUpdate,
273
+ source: 'ts-host-app',
274
+ },
275
+ ports: [{ postMessage: mockPostMessage }],
276
+ });
277
+ expect(mockPostMessage).toHaveBeenCalledWith({
278
+ triggerRenderChart: true,
279
+ });
280
+ expect(customChartContext.getChartModel().visualProps).toBe('random data');
281
+ });
282
+ test('should add an event listener to the specified event type', () => {
283
+ expect(mockInitMessage).toHaveBeenCalled();
284
+ const TEST_EVENT_TYPE = 'testEventType';
285
+ const testCallbackFn = jest.fn();
286
+ customChartContext.on(TEST_EVENT_TYPE, testCallbackFn);
287
+ const mockPostMessage = jest.fn();
288
+ eventProcessor({
289
+ data: {
290
+ payload: test_utils_1.mockInitializeContextPayload,
291
+ eventType: TEST_EVENT_TYPE,
292
+ source: 'ts-host-app',
293
+ },
294
+ ports: [{ postMessage: mockPostMessage }],
295
+ });
296
+ expect(testCallbackFn).toHaveBeenCalled();
297
+ });
298
+ test('should respond with an error to an unspecified event type', () => {
299
+ expect(mockInitMessage).toHaveBeenCalled();
300
+ const TEST_EVENT_TYPE = 'testEventType';
301
+ const mockPostMessage = jest.fn();
302
+ eventProcessor({
303
+ data: {
304
+ payload: test_utils_1.mockInitializeContextPayload,
305
+ eventType: TEST_EVENT_TYPE,
306
+ source: 'ts-host-app',
307
+ },
308
+ ports: [{ postMessage: mockPostMessage }],
309
+ });
310
+ expect(mockPostMessage).toHaveBeenCalledWith({
311
+ hasError: true,
312
+ error: `Event type not recognised or processed: ${TEST_EVENT_TYPE}`,
313
+ });
314
+ });
315
+ });
316
+ describe('emitEvent', () => {
317
+ let customChartContext;
318
+ beforeEach(() => {
319
+ customChartContext = new custom_chart_context_1.CustomChartContext({
320
+ getDefaultChartConfig,
321
+ getQueriesFromChartConfig,
322
+ renderChart,
323
+ });
324
+ });
325
+ afterEach(() => {
326
+ customChartContext.destroy();
327
+ eventProcessor = null;
328
+ jest.resetAllMocks();
329
+ });
330
+ test('should reject the promise if the chart context is not initialized', async () => {
331
+ const TEST_EVENT_TYPE = 'testEventType';
332
+ const testPayload = { value: 'testPayload' };
333
+ const result = customChartContext.emitEvent(TEST_EVENT_TYPE, testPayload);
334
+ expect(mockPostMessageToHost).not.toHaveBeenCalled();
335
+ await expect(result).rejects.toBeDefined();
336
+ });
337
+ test('should resolve the promise if the chart context is initialized', async () => {
338
+ const mockPostMessage = jest.fn();
339
+ eventProcessor({
340
+ data: {
341
+ payload: test_utils_1.mockInitializeContextPayload,
342
+ eventType: ts_to_chart_event_types_1.TSToChartEvent.Initialize,
343
+ source: 'ts-host-app',
344
+ },
345
+ ports: [{ postMessage: mockPostMessage }],
346
+ });
347
+ eventProcessor({
348
+ data: {
349
+ payload: {},
350
+ eventType: ts_to_chart_event_types_1.TSToChartEvent.InitializeComplete,
351
+ source: 'ts-host-app',
352
+ },
353
+ ports: [{ postMessage: mockPostMessage }],
354
+ });
355
+ const promise = customChartContext.initialize();
356
+ await expect(promise).resolves.toBeUndefined();
357
+ expect(mockPostMessage).toHaveBeenCalledTimes(2);
358
+ let resolve;
359
+ mockPostMessageToHost.mockImplementation(() => new global.Promise((res) => {
360
+ resolve = res;
361
+ }));
362
+ const TEST_EVENT_TYPE = 'testEventType';
363
+ const testPayload = { value: 'testPayload' };
364
+ const result = customChartContext.emitEvent(TEST_EVENT_TYPE, testPayload);
365
+ global.setTimeout(() => resolve('helloworld'), 1000);
366
+ await expect(result).resolves.toEqual('helloworld');
367
+ expect(mockPostMessageToHost).toHaveBeenCalledWith(test_utils_1.mockInitializeContextPayload.componentId, test_utils_1.mockInitializeContextPayload.hostUrl, testPayload, TEST_EVENT_TYPE);
368
+ mockPostMessageToHost.mockReset();
369
+ mockPostMessageToHost.mockImplementation(() => new global.Promise((res) => {
370
+ resolve = res;
371
+ }));
372
+ const result2 = customChartContext.emitEvent(chart_to_ts_event_types_1.ChartToTSEvent.RenderStart);
373
+ global.setTimeout(() => resolve('helloworld'), 1000);
374
+ await expect(result2).resolves.toEqual('helloworld');
375
+ expect(mockPostMessageToHost).toHaveBeenCalledWith(test_utils_1.mockInitializeContextPayload.componentId, test_utils_1.mockInitializeContextPayload.hostUrl, null, chart_to_ts_event_types_1.ChartToTSEvent.RenderStart);
376
+ });
377
+ });
378
+ });
379
+ //# sourceMappingURL=custom-chart-context.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"custom-chart-context.spec.js","sourceRoot":"","sources":["../../src/main/custom-chart-context.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { ChartToTSEvent } from '../types/chart-to-ts-event.types';
2
+ declare const init: (handleMessageEvent: any) => void;
3
+ declare const destroy: (handleMessageEvent: any) => void;
4
+ declare const postMessageToHostApp: (componentId: string, hostUrl: string, eventPayload: any, eventType: ChartToTSEvent) => Promise<any>;
5
+ export { init as initMessageListener, destroy as destroyMessageListener, postMessageToHostApp, };
6
+ //# sourceMappingURL=post-message-event-bridge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"post-message-event-bridge.d.ts","sourceRoot":"","sources":["../../src/main/post-message-event-bridge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AASlE,QAAA,MAAM,IAAI,uBAAwB,GAAG,SAEpC,CAAC;AAOF,QAAA,MAAM,OAAO,uBAAwB,GAAG,SAEvC,CAAC;AAUF,QAAA,MAAM,oBAAoB,gBACT,MAAM,WACV,MAAM,gBACD,GAAG,aACN,cAAc,KAC1B,QAAQ,GAAG,CA8CR,CAAC;AAEP,OAAO,EACH,IAAI,IAAI,mBAAmB,EAC3B,OAAO,IAAI,sBAAsB,EACjC,oBAAoB,GACvB,CAAC"}
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.postMessageToHostApp = exports.destroyMessageListener = exports.initMessageListener = void 0;
4
+ const TIMEOUT_THRESHOLD = 30000;
5
+ const init = (handleMessageEvent) => {
6
+ window.addEventListener('message', handleMessageEvent);
7
+ };
8
+ exports.initMessageListener = init;
9
+ const destroy = (handleMessageEvent) => {
10
+ window.removeEventListener('message', handleMessageEvent);
11
+ };
12
+ exports.destroyMessageListener = destroy;
13
+ const postMessageToHostApp = (componentId, hostUrl, eventPayload, eventType) => new Promise((resolve, reject) => {
14
+ const channel = new MessageChannel();
15
+ channel.port1.onmessage = (res) => {
16
+ channel.port1.close();
17
+ const { hasError, error } = res.data;
18
+ if (hasError) {
19
+ console.log('ChartContext: message failure:', res.data);
20
+ reject(error);
21
+ }
22
+ else {
23
+ console.log('ChartContext: message success:', res.data);
24
+ resolve(res.data);
25
+ }
26
+ };
27
+ setTimeout(() => {
28
+ reject(new Error(`ChartContext: postMessage operation timed out. ${eventType}`, eventPayload));
29
+ }, TIMEOUT_THRESHOLD);
30
+ try {
31
+ window.parent.window.postMessage({
32
+ componentId,
33
+ payload: {
34
+ ...eventPayload,
35
+ },
36
+ eventType,
37
+ source: 'ts-chart-sdk',
38
+ }, hostUrl, [channel.port2]);
39
+ }
40
+ catch (err) {
41
+ console.error('ChartContext: error in emitting event:', err, eventType, eventPayload);
42
+ reject(err);
43
+ }
44
+ });
45
+ exports.postMessageToHostApp = postMessageToHostApp;
46
+ //# sourceMappingURL=post-message-event-bridge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"post-message-event-bridge.js","sourceRoot":"","sources":["../../src/main/post-message-event-bridge.ts"],"names":[],"mappings":";;;AAEA,MAAM,iBAAiB,GAAG,KAAK,CAAC;AAOhC,MAAM,IAAI,GAAG,CAAC,kBAAuB,EAAE,EAAE;IACrC,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC;AAC3D,CAAC,CAAC;AAyEU,mCAAmB;AAlE/B,MAAM,OAAO,GAAG,CAAC,kBAAuB,EAAE,EAAE;IACxC,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC;AAC9D,CAAC,CAAC;AAiEa,yCAAsB;AAvDrC,MAAM,oBAAoB,GAAG,CACzB,WAAmB,EACnB,OAAe,EACf,YAAiB,EACjB,SAAyB,EACb,EAAE,CACd,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;IAC5B,MAAM,OAAO,GAAG,IAAI,cAAc,EAAE,CAAC;IACrC,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,GAAQ,EAAE,EAAE;QACnC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACtB,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;QACrC,IAAI,QAAQ,EAAE;YACV,OAAO,CAAC,GAAG,CAAC,gCAAgC,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;YACxD,MAAM,CAAC,KAAK,CAAC,CAAC;SACjB;aAAM;YACH,OAAO,CAAC,GAAG,CAAC,gCAAgC,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;YACxD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;SACrB;IACL,CAAC,CAAC;IAEF,UAAU,CAAC,GAAG,EAAE;QACZ,MAAM,CACF,IAAI,KAAK,CACL,kDAAkD,SAAS,EAAE,EAC7D,YAAY,CACf,CACJ,CAAC;IACN,CAAC,EAAE,iBAAiB,CAAC,CAAC;IAEtB,IAAI;QACA,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAC5B;YACI,WAAW;YACX,OAAO,EAAE;gBACL,GAAG,YAAY;aAClB;YACD,SAAS;YACT,MAAM,EAAE,cAAc;SACzB,EACD,OAAO,EACP,CAAC,OAAO,CAAC,KAAK,CAAC,CAClB,CAAC;KACL;IAAC,OAAO,GAAG,EAAE;QACV,OAAO,CAAC,KAAK,CACT,wCAAwC,EACxC,GAAG,EACH,SAAS,EACT,YAAY,CACf,CAAC;QACF,MAAM,CAAC,GAAG,CAAC,CAAC;KACf;AACL,CAAC,CAAC,CAAC;AAKH,oDAAoB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=post-message-event-bridge.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"post-message-event-bridge.spec.d.ts","sourceRoot":"","sources":["../../src/main/post-message-event-bridge.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,124 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const lodash_1 = __importDefault(require("lodash"));
7
+ const post_message_event_bridge_1 = require("./post-message-event-bridge");
8
+ const TIMEOUT_THRESHOLD = 30000;
9
+ describe('postMessageToHostApp', () => {
10
+ beforeEach(() => {
11
+ jest.resetAllMocks();
12
+ });
13
+ test('should resolve the promise with data object when successful', async () => {
14
+ const componentId = '123';
15
+ const hostUrl = 'https://example.com';
16
+ const eventPayload = { foo: 'bar' };
17
+ const eventType = 'SOME_EVENT';
18
+ const mockPostMessage = jest.spyOn(global.parent.window, 'postMessage');
19
+ const channel = {
20
+ port1: { onmessage: null, close: jest.fn() },
21
+ port2: {},
22
+ };
23
+ const messageChannelMock = { MessageChannel: jest.fn(() => channel) };
24
+ global.MessageChannel = messageChannelMock.MessageChannel;
25
+ const promise = (0, post_message_event_bridge_1.postMessageToHostApp)(componentId, hostUrl, eventPayload, eventType);
26
+ const response = {
27
+ data: { hasError: false, randomData: 'randomString' },
28
+ };
29
+ if (lodash_1.default.isFunction(channel.port1.onmessage)) {
30
+ channel.port1.onmessage(response);
31
+ }
32
+ else {
33
+ throw new Error('on message should have been initialized');
34
+ }
35
+ await expect(promise).resolves.toEqual(response.data);
36
+ expect(mockPostMessage).toHaveBeenCalledWith({
37
+ componentId,
38
+ payload: eventPayload,
39
+ eventType,
40
+ source: 'ts-chart-sdk',
41
+ }, hostUrl, [channel.port2]);
42
+ expect(channel.port1.close).toHaveBeenCalled();
43
+ expect(messageChannelMock.MessageChannel).toHaveBeenCalled();
44
+ });
45
+ test('should reject the promise with an error message when there is an error', async () => {
46
+ const componentId = '123';
47
+ const hostUrl = 'https://example.com';
48
+ const eventPayload = { foo: 'bar' };
49
+ const eventType = 'SOME_EVENT';
50
+ const mockPostMessage = jest.spyOn(global.parent.window, 'postMessage');
51
+ const channel = {
52
+ port1: { onmessage: null, close: jest.fn() },
53
+ port2: {},
54
+ };
55
+ const messageChannelMock = { MessageChannel: jest.fn(() => channel) };
56
+ global.MessageChannel = messageChannelMock.MessageChannel;
57
+ const promise = (0, post_message_event_bridge_1.postMessageToHostApp)(componentId, hostUrl, eventPayload, eventType);
58
+ const error = new Error('Some error');
59
+ const response = { data: { hasError: true, error } };
60
+ if (lodash_1.default.isFunction(channel.port1.onmessage)) {
61
+ channel.port1.onmessage(response);
62
+ }
63
+ else {
64
+ throw new Error('on message should have been initialized');
65
+ }
66
+ await expect(promise).rejects.toThrow('Some error');
67
+ expect(mockPostMessage).toHaveBeenCalledWith({
68
+ componentId,
69
+ payload: eventPayload,
70
+ eventType,
71
+ source: 'ts-chart-sdk',
72
+ }, hostUrl, [channel.port2]);
73
+ expect(channel.port1.close).toHaveBeenCalled();
74
+ expect(messageChannelMock.MessageChannel).toHaveBeenCalled();
75
+ });
76
+ test('should reject the promise after a timeout', async () => {
77
+ const componentId = 'some-component-id';
78
+ const hostUrl = 'https://some-host-url.com';
79
+ const eventPayload = { someKey: 'someValue' };
80
+ const eventType = 'some-event-type';
81
+ const mockPostMessage = jest.spyOn(global.parent.window, 'postMessage');
82
+ const channel = {
83
+ port1: { onmessage: null, close: jest.fn() },
84
+ port2: {},
85
+ };
86
+ const messageChannelMock = {
87
+ MessageChannel: jest.fn(() => channel),
88
+ };
89
+ global.MessageChannel = messageChannelMock.MessageChannel;
90
+ const promise = (0, post_message_event_bridge_1.postMessageToHostApp)(componentId, hostUrl, eventPayload, eventType);
91
+ expect(mockPostMessage).toHaveBeenCalledWith({
92
+ componentId,
93
+ payload: eventPayload,
94
+ eventType,
95
+ source: 'ts-chart-sdk',
96
+ }, hostUrl, expect.any(Array));
97
+ await expect(promise).rejects.toThrow('ChartContext: postMessage operation timed out.');
98
+ }, TIMEOUT_THRESHOLD + 1000);
99
+ test('should reject the promise if some error in postMessage', async () => {
100
+ const componentId = 'some-component-id';
101
+ const hostUrl = 'https://some-host-url.com';
102
+ const eventPayload = { someKey: 'someValue' };
103
+ const eventType = 'some-event-type';
104
+ const mockPostMessage = jest.spyOn(global.parent.window, 'postMessage');
105
+ mockPostMessage.mockImplementation(() => {
106
+ throw new Error('Some postMessage error');
107
+ });
108
+ const channel = {
109
+ port1: { onmessage: null, close: jest.fn() },
110
+ port2: {},
111
+ };
112
+ const messageChannelMock = { MessageChannel: jest.fn(() => channel) };
113
+ global.MessageChannel = messageChannelMock.MessageChannel;
114
+ const promise = (0, post_message_event_bridge_1.postMessageToHostApp)(componentId, hostUrl, eventPayload, eventType);
115
+ await expect(promise).rejects.toThrow('Some postMessage error');
116
+ expect(mockPostMessage).toHaveBeenCalledWith({
117
+ componentId,
118
+ payload: eventPayload,
119
+ eventType,
120
+ source: 'ts-chart-sdk',
121
+ }, hostUrl, expect.any(Array));
122
+ });
123
+ });
124
+ //# sourceMappingURL=post-message-event-bridge.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"post-message-event-bridge.spec.js","sourceRoot":"","sources":["../../src/main/post-message-event-bridge.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import React from 'react';
2
+ import { CustomChartContextProps } from '../main/custom-chart-context';
3
+ import { ChartToTSEventsPayloadMap } from '../types/chart-to-ts-event.types';
4
+ import { ChartModel } from '../types/common.types';
5
+ import { ChartModelUpdateEventPayload, DataUpdateEventPayload, TSToChartEventsPayloadMap, VisualPropsUpdateEventPayload } from '../types/ts-to-chart-event.types';
6
+ export type ChartToTSEventEmitters = {
7
+ [key in keyof ChartToTSEventsPayloadMap as `emit${Capitalize<key>}`]: (args: ChartToTSEventsPayloadMap[key]) => Promise<void>;
8
+ };
9
+ export type TSToChartEventListener = {
10
+ [key in keyof TSToChartEventsPayloadMap as `on${Capitalize<key>}`]: (args: TSToChartEventsPayloadMap[key]) => Promise<void>;
11
+ };
12
+ interface WrapperComponentProps {
13
+ children: React.ReactNode;
14
+ }
15
+ export declare const useChartContext: (props: CustomChartContextProps) => {
16
+ WrapperComponent: ({ children }: WrapperComponentProps) => React.JSX.Element;
17
+ onChartModelUpdate: (args: (payload: ChartModelUpdateEventPayload) => void) => Promise<void>;
18
+ onDataUpdate: (args: (payload: DataUpdateEventPayload) => void) => Promise<void>;
19
+ onVisualPropsUpdate: (args: (payload: VisualPropsUpdateEventPayload) => void) => Promise<void>;
20
+ emitOpenContextMenu: (args: [import("../types/chart-to-ts-event.types").OpenContextMenuEventPayload]) => Promise<void>;
21
+ emitCloseContextMenu: (args: []) => Promise<void>;
22
+ emitRenderStart: (args: []) => Promise<void>;
23
+ emitRenderComplete: (args: []) => Promise<void>;
24
+ emitRenderError: (args: [import("../types/chart-to-ts-event.types").RenderErrorEventPayload]) => Promise<void>;
25
+ emitUpdateVisualProps: (args: [import("../types/chart-to-ts-event.types").UpdateVisualPropsEventPayload]) => Promise<void>;
26
+ emitGetTMLString: (args: []) => Promise<void>;
27
+ emitSetTMLString: (args: [import("../types/chart-to-ts-event.types").SetTMLStringEventPayload]) => Promise<void>;
28
+ emitGetDataForQuery: (args: [import("../types/chart-to-ts-event.types").GetDataForQueryEventPayload]) => Promise<void>;
29
+ hasInitialized: boolean;
30
+ chartModel: ChartModel | undefined;
31
+ };
32
+ export {};
33
+ //# sourceMappingURL=custom-chart-context-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"custom-chart-context-service.d.ts","sourceRoot":"","sources":["../../src/react/custom-chart-context-service.tsx"],"names":[],"mappings":"AACA,OAAO,KAA2C,MAAM,OAAO,CAAC;AAChE,OAAO,EAEH,uBAAuB,EAC1B,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAEH,yBAAyB,EAC5B,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EACH,4BAA4B,EAC5B,sBAAsB,EAEtB,yBAAyB,EACzB,6BAA6B,EAChC,MAAM,kCAAkC,CAAC;AAE1C,MAAM,MAAM,sBAAsB,GAAG;KAChC,GAAG,IAAI,MAAM,yBAAyB,IAAI,OAAO,UAAU,CAAC,GAAG,CAAC,EAAE,GAAG,CAClE,IAAI,EAAE,yBAAyB,CAAC,GAAG,CAAC,KACnC,OAAO,CAAC,IAAI,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;KAChC,GAAG,IAAI,MAAM,yBAAyB,IAAI,KAAK,UAAU,CAAC,GAAG,CAAC,EAAE,GAAG,CAChE,IAAI,EAAE,yBAAyB,CAAC,GAAG,CAAC,KACnC,OAAO,CAAC,IAAI,CAAC;CACrB,CAAC;AAEF,UAAU,qBAAqB;IAC3B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC7B;AA8DD,eAAO,MAAM,eAAe,UAAW,uBAAuB;qCA4EvC,qBAAqB;mFA/InC,QAAQ,IAAI,CAAC;uEAAb,QAAQ,IAAI,CAAC;qFAAb,QAAQ,IAAI,CAAC;6GANb,QAAQ,IAAI,CAAC;wCAAb,QAAQ,IAAI,CAAC;mCAAb,QAAQ,IAAI,CAAC;sCAAb,QAAQ,IAAI,CAAC;qGAAb,QAAQ,IAAI,CAAC;iHAAb,QAAQ,IAAI,CAAC;oCAAb,QAAQ,IAAI,CAAC;uGAAb,QAAQ,IAAI,CAAC;6GAAb,QAAQ,IAAI,CAAC;;;CA4KrB,CAAC"}