@thoughtspot/visual-embed-sdk 1.37.0-temp-nav → 1.37.1-spotter-embed

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 (128) hide show
  1. package/cjs/package.json +3 -3
  2. package/cjs/src/auth.d.ts +7 -3
  3. package/cjs/src/auth.d.ts.map +1 -1
  4. package/cjs/src/auth.js +20 -0
  5. package/cjs/src/auth.js.map +1 -1
  6. package/cjs/src/auth.spec.js +48 -0
  7. package/cjs/src/auth.spec.js.map +1 -1
  8. package/cjs/src/embed/app.d.ts +2 -19
  9. package/cjs/src/embed/app.d.ts.map +1 -1
  10. package/cjs/src/embed/app.js +3 -8
  11. package/cjs/src/embed/app.js.map +1 -1
  12. package/cjs/src/embed/app.spec.js +4 -10
  13. package/cjs/src/embed/app.spec.js.map +1 -1
  14. package/cjs/src/embed/bodyless-conversation.d.ts +39 -9
  15. package/cjs/src/embed/bodyless-conversation.d.ts.map +1 -1
  16. package/cjs/src/embed/bodyless-conversation.js +32 -5
  17. package/cjs/src/embed/bodyless-conversation.js.map +1 -1
  18. package/cjs/src/embed/bodyless-conversation.spec.js +4 -4
  19. package/cjs/src/embed/bodyless-conversation.spec.js.map +1 -1
  20. package/cjs/src/embed/conversation.d.ts +38 -11
  21. package/cjs/src/embed/conversation.d.ts.map +1 -1
  22. package/cjs/src/embed/conversation.js +28 -4
  23. package/cjs/src/embed/conversation.js.map +1 -1
  24. package/cjs/src/embed/conversation.spec.js +7 -7
  25. package/cjs/src/embed/conversation.spec.js.map +1 -1
  26. package/cjs/src/embed/ts-embed.spec.d.ts.map +1 -1
  27. package/cjs/src/embed/ts-embed.spec.js.map +1 -1
  28. package/cjs/src/index.d.ts +3 -3
  29. package/cjs/src/index.d.ts.map +1 -1
  30. package/cjs/src/index.js +5 -3
  31. package/cjs/src/index.js.map +1 -1
  32. package/cjs/src/react/all-types-export.d.ts +1 -1
  33. package/cjs/src/react/all-types-export.d.ts.map +1 -1
  34. package/cjs/src/react/all-types-export.js +2 -1
  35. package/cjs/src/react/all-types-export.js.map +1 -1
  36. package/cjs/src/react/index.d.ts +24 -5
  37. package/cjs/src/react/index.d.ts.map +1 -1
  38. package/cjs/src/react/index.js +21 -4
  39. package/cjs/src/react/index.js.map +1 -1
  40. package/cjs/src/types.d.ts +51 -2
  41. package/cjs/src/types.d.ts.map +1 -1
  42. package/cjs/src/types.js +49 -0
  43. package/cjs/src/types.js.map +1 -1
  44. package/dist/index-DUaG1OG2.js +7447 -0
  45. package/dist/index-DnIvX1FR.js +7371 -0
  46. package/dist/index-OuiZF3zE.js +7371 -0
  47. package/dist/src/auth.d.ts +7 -3
  48. package/dist/src/auth.d.ts.map +1 -1
  49. package/dist/src/embed/app.d.ts +2 -19
  50. package/dist/src/embed/app.d.ts.map +1 -1
  51. package/dist/src/embed/bodyless-conversation.d.ts +39 -9
  52. package/dist/src/embed/bodyless-conversation.d.ts.map +1 -1
  53. package/dist/src/embed/conversation.d.ts +38 -11
  54. package/dist/src/embed/conversation.d.ts.map +1 -1
  55. package/dist/src/embed/ts-embed.spec.d.ts.map +1 -1
  56. package/dist/src/index.d.ts +3 -3
  57. package/dist/src/index.d.ts.map +1 -1
  58. package/dist/src/react/all-types-export.d.ts +1 -1
  59. package/dist/src/react/all-types-export.d.ts.map +1 -1
  60. package/dist/src/react/index.d.ts +24 -5
  61. package/dist/src/react/index.d.ts.map +1 -1
  62. package/dist/src/types.d.ts +51 -2
  63. package/dist/src/types.d.ts.map +1 -1
  64. package/dist/tsembed-react.es.js +122 -18
  65. package/dist/tsembed-react.js +342 -161
  66. package/dist/tsembed.es.js +84 -19
  67. package/dist/tsembed.js +306 -163
  68. package/dist/visual-embed-sdk-react-full.d.ts +161 -49
  69. package/dist/visual-embed-sdk-react.d.ts +161 -49
  70. package/dist/visual-embed-sdk.d.ts +138 -45
  71. package/lib/package.json +3 -3
  72. package/lib/src/auth.d.ts +7 -3
  73. package/lib/src/auth.d.ts.map +1 -1
  74. package/lib/src/auth.js +20 -0
  75. package/lib/src/auth.js.map +1 -1
  76. package/lib/src/auth.spec.js +48 -0
  77. package/lib/src/auth.spec.js.map +1 -1
  78. package/lib/src/embed/app.d.ts +2 -19
  79. package/lib/src/embed/app.d.ts.map +1 -1
  80. package/lib/src/embed/app.js +3 -8
  81. package/lib/src/embed/app.js.map +1 -1
  82. package/lib/src/embed/app.spec.js +4 -10
  83. package/lib/src/embed/app.spec.js.map +1 -1
  84. package/lib/src/embed/bodyless-conversation.d.ts +39 -9
  85. package/lib/src/embed/bodyless-conversation.d.ts.map +1 -1
  86. package/lib/src/embed/bodyless-conversation.js +30 -4
  87. package/lib/src/embed/bodyless-conversation.js.map +1 -1
  88. package/lib/src/embed/bodyless-conversation.spec.js +5 -5
  89. package/lib/src/embed/bodyless-conversation.spec.js.map +1 -1
  90. package/lib/src/embed/conversation.d.ts +38 -11
  91. package/lib/src/embed/conversation.d.ts.map +1 -1
  92. package/lib/src/embed/conversation.js +26 -3
  93. package/lib/src/embed/conversation.js.map +1 -1
  94. package/lib/src/embed/conversation.spec.js +8 -8
  95. package/lib/src/embed/conversation.spec.js.map +1 -1
  96. package/lib/src/embed/ts-embed.spec.d.ts.map +1 -1
  97. package/lib/src/embed/ts-embed.spec.js.map +1 -1
  98. package/lib/src/index.d.ts +3 -3
  99. package/lib/src/index.d.ts.map +1 -1
  100. package/lib/src/index.js +3 -3
  101. package/lib/src/index.js.map +1 -1
  102. package/lib/src/react/all-types-export.d.ts +1 -1
  103. package/lib/src/react/all-types-export.d.ts.map +1 -1
  104. package/lib/src/react/all-types-export.js +1 -1
  105. package/lib/src/react/all-types-export.js.map +1 -1
  106. package/lib/src/react/index.d.ts +24 -5
  107. package/lib/src/react/index.d.ts.map +1 -1
  108. package/lib/src/react/index.js +21 -4
  109. package/lib/src/react/index.js.map +1 -1
  110. package/lib/src/types.d.ts +51 -2
  111. package/lib/src/types.d.ts.map +1 -1
  112. package/lib/src/types.js +49 -0
  113. package/lib/src/types.js.map +1 -1
  114. package/lib/src/visual-embed-sdk.d.ts +140 -47
  115. package/package.json +3 -3
  116. package/src/auth.spec.ts +52 -0
  117. package/src/auth.ts +23 -2
  118. package/src/embed/app.spec.ts +4 -10
  119. package/src/embed/app.ts +6 -30
  120. package/src/embed/bodyless-conversation.spec.ts +6 -6
  121. package/src/embed/bodyless-conversation.ts +43 -8
  122. package/src/embed/conversation.spec.ts +16 -16
  123. package/src/embed/conversation.ts +42 -11
  124. package/src/embed/ts-embed.spec.ts +0 -2
  125. package/src/index.ts +8 -4
  126. package/src/react/all-types-export.ts +1 -0
  127. package/src/react/index.tsx +36 -10
  128. package/src/types.ts +55 -0
package/dist/tsembed.js CHANGED
@@ -1,4 +1,4 @@
1
- /* @thoughtspot/visual-embed-sdk version 1.37.0-temp-nav */
1
+ /* @thoughtspot/visual-embed-sdk version 1.37.1-spotter-embed */
2
2
  'use client';
3
3
  (function (global, factory) {
4
4
  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
@@ -32,7 +32,7 @@
32
32
  }
33
33
  return false;
34
34
  };
