@thoughtspot/visual-embed-sdk 1.35.6 → 1.35.8

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 (123) hide show
  1. package/cjs/package.json +1 -1
  2. package/cjs/src/embed/search-bar.d.ts +24 -1
  3. package/cjs/src/embed/search-bar.d.ts.map +1 -1
  4. package/cjs/src/embed/search-bar.js +13 -2
  5. package/cjs/src/embed/search-bar.js.map +1 -1
  6. package/cjs/src/embed/search.d.ts +26 -1
  7. package/cjs/src/embed/search.d.ts.map +1 -1
  8. package/cjs/src/embed/search.js +16 -2
  9. package/cjs/src/embed/search.js.map +1 -1
  10. package/cjs/src/embed/search.spec.js +49 -0
  11. package/cjs/src/embed/search.spec.js.map +1 -1
  12. package/cjs/src/embed/searchEmbed-basic-auth.spec.d.ts +2 -0
  13. package/cjs/src/embed/searchEmbed-basic-auth.spec.d.ts.map +1 -0
  14. package/cjs/src/embed/searchEmbed-basic-auth.spec.js +104 -0
  15. package/cjs/src/embed/searchEmbed-basic-auth.spec.js.map +1 -0
  16. package/cjs/src/embed/ts-embed.d.ts +4 -1
  17. package/cjs/src/embed/ts-embed.d.ts.map +1 -1
  18. package/cjs/src/embed/ts-embed.js +49 -32
  19. package/cjs/src/embed/ts-embed.js.map +1 -1
  20. package/cjs/src/embed/ts-embed.spec.js +176 -131
  21. package/cjs/src/embed/ts-embed.spec.js.map +1 -1
  22. package/cjs/src/hostEventsTypeMapping.d.ts +2 -0
  23. package/cjs/src/hostEventsTypeMapping.d.ts.map +1 -0
  24. package/cjs/src/hostEventsTypeMapping.js +4 -0
  25. package/cjs/src/hostEventsTypeMapping.js.map +1 -0
  26. package/cjs/src/types.d.ts +11 -0
  27. package/cjs/src/types.d.ts.map +1 -1
  28. package/cjs/src/utils/embedApi/contracts.d.ts +101 -0
  29. package/cjs/src/utils/embedApi/contracts.d.ts.map +1 -0
  30. package/cjs/src/utils/embedApi/contracts.js +17 -0
  31. package/cjs/src/utils/embedApi/contracts.js.map +1 -0
  32. package/cjs/src/utils/embedApi/embedApiClient.d.ts +12 -0
  33. package/cjs/src/utils/embedApi/embedApiClient.d.ts.map +1 -0
  34. package/cjs/src/utils/embedApi/embedApiClient.js +46 -0
  35. package/cjs/src/utils/embedApi/embedApiClient.js.map +1 -0
  36. package/cjs/src/utils/embedApi/processEmbedApi.d.ts +9 -0
  37. package/cjs/src/utils/embedApi/processEmbedApi.d.ts.map +1 -0
  38. package/cjs/src/utils/embedApi/processEmbedApi.js +18 -0
  39. package/cjs/src/utils/embedApi/processEmbedApi.js.map +1 -0
  40. package/dist/{index-Bp8mFlZ-.js → index-BBBimG1x.js} +1 -1
  41. package/dist/index-BGnxP5NY.js +7370 -0
  42. package/dist/index-CENLvayL.js +7370 -0
  43. package/dist/index-CbltIawo.js +7370 -0
  44. package/dist/index-CoQfqaHj.js +7370 -0
  45. package/dist/index-CzwzS0P4.js +7370 -0
  46. package/dist/index-DFwi_pV_.js +7370 -0
  47. package/dist/index-DOIjN0N_.js +7370 -0
  48. package/dist/index-DYBx8SuE.js +7370 -0
  49. package/dist/index-DaLHJaLd.js +7370 -0
  50. package/dist/index-DnJX-gN2.js +7370 -0
  51. package/dist/index-nWevLycs.js +7370 -0
  52. package/dist/src/embed/search-bar.d.ts +24 -1
  53. package/dist/src/embed/search-bar.d.ts.map +1 -1
  54. package/dist/src/embed/search.d.ts +26 -1
  55. package/dist/src/embed/search.d.ts.map +1 -1
  56. package/dist/src/embed/searchEmbed-basic-auth.spec.d.ts +2 -0
  57. package/dist/src/embed/searchEmbed-basic-auth.spec.d.ts.map +1 -0
  58. package/dist/src/embed/ts-embed.d.ts +4 -1
  59. package/dist/src/embed/ts-embed.d.ts.map +1 -1
  60. package/dist/src/hostEventsTypeMapping.d.ts +2 -0
  61. package/dist/src/hostEventsTypeMapping.d.ts.map +1 -0
  62. package/dist/src/types.d.ts +11 -0
  63. package/dist/src/types.d.ts.map +1 -1
  64. package/dist/src/utils/embedApi/contracts.d.ts +101 -0
  65. package/dist/src/utils/embedApi/contracts.d.ts.map +1 -0
  66. package/dist/src/utils/embedApi/embedApiClient.d.ts +12 -0
  67. package/dist/src/utils/embedApi/embedApiClient.d.ts.map +1 -0
  68. package/dist/src/utils/embedApi/processEmbedApi.d.ts +9 -0
  69. package/dist/src/utils/embedApi/processEmbedApi.d.ts.map +1 -0
  70. package/dist/tsembed-react.es.js +81 -39
  71. package/dist/tsembed-react.js +80 -38
  72. package/dist/tsembed.es.js +81 -39
  73. package/dist/tsembed.js +80 -38
  74. package/dist/visual-embed-sdk-react-full.d.ts +62 -0
  75. package/dist/visual-embed-sdk-react.d.ts +62 -0
  76. package/dist/visual-embed-sdk.d.ts +62 -0
  77. package/lib/package.json +1 -1
  78. package/lib/src/embed/search-bar.d.ts +24 -1
  79. package/lib/src/embed/search-bar.d.ts.map +1 -1
  80. package/lib/src/embed/search-bar.js +13 -2
  81. package/lib/src/embed/search-bar.js.map +1 -1
  82. package/lib/src/embed/search.d.ts +26 -1
  83. package/lib/src/embed/search.d.ts.map +1 -1
  84. package/lib/src/embed/search.js +16 -2
  85. package/lib/src/embed/search.js.map +1 -1
  86. package/lib/src/embed/search.spec.js +51 -2
  87. package/lib/src/embed/search.spec.js.map +1 -1
  88. package/lib/src/embed/searchEmbed-basic-auth.spec.d.ts +2 -0
  89. package/lib/src/embed/searchEmbed-basic-auth.spec.d.ts.map +1 -0
  90. package/lib/src/embed/searchEmbed-basic-auth.spec.js +101 -0
  91. package/lib/src/embed/searchEmbed-basic-auth.spec.js.map +1 -0
  92. package/lib/src/embed/ts-embed.d.ts +4 -1
  93. package/lib/src/embed/ts-embed.d.ts.map +1 -1
  94. package/lib/src/embed/ts-embed.js +49 -32
  95. package/lib/src/embed/ts-embed.js.map +1 -1
  96. package/lib/src/embed/ts-embed.spec.js +176 -131
  97. package/lib/src/embed/ts-embed.spec.js.map +1 -1
  98. package/lib/src/hostEventsTypeMapping.d.ts +2 -0
  99. package/lib/src/hostEventsTypeMapping.d.ts.map +1 -0
  100. package/lib/src/hostEventsTypeMapping.js +2 -0
  101. package/lib/src/hostEventsTypeMapping.js.map +1 -0
  102. package/lib/src/types.d.ts +11 -0
  103. package/lib/src/types.d.ts.map +1 -1
  104. package/lib/src/utils/embedApi/contracts.d.ts +101 -0
  105. package/lib/src/utils/embedApi/contracts.d.ts.map +1 -0
  106. package/lib/src/utils/embedApi/contracts.js +14 -0
  107. package/lib/src/utils/embedApi/contracts.js.map +1 -0
  108. package/lib/src/utils/embedApi/embedApiClient.d.ts +12 -0
  109. package/lib/src/utils/embedApi/embedApiClient.d.ts.map +1 -0
  110. package/lib/src/utils/embedApi/embedApiClient.js +42 -0
  111. package/lib/src/utils/embedApi/embedApiClient.js.map +1 -0
  112. package/lib/src/utils/embedApi/processEmbedApi.d.ts +9 -0
  113. package/lib/src/utils/embedApi/processEmbedApi.d.ts.map +1 -0
  114. package/lib/src/utils/embedApi/processEmbedApi.js +14 -0
  115. package/lib/src/utils/embedApi/processEmbedApi.js.map +1 -0
  116. package/lib/src/visual-embed-sdk.d.ts +65 -3
  117. package/package.json +1 -1
  118. package/src/embed/search-bar.tsx +36 -2
  119. package/src/embed/search.spec.ts +66 -1
  120. package/src/embed/search.ts +38 -1
  121. package/src/embed/ts-embed.spec.ts +198 -137
  122. package/src/embed/ts-embed.ts +52 -32
  123. package/src/types.ts +12 -0