35
- const merge = (...objects) => objects.reduce((result, current) => {
35
+ const merge$1 = (...objects) => objects.reduce((result, current) => {
36
36
  if (Array.isArray(current)) {
37
37
  throw new TypeError("Arguments provided to ts-deepmerge must be objects, not arrays.");
38
38
  }
@@ -41,19 +41,19 @@
41
41
  return;
42
42
  }
43
43
  if (Array.isArray(result[key]) && Array.isArray(current[key])) {
44
- result[key] = merge.options.mergeArrays
45
- ? merge.options.uniqueArrayItems
44
+ result[key] = merge$1.options.mergeArrays
45
+ ? merge$1.options.uniqueArrayItems
46
46
  ? Array.from(new Set(result[key].concat(current[key])))
47
47
  : [...result[key], ...current[key]]
48
48
  : current[key];
49
49
  }
50
50
  else if (isObject$1(result[key]) && isObject$1(current[key])) {
51
- result[key] = merge(result[key], current[key]);
51
+ result[key] = merge$1(result[key], current[key]);
52
52
  }
53
53
  else {
54
54
  result[key] =
55
55
  current[key] === undefined
56
- ? merge.options.allowUndefinedOverrides
56
+ ? merge$1.options.allowUndefinedOverrides
57
57
  ? current[key]
58
58
  : result[key]
59
59
  : current[key];
@@ -66,11 +66,11 @@
66
66
  mergeArrays: true,
67
67
  uniqueArrayItems: true,
68
68
  };
69
- merge.options = defaultOptions;
70
- merge.withOptions = (options, ...objects) => {
71
- merge.options = Object.assign(Object.assign({}, defaultOptions), options);
72
- const result = merge(...objects);
73
- merge.options = defaultOptions;
69
+ merge$1.options = defaultOptions;
70
+ merge$1.withOptions = (options, ...objects) => {
71
+ merge$1.options = Object.assign(Object.assign({}, defaultOptions), options);
72
+ const result = merge$1(...objects);
73
+ merge$1.options = defaultOptions;
74
74
  return result;
75
75
  };
76
76
 
@@ -271,7 +271,7 @@
271
271
  function getDOMNode(domSelector) {
272
272
  return typeof domSelector === 'string' ? document.querySelector(domSelector) : domSelector;
273
273
  }
274
- const deepMerge = (target, source) => merge(target, source);
274
+ const deepMerge = (target, source) => merge$1(target, source);
275
275
  const getOperationNameFromQuery = (query) => {
276
276
  const regex = /(?:query|mutation)\s+(\w+)/;
277
277
  const matches = query.match(regex);
@@ -2825,6 +2825,54 @@
2825
2825
  * @version SDK: 1.37.0 | ThoughtSpot: 10.8.0.cl
2826
2826
  */
2827
2827
  HostEvent["TransformTableVizData"] = "TransformTableVizData";
2828
+ /**
2829
+ * Triggers the table visualization re-render with the updated data.
2830
+ * Includes the following properties:
2831
+ * @param - `columnDataLite` - an array of object containing the
2832
+ * data value modifications retrieved from the `EmbedEvent.TableVizRendered`
2833
+ * payload.For example, { columnDataLite: []}`.
2834
+ */
2835
+ HostEvent["SpotterSearch"] = "SpotterSearch";
2836
+ /**
2837
+ * Triggers the table visualization re-render with the updated data.
2838
+ * Includes the following properties:
2839
+ * @param - `columnDataLite` - an array of object containing the
2840
+ * data value modifications retrieved from the `EmbedEvent.TableVizRendered`
2841
+ * payload.For example, { columnDataLite: []}`.
2842
+ */
2843
+ HostEvent["EditLastPrompt"] = "EditLastPrompt";
2844
+ /**
2845
+ * Triggers the table visualization re-render with the updated data.
2846
+ * Includes the following properties:
2847
+ * @param - `columnDataLite` - an array of object containing the
2848
+ * data value modifications retrieved from the `EmbedEvent.TableVizRendered`
2849
+ * payload.For example, { columnDataLite: []}`.
2850
+ */
2851
+ HostEvent["PreviewSpotterData"] = "PreviewSpotterData";
2852
+ /**
2853
+ * Triggers the table visualization re-render with the updated data.
2854
+ * Includes the following properties:
2855
+ * @param - `columnDataLite` - an array of object containing the
2856
+ * data value modifications retrieved from the `EmbedEvent.TableVizRendered`
2857
+ * payload.For example, { columnDataLite: []}`.
2858
+ */
2859
+ HostEvent["ResetSpotterConversation"] = "ResetSpotterConversation";
2860
+ /**
2861
+ * Triggers the table visualization re-render with the updated data.
2862
+ * Includes the following properties:
2863
+ * @param - `columnDataLite` - an array of object containing the
2864
+ * data value modifications retrieved from the `EmbedEvent.TableVizRendered`
2865
+ * payload.For example, { columnDataLite: []}`.
2866
+ */
2867
+ HostEvent["DeleteLastPrompt"] = "DeleteLastPrompt";
2868
+ /**
2869
+ * Triggers the table visualization re-render with the updated data.
2870
+ * Includes the following properties:
2871
+ * @param - `columnDataLite` - an array of object containing the
2872
+ * data value modifications retrieved from the `EmbedEvent.TableVizRendered`
2873
+ * payload.For example, { columnDataLite: []}`.
2874
+ */
2875
+ HostEvent["AnswerChartSwitcher"] = "answerChartSwitcher";
2828
2876
  })(exports.HostEvent || (exports.HostEvent = {}));
2829
2877
  /**
2830
2878
  * The different visual modes that the data sources panel within
@@ -2966,6 +3014,7 @@
2966
3014
  Param["ShowSpotterLimitations"] = "showSpotterLimitations";
2967
3015
  Param["CoverAndFilterOptionInPDF"] = "coverAndFilterOptionInPDF";
2968
3016
  Param["PrimaryAction"] = "primaryAction";
3017
+ Param["isSpotterAgentEmbed"] = "isSpotterAgentEmbed";
2969
3018
  })(Param || (Param = {}));
2970
3019
  /**
2971
3020
  * ThoughtSpot application pages include actions and menu commands
@@ -14557,6 +14606,10 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
14557
14606
  * @version SDK: 1.19.0
14558
14607
  */
14559
14608
  AuthStatus["WAITING_FOR_POPUP"] = "WAITING_FOR_POPUP";
14609
+ /**
14610
+ * Emitted when the SAML popup is closed without authentication
14611
+ */
14612
+ AuthStatus["SAML_POPUP_CLOSED_NO_AUTH"] = "SAML_POPUP_CLOSED_NO_AUTH";
14560
14613
  })(exports.AuthStatus || (exports.AuthStatus = {}));
14561
14614
  /**
14562
14615
  * Events which can be triggered on the emitter returned from {@link init}.
@@ -14777,14 +14830,26 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
14777
14830
  * @param triggerText
14778
14831
  */
14779
14832
  async function samlPopupFlow(ssoURL, triggerContainer, triggerText) {
14833
+ let popupClosedCheck;
14780
14834
  const openPopup = () => {
14781
14835
  if (samlAuthWindow === null || samlAuthWindow.closed) {
14782
14836
  samlAuthWindow = window.open(ssoURL, '_blank', 'location=no,height=570,width=520,scrollbars=yes,status=yes');
14837
+ if (samlAuthWindow) {
14838
+ popupClosedCheck = setInterval(() => {
14839
+ if (samlAuthWindow.closed) {
14840
+ clearInterval(popupClosedCheck);
14841
+ if (samlCompletionPromise && !samlCompletionResolved) {
14842
+ authEE === null || authEE === void 0 ? void 0 : authEE.emit(exports.AuthStatus.SAML_POPUP_CLOSED_NO_AUTH);
14843
+ }
14844
+ }
14845
+ }, 500);
14846
+ }
14783
14847
  }
14784
14848
  else {
14785
14849
  samlAuthWindow.focus();
14786
14850
  }
14787
14851
  };
14852
+ let samlCompletionResolved = false;
14788
14853
  authEE === null || authEE === void 0 ? void 0 : authEE.emit(exports.AuthStatus.WAITING_FOR_POPUP);
14789
14854
  const containerEl = getDOMNode(triggerContainer);
14790
14855
  if (containerEl) {
@@ -14796,6 +14861,10 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
14796
14861
  samlCompletionPromise = samlCompletionPromise || new Promise((resolve, reject) => {
14797
14862
  window.addEventListener('message', (e) => {
14798
14863
  if (e.data.type === exports.EmbedEvent.SAMLComplete) {
14864
+ samlCompletionResolved = true;
14865
+ if (popupClosedCheck) {
14866
+ clearInterval(popupClosedCheck);
14867
+ }
14799
14868
  e.source.close();
14800
14869
  resolve();
14801
14870
  }
@@ -15356,7 +15425,7 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
15356
15425
  return e;
15357
15426
  }
15358
15427
 
15359
- var name="@thoughtspot/visual-embed-sdk";var version$1="1.37.0-temp-nav";var description="ThoughtSpot Embed SDK";var module="lib/src/index.js";var main="dist/tsembed.js";var types="lib/src/index.d.ts";var files=["dist/**","lib/**","src/**","cjs/**"];var exports$1={".":{"import":"./lib/src/index.js",require:"./cjs/src/index.js",types:"./lib/src/index.d.ts"},"./react":{"import":"./lib/src/react/all-types-export.js",require:"./cjs/src/react/all-types-export.js",types:"./lib/src/react/all-types-export.d.ts"},"./lib/src/react":{"import":"./lib/src/react/all-types-export.js",require:"./cjs/src/react/all-types-export.js",types:"./lib/src/react/all-types-export.d.ts"}};var typesVersions={"*":{react:["./lib/src/react/all-types-export.d.ts"]}};var scripts={lint:"eslint 'src/**'","lint:fix":"eslint 'src/**/*.*' --fix",tsc:"tsc -p . --incremental false; tsc -p . --incremental false --module commonjs --outDir cjs","build-and-publish":"npm run build:gatsby && npm run publish","bundle-dts-file":"dts-bundle --name @thoughtspot/visual-embed-sdk --out visual-embed-sdk.d.ts --main lib/src/index.d.ts","bundle-dts":"dts-bundle --name ../../dist/visual-embed-sdk --main lib/src/index.d.ts --outputAsModuleFolder=true","bundle-dts-react":"dts-bundle --name ../../../dist/visual-embed-sdk-react --main lib/src/react/index.d.ts --outputAsModuleFolder=true","bundle-dts-react-full":"dts-bundle --name ../../../dist/visual-embed-sdk-react-full --main lib/src/react/all-types-export.d.ts --outputAsModuleFolder=true",build:"rollup -c",watch:"rollup -cw",docgen:"typedoc --tsconfig tsconfig.json --theme typedoc-theme --json static/typedoc/typedoc.json --disableOutputCheck","test-sdk":"jest -c jest.config.sdk.js --runInBand",test:"npm run test-sdk",posttest:"cat ./coverage/sdk/lcov.info | coveralls","is-publish-allowed":"node scripts/is-publish-allowed.js",prepublishOnly:"npm run is-publish-allowed && npm run test && npm run tsc && npm run bundle-dts-file && npm run bundle-dts && npm run bundle-dts-react && npm run bundle-dts-react-full && npm run build","check-size":"npm run build && size-limit","publish-dev":"npm publish --tag dev","publish-prod":"npm publish --tag latest",dev:"vite -c vite.local.config.ts"};var peerDependencies={react:"> 16.8.0","react-dom":"> 16.8.0"};var dependencies={classnames:"^2.3.1",eventemitter3:"^4.0.7",lodash:"^4.17.21","mixpanel-browser":"2.47.0","ts-deepmerge":"^6.0.2",tslib:"^2.5.3","use-deep-compare-effect":"^1.8.1",yaml:"^2.5.1"};var devDependencies={"@mdx-js/mdx":"^1.6.22","@mdx-js/react":"^1.6.22","@react-icons/all-files":"^4.1.0","@rollup/plugin-commonjs":"^18.0.0","@rollup/plugin-json":"^4.1.0","@rollup/plugin-node-resolve":"^11.2.1","@rollup/plugin-replace":"^5.0.2","@size-limit/preset-big-lib":"^8.2.6","@testing-library/dom":"^7.31.0","@testing-library/jest-dom":"^5.14.1","@testing-library/react":"^11.2.7","@testing-library/user-event":"^13.1.8","@types/jest":"^22.2.3","@types/lodash":"^4.17.0","@types/mixpanel-browser":"^2.35.6","@types/react-test-renderer":"^17.0.1","@typescript-eslint/eslint-plugin":"^8.28.0","@typescript-eslint/parser":"^8.28.0",asciidoctor:"^2.2.1","babel-jest":"^26.6.3","babel-preset-gatsby":"^1.10.0","command-line-args":"^5.1.1",coveralls:"^3.1.0",crypto:"^1.0.1","current-git-branch":"^1.1.0","dts-bundle":"^0.7.3",eslint:"^9.23.0","eslint-config-airbnb-base":"^15.0.0","eslint-config-prettier":"^10.1.1","eslint-import-resolver-typescript":"^4.2.5","eslint-plugin-comment-length":"2.2.1","eslint-plugin-import":"^2.31.0","eslint-plugin-jsdoc":"^50.6.9","eslint-plugin-prettier":"^5.2.5","eslint-plugin-react":"^7.37.5","eslint-plugin-react-hooks":"^5.2.0","fs-extra":"^10.0.0","gh-pages":"6.3.0",globals:"^16.0.0","highlight.js":"^10.6.0","html-to-text":"^8.0.0","identity-obj-proxy":"^3.0.0","istanbul-merge":"^1.1.1",jest:"^26.6.3","jest-fetch-mock":"^3.0.3",jsdom:"^17.0.0",prettier:"2.1.2",react:"^16.14.0","react-dom":"^16.14.0","react-resizable":"^1.11.0","react-resize-detector":"^6.6.0","react-test-renderer":"^17.0.2","react-use-flexsearch":"^0.1.1",rollup:"4.24.0","rollup-plugin-typescript2":"0.27.3","ts-jest":"^26.5.5","ts-loader":"8.0.4",typedoc:"0.21.6","typedoc-plugin-toc-group":"thoughtspot/typedoc-plugin-toc-group",typescript:"^4.9.4","typescript-eslint":"^8.29.1","url-search-params-polyfill":"^8.1.0",util:"^0.12.4",vite:"^5.3.4"};var author="ThoughtSpot";var email="support@thoughtspot.com";var license="ThoughtSpot Development Tools End User License Agreement";var directories={lib:"lib"};var repository={type:"git",url:"git+https://github.com/thoughtspot/visual-embed-sdk.git"};var publishConfig={registry:"https://registry.npmjs.org"};var keywords=["thoughtspot","everywhere","embedded","embed","sdk","analytics"];var bugs={url:"https://github.com/thoughtspot/visual-embed-sdk/issues"};var homepage="https://github.com/thoughtspot/visual-embed-sdk#readme";var globals={window:{}};var pkgInfo = {name:name,version:version$1,description:description,module:module,main:main,types:types,files:files,exports:exports$1,typesVersions:typesVersions,"size-limit":[{path:"dist/tsembed.es.js",limit:"31 kB"}],scripts:scripts,peerDependencies:peerDependencies,dependencies:dependencies,devDependencies:devDependencies,author:author,email:email,license:license,directories:directories,repository:repository,publishConfig:publishConfig,keywords:keywords,bugs:bugs,homepage:homepage,globals:globals};
15428
+ var name="@thoughtspot/visual-embed-sdk";var version$1="1.37.1-spotter-embed";var description="ThoughtSpot Embed SDK";var module="lib/src/index.js";var main="dist/tsembed.js";var types="lib/src/index.d.ts";var files=["dist/**","lib/**","src/**","cjs/**"];var exports$1={".":{"import":"./lib/src/index.js",require:"./cjs/src/index.js",types:"./lib/src/index.d.ts"},"./react":{"import":"./lib/src/react/all-types-export.js",require:"./cjs/src/react/all-types-export.js",types:"./lib/src/react/all-types-export.d.ts"},"./lib/src/react":{"import":"./lib/src/react/all-types-export.js",require:"./cjs/src/react/all-types-export.js",types:"./lib/src/react/all-types-export.d.ts"}};var typesVersions={"*":{react:["./lib/src/react/all-types-export.d.ts"]}};var scripts={lint:"eslint 'src/**'","lint:fix":"eslint 'src/**/*.*' --fix",tsc:"tsc -p . --incremental false; tsc -p . --incremental false --module commonjs --outDir cjs","build-and-publish":"npm run build:gatsby && npm run publish","bundle-dts-file":"dts-bundle --name @thoughtspot/visual-embed-sdk --out visual-embed-sdk.d.ts --main lib/src/index.d.ts","bundle-dts":"dts-bundle --name ../../dist/visual-embed-sdk --main lib/src/index.d.ts --outputAsModuleFolder=true","bundle-dts-react":"dts-bundle --name ../../../dist/visual-embed-sdk-react --main lib/src/react/index.d.ts --outputAsModuleFolder=true","bundle-dts-react-full":"dts-bundle --name ../../../dist/visual-embed-sdk-react-full --main lib/src/react/all-types-export.d.ts --outputAsModuleFolder=true",build:"rollup -c",watch:"rollup -cw",docgen:"typedoc --tsconfig tsconfig.json --theme typedoc-theme --json static/typedoc/typedoc.json --disableOutputCheck","test-sdk":"jest -c jest.config.sdk.js --runInBand",test:"npm run test-sdk",posttest:"cat ./coverage/sdk/lcov.info | coveralls","is-publish-allowed":"node scripts/is-publish-allowed.js",prepublishOnly:"npm run is-publish-allowed && npm run tsc && npm run bundle-dts-file && npm run bundle-dts && npm run bundle-dts-react && npm run bundle-dts-react-full && npm run build","check-size":"npm run build && size-limit","publish-dev":"npm publish --tag dev","publish-prod":"npm publish --tag latest",dev:"vite -c vite.local.config.ts"};var peerDependencies={react:"> 16.8.0","react-dom":"> 16.8.0"};var dependencies={classnames:"^2.3.1",eventemitter3:"^4.0.7",lodash:"^4.17.21","mixpanel-browser":"2.47.0","ts-deepmerge":"^6.0.2",tslib:"^2.5.3","use-deep-compare-effect":"^1.8.1",yaml:"^2.5.1"};var devDependencies={"@mdx-js/mdx":"^1.6.22","@mdx-js/react":"^1.6.22","@react-icons/all-files":"^4.1.0","@rollup/plugin-commonjs":"^18.0.0","@rollup/plugin-json":"^4.1.0","@rollup/plugin-node-resolve":"^11.2.1","@rollup/plugin-replace":"^5.0.2","@size-limit/preset-big-lib":"^8.2.6","@testing-library/dom":"^7.31.0","@testing-library/jest-dom":"^5.14.1","@testing-library/react":"^11.2.7","@testing-library/user-event":"^13.1.8","@types/jest":"^22.2.3","@types/lodash":"^4.17.0","@types/mixpanel-browser":"^2.35.6","@types/react-test-renderer":"^17.0.1","@typescript-eslint/eslint-plugin":"^8.28.0","@typescript-eslint/parser":"^8.28.0",asciidoctor:"^2.2.1","babel-jest":"^26.6.3","babel-preset-gatsby":"^1.10.0","command-line-args":"^5.1.1",coveralls:"^3.1.0",crypto:"^1.0.1","current-git-branch":"^1.1.0","dts-bundle":"^0.7.3",eslint:"^9.23.0","eslint-config-airbnb-base":"^15.0.0","eslint-config-prettier":"^10.1.1","eslint-import-resolver-typescript":"^4.2.5","eslint-plugin-comment-length":"2.2.1","eslint-plugin-import":"^2.31.0","eslint-plugin-jsdoc":"^50.6.9","eslint-plugin-prettier":"^5.2.5","eslint-plugin-react":"^7.37.5","eslint-plugin-react-hooks":"^5.2.0","fs-extra":"^10.0.0","gh-pages":"6.3.0",globals:"^16.0.0","highlight.js":"^10.6.0","html-to-text":"^8.0.0","identity-obj-proxy":"^3.0.0","istanbul-merge":"^1.1.1",jest:"^26.6.3","jest-fetch-mock":"^3.0.3",jsdom:"^17.0.0",prettier:"2.1.2",react:"^16.14.0","react-dom":"^16.14.0","react-resizable":"^1.11.0","react-resize-detector":"^6.6.0","react-test-renderer":"^17.0.2","react-use-flexsearch":"^0.1.1",rollup:"4.24.0","rollup-plugin-typescript2":"0.27.3","ts-jest":"^26.5.5","ts-loader":"8.0.4",typedoc:"0.21.6","typedoc-plugin-toc-group":"thoughtspot/typedoc-plugin-toc-group",typescript:"^4.9.4","typescript-eslint":"^8.29.1","url-search-params-polyfill":"^8.1.0",util:"^0.12.4",vite:"^6.3.5"};var author="ThoughtSpot";var email="support@thoughtspot.com";var license="ThoughtSpot Development Tools End User License Agreement";var directories={lib:"lib"};var repository={type:"git",url:"git+https://github.com/thoughtspot/visual-embed-sdk.git"};var publishConfig={registry:"https://registry.npmjs.org"};var keywords=["thoughtspot","everywhere","embedded","embed","sdk","analytics"];var bugs={url:"https://github.com/thoughtspot/visual-embed-sdk/issues"};var homepage="https://github.com/thoughtspot/visual-embed-sdk#readme";var globals={window:{}};var pkgInfo = {name:name,version:version$1,description:description,module:module,main:main,types:types,files:files,exports:exports$1,typesVersions:typesVersions,"size-limit":[{path:"dist/tsembed.es.js",limit:"31 kB"}],scripts:scripts,peerDependencies:peerDependencies,dependencies:dependencies,devDependencies:devDependencies,author:author,email:email,license:license,directories:directories,repository:repository,publishConfig:publishConfig,keywords:keywords,bugs:bugs,homepage:homepage,globals:globals};
15360
15429
 
15361
15430
  /**
15362
15431
  * Reloads the ThoughtSpot iframe.
@@ -16821,6 +16890,9 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
16821
16890
  params[Param.HideIrrelevantFiltersInTab] = hideIrrelevantChipsInLiveboardTabs;
16822
16891
  params[Param.IsUnifiedSearchExperienceEnabled] = isUnifiedSearchExperienceEnabled;
16823
16892
  params = this.getBaseQueryParams(params);
16893
+ if (modularHomeExperienceV3) {
16894
+ params[Param.NavigationVersion] = 'v3';
16895
+ }
16824
16896
  if (hideObjectSearch) {
16825
16897
  params[Param.HideObjectSearch] = !!hideObjectSearch;
16826
16898
  }
@@ -16877,14 +16949,6 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
16877
16949
  /* eslint-disable-next-line max-len */
16878
16950
  params[Param.DataPanelCustomGroupsAccordionInitialState] = DataPanelCustomColumnGroupsAccordionState$1.EXPAND_ALL;
16879
16951
  }
16880
- if (modularHomeExperienceV3) {
16881
- if (modularHomeExperienceV3.enabled) {
16882
- params[Param.NavigationVersion] = 'v3';
16883
- }
16884
- if (modularHomeExperienceV3.homePage === 'v2') {
16885
- params[Param.ModularHomeExperienceEnabled] = true;
16886
- }
16887
- }
16888
16952
  const queryParams = getQueryParamString(params, true);
16889
16953
  return queryParams;
16890
16954
  }
@@ -17973,6 +18037,7 @@ query SendMessage($params: Input_convassist_SendMessageRequest) {
17973
18037
  const path = 'conv-assist-answer';
17974
18038
  const queryParams = this.getBaseQueryParams();
17975
18039
  queryParams[Param.HideActions] = [...((_a = queryParams[Param.HideActions]) !== null && _a !== void 0 ? _a : [])];
18040
+ queryParams[Param.isSpotterAgentEmbed] = true;
17976
18041
  let query = '';
17977
18042
  const queryParamsString = getQueryParamString(queryParams, true);
17978
18043
  if (queryParamsString) {
@@ -17998,9 +18063,9 @@ query SendMessage($params: Input_convassist_SendMessageRequest) {
17998
18063
  * chatbots or other conversational interfaces.
17999
18064
  * @example
18000
18065
  * ```js
18001
- * import { BodylessConversation } from '@thoughtspot/visual-embed-sdk';
18066
+ * import { SpotterAgentEmbed } from '@thoughtspot/visual-embed-sdk';
18002
18067
  *
18003
- * const conversation = new BodylessConversation({
18068
+ * const conversation = new SpotterAgentEmbed({
18004
18069
  * worksheetId: 'worksheetId',
18005
18070
  * });
18006
18071
  *
@@ -18010,9 +18075,9 @@ query SendMessage($params: Input_convassist_SendMessageRequest) {
18010
18075
  * document.body.appendChild(container); // or to any other element
18011
18076
  * ```
18012
18077
  * @group Embed components
18013
- * @version SDK: 1.33.1 | ThoughtSpot: 10.5.0.cl
18078
+ * @version SDK: 1.37.0 | ThoughtSpot: 10.9.0.cl
18014
18079
  */
18015
- class BodylessConversation {
18080
+ class SpotterAgentEmbed {
18016
18081
  constructor(viewConfig) {
18017
18082
  this.viewConfig = viewConfig;
18018
18083
  const embedConfig = getEmbedConfig();
@@ -18064,7 +18129,7 @@ query SendMessage($params: Input_convassist_SendMessageRequest) {
18064
18129
  * @group Embed components
18065
18130
  * @example
18066
18131
  * ```js
18067
- * const conversation = new ConversationEmbed('#tsEmbed', {
18132
+ * const conversation = new SpotterEmbed('#tsEmbed', {
18068
18133
  * worksheetId: 'worksheetId',
18069
18134
  * searchOptions: {
18070
18135
  * searchQuery: 'searchQuery',
@@ -18072,9 +18137,9 @@ query SendMessage($params: Input_convassist_SendMessageRequest) {
18072
18137
  * });
18073
18138
  * conversation.render();
18074
18139
  * ```
18075
- * @version SDK: 1.33.1 | ThoughtSpot: 10.5.0.cl
18140
+ * @version SDK: 1.38.0 | ThoughtSpot: 10.10.0.cl
18076
18141
  */
18077
- class ConversationEmbed extends TsEmbed {
18142
+ class SpotterEmbed extends TsEmbed {
18078
18143
  constructor(container, viewConfig) {
18079
18144
  viewConfig.embedComponentType = 'conversation';
18080
18145
  super(container, viewConfig);
@@ -19180,8 +19245,7 @@ query GetEurekaResults($params: Input_eureka_SearchRequest) {
19180
19245
  return {
19181
19246
  onAnchor: (source) => {
19182
19247
  aliasObjects.push(source);
19183
- if (!prevAnchors)
19184
- prevAnchors = anchorNames(doc);
19248
+ prevAnchors ?? (prevAnchors = anchorNames(doc));
19185
19249
  const anchor = findNewAnchor(prefix, prevAnchors);
19186
19250
  prevAnchors.add(anchor);
19187
19251
  return anchor;
@@ -19345,23 +19409,36 @@ query GetEurekaResults($params: Input_eureka_SearchRequest) {
19345
19409
  * Resolve the value of this alias within `doc`, finding the last
19346
19410
  * instance of the `source` anchor before this node.
19347
19411
  */
19348
- resolve(doc) {
19412
+ resolve(doc, ctx) {
19413
+ let nodes;
19414
+ if (ctx?.aliasResolveCache) {
19415
+ nodes = ctx.aliasResolveCache;
19416
+ }
19417
+ else {
19418
+ nodes = [];
19419
+ visit$1(doc, {
19420
+ Node: (_key, node) => {
19421
+ if (isAlias(node) || hasAnchor(node))
19422
+ nodes.push(node);
19423
+ }
19424
+ });
19425
+ if (ctx)
19426
+ ctx.aliasResolveCache = nodes;
19427
+ }
19349
19428
  let found = undefined;
19350
- visit$1(doc, {
19351
- Node: (_key, node) => {
19352
- if (node === this)
19353
- return visit$1.BREAK;
19354
- if (node.anchor === this.source)
19355
- found = node;
19356
- }
19357
- });
19429
+ for (const node of nodes) {
19430
+ if (node === this)
19431
+ break;
19432
+ if (node.anchor === this.source)
19433
+ found = node;
19434
+ }
19358
19435
  return found;
19359
19436
  }
19360
19437
  toJSON(_arg, ctx) {
19361
19438
  if (!ctx)
19362
19439
  return { source: this.source };
19363
19440
  const { anchors, doc, maxAliasCount } = ctx;
19364
- const source = this.resolve(doc);
19441
+ const source = this.resolve(doc, ctx);
19365
19442
  if (!source) {
19366
19443
  const msg = `Unresolved alias (the anchor must be set before the alias): ${this.source}`;
19367
19444
  throw new ReferenceError(msg);
@@ -19480,8 +19557,7 @@ query GetEurekaResults($params: Input_eureka_SearchRequest) {
19480
19557
  if (aliasDuplicateObjects && value && typeof value === 'object') {
19481
19558
  ref = sourceObjects.get(value);
19482
19559
  if (ref) {
19483
- if (!ref.anchor)
19484
- ref.anchor = onAnchor(value);
19560
+ ref.anchor ?? (ref.anchor = onAnchor(value));
19485
19561
  return new Alias(ref.anchor);
19486
19562
  }
19487
19563
  else {
@@ -20052,23 +20128,32 @@ query GetEurekaResults($params: Input_eureka_SearchRequest) {
20052
20128
  start = start.replace(/\n+/g, `$&${indent}`);
20053
20129
  }
20054
20130
  const indentSize = indent ? '2' : '1'; // root is at -1
20055
- let header = (literal ? '|' : '>') + (startWithSpace ? indentSize : '') + chomp;
20131
+ // Leading | or > is added later
20132
+ let header = (startWithSpace ? indentSize : '') + chomp;
20056
20133
  if (comment) {
20057
20134
  header += ' ' + commentString(comment.replace(/ ?[\r\n]+/g, ' '));
20058
20135
  if (onComment)
20059
20136
  onComment();
20060
20137
  }
20061
- if (literal) {
20062
- value = value.replace(/\n+/g, `$&${indent}`);
20063
- return `${header}\n${indent}${start}${value}${end}`;
20138
+ if (!literal) {
20139
+ const foldedValue = value
20140
+ .replace(/\n+/g, '\n$&')
20141
+ .replace(/(?:^|\n)([\t ].*)(?:([\n\t ]*)\n(?![\n\t ]))?/g, '$1$2') // more-indented lines aren't folded
20142
+ // ^ more-ind. ^ empty ^ capture next empty lines only at end of indent
20143
+ .replace(/\n+/g, `$&${indent}`);
20144
+ let literalFallback = false;
20145
+ const foldOptions = getFoldOptions(ctx, true);
20146
+ if (blockQuote !== 'folded' && type !== Scalar.BLOCK_FOLDED) {
20147
+ foldOptions.onOverflow = () => {
20148
+ literalFallback = true;
20149
+ };
20150
+ }
20151
+ const body = foldFlowLines(`${start}${foldedValue}${end}`, indent, FOLD_BLOCK, foldOptions);
20152
+ if (!literalFallback)
20153
+ return `>${header}\n${indent}${body}`;
20064
20154
  }
20065
- value = value
20066
- .replace(/\n+/g, '\n$&')
20067
- .replace(/(?:^|\n)([\t ].*)(?:([\n\t ]*)\n(?![\n\t ]))?/g, '$1$2') // more-indented lines aren't folded
20068
- // ^ more-ind. ^ empty ^ capture next empty lines only at end of indent
20069
- .replace(/\n+/g, `$&${indent}`);
20070
- const body = foldFlowLines(`${start}${value}${end}`, indent, FOLD_BLOCK, getFoldOptions(ctx, true));
20071
- return `${header}\n${indent}${body}`;
20155
+ value = value.replace(/\n+/g, `$&${indent}`);
20156
+ return `|${header}\n${indent}${start}${value}${end}`;
20072
20157
  }
20073
20158
  function plainString(item, ctx, onComment, onChompKeep) {
20074
20159
  const { type, value } = item;
@@ -20077,10 +20162,9 @@ query GetEurekaResults($params: Input_eureka_SearchRequest) {
20077
20162
  (inFlow && /[[\]{},]/.test(value))) {
20078
20163
  return quotedString(value, ctx);
20079
20164
  }
20080
- if (!value ||
20081
- /^[\n\t ,[\]{}#&*!|>'"%@`]|^[?-]$|^[?-][ \t]|[\n:][ \t]|[ \t]\n|[\n\t ]#|[\n\t :]$/.test(value)) {
20165
+ if (/^[\n\t ,[\]{}#&*!|>'"%@`]|^[?-]$|^[?-][ \t]|[\n:][ \t]|[ \t]\n|[\n\t ]#|[\n\t :]$/.test(value)) {
20082
20166
  // not allowed:
20083
- // - empty string, '-' or '?'
20167
+ // - '-' or '?'
20084
20168
  // - start with an indicator character (except [?:-]) or /[?-] /
20085
20169
  // - '\n ', ': ' or ' \n' anywhere
20086
20170
  // - '#' not preceded by a non-space char
@@ -20209,7 +20293,12 @@ query GetEurekaResults($params: Input_eureka_SearchRequest) {
20209
20293
  let obj;
20210
20294
  if (isScalar$1(item)) {
20211
20295
  obj = item.value;
20212
- const match = tags.filter(t => t.identify?.(obj));
20296
+ let match = tags.filter(t => t.identify?.(obj));
20297
+ if (match.length > 1) {
20298
+ const testMatch = match.filter(t => t.test);
20299
+ if (testMatch.length > 0)
20300
+ match = testMatch;
20301
+ }
20213
20302
  tagObj =
20214
20303
  match.find(t => t.format === item.format) ?? match.find(t => !t.format);
20215
20304
  }
@@ -20218,7 +20307,7 @@ query GetEurekaResults($params: Input_eureka_SearchRequest) {
20218
20307
  tagObj = tags.find(t => t.nodeClass && obj instanceof t.nodeClass);
20219
20308
  }
20220
20309
  if (!tagObj) {
20221
- const name = obj?.constructor?.name ?? typeof obj;
20310
+ const name = obj?.constructor?.name ?? (obj === null ? 'null' : typeof obj);
20222
20311
  throw new Error(`Tag not resolved for ${name} value`);
20223
20312
  }
20224
20313
  return tagObj;
@@ -20233,7 +20322,7 @@ query GetEurekaResults($params: Input_eureka_SearchRequest) {
20233
20322
  anchors.add(anchor);
20234
20323
  props.push(`&${anchor}`);
20235
20324
  }
20236
- const tag = node.tag ? node.tag : tagObj.default ? null : tagObj.tag;
20325
+ const tag = node.tag ?? (tagObj.default ? null : tagObj.tag);
20237
20326
  if (tag)
20238
20327
  props.push(doc.directives.tagString(tag));
20239
20328
  return props.join(' ');
@@ -20259,8 +20348,7 @@ query GetEurekaResults($params: Input_eureka_SearchRequest) {
20259
20348
  const node = isNode(item)
20260
20349
  ? item
20261
20350
  : ctx.doc.createNode(item, { onTagObj: o => (tagObj = o) });
20262
- if (!tagObj)
20263
- tagObj = getTagObject(ctx.doc.schema.tags, node);
20351
+ tagObj ?? (tagObj = getTagObject(ctx.doc.schema.tags, node));
20264
20352
  const props = stringifyProps(node, tagObj, ctx);
20265
20353
  if (props.length > 0)
20266
20354
  ctx.indentAtStart = (ctx.indentAtStart ?? 0) + props.length + 1;
@@ -20422,54 +20510,10 @@ query GetEurekaResults($params: Input_eureka_SearchRequest) {
20422
20510
 
20423
20511
  function warn(logLevel, warning) {
20424
20512
  if (logLevel === 'debug' || logLevel === 'warn') {
20425
- if (typeof process !== 'undefined' && process.emitWarning)
20426
- process.emitWarning(warning);
20427
- else
20428
- console.warn(warning);
20513
+ console.warn(warning);
20429
20514
  }
20430
20515
  }
20431
20516
 
20432
- const MERGE_KEY = '<<';
20433
- function addPairToJSMap(ctx, map, { key, value }) {
20434
- if (ctx?.doc.schema.merge && isMergeKey(key)) {
20435
- value = isAlias(value) ? value.resolve(ctx.doc) : value;
20436
- if (isSeq(value))
20437
- for (const it of value.items)
20438
- mergeToJSMap(ctx, map, it);
20439
- else if (Array.isArray(value))
20440
- for (const it of value)
20441
- mergeToJSMap(ctx, map, it);
20442
- else
20443
- mergeToJSMap(ctx, map, value);
20444
- }
20445
- else {
20446
- const jsKey = toJS(key, '', ctx);
20447
- if (map instanceof Map) {
20448
- map.set(jsKey, toJS(value, jsKey, ctx));
20449
- }
20450
- else if (map instanceof Set) {
20451
- map.add(jsKey);
20452
- }
20453
- else {
20454
- const stringKey = stringifyKey(key, jsKey, ctx);
20455
- const jsValue = toJS(value, stringKey, ctx);
20456
- if (stringKey in map)
20457
- Object.defineProperty(map, stringKey, {
20458
- value: jsValue,
20459
- writable: true,
20460
- enumerable: true,
20461
- configurable: true
20462
- });
20463
- else
20464
- map[stringKey] = jsValue;
20465
- }
20466
- }
20467
- return map;
20468
- }
20469
- const isMergeKey = (key) => key === MERGE_KEY ||
20470
- (isScalar$1(key) &&
20471
- key.value === MERGE_KEY &&
20472
- (!key.type || key.type === Scalar.PLAIN));
20473
20517
  // If the value associated with a merge key is a single mapping node, each of
20474
20518
  // its key/value pairs is inserted into the current mapping, unless the key
20475
20519
  // already exists in it. If the value associated with the merge key is a
@@ -20477,7 +20521,35 @@ query GetEurekaResults($params: Input_eureka_SearchRequest) {
20477
20521
  // of these nodes is merged in turn according to its order in the sequence.
20478
20522
  // Keys in mapping nodes earlier in the sequence override keys specified in
20479
20523
  // later mapping nodes. -- http://yaml.org/type/merge.html
20480
- function mergeToJSMap(ctx, map, value) {
20524
+ const MERGE_KEY = '<<';
20525
+ const merge = {
20526
+ identify: value => value === MERGE_KEY ||
20527
+ (typeof value === 'symbol' && value.description === MERGE_KEY),
20528
+ default: 'key',
20529
+ tag: 'tag:yaml.org,2002:merge',
20530
+ test: /^<<$/,
20531
+ resolve: () => Object.assign(new Scalar(Symbol(MERGE_KEY)), {
20532
+ addToJSMap: addMergeToJSMap
20533
+ }),
20534
+ stringify: () => MERGE_KEY
20535
+ };
20536
+ const isMergeKey = (ctx, key) => (merge.identify(key) ||
20537
+ (isScalar$1(key) &&
20538
+ (!key.type || key.type === Scalar.PLAIN) &&
20539
+ merge.identify(key.value))) &&
20540
+ ctx?.doc.schema.tags.some(tag => tag.tag === merge.tag && tag.default);
20541
+ function addMergeToJSMap(ctx, map, value) {
20542
+ value = ctx && isAlias(value) ? value.resolve(ctx.doc) : value;
20543
+ if (isSeq(value))
20544
+ for (const it of value.items)
20545
+ mergeValue(ctx, map, it);
20546
+ else if (Array.isArray(value))
20547
+ for (const it of value)
20548
+ mergeValue(ctx, map, it);
20549
+ else
20550
+ mergeValue(ctx, map, value);
20551
+ }
20552
+ function mergeValue(ctx, map, value) {
20481
20553
  const source = ctx && isAlias(value) ? value.resolve(ctx.doc) : value;
20482
20554
  if (!isMap(source))
20483
20555
  throw new Error('Merge sources must be maps or map aliases');
@@ -20501,9 +20573,41 @@ query GetEurekaResults($params: Input_eureka_SearchRequest) {
20501
20573
  }
20502
20574
  return map;
20503
20575
  }
20576
+
20577
+ function addPairToJSMap(ctx, map, { key, value }) {
20578
+ if (isNode(key) && key.addToJSMap)
20579
+ key.addToJSMap(ctx, map, value);
20580
+ // TODO: Should drop this special case for bare << handling
20581
+ else if (isMergeKey(ctx, key))
20582
+ addMergeToJSMap(ctx, map, value);
20583
+ else {
20584
+ const jsKey = toJS(key, '', ctx);
20585
+ if (map instanceof Map) {
20586
+ map.set(jsKey, toJS(value, jsKey, ctx));
20587
+ }
20588
+ else if (map instanceof Set) {
20589
+ map.add(jsKey);
20590
+ }
20591
+ else {
20592
+ const stringKey = stringifyKey(key, jsKey, ctx);
20593
+ const jsValue = toJS(value, stringKey, ctx);
20594
+ if (stringKey in map)
20595
+ Object.defineProperty(map, stringKey, {
20596
+ value: jsValue,
20597
+ writable: true,
20598
+ enumerable: true,
20599
+ configurable: true
20600
+ });
20601
+ else
20602
+ map[stringKey] = jsValue;
20603
+ }
20604
+ }
20605
+ return map;
20606
+ }
20504
20607
  function stringifyKey(key, jsKey, ctx) {
20505
20608
  if (jsKey === null)
20506
20609
  return '';
20610
+ // eslint-disable-next-line @typescript-eslint/no-base-to-string
20507
20611
  if (typeof jsKey !== 'object')
20508
20612
  return String(jsKey);
20509
20613
  if (isNode(key) && ctx?.doc) {
@@ -21136,7 +21240,7 @@ query GetEurekaResults($params: Input_eureka_SearchRequest) {
21136
21240
  identify: value => typeof value === 'boolean',
21137
21241
  default: true,
21138
21242
  tag: 'tag:yaml.org,2002:bool',
21139
- test: /^true|false$/,
21243
+ test: /^true$|^false$/,
21140
21244
  resolve: str => str === 'true',
21141
21245
  stringify: stringifyJSON
21142
21246
  },
@@ -21181,10 +21285,7 @@ query GetEurekaResults($params: Input_eureka_SearchRequest) {
21181
21285
  * document.querySelector('#photo').src = URL.createObjectURL(blob)
21182
21286
  */
21183
21287
  resolve(src, onError) {
21184
- if (typeof Buffer === 'function') {
21185
- return Buffer.from(src, 'base64');
21186
- }
21187
- else if (typeof atob === 'function') {
21288
+ if (typeof atob === 'function') {
21188
21289
  // On IE 11, atob() can't handle newlines
21189
21290
  const str = atob(src.replace(/[\n\r]/g, ''));
21190
21291
  const buffer = new Uint8Array(str.length);
@@ -21198,15 +21299,11 @@ query GetEurekaResults($params: Input_eureka_SearchRequest) {
21198
21299
  }
21199
21300
  },
21200
21301
  stringify({ comment, type, value }, ctx, onComment, onChompKeep) {
21302
+ if (!value)
21303
+ return '';
21201
21304
  const buf = value; // checked earlier by binary.identify()
21202
21305
  let str;
21203
- if (typeof Buffer === 'function') {
21204
- str =
21205
- buf instanceof Buffer
21206
- ? buf.toString('base64')
21207
- : Buffer.from(buf.buffer).toString('base64');
21208
- }
21209
- else if (typeof btoa === 'function') {
21306
+ if (typeof btoa === 'function') {
21210
21307
  let s = '';
21211
21308
  for (let i = 0; i < buf.length; ++i)
21212
21309
  s += String.fromCharCode(buf[i]);
@@ -21215,8 +21312,7 @@ query GetEurekaResults($params: Input_eureka_SearchRequest) {
21215
21312
  else {
21216
21313
  throw new Error('This environment does not support writing binary tags; either Buffer or btoa is required');
21217
21314
  }
21218
- if (!type)
21219
- type = Scalar.BLOCK_LITERAL;
21315
+ type ?? (type = Scalar.BLOCK_LITERAL);
21220
21316
  if (type !== Scalar.QUOTE_DOUBLE) {
21221
21317
  const lineWidth = Math.max(ctx.options.lineWidth - ctx.indent.length, ctx.options.minContentWidth);
21222
21318
  const n = Math.ceil(str.length / lineWidth);
@@ -21685,7 +21781,7 @@ query GetEurekaResults($params: Input_eureka_SearchRequest) {
21685
21781
  }
21686
21782
  return new Date(date);
21687
21783
  },
21688
- stringify: ({ value }) => value.toISOString().replace(/((T00:00)?:00)?\.000Z$/, '')
21784
+ stringify: ({ value }) => value?.toISOString().replace(/(T00:00:00)?\.000Z$/, '') ?? ''
21689
21785
  };
21690
21786
 
21691
21787
  const schema = [
@@ -21703,6 +21799,7 @@ query GetEurekaResults($params: Input_eureka_SearchRequest) {
21703
21799
  floatExp,
21704
21800
  float,
21705
21801
  binary,
21802
+ merge,
21706
21803
  omap,
21707
21804
  pairs,
21708
21805
  set,
@@ -21730,6 +21827,7 @@ query GetEurekaResults($params: Input_eureka_SearchRequest) {
21730
21827
  intOct: intOct$1,
21731
21828
  intTime,
21732
21829
  map,
21830
+ merge,
21733
21831
  null: nullTag,
21734
21832
  omap,
21735
21833
  pairs,
@@ -21739,13 +21837,20 @@ query GetEurekaResults($params: Input_eureka_SearchRequest) {
21739
21837
  };
21740
21838
  const coreKnownTags = {
21741
21839
  'tag:yaml.org,2002:binary': binary,
21840
+ 'tag:yaml.org,2002:merge': merge,
21742
21841
  'tag:yaml.org,2002:omap': omap,
21743
21842
  'tag:yaml.org,2002:pairs': pairs,
21744
21843
  'tag:yaml.org,2002:set': set,
21745
21844
  'tag:yaml.org,2002:timestamp': timestamp
21746
21845
  };
21747
- function getTags(customTags, schemaName) {
21748
- let tags = schemas.get(schemaName);
21846
+ function getTags(customTags, schemaName, addMergeTag) {
21847
+ const schemaTags = schemas.get(schemaName);
21848
+ if (schemaTags && !customTags) {
21849
+ return addMergeTag && !schemaTags.includes(merge)
21850
+ ? schemaTags.concat(merge)
21851
+ : schemaTags.slice();
21852
+ }
21853
+ let tags = schemaTags;
21749
21854
  if (!tags) {
21750
21855
  if (Array.isArray(customTags))
21751
21856
  tags = [];
@@ -21764,17 +21869,21 @@ query GetEurekaResults($params: Input_eureka_SearchRequest) {
21764
21869
  else if (typeof customTags === 'function') {
21765
21870
  tags = customTags(tags.slice());
21766
21871
  }
21767
- return tags.map(tag => {
21768
- if (typeof tag !== 'string')
21769
- return tag;
21770
- const tagObj = tagsByName[tag];
21771
- if (tagObj)
21772
- return tagObj;
21773
- const keys = Object.keys(tagsByName)
21774
- .map(key => JSON.stringify(key))
21775
- .join(', ');
21776
- throw new Error(`Unknown custom tag "${tag}"; use one of ${keys}`);
21777
- });
21872
+ if (addMergeTag)
21873
+ tags = tags.concat(merge);
21874
+ return tags.reduce((tags, tag) => {
21875
+ const tagObj = typeof tag === 'string' ? tagsByName[tag] : tag;
21876
+ if (!tagObj) {
21877
+ const tagName = JSON.stringify(tag);
21878
+ const keys = Object.keys(tagsByName)
21879
+ .map(key => JSON.stringify(key))
21880
+ .join(', ');
21881
+ throw new Error(`Unknown custom tag ${tagName}; use one of ${keys}`);
21882
+ }
21883
+ if (!tags.includes(tagObj))
21884
+ tags.push(tagObj);
21885
+ return tags;
21886
+ }, []);
21778
21887
  }
21779
21888
 
21780
21889
  const sortMapEntriesByKey = (a, b) => a.key < b.key ? -1 : a.key > b.key ? 1 : 0;
@@ -21785,10 +21894,9 @@ query GetEurekaResults($params: Input_eureka_SearchRequest) {
21785
21894
  : compat
21786
21895
  ? getTags(null, compat)
21787
21896
  : null;
21788
- this.merge = !!merge;
21789
21897
  this.name = (typeof schema === 'string' && schema) || 'core';
21790
21898
  this.knownTags = resolveKnownTags ? coreKnownTags : {};
21791
- this.tags = getTags(customTags, this.name);
21899
+ this.tags = getTags(customTags, this.name, merge);
21792
21900
  this.toStringOptions = toStringDefaults ?? null;
21793
21901
  Object.defineProperty(this, MAP, { value: map });
21794
21902
  Object.defineProperty(this, SCALAR$1, { value: string });
@@ -21913,6 +22021,7 @@ query GetEurekaResults($params: Input_eureka_SearchRequest) {
21913
22021
  logLevel: 'warn',
21914
22022
  prettyErrors: true,
21915
22023
  strict: true,
22024
+ stringKeys: false,
21916
22025
  uniqueKeys: true,
21917
22026
  version: '1.2'
21918
22027
  }, options);
@@ -22136,7 +22245,7 @@ query GetEurekaResults($params: Input_eureka_SearchRequest) {
22136
22245
  this.directives.yaml.version = '1.1';
22137
22246
  else
22138
22247
  this.directives = new Directives({ version: '1.1' });
22139
- opt = { merge: true, resolveKnownTags: false, schema: 'yaml-1.1' };
22248
+ opt = { resolveKnownTags: false, schema: 'yaml-1.1' };
22140
22249
  break;
22141
22250
  case '1.2':
22142
22251
  case 'next':
@@ -22144,7 +22253,7 @@ query GetEurekaResults($params: Input_eureka_SearchRequest) {
22144
22253
  this.directives.yaml.version = version;
22145
22254
  else
22146
22255
  this.directives = new Directives({ version });
22147
- opt = { merge: false, resolveKnownTags: true, schema: 'core' };
22256
+ opt = { resolveKnownTags: true, schema: 'core' };
22148
22257
  break;
22149
22258
  case null:
22150
22259
  if (this.directives)
@@ -22322,7 +22431,7 @@ query GetEurekaResults($params: Input_eureka_SearchRequest) {
22322
22431
  if (atNewline) {
22323
22432
  if (comment)
22324
22433
  comment += token.source;
22325
- else
22434
+ else if (!found || indicator !== 'seq-item-ind')
22326
22435
  spaceBefore = true;
22327
22436
  }
22328
22437
  else
@@ -22339,8 +22448,7 @@ query GetEurekaResults($params: Input_eureka_SearchRequest) {
22339
22448
  if (token.source.endsWith(':'))
22340
22449
  onError(token.offset + token.source.length - 1, 'BAD_ALIAS', 'Anchor ending in : is ambiguous', true);
22341
22450
  anchor = token;
22342
- if (start === null)
22343
- start = token.offset;
22451
+ start ?? (start = token.offset);
22344
22452
  atNewline = false;
22345
22453
  hasSpace = false;
22346
22454
  reqSpace = true;
@@ -22349,8 +22457,7 @@ query GetEurekaResults($params: Input_eureka_SearchRequest) {
22349
22457
  if (tag)
22350
22458
  onError(token, 'MULTIPLE_TAGS', 'A node can have at most one tag');
22351
22459
  tag = token;
22352
- if (start === null)
22353
- start = token.offset;
22460
+ start ?? (start = token.offset);
22354
22461
  atNewline = false;
22355
22462
  hasSpace = false;
22356
22463
  reqSpace = true;
@@ -22463,11 +22570,7 @@ query GetEurekaResults($params: Input_eureka_SearchRequest) {
22463
22570
  return false;
22464
22571
  const isEqual = typeof uniqueKeys === 'function'
22465
22572
  ? uniqueKeys
22466
- : (a, b) => a === b ||
22467
- (isScalar$1(a) &&
22468
- isScalar$1(b) &&
22469
- a.value === b.value &&
22470
- !(a.value === '<<' && ctx.schema.merge));
22573
+ : (a, b) => a === b || (isScalar$1(a) && isScalar$1(b) && a.value === b.value);
22471
22574
  return items.some(pair => isEqual(pair.key, search));
22472
22575
  }
22473
22576
 
@@ -22516,12 +22619,14 @@ query GetEurekaResults($params: Input_eureka_SearchRequest) {
22516
22619
  onError(offset, 'BAD_INDENT', startColMsg);
22517
22620
  }
22518
22621
  // key value
22622
+ ctx.atKey = true;
22519
22623
  const keyStart = keyProps.end;
22520
22624
  const keyNode = key
22521
22625
  ? composeNode(ctx, key, keyProps, onError)
22522
22626
  : composeEmptyNode(ctx, keyStart, start, null, keyProps, onError);
22523
22627
  if (ctx.schema.compat)
22524
22628
  flowIndentCheck(bm.indent, key, onError);
22629
+ ctx.atKey = false;
22525
22630
  if (mapIncludes(ctx, map.items, keyNode))
22526
22631
  onError(keyStart, 'DUPLICATE_KEY', 'Map keys must be unique');
22527
22632
  // value properties
@@ -22581,6 +22686,8 @@ query GetEurekaResults($params: Input_eureka_SearchRequest) {
22581
22686
  const seq = new NodeClass(ctx.schema);
22582
22687
  if (ctx.atRoot)
22583
22688
  ctx.atRoot = false;
22689
+ if (ctx.atKey)
22690
+ ctx.atKey = false;
22584
22691
  let offset = bs.offset;
22585
22692
  let commentEnd = null;
22586
22693
  for (const { start, value } of bs.items) {
@@ -22665,6 +22772,8 @@ query GetEurekaResults($params: Input_eureka_SearchRequest) {
22665
22772
  const atRoot = ctx.atRoot;
22666
22773
  if (atRoot)
22667
22774
  ctx.atRoot = false;
22775
+ if (ctx.atKey)
22776
+ ctx.atKey = false;
22668
22777
  let offset = fc.offset + fc.start.source.length;
22669
22778
  for (let i = 0; i < fc.items.length; ++i) {
22670
22779
  const collItem = fc.items[i];
@@ -22744,12 +22853,14 @@ query GetEurekaResults($params: Input_eureka_SearchRequest) {
22744
22853
  else {
22745
22854
  // item is a key+value pair
22746
22855
  // key value
22856
+ ctx.atKey = true;
22747
22857
  const keyStart = props.end;
22748
22858
  const keyNode = key
22749
22859
  ? composeNode(ctx, key, props, onError)
22750
22860
  : composeEmptyNode(ctx, keyStart, start, null, props, onError);
22751
22861
  if (isBlock(key))
22752
22862
  onError(keyNode.range, 'BLOCK_IN_FLOW', blockMsg);
22863
+ ctx.atKey = false;
22753
22864
  // value properties
22754
22865
  const valueProps = resolveProps(sep ?? [], {
22755
22866
  flow: fcName,
@@ -22905,8 +23016,8 @@ query GetEurekaResults($params: Input_eureka_SearchRequest) {
22905
23016
  tag = kt;
22906
23017
  }
22907
23018
  else {
22908
- if (kt?.collection) {
22909
- onError(tagToken, 'BAD_COLLECTION_TYPE', `${kt.tag} used for ${expType} collection, but expects ${kt.collection}`, true);
23019
+ if (kt) {
23020
+ onError(tagToken, 'BAD_COLLECTION_TYPE', `${kt.tag} used for ${expType} collection, but expects ${kt.collection ?? 'scalar'}`, true);
22910
23021
  }
22911
23022
  else {
22912
23023
  onError(tagToken, 'TAG_RESOLVE_FAILED', `Unresolved tag: ${tagName}`, true);
@@ -23347,11 +23458,16 @@ query GetEurekaResults($params: Input_eureka_SearchRequest) {
23347
23458
  const tagName = tagToken
23348
23459
  ? ctx.directives.tagName(tagToken.source, msg => onError(tagToken, 'TAG_RESOLVE_FAILED', msg))
23349
23460
  : null;
23350
- const tag = tagToken && tagName
23351
- ? findScalarTagByName(ctx.schema, value, tagName, tagToken, onError)
23352
- : token.type === 'scalar'
23353
- ? findScalarTagByTest(ctx, value, token, onError)
23354
- : ctx.schema[SCALAR$1];
23461
+ let tag;
23462
+ if (ctx.options.stringKeys && ctx.atKey) {
23463
+ tag = ctx.schema[SCALAR$1];
23464
+ }
23465
+ else if (tagName)
23466
+ tag = findScalarTagByName(ctx.schema, value, tagName, tagToken, onError);
23467
+ else if (token.type === 'scalar')
23468
+ tag = findScalarTagByTest(ctx, value, token, onError);
23469
+ else
23470
+ tag = ctx.schema[SCALAR$1];
23355
23471
  let scalar;
23356
23472
  try {
23357
23473
  const res = tag.resolve(value, msg => onError(tagToken ?? token, 'TAG_RESOLVE_FAILED', msg), ctx.options);
@@ -23399,8 +23515,9 @@ query GetEurekaResults($params: Input_eureka_SearchRequest) {
23399
23515
  onError(tagToken, 'TAG_RESOLVE_FAILED', `Unresolved tag: ${tagName}`, tagName !== 'tag:yaml.org,2002:str');
23400
23516
  return schema[SCALAR$1];
23401
23517
  }
23402
- function findScalarTagByTest({ directives, schema }, value, token, onError) {
23403
- const tag = schema.tags.find(tag => tag.default && tag.test?.test(value)) || schema[SCALAR$1];
23518
+ function findScalarTagByTest({ atKey, directives, schema }, value, token, onError) {
23519
+ const tag = schema.tags.find(tag => (tag.default === true || (atKey && tag.default === 'key')) &&
23520
+ tag.test?.test(value)) || schema[SCALAR$1];
23404
23521
  if (schema.compat) {
23405
23522
  const compat = schema.compat.find(tag => tag.default && tag.test?.test(value)) ??
23406
23523
  schema[SCALAR$1];
@@ -23416,8 +23533,7 @@ query GetEurekaResults($params: Input_eureka_SearchRequest) {
23416
23533
 
23417
23534
  function emptyScalarPosition(offset, before, pos) {
23418
23535
  if (before) {
23419
- if (pos === null)
23420
- pos = before.length;
23536
+ pos ?? (pos = before.length);
23421
23537
  for (let i = pos - 1; i >= 0; --i) {
23422
23538
  let st = before[i];
23423
23539
  switch (st.type) {
@@ -23442,6 +23558,7 @@ query GetEurekaResults($params: Input_eureka_SearchRequest) {
23442
23558
 
23443
23559
  const CN = { composeNode, composeEmptyNode };
23444
23560
  function composeNode(ctx, token, props, onError) {
23561
+ const atKey = ctx.atKey;
23445
23562
  const { spaceBefore, comment, anchor, tag } = props;
23446
23563
  let node;
23447
23564
  let isSrcToken = true;
@@ -23477,6 +23594,14 @@ query GetEurekaResults($params: Input_eureka_SearchRequest) {
23477
23594
  }
23478
23595
  if (anchor && node.anchor === '')
23479
23596
  onError(anchor, 'BAD_ALIAS', 'Anchor cannot be an empty string');
23597
+ if (atKey &&
23598
+ ctx.options.stringKeys &&
23599
+ (!isScalar$1(node) ||
23600
+ typeof node.value !== 'string' ||
23601
+ (node.tag && node.tag !== 'tag:yaml.org,2002:str'))) {
23602
+ const msg = 'With stringKeys, all keys must be strings';
23603
+ onError(tag ?? token, 'NON_STRING_KEY', msg);
23604
+ }
23480
23605
  if (spaceBefore)
23481
23606
  node.spaceBefore = true;
23482
23607
  if (comment) {
@@ -23529,6 +23654,7 @@ query GetEurekaResults($params: Input_eureka_SearchRequest) {
23529
23654
  const opts = Object.assign({ _directives: directives }, options);
23530
23655
  const doc = new Document(undefined, opts);
23531
23656
  const ctx = {
23657
+ atKey: false,
23532
23658
  atRoot: true,
23533
23659
  directives: doc.directives,
23534
23660
  options: doc.options,
@@ -25663,7 +25789,20 @@ query GetEurekaResults($params: Input_eureka_SearchRequest) {
25663
25789
  default: {
25664
25790
  const bv = this.startBlockValue(map);
25665
25791
  if (bv) {
25666
- if (atMapIndent && bv.type !== 'block-seq') {
25792
+ if (bv.type === 'block-seq') {
25793
+ if (!it.explicitKey &&
25794
+ it.sep &&
25795
+ !includesToken(it.sep, 'newline')) {
25796
+ yield* this.pop({
25797
+ type: 'error',
25798
+ offset: this.offset,
25799
+ message: 'Unexpected block-seq-ind on same line with key',
25800
+ source: this.source
25801
+ });
25802
+ return;
25803
+ }
25804
+ }
25805
+ else if (atMapIndent) {
25667
25806
  map.items.push({ start });
25668
25807
  }
25669
25808
  this.stack.push(bv);
@@ -26034,6 +26173,8 @@ query GetEurekaResults($params: Input_eureka_SearchRequest) {
26034
26173
  if (!keepUndefined)
26035
26174
  return undefined;
26036
26175
  }
26176
+ if (isDocument(value) && !_replacer)
26177
+ return value.toString(options);
26037
26178
  return new Document(value, _replacer, options).toString(options);
26038
26179
  }
26039
26180
 
@@ -26109,14 +26250,16 @@ query GetEurekaResults($params: Input_eureka_SearchRequest) {
26109
26250
 
26110
26251
  exports.AnswerService = AnswerService;
26111
26252
  exports.AppEmbed = AppEmbed;
26112
- exports.BodylessConversation = BodylessConversation;
26113
- exports.ConversationEmbed = ConversationEmbed;
26253
+ exports.BodylessConversation = SpotterAgentEmbed;
26254
+ exports.ConversationEmbed = SpotterEmbed;
26114
26255
  exports.LiveboardEmbed = LiveboardEmbed;
26115
26256
  exports.MIXPANEL_EVENT = MIXPANEL_EVENT;
26116
26257
  exports.PinboardEmbed = PinboardEmbed;
26117
26258
  exports.SageEmbed = SageEmbed;
26118
26259
  exports.SearchBarEmbed = SearchBarEmbed;
26119
26260
  exports.SearchEmbed = SearchEmbed;
26261
+ exports.SpotterAgentEmbed = SpotterAgentEmbed;
26262
+ exports.SpotterEmbed = SpotterEmbed;
26120
26263
  exports.createLiveboardWithAnswers = createLiveboardWithAnswers;
26121
26264
  exports.executeTML = executeTML;
26122
26265
  exports.exportTML = exportTML;