@@ -153,11 +153,9 @@ describe('Unit test case for ts embed', () => {
153
153
  mockProcessTrigger.mockResolvedValue({ session: 'test' });
154
154
  await executeAfterWait(async () => {
155
155
  const payload = { newVizName: 'test' };
156
- expect(
157
- await searchEmbed.triggerUIPassThrough(
158
- UIPassthroughEvent.PinAnswerToLiveboard,
159
- payload,
160
- ),
156
+ await searchEmbed.triggerUIPassThrough(
157
+ UIPassthroughEvent.PinAnswerToLiveboard,
158
+ payload,
161
159
  );
162
160
  expect(mockProcessTrigger).toHaveBeenCalledWith(
163
161
  getIFrameEl(),
@@ -171,6 +169,47 @@ describe('Unit test case for ts embed', () => {
171
169
  });
172
170
  });
173
171
 
172
+ test('Host event with empty param', async () => {
173
+ const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
174
+ liveboardId: '123',
175
+ ...defaultViewConfig,
176
+ });
177
+ liveboardEmbed.render();
178
+ mockProcessTrigger.mockResolvedValue({ session: 'test' });
179
+ await executeAfterWait(async () => {
180
+ await liveboardEmbed.trigger(
181
+ HostEvent.Save,
182
+ );
183
+ expect(mockProcessTrigger).toHaveBeenCalledWith(
184
+ getIFrameEl(),
185
+ HostEvent.Save,
186
+ 'http://tshost',
187
+ {},
188
+ );
189
+ });
190
+ });
191
+
192
+ test('Host event with falsy param', async () => {
193
+ const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
194
+ liveboardId: '123',
195
+ ...defaultViewConfig,
196
+ });
197
+ liveboardEmbed.render();
198
+ mockProcessTrigger.mockResolvedValue({ session: 'test' });
199
+ await executeAfterWait(async () => {
200
+ await liveboardEmbed.trigger(
201
+ HostEvent.Save,
202
+ false,
203
+ );
204
+ expect(mockProcessTrigger).toHaveBeenCalledWith(
205
+ getIFrameEl(),
206
+ HostEvent.Save,
207
+ 'http://tshost',
208
+ false,
209
+ );
210
+ });
211
+ });
212
+
174
213
  test('should set proper height, width and min-height to iframe', async () => {
175
214
  // we dont have origin specific policies so just checking if
176
215
  // policies are ending with ;
@@ -250,19 +289,21 @@ describe('Unit test case for ts embed', () => {
250
289
  const iframe = getIFrameEl();
251
290
  postMessageToParent(iframe.contentWindow, mockEmbedEventPayload, mockPort);
252
291
  });
253
- expect(mockPort.postMessage).toHaveBeenCalledWith({
254
- type: EmbedEvent.APP_INIT,
255
- data: {
256
- customisations,
257
- authToken: '',
258
- runtimeFilterParams: null,
259
- runtimeParameterParams: null,
260
- hiddenHomeLeftNavItems: [],
261
- hiddenHomepageModules: [],
262
- hostConfig: undefined,
263
- reorderedHomepageModules: [],
264
- customVariablesForThirdPartyTools,
265
- },
292
+ await executeAfterWait(() => {
293
+ expect(mockPort.postMessage).toHaveBeenCalledWith({
294
+ type: EmbedEvent.APP_INIT,
295
+ data: {
296
+ customisations,
297
+ authToken: '',
298
+ runtimeFilterParams: null,
299
+ runtimeParameterParams: null,
300
+ hiddenHomeLeftNavItems: [],
301
+ hiddenHomepageModules: [],
302
+ hostConfig: undefined,
303
+ reorderedHomepageModules: [],
304
+ customVariablesForThirdPartyTools,
305
+ },
306
+ });
266
307
  });
267
308
  });
268
309
 
@@ -283,19 +324,21 @@ describe('Unit test case for ts embed', () => {
283
324
  const iframe = getIFrameEl();
284
325
  postMessageToParent(iframe.contentWindow, mockEmbedEventPayload, mockPort);
285
326
  });
286
- expect(mockPort.postMessage).toHaveBeenCalledWith({
287
- type: EmbedEvent.APP_INIT,
288
- data: {
289
- customisations: customisationsView,
290
- authToken: '',
291
- runtimeFilterParams: null,
292
- runtimeParameterParams: null,
293
- hiddenHomeLeftNavItems: [],
294
- hiddenHomepageModules: [],
295
- hostConfig: undefined,
296
- reorderedHomepageModules: [],
297
- customVariablesForThirdPartyTools,
298
- },
327
+ await executeAfterWait(() => {
328
+ expect(mockPort.postMessage).toHaveBeenCalledWith({
329
+ type: EmbedEvent.APP_INIT,
330
+ data: {
331
+ customisations: customisationsView,
332
+ authToken: '',
333
+ runtimeFilterParams: null,
334
+ runtimeParameterParams: null,
335
+ hiddenHomeLeftNavItems: [],
336
+ hiddenHomepageModules: [],
337
+ hostConfig: undefined,
338
+ reorderedHomepageModules: [],
339
+ customVariablesForThirdPartyTools,
340
+ },
341
+ });
299
342
  });
300
343
  });
301
344
 
@@ -321,19 +364,21 @@ describe('Unit test case for ts embed', () => {
321
364
  const iframe = getIFrameEl();
322
365
  postMessageToParent(iframe.contentWindow, mockEmbedEventPayload, mockPort);
323
366
  });
324
- expect(mockPort.postMessage).toHaveBeenCalledWith({
325
- type: EmbedEvent.APP_INIT,
326
- data: {
327
- customisations,
328
- authToken: '',
329
- hostConfig: undefined,
330
- runtimeFilterParams: null,
331
- runtimeParameterParams: null,
332
- hiddenHomeLeftNavItems: [],
333
- hiddenHomepageModules: [HomepageModule.MyLibrary, HomepageModule.Learning],
334
- reorderedHomepageModules: [],
335
- customVariablesForThirdPartyTools,
336
- },
367
+ await executeAfterWait(() => {
368
+ expect(mockPort.postMessage).toHaveBeenCalledWith({
369
+ type: EmbedEvent.APP_INIT,
370
+ data: {
371
+ customisations,
372
+ authToken: '',
373
+ hostConfig: undefined,
374
+ runtimeFilterParams: null,
375
+ runtimeParameterParams: null,
376
+ hiddenHomeLeftNavItems: [],
377
+ hiddenHomepageModules: [HomepageModule.MyLibrary, HomepageModule.Learning],
378
+ reorderedHomepageModules: [],
379
+ customVariablesForThirdPartyTools,
380
+ },
381
+ });
337
382
  });
338
383
  });
339
384
 
@@ -356,20 +401,21 @@ describe('Unit test case for ts embed', () => {
356
401
  const iframe = getIFrameEl();
357
402
  postMessageToParent(iframe.contentWindow, mockEmbedEventPayload, mockPort);
358
403
  });
359
-
360
- expect(mockPort.postMessage).toHaveBeenCalledWith({
361
- type: EmbedEvent.APP_INIT,
362
- data: {
363
- customisations,
364
- authToken: '',
365
- hostConfig: undefined,
366
- runtimeFilterParams: null,
367
- runtimeParameterParams: null,
368
- hiddenHomeLeftNavItems: [],
369
- hiddenHomepageModules: [],
370
- reorderedHomepageModules: [],
371
- customVariablesForThirdPartyTools,
372
- },
404
+ await executeAfterWait(() => {
405
+ expect(mockPort.postMessage).toHaveBeenCalledWith({
406
+ type: EmbedEvent.APP_INIT,
407
+ data: {
408
+ customisations,
409
+ authToken: '',
410
+ hostConfig: undefined,
411
+ runtimeFilterParams: null,
412
+ runtimeParameterParams: null,
413
+ hiddenHomeLeftNavItems: [],
414
+ hiddenHomepageModules: [],
415
+ reorderedHomepageModules: [],
416
+ customVariablesForThirdPartyTools,
417
+ },
418
+ });
373
419
  });
374
420
  });
375
421
 
@@ -395,19 +441,22 @@ describe('Unit test case for ts embed', () => {
395
441
  const iframe = getIFrameEl();
396
442
  postMessageToParent(iframe.contentWindow, mockEmbedEventPayload, mockPort);
397
443
  });
398
- expect(mockPort.postMessage).toHaveBeenCalledWith({
399
- type: EmbedEvent.APP_INIT,
400
- data: {
401
- customisations,
402
- authToken: '',
403
- hostConfig: undefined,
404
- runtimeFilterParams: null,
405
- runtimeParameterParams: null,
406
- hiddenHomeLeftNavItems: [],
407
- hiddenHomepageModules: [],
408
- reorderedHomepageModules: [HomepageModule.MyLibrary, HomepageModule.Watchlist],
409
- customVariablesForThirdPartyTools,
410
- },
444
+ await executeAfterWait(() => {
445
+ expect(mockPort.postMessage).toHaveBeenCalledWith({
446
+ type: EmbedEvent.APP_INIT,
447
+ data: {
448
+ customisations,
449
+ authToken: '',
450
+ hostConfig: undefined,
451
+ runtimeFilterParams: null,
452
+ runtimeParameterParams: null,
453
+ hiddenHomeLeftNavItems: [],
454
+ hiddenHomepageModules: [],
455
+ reorderedHomepageModules:
456
+ [HomepageModule.MyLibrary, HomepageModule.Watchlist],
457
+ customVariablesForThirdPartyTools,
458
+ },
459
+ });
411
460
  });
412
461
  });
413
462
 
@@ -436,19 +485,21 @@ describe('Unit test case for ts embed', () => {
436
485
  const iframe = getIFrameEl();
437
486
  postMessageToParent(iframe.contentWindow, mockEmbedEventPayload, mockPort);
438
487
  });
439
- expect(mockPort.postMessage).toHaveBeenCalledWith({
440
- type: EmbedEvent.APP_INIT,
441
- data: {
442
- customisations,
443
- authToken: '',
444
- runtimeFilterParams: null,
445
- runtimeParameterParams: 'param1=color&paramVal1=blue',
446
- hiddenHomeLeftNavItems: [],
447
- hiddenHomepageModules: [],
448
- hostConfig: undefined,
449
- reorderedHomepageModules: [],
450
- customVariablesForThirdPartyTools,
451
- },
488
+ await executeAfterWait(() => {
489
+ expect(mockPort.postMessage).toHaveBeenCalledWith({
490
+ type: EmbedEvent.APP_INIT,
491
+ data: {
492
+ customisations,
493
+ authToken: '',
494
+ runtimeFilterParams: null,
495
+ runtimeParameterParams: 'param1=color&paramVal1=blue',
496
+ hiddenHomeLeftNavItems: [],
497
+ hiddenHomepageModules: [],
498
+ hostConfig: undefined,
499
+ reorderedHomepageModules: [],
500
+ customVariablesForThirdPartyTools,
501
+ },
502
+ });
452
503
  });
453
504
  });
454
505
 
@@ -478,19 +529,21 @@ describe('Unit test case for ts embed', () => {
478
529
  const iframe = getIFrameEl();
479
530
  postMessageToParent(iframe.contentWindow, mockEmbedEventPayload, mockPort);
480
531
  });
481
- expect(mockPort.postMessage).toHaveBeenCalledWith({
482
- type: EmbedEvent.APP_INIT,
483
- data: {
484
- customisations,
485
- authToken: '',
486
- runtimeFilterParams: 'col1=color&op1=EQ&val1=blue',
487
- runtimeParameterParams: null,
488
- hiddenHomeLeftNavItems: [],
489
- hiddenHomepageModules: [],
490
- hostConfig: undefined,
491
- reorderedHomepageModules: [],
492
- customVariablesForThirdPartyTools,
493
- },
532
+ await executeAfterWait(() => {
533
+ expect(mockPort.postMessage).toHaveBeenCalledWith({
534
+ type: EmbedEvent.APP_INIT,
535
+ data: {
536
+ customisations,
537
+ authToken: '',
538
+ runtimeFilterParams: 'col1=color&op1=EQ&val1=blue',
539
+ runtimeParameterParams: null,
540
+ hiddenHomeLeftNavItems: [],
541
+ hiddenHomepageModules: [],
542
+ hostConfig: undefined,
543
+ reorderedHomepageModules: [],
544
+ customVariablesForThirdPartyTools,
545
+ },
546
+ });
494
547
  });
495
548
  });
496
549
 
@@ -519,19 +572,21 @@ describe('Unit test case for ts embed', () => {
519
572
  const iframe = getIFrameEl();
520
573
  postMessageToParent(iframe.contentWindow, mockEmbedEventPayload, mockPort);
521
574
  });
522
- expect(mockPort.postMessage).toHaveBeenCalledWith({
523
- type: EmbedEvent.APP_INIT,
524
- data: {
525
- customisations,
526
- authToken: '',
527
- runtimeFilterParams: null,
528
- runtimeParameterParams: null,
529
- hiddenHomeLeftNavItems: [],
530
- hiddenHomepageModules: [],
531
- hostConfig: undefined,
532
- reorderedHomepageModules: [],
533
- customVariablesForThirdPartyTools,
534
- },
575
+ await executeAfterWait(() => {
576
+ expect(mockPort.postMessage).toHaveBeenCalledWith({
577
+ type: EmbedEvent.APP_INIT,
578
+ data: {
579
+ customisations,
580
+ authToken: '',
581
+ runtimeFilterParams: null,
582
+ runtimeParameterParams: null,
583
+ hiddenHomeLeftNavItems: [],
584
+ hiddenHomepageModules: [],
585
+ hostConfig: undefined,
586
+ reorderedHomepageModules: [],
587
+ customVariablesForThirdPartyTools,
588
+ },
589
+ });
535
590
  });
536
591
  });
537
592
 
@@ -561,19 +616,21 @@ describe('Unit test case for ts embed', () => {
561
616
  const iframe = getIFrameEl();
562
617
  postMessageToParent(iframe.contentWindow, mockEmbedEventPayload, mockPort);
563
618
  });
564
- expect(mockPort.postMessage).toHaveBeenCalledWith({
565
- type: EmbedEvent.APP_INIT,
566
- data: {
567
- customisations,
568
- authToken: '',
569
- runtimeFilterParams: null,
570
- runtimeParameterParams: null,
571
- hiddenHomeLeftNavItems: [],
572
- hiddenHomepageModules: [],
573
- hostConfig: undefined,
574
- reorderedHomepageModules: [],
575
- customVariablesForThirdPartyTools,
576
- },
619
+ await executeAfterWait(() => {
620
+ expect(mockPort.postMessage).toHaveBeenCalledWith({
621
+ type: EmbedEvent.APP_INIT,
622
+ data: {
623
+ customisations,
624
+ authToken: '',
625
+ runtimeFilterParams: null,
626
+ runtimeParameterParams: null,
627
+ hiddenHomeLeftNavItems: [],
628
+ hiddenHomepageModules: [],
629
+ hostConfig: undefined,
630
+ reorderedHomepageModules: [],
631
+ customVariablesForThirdPartyTools,
632
+ },
633
+ });
577
634
  });
578
635
  });
579
636
 
@@ -599,20 +656,23 @@ describe('Unit test case for ts embed', () => {
599
656
  const iframe = getIFrameEl();
600
657
  postMessageToParent(iframe.contentWindow, mockEmbedEventPayload, mockPort);
601
658
  });
602
- expect(mockPort.postMessage).toHaveBeenCalledWith({
603
- type: EmbedEvent.APP_INIT,
604
- data: {
605
- customisations,
606
- authToken: '',
607
- hostConfig: undefined,
608
- runtimeFilterParams: null,
609
- runtimeParameterParams: null,
610
- hiddenHomeLeftNavItems:
611
- [HomeLeftNavItem.Home, HomeLeftNavItem.MonitorSubscription],
612
- hiddenHomepageModules: [],
613
- reorderedHomepageModules: [],
614
- customVariablesForThirdPartyTools,
615
- },
659
+
660
+ await executeAfterWait(() => {
661
+ expect(mockPort.postMessage).toHaveBeenCalledWith({
662
+ type: EmbedEvent.APP_INIT,
663
+ data: {
664
+ customisations,
665
+ authToken: '',
666
+ hostConfig: undefined,
667
+ runtimeFilterParams: null,
668
+ runtimeParameterParams: null,
669
+ hiddenHomeLeftNavItems:
670
+ [HomeLeftNavItem.Home, HomeLeftNavItem.MonitorSubscription],
671
+ hiddenHomepageModules: [],
672
+ reorderedHomepageModules: [],
673
+ customVariablesForThirdPartyTools,
674
+ },
675
+ });
616
676
  });
617
677
  });
618
678
 
@@ -796,6 +856,7 @@ describe('Unit test case for ts embed', () => {
796
856
  authType: AuthType.TrustedAuthTokenCookieless,
797
857
  getAuthToken: () => Promise.reject(),
798
858
  });
859
+ jest.spyOn(logger, 'error').mockResolvedValue(true);
799
860
  });
800
861
 
801
862
  afterEach(() => {
@@ -60,6 +60,7 @@ import {
60
60
  FrameParams,
61
61
  ContextMenuTriggerOptions,
62
62
  RuntimeFilter,
63
+ DefaultAppInitData,
63
64
  } from '../types';
64
65
  import { uploadMixpanelEvent, MIXPANEL_EVENT } from '../mixpanel-service';
65
66
  import { processEventData, processAuthFailure } from '../utils/processData';
@@ -319,43 +320,62 @@ export class TsEmbed {
319
320
  });
320
321
  }
321
322
 
323
+ protected async getAuthTokenForCookielessInit() {
324
+ let authToken = '';
325
+ if (this.embedConfig.authType !== AuthType.TrustedAuthTokenCookieless) return authToken;
326
+
327
+ try {
328
+ authToken = await getAuthenticationToken(this.embedConfig);
329
+ } catch (e) {
330
+ processAuthFailure(e, this.isPreRendered ? this.preRenderWrapper : this.el);
331
+ throw e;
332
+ }
333
+
334
+ return authToken;
335
+ }
336
+
337
+ protected async getDefaultAppInitData(): Promise<DefaultAppInitData> {
338
+ const authToken = await this.getAuthTokenForCookielessInit();
339
+ return {
340
+ customisations: getCustomisations(this.embedConfig, this.viewConfig),
341
+ authToken,
342
+ runtimeFilterParams: this.viewConfig.excludeRuntimeFiltersfromURL
343
+ ? getRuntimeFilters(this.viewConfig.runtimeFilters)
344
+ : null,
345
+ runtimeParameterParams: this.viewConfig.excludeRuntimeParametersfromURL
346
+ ? getRuntimeParameters(this.viewConfig.runtimeParameters || [])
347
+ : null,
348
+ hiddenHomepageModules: this.viewConfig.hiddenHomepageModules || [],
349
+ reorderedHomepageModules: this.viewConfig.reorderedHomepageModules || [],
350
+ hostConfig: this.embedConfig.hostConfig,
351
+ hiddenHomeLeftNavItems: this.viewConfig?.hiddenHomeLeftNavItems
352
+ ? this.viewConfig?.hiddenHomeLeftNavItems
353
+ : [],
354
+ customVariablesForThirdPartyTools:
355
+ this.embedConfig.customVariablesForThirdPartyTools || {},
356
+ };
357
+ }
358
+
359
+ protected async getAppInitData() {
360
+ return this.getDefaultAppInitData();
361
+ }
362
+
322
363
  /**
323
364
  * Send Custom style as part of payload of APP_INIT
324
365
  * @param _
325
366
  * @param responder
326
367
  */
327
368
  private appInitCb = async (_: any, responder: any) => {
328
- let authToken = '';
329
- if (this.embedConfig.authType === AuthType.TrustedAuthTokenCookieless) {
330
- try {
331
- authToken = await getAuthenticationToken(this.embedConfig);
332
- } catch (e) {
333
- processAuthFailure(e, this.isPreRendered ? this.preRenderWrapper : this.el);
334
- return;
335
- }
369
+ try {
370
+ const appInitData = await this.getAppInitData();
371
+ this.isAppInitialized = true;
372
+ responder({
373
+ type: EmbedEvent.APP_INIT,
374
+ data: appInitData,
375
+ });
376
+ } catch (e) {
377
+ logger.error(`AppInit failed, Error : ${e?.message}`);
336
378
  }
337
- this.isAppInitialized = true;
338
- responder({
339
- type: EmbedEvent.APP_INIT,
340
- data: {
341
- customisations: getCustomisations(this.embedConfig, this.viewConfig),
342
- authToken,
343
- runtimeFilterParams: this.viewConfig.excludeRuntimeFiltersfromURL
344
- ? getRuntimeFilters(this.viewConfig.runtimeFilters)
345
- : null,
346
- runtimeParameterParams: this.viewConfig.excludeRuntimeParametersfromURL
347
- ? getRuntimeParameters(this.viewConfig.runtimeParameters || [])
348
- : null,
349
- hiddenHomepageModules: this.viewConfig.hiddenHomepageModules || [],
350
- reorderedHomepageModules: this.viewConfig.reorderedHomepageModules || [],
351
- hostConfig: this.embedConfig.hostConfig,
352
- hiddenHomeLeftNavItems: this.viewConfig?.hiddenHomeLeftNavItems
353
- ? this.viewConfig?.hiddenHomeLeftNavItems
354
- : [],
355
- customVariablesForThirdPartyTools:
356
- this.embedConfig.customVariablesForThirdPartyTools || {},
357
- },
358
- });
359
379
  };
360
380
 
361
381
  /**
@@ -1013,7 +1033,7 @@ export class TsEmbed {
1013
1033
  */
1014
1034
  public async trigger<HostEventT extends HostEvent, PayloadT>(
1015
1035
  messageType: HostEventT,
1016
- data?: TriggerPayload<PayloadT, HostEventT>,
1036
+ data: TriggerPayload<PayloadT, HostEventT> = ({} as any),
1017
1037
  ): Promise<TriggerResponse<PayloadT, HostEventT>> {
1018
1038
  uploadMixpanelEvent(`${MIXPANEL_EVENT.VISUAL_SDK_TRIGGER}-${messageType}`);
1019
1039
 
@@ -1026,7 +1046,7 @@ export class TsEmbed {
1026
1046
  this.handleError('Host event type is undefined');
1027
1047
  return null;
1028
1048
  }
1029
-
1049
+ // send an empty object, this is needed for liveboard default handlers
1030
1050
  return this.hostEventClient.triggerHostEvent(messageType, data);
1031
1051
  }
1032
1052
 
package/src/types.ts CHANGED
@@ -4624,3 +4624,15 @@ export enum LogLevel {
4624
4624
  */
4625
4625
  TRACE = 'TRACE',
4626
4626
  }
4627
+
4628
+ export interface DefaultAppInitData {
4629
+ customisations: CustomisationsInterface;
4630
+ authToken: string;
4631
+ runtimeFilterParams: string | null;
4632
+ runtimeParameterParams: string | null;
4633
+ hiddenHomepageModules: HomepageModule[];
4634
+ reorderedHomepageModules: string[];
4635
+ hostConfig: Record<string, any>;
4636
+ hiddenHomeLeftNavItems: string[];
4637
+ customVariablesForThirdPartyTools: Record<string, any>;
4638
+ }