@pitcher/js-api 1.26.0-beta.9 → 1.26.0

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 (195) hide show
  1. package/impact-js-api.spec.json +6 -0
  2. package/js-api.esm.js +775 -48
  3. package/js-api.esm.js.map +1 -1
  4. package/js-api.umd.min.js +10 -10
  5. package/js-api.umd.min.js.map +1 -1
  6. package/lib/api/events/events.helpers.d.ts +14 -2
  7. package/lib/apps/agenda-selector/composables/move-item-modal.use.d.ts +12 -0
  8. package/lib/apps/browser/App.vue.d.ts +117 -0
  9. package/lib/apps/browser/appTypes.d.ts +7 -7
  10. package/lib/apps/browser/components/Content/ActionsToolbar/ActionsToolbar.vue.d.ts +21 -4
  11. package/lib/apps/browser/components/Content/Content.vue.d.ts +1 -0
  12. package/lib/apps/browser/components/Content/Panel/DetailsDrawer/DetailsDrawer.vue.d.ts +1 -0
  13. package/lib/apps/browser/components/Content/Panel/FolderPanel/FolderPanel.vue.d.ts +16 -1
  14. package/lib/apps/browser/components/ContextMenu/ConvertToSlidesButton.vue.d.ts +6 -0
  15. package/lib/apps/browser/components/RepUploads.vue.d.ts +206 -0
  16. package/lib/apps/browser/components/UploadFilesModal/UploadFilesModal.vue.d.ts +2 -0
  17. package/lib/apps/browser/components/UploadFilesModal/UploadFilesModalProperties.vue.d.ts +4 -0
  18. package/lib/apps/browser/stores/api.d.ts +63 -10
  19. package/lib/apps/browser/stores/app.d.ts +1 -1
  20. package/lib/apps/browser/stores/repUploadsStore.d.ts +34 -0
  21. package/lib/apps/browser/stores/upload.d.ts +16 -4
  22. package/lib/apps/browser/types/actionKeys.d.ts +3 -1
  23. package/lib/apps/canvas-builder/App.vue.d.ts +13 -0
  24. package/lib/apps/canvas-builder/components/container/CanvasContent/canvas-component-map.const.d.ts +3 -0
  25. package/lib/apps/canvas-builder/components/container/CanvasContent/page.paginated.vue.d.ts +2 -2
  26. package/lib/apps/canvas-builder/components/container/CanvasContent/pageWrapper.paginated.vue.d.ts +7 -0
  27. package/lib/apps/canvas-builder/components/ui/Carousel/Carousel.vue.d.ts +5 -0
  28. package/lib/apps/canvas-builder/components/ui/CollectionPlayer/CollectionPlayer.vue.d.ts +5 -2
  29. package/lib/apps/canvas-builder/components/ui/ContentGrid/ContentGrid.vue.d.ts +5 -0
  30. package/lib/apps/canvas-builder/components/ui/ContentList/ContentList.vue.d.ts +9 -8
  31. package/lib/apps/canvas-builder/components/ui/CustomDataTable/CustomDataTable.vue.d.ts +5 -0
  32. package/lib/apps/canvas-builder/components/ui/DataCharts/DataCharts.raw.vue.d.ts +4 -0
  33. package/lib/apps/canvas-builder/components/ui/DataCharts/DataCharts.vue.d.ts +5 -0
  34. package/lib/apps/canvas-builder/components/ui/DataCharts/types.d.ts +119 -8
  35. package/lib/apps/canvas-builder/components/ui/DynamicContent/DynamicContent.edit.vue.d.ts +2 -0
  36. package/lib/apps/canvas-builder/components/ui/DynamicContent/DynamicContent.raw.vue.d.ts +8 -0
  37. package/lib/apps/canvas-builder/components/ui/DynamicContent/DynamicContent.settings.vue.d.ts +7 -0
  38. package/lib/apps/canvas-builder/components/ui/DynamicContent/DynamicContent.vue.d.ts +31 -0
  39. package/lib/apps/canvas-builder/components/ui/DynamicContent/DynamicContentList.vue.d.ts +12 -0
  40. package/lib/apps/canvas-builder/components/ui/DynamicContent/dynamicContent.const.d.ts +4 -0
  41. package/lib/apps/canvas-builder/components/ui/DynamicContent/section-component-map.const.d.ts +1 -0
  42. package/lib/apps/canvas-builder/components/ui/DynamicContent/useDynamicContent.d.ts +436 -0
  43. package/lib/apps/canvas-builder/components/ui/DynamicDataTable/DynamicDataTable.vue.d.ts +5 -0
  44. package/lib/apps/canvas-builder/components/ui/Embeddable/Embeddable.vue.d.ts +5 -0
  45. package/lib/apps/canvas-builder/components/ui/Grid/Grid.vue.d.ts +5 -0
  46. package/lib/apps/canvas-builder/components/ui/Html/Html.vue.d.ts +5 -0
  47. package/lib/apps/canvas-builder/components/ui/IFrame/IFrame.vue.d.ts +5 -0
  48. package/lib/apps/canvas-builder/components/ui/Link/Link.vue.d.ts +5 -0
  49. package/lib/apps/canvas-builder/components/ui/Multimedia/Multimedia.vue.d.ts +5 -0
  50. package/lib/apps/canvas-builder/components/ui/Page/Page.vue.d.ts +5 -0
  51. package/lib/apps/canvas-builder/components/ui/PageBreak/PageBreak.vue.d.ts +15 -1
  52. package/lib/apps/canvas-builder/components/ui/Scribble/Scribble.original.vue.d.ts +5 -0
  53. package/lib/apps/canvas-builder/components/ui/Scribble/Scribble.responsive.vue.d.ts +5 -0
  54. package/lib/apps/canvas-builder/components/ui/SectionList/SectionItemModal.vue.d.ts +4 -2
  55. package/lib/apps/canvas-builder/components/ui/SectionList/SectionList.vue.d.ts +9 -3
  56. package/lib/apps/canvas-builder/components/ui/SectionList/SectionSelectorToolbar.vue.d.ts +0 -12
  57. package/lib/apps/canvas-builder/components/ui/Timeline/Timeline.vue.d.ts +5 -0
  58. package/lib/apps/canvas-builder/composables/useCanvas.d.ts +361 -13
  59. package/lib/apps/canvas-builder/composables/useCanvasBlocks.d.ts +60 -0
  60. package/lib/apps/canvas-builder/composables/useCanvasCompletionWizard.d.ts +1 -1
  61. package/lib/apps/canvas-builder/composables/useCanvasHistory.d.ts +60 -0
  62. package/lib/apps/canvas-builder/composables/useCanvasPages.d.ts +1 -1
  63. package/lib/apps/canvas-builder/composables/useCanvasSectionOverrides.d.ts +1 -1
  64. package/lib/apps/canvas-builder/composables/useCanvasTheme.d.ts +24 -0
  65. package/lib/apps/canvas-builder/composables/useCanvasVisibility.d.ts +2 -2
  66. package/lib/apps/canvas-builder/composables/useComponentPermissions.d.ts +2 -1
  67. package/lib/apps/canvas-builder/composables/useContentSelector.d.ts +9 -1
  68. package/lib/apps/canvas-builder/composables/useCrmShape.d.ts +2 -1
  69. package/lib/apps/canvas-builder/composables/useCrmShapeWithSectionContext.d.ts +1 -2
  70. package/lib/apps/canvas-builder/composables/usePopupApps.d.ts +10 -2
  71. package/lib/apps/canvas-builder/composables/useReorderComponent.d.ts +3 -3
  72. package/lib/apps/canvas-builder/composables/useScribbleChild.d.ts +1 -1
  73. package/lib/apps/canvas-builder/constants/canvas.const.d.ts +4 -0
  74. package/lib/apps/canvas-builder/types/canvas.d.ts +24 -2
  75. package/lib/apps/canvas-builder/util/canvas.util.d.ts +6 -5
  76. package/lib/apps/canvas-builder/util/fetchAnalyticsPopularity.d.ts +18 -0
  77. package/lib/apps/collection-player/App.vue.d.ts +0 -1
  78. package/lib/apps/collection-player/stores/app.store.d.ts +0 -1
  79. package/lib/apps/collection-selector/composables/move-slide-modal.use.d.ts +12 -0
  80. package/lib/apps/content-selector/appTypes.d.ts +1 -0
  81. package/lib/apps/content-selector/components/Content/AllContent/List/FoldersFilesList.vue.d.ts +21 -4
  82. package/lib/apps/content-selector/stores/app.d.ts +2 -1
  83. package/lib/apps/ppt-conversion-selector/composables/move-slide-modal.use.d.ts +6 -0
  84. package/lib/apps/ppt-conversion-selector/export.d.ts +1 -0
  85. package/lib/apps/ppt-conversion-selector/stores/app.store.d.ts +8 -0
  86. package/lib/apps/ppt-conversion-selector/utils/data.util.d.ts +1 -0
  87. package/lib/apps/ppt-conversion-selector/utils/data.util.test.d.ts +1 -0
  88. package/lib/components/CBulkToolbar/CBulkToolbar.vue.d.ts +3 -0
  89. package/lib/components/CComponentListItem/CComponentListItem.vue.d.ts +8 -8
  90. package/lib/components/CContactSelector/CContactAccountListItem.vue.d.ts +3 -0
  91. package/lib/components/CContactSelector/CContactSelector.vue.d.ts +3 -1
  92. package/lib/components/CContactSelector/CContactSelectorAccountsWithContacts.vue.d.ts +10 -4
  93. package/lib/components/CContentError/CContentError.vue.d.ts +2 -0
  94. package/lib/components/CFileAttributes/CFileAttributes.vue.d.ts +11 -0
  95. package/lib/components/CGlobalSearch/GlobalSearch.use.d.ts +2 -1
  96. package/lib/components/CSearchFilters/CSearchFilters.vue.d.ts +7 -1
  97. package/lib/components/CSwitch/CSwitch.vue.d.ts +4 -2
  98. package/lib/components/CTemplateAccessInfo/CTemplateAccessInfo.vue.d.ts +25 -0
  99. package/lib/components/CTemplateAccessManage/CTemplateAccessManage.vue.d.ts +26 -0
  100. package/lib/components/CUsersGroupsAccessManage/CUsersGroupsAccessManage.types.d.ts +3 -8
  101. package/lib/components/assignedCanvases/CAssignedCanvasesManagement.vue.d.ts +20 -4
  102. package/lib/components/assignedCanvases/CAssignedCanvasesManagementToolbar.vue.d.ts +4 -1
  103. package/lib/components/canvas-blocks/CBlockManagement.vue.d.ts +19 -7
  104. package/lib/components/canvas-blocks/CBlockManagementToolbar.vue.d.ts +4 -1
  105. package/lib/components/canvas-templates/CTemplateManagement.vue.d.ts +77 -15
  106. package/lib/components/canvas-templates/CTemplateManagementActionsCell.vue.d.ts +3 -0
  107. package/lib/components/canvas-templates/CTemplateManagementToolbar.vue.d.ts +28 -5
  108. package/lib/components/filters/CSearchFilter.vue.d.ts +1148 -1
  109. package/lib/components/savedCanvases/CSavedCanvasesManagement.use.d.ts +3 -0
  110. package/lib/components/savedCanvases/CSavedCanvasesManagement.use.spec.d.ts +1 -0
  111. package/lib/components/savedCanvases/CSavedCanvasesManagement.vue.d.ts +31 -4
  112. package/lib/components/savedCanvases/CSavedCanvasesManagementActionsCell.vue.d.ts +12 -0
  113. package/lib/components/savedCanvases/CSavedCanvasesManagementToolbar.vue.d.ts +5 -1
  114. package/lib/components/sections/CSectionManagement.vue.d.ts +23 -7
  115. package/lib/components/sections/CSectionManagementActionsCell.vue.d.ts +3 -0
  116. package/lib/components/sections/CSectionManagementToolbar.vue.d.ts +4 -1
  117. package/lib/components/themes/CThemeManagement.vue.d.ts +18 -4
  118. package/lib/components/themes/CThemeManagementActionsCell.vue.d.ts +3 -0
  119. package/lib/components/themes/CThemeManagementToolbar.vue.d.ts +4 -1
  120. package/lib/composables/presentationHistory.use.d.ts +12 -2
  121. package/lib/composables/useCanvasStandardFilters.d.ts +17 -2
  122. package/lib/composables/useFileDisplayHelpers.d.ts +1 -0
  123. package/lib/composables/useFilterSuggestions.d.ts +5 -1
  124. package/lib/composables/useMetadataSearch.d.ts +8 -2
  125. package/lib/composables/useSmartStore.d.ts +25 -0
  126. package/lib/main.lib.d.ts +8 -1
  127. package/lib/sdk/api/HighLevelApi.d.ts +6 -4
  128. package/lib/sdk/api/modules/index.d.ts +0 -1
  129. package/lib/sdk/api/modules/query.d.ts +120 -1
  130. package/lib/sdk/api/modules/ui/content.ui.d.ts +22 -1
  131. package/lib/sdk/api/modules/ui/index.d.ts +3 -0
  132. package/lib/sdk/api/modules/ui/sharing.ui.d.ts +2 -0
  133. package/lib/sdk/api/modules/ui/types.ui.d.ts +32 -0
  134. package/lib/sdk/interfaces.d.ts +16 -0
  135. package/lib/sdk/main.d.ts +27 -12
  136. package/lib/sdk/payload.types.d.ts +116 -0
  137. package/lib/sdk/utils/httpFetch.d.ts +2 -0
  138. package/lib/types/app.d.ts +2 -1
  139. package/lib/types/call.d.ts +9 -2
  140. package/lib/types/canvases.d.ts +1 -0
  141. package/lib/types/core/MetadataFilter.d.ts +1 -0
  142. package/lib/types/instanceSettings.types.d.ts +4 -2
  143. package/lib/types/launchDarkly.types.d.ts +11 -4
  144. package/lib/types/organizationSettings.types.d.ts +11 -0
  145. package/lib/types/sfdc.d.ts +6 -1
  146. package/lib/util/app.util.d.ts +46 -0
  147. package/lib/util/eval.d.ts +4 -0
  148. package/lib/util/font.util.d.ts +4 -0
  149. package/lib/util/handlebars.d.ts +35 -0
  150. package/lib/util/object.d.ts +1 -0
  151. package/lib/util/sfdc.util.d.ts +7 -0
  152. package/lib/util/sfdc.util.spec.d.ts +1 -0
  153. package/lib/util/smart-store.util.d.ts +53 -0
  154. package/lib/util/smart-store.util.spec.d.ts +1 -0
  155. package/package.json +2 -2
  156. package/types/openapi/models/CanvasRecommendedFile.d.ts +1 -0
  157. package/types/openapi/models/DeletedFile.d.ts +1 -0
  158. package/types/openapi/models/FavoriteFile.d.ts +1 -0
  159. package/types/openapi/models/FavoriteFileRequest.d.ts +1 -0
  160. package/types/openapi/models/File.d.ts +1 -0
  161. package/types/openapi/models/FileContentTypeEnum.d.ts +3 -0
  162. package/types/openapi/models/FileCreate.d.ts +1 -0
  163. package/types/openapi/models/FileCreateRequest.d.ts +1 -0
  164. package/types/openapi/models/FilePermission.d.ts +2 -0
  165. package/types/openapi/models/FilePermissionRequest.d.ts +2 -0
  166. package/types/openapi/models/FileRetrieve.d.ts +1 -0
  167. package/types/openapi/models/FileUpdate.d.ts +1 -0
  168. package/types/openapi/models/FileUpdateRequest.d.ts +1 -0
  169. package/types/openapi/models/FolderFile.d.ts +1 -0
  170. package/types/openapi/models/PaginatedAppList.d.ts +2 -2
  171. package/types/openapi/models/PaginatedAuthTokenList.d.ts +2 -2
  172. package/types/openapi/models/PaginatedCanvasList.d.ts +2 -2
  173. package/types/openapi/models/PaginatedCollaborationList.d.ts +2 -2
  174. package/types/openapi/models/PaginatedContentDistributionGroupList.d.ts +2 -2
  175. package/types/openapi/models/PaginatedContentDistributionGroupMembershipList.d.ts +2 -2
  176. package/types/openapi/models/PaginatedEnvironmentList.d.ts +2 -2
  177. package/types/openapi/models/PaginatedEventList.d.ts +2 -2
  178. package/types/openapi/models/PaginatedFavoriteList.d.ts +2 -2
  179. package/types/openapi/models/PaginatedFileList.d.ts +2 -2
  180. package/types/openapi/models/PaginatedFileRevisionList.d.ts +2 -2
  181. package/types/openapi/models/PaginatedFolderList.d.ts +2 -2
  182. package/types/openapi/models/PaginatedInstanceAssignmentGroupList.d.ts +2 -2
  183. package/types/openapi/models/PaginatedInstanceAssignmentGroupMembershipList.d.ts +2 -2
  184. package/types/openapi/models/PaginatedInstanceList.d.ts +2 -2
  185. package/types/openapi/models/PaginatedInstanceMembershipList.d.ts +2 -2
  186. package/types/openapi/models/PaginatedInvitationList.d.ts +2 -2
  187. package/types/openapi/models/PaginatedMetadataTemplateList.d.ts +2 -2
  188. package/types/openapi/models/PaginatedOfflineSyncFolderList.d.ts +2 -2
  189. package/types/openapi/models/PaginatedRegionList.d.ts +2 -2
  190. package/types/openapi/models/PaginatedRevisionList.d.ts +2 -2
  191. package/types/openapi/models/PaginatedUserList.d.ts +2 -2
  192. package/types/openapi/models/PatchedFileUpdateRequest.d.ts +1 -0
  193. package/types/openapi/models/User.d.ts +1 -0
  194. package/lib/api/events/events.queries.d.ts +0 -9
  195. package/lib/sdk/api/modules/events.d.ts +0 -6
package/js-api.esm.js CHANGED
@@ -33,7 +33,7 @@ var hasRequiredPostRobot$1;
33
33
  function requirePostRobot$1 () {
34
34
  if (hasRequiredPostRobot$1) return postRobot$1.exports;
35
35
  hasRequiredPostRobot$1 = 1;
36
- (function (module, exports) {
36
+ (function (module, exports$1) {
37
37
  !function(root, factory) {
38
38
  module.exports = factory() ;
39
39
  }("undefined" != typeof self ? self : postRobot, (function() {
@@ -52,17 +52,17 @@ function requirePostRobot$1 () {
52
52
  }
53
53
  __webpack_require__.m = modules;
54
54
  __webpack_require__.c = installedModules;
55
- __webpack_require__.d = function(exports, name, getter) {
56
- __webpack_require__.o(exports, name) || Object.defineProperty(exports, name, {
55
+ __webpack_require__.d = function(exports$1, name, getter) {
56
+ __webpack_require__.o(exports$1, name) || Object.defineProperty(exports$1, name, {
57
57
  enumerable: true,
58
58
  get: getter
59
59
  });
60
60
  };
61
- __webpack_require__.r = function(exports) {
62
- "undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(exports, Symbol.toStringTag, {
61
+ __webpack_require__.r = function(exports$1) {
62
+ "undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(exports$1, Symbol.toStringTag, {
63
63
  value: "Module"
64
64
  });
65
- Object.defineProperty(exports, "__esModule", {
65
+ Object.defineProperty(exports$1, "__esModule", {
66
66
  value: true
67
67
  });
68
68
  };
@@ -2401,19 +2401,6 @@ function getLanguages() {
2401
2401
  return this.API.request("get_languages");
2402
2402
  }
2403
2403
 
2404
- function getEvents(payload) {
2405
- return highLevelApi.API.request("get_events", payload);
2406
- }
2407
- function createEvent(payload) {
2408
- return highLevelApi.API.request("create_event", payload);
2409
- }
2410
- function updateEvent(payload) {
2411
- return highLevelApi.API.request("update_event", payload);
2412
- }
2413
- function deleteEvent(payload) {
2414
- return highLevelApi.API.request("delete_event", payload);
2415
- }
2416
-
2417
2404
  function getCanvases$1(payload) {
2418
2405
  return this.API.request("get_canvases", payload);
2419
2406
  }
@@ -2531,18 +2518,609 @@ function toast$2(payload) {
2531
2518
  return this.API.request("toast", payload);
2532
2519
  }
2533
2520
 
2521
+ const SQL_KEYWORDS = /* @__PURE__ */ new Set([
2522
+ "SELECT",
2523
+ "FROM",
2524
+ "WHERE",
2525
+ "AND",
2526
+ "OR",
2527
+ "NOT",
2528
+ "IN",
2529
+ "LIKE",
2530
+ "ORDER",
2531
+ "BY",
2532
+ "GROUP",
2533
+ "HAVING",
2534
+ "LIMIT",
2535
+ "OFFSET",
2536
+ "ASC",
2537
+ "DESC",
2538
+ "NULLS",
2539
+ "FIRST",
2540
+ "LAST",
2541
+ "NULL",
2542
+ "TRUE",
2543
+ "FALSE",
2544
+ "COUNT",
2545
+ "SUM",
2546
+ "AVG",
2547
+ "MIN",
2548
+ "MAX",
2549
+ "COUNT_DISTINCT",
2550
+ "CALENDAR_MONTH",
2551
+ "CALENDAR_QUARTER",
2552
+ "CALENDAR_YEAR",
2553
+ "DAY_IN_MONTH",
2554
+ "DAY_IN_WEEK",
2555
+ "DAY_IN_YEAR",
2556
+ "DAY_ONLY",
2557
+ "FISCAL_MONTH",
2558
+ "FISCAL_QUARTER",
2559
+ "FISCAL_YEAR",
2560
+ "HOUR_IN_DAY",
2561
+ "WEEK_IN_MONTH",
2562
+ "WEEK_IN_YEAR",
2563
+ "INCLUDES",
2564
+ "EXCLUDES",
2565
+ "ABOVE",
2566
+ "BELOW",
2567
+ "ABOVE_OR_BELOW",
2568
+ "AT",
2569
+ "TYPEOF",
2570
+ "WHEN",
2571
+ "THEN",
2572
+ "ELSE",
2573
+ "END",
2574
+ "USING",
2575
+ "SCOPE",
2576
+ "DATA",
2577
+ "CATEGORY",
2578
+ "ROLLUP",
2579
+ "CUBE",
2580
+ "FORMAT",
2581
+ "CONVERTCURRENCY",
2582
+ "TOLABEL",
2583
+ "DISTANCE",
2584
+ "GEOLOCATION"
2585
+ ]);
2586
+ const AGGREGATE_FUNCTIONS = ["COUNT", "SUM", "AVG", "MIN", "MAX", "COUNT_DISTINCT"];
2587
+ function isSqlKeyword(word) {
2588
+ return SQL_KEYWORDS.has(word.toUpperCase());
2589
+ }
2590
+ function isLiteralValue(value) {
2591
+ const trimmed = value.trim();
2592
+ if (trimmed.startsWith("'") && trimmed.endsWith("'") || trimmed.startsWith('"') && trimmed.endsWith('"')) {
2593
+ return true;
2594
+ }
2595
+ if (/^-?\d+(\.\d+)?$/.test(trimmed)) {
2596
+ return true;
2597
+ }
2598
+ if (/^(true|false)$/i.test(trimmed)) {
2599
+ return true;
2600
+ }
2601
+ if (/^null$/i.test(trimmed)) {
2602
+ return true;
2603
+ }
2604
+ if (/^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}(\.\d{3})?(Z|[+-]\d{2}:\d{2})?)?$/.test(trimmed)) {
2605
+ return true;
2606
+ }
2607
+ if (/^(TODAY|YESTERDAY|TOMORROW|LAST_WEEK|THIS_WEEK|NEXT_WEEK|LAST_MONTH|THIS_MONTH|NEXT_MONTH|LAST_90_DAYS|NEXT_90_DAYS|LAST_N_DAYS:\d+|NEXT_N_DAYS:\d+|LAST_N_WEEKS:\d+|NEXT_N_WEEKS:\d+|LAST_N_MONTHS:\d+|NEXT_N_MONTHS:\d+|LAST_N_QUARTERS:\d+|NEXT_N_QUARTERS:\d+|LAST_N_YEARS:\d+|NEXT_N_YEARS:\d+|THIS_QUARTER|LAST_QUARTER|NEXT_QUARTER|THIS_YEAR|LAST_YEAR|NEXT_YEAR|THIS_FISCAL_QUARTER|LAST_FISCAL_QUARTER|NEXT_FISCAL_QUARTER|THIS_FISCAL_YEAR|LAST_FISCAL_YEAR|NEXT_FISCAL_YEAR)$/i.test(
2608
+ trimmed
2609
+ )) {
2610
+ return true;
2611
+ }
2612
+ return false;
2613
+ }
2614
+ function isDateTimeLiteral(token) {
2615
+ return /^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}(\.\d{3})?(Z|[+-]\d{2}:\d{2})?)?$/.test(token);
2616
+ }
2617
+ function convertFieldToSmartStore(field, primaryObject, objectAliases) {
2618
+ const trimmed = field.trim();
2619
+ if (isSqlKeyword(trimmed) || isLiteralValue(trimmed)) {
2620
+ return trimmed;
2621
+ }
2622
+ if (trimmed === "__FIELDS_ALL_PLACEHOLDER__") {
2623
+ return `{${primaryObject}:_soup}`;
2624
+ }
2625
+ if (trimmed === "*") {
2626
+ return "*";
2627
+ }
2628
+ if (trimmed.startsWith("{") && trimmed.endsWith("}")) {
2629
+ return trimmed;
2630
+ }
2631
+ if (trimmed.includes(".")) {
2632
+ const parts = trimmed.split(".");
2633
+ const alias = parts[0];
2634
+ if (objectAliases.has(alias.toLowerCase()) && objectAliases.get(alias.toLowerCase()) === primaryObject) {
2635
+ const fieldPath = parts.slice(1).join(".");
2636
+ return `{${primaryObject}:${fieldPath}}`;
2637
+ }
2638
+ return `{${primaryObject}:${trimmed}}`;
2639
+ }
2640
+ return `{${primaryObject}:${trimmed}}`;
2641
+ }
2642
+ function convertAggregateFunction(expr, primaryObject, objectAliases) {
2643
+ for (const func of AGGREGATE_FUNCTIONS) {
2644
+ const regex = new RegExp(`\\b${func}\\s*\\(([^)]+)\\)`, "gi");
2645
+ expr = expr.replace(regex, (_match, innerField) => {
2646
+ const trimmedInner = innerField.trim();
2647
+ if (trimmedInner === "*") {
2648
+ return `${func}(*)`;
2649
+ }
2650
+ if (trimmedInner.toUpperCase().startsWith("DISTINCT ")) {
2651
+ const fieldPart = trimmedInner.substring(9).trim();
2652
+ const smartField2 = convertFieldToSmartStore(fieldPart, primaryObject, objectAliases);
2653
+ return `${func}(DISTINCT ${smartField2})`;
2654
+ }
2655
+ const smartField = convertFieldToSmartStore(trimmedInner, primaryObject, objectAliases);
2656
+ return `${func}(${smartField})`;
2657
+ });
2658
+ }
2659
+ return expr;
2660
+ }
2661
+ function parseSelectFields(selectClause) {
2662
+ const fields = [];
2663
+ let depth = 0;
2664
+ let currentField = "";
2665
+ for (let i = 0; i < selectClause.length; i++) {
2666
+ const char = selectClause[i];
2667
+ if (char === "(") {
2668
+ depth++;
2669
+ currentField += char;
2670
+ } else if (char === ")") {
2671
+ depth--;
2672
+ currentField += char;
2673
+ } else if (char === "," && depth === 0) {
2674
+ if (currentField.trim()) {
2675
+ fields.push(currentField.trim());
2676
+ }
2677
+ currentField = "";
2678
+ } else {
2679
+ currentField += char;
2680
+ }
2681
+ }
2682
+ if (currentField.trim()) {
2683
+ fields.push(currentField.trim());
2684
+ }
2685
+ return fields;
2686
+ }
2687
+ function convertSelectFields(fields, primaryObject, objectAliases) {
2688
+ return fields.map((field) => {
2689
+ const aliasMatch = field.match(/^(.+?)\s+(?:AS\s+)?([A-Za-z_][A-Za-z0-9_]*)$/i);
2690
+ let expression = field;
2691
+ let alias = "";
2692
+ if (aliasMatch) {
2693
+ expression = aliasMatch[1].trim();
2694
+ alias = aliasMatch[2];
2695
+ }
2696
+ const hasAggregate = AGGREGATE_FUNCTIONS.some((func) => new RegExp(`\\b${func}\\s*\\(`, "i").test(expression));
2697
+ if (hasAggregate) {
2698
+ const converted2 = convertAggregateFunction(expression, primaryObject, objectAliases);
2699
+ return alias ? `${converted2} ${alias}` : converted2;
2700
+ }
2701
+ const converted = convertFieldToSmartStore(expression, primaryObject, objectAliases);
2702
+ return alias ? `${converted} ${alias}` : converted;
2703
+ });
2704
+ }
2705
+ function convertNullComparisons(clause) {
2706
+ let result = clause.replace(/\s*!=\s*null\b/gi, " IS NOT NULL");
2707
+ result = result.replace(/\s*<>\s*null\b/gi, " IS NOT NULL");
2708
+ result = result.replace(/\s*=\s*null\b/gi, " IS NULL");
2709
+ return result;
2710
+ }
2711
+ function convertWhereClause(whereClause, primaryObject, objectAliases) {
2712
+ let result = "";
2713
+ let i = 0;
2714
+ const len = whereClause.length;
2715
+ while (i < len) {
2716
+ const char = whereClause[i];
2717
+ if (/\s/.test(char)) {
2718
+ result += char;
2719
+ i++;
2720
+ continue;
2721
+ }
2722
+ if (char === "'" || char === '"') {
2723
+ const quote = char;
2724
+ result += char;
2725
+ i++;
2726
+ while (i < len && whereClause[i] !== quote) {
2727
+ if (whereClause[i] === "\\" && i + 1 < len) {
2728
+ result += whereClause[i] + whereClause[i + 1];
2729
+ i += 2;
2730
+ } else {
2731
+ result += whereClause[i];
2732
+ i++;
2733
+ }
2734
+ }
2735
+ if (i < len) {
2736
+ result += whereClause[i];
2737
+ i++;
2738
+ }
2739
+ continue;
2740
+ }
2741
+ if (/[()=<>!,]/.test(char)) {
2742
+ result += char;
2743
+ i++;
2744
+ if ((char === "!" || char === "<" || char === ">") && i < len && whereClause[i] === "=") {
2745
+ result += whereClause[i];
2746
+ i++;
2747
+ }
2748
+ continue;
2749
+ }
2750
+ if (/[a-zA-Z_]/.test(char)) {
2751
+ let identifier = "";
2752
+ while (i < len && /[a-zA-Z0-9_.]/.test(whereClause[i])) {
2753
+ identifier += whereClause[i];
2754
+ i++;
2755
+ }
2756
+ if (isSqlKeyword(identifier) || isLiteralValue(identifier)) {
2757
+ result += identifier;
2758
+ } else {
2759
+ result += convertFieldToSmartStore(identifier, primaryObject, objectAliases);
2760
+ }
2761
+ continue;
2762
+ }
2763
+ if (/[0-9-]/.test(char)) {
2764
+ let token = "";
2765
+ if (char === "-") {
2766
+ token += char;
2767
+ i++;
2768
+ }
2769
+ while (i < len && /[0-9.:\-TZ+]/.test(whereClause[i])) {
2770
+ token += whereClause[i];
2771
+ i++;
2772
+ }
2773
+ if (isDateTimeLiteral(token)) {
2774
+ result += `'${token}'`;
2775
+ } else {
2776
+ result += token;
2777
+ }
2778
+ continue;
2779
+ }
2780
+ result += char;
2781
+ i++;
2782
+ }
2783
+ result = convertNullComparisons(result);
2784
+ return result;
2785
+ }
2786
+ function parseOrderByClause(orderByClause) {
2787
+ const result = [];
2788
+ const parts = orderByClause.split(/,(?![^()]*\))/);
2789
+ for (const part of parts) {
2790
+ const trimmed = part.trim();
2791
+ if (!trimmed) continue;
2792
+ const match = trimmed.match(/^(.+?)\s*(ASC|DESC)?\s*(NULLS\s+(?:FIRST|LAST))?$/i);
2793
+ if (match) {
2794
+ const field = match[1].trim();
2795
+ let direction = match[2] ? match[2].toUpperCase() : "";
2796
+ if (match[3]) {
2797
+ direction += (direction ? " " : "") + match[3].toUpperCase();
2798
+ }
2799
+ result.push({ field, direction });
2800
+ } else {
2801
+ result.push({ field: trimmed, direction: "" });
2802
+ }
2803
+ }
2804
+ return result;
2805
+ }
2806
+ function convertOrderByFields(orderByParts, primaryObject, objectAliases) {
2807
+ return orderByParts.map(({ field, direction }) => {
2808
+ const hasAggregate = AGGREGATE_FUNCTIONS.some((func) => new RegExp(`\\b${func}\\s*\\(`, "i").test(field));
2809
+ let convertedField;
2810
+ if (hasAggregate) {
2811
+ convertedField = convertAggregateFunction(field, primaryObject, objectAliases);
2812
+ } else {
2813
+ convertedField = convertFieldToSmartStore(field, primaryObject, objectAliases);
2814
+ }
2815
+ return direction ? `${convertedField} ${direction}` : convertedField;
2816
+ });
2817
+ }
2818
+ function parseGroupByClause(groupByClause) {
2819
+ return groupByClause.split(/,(?![^()]*\))/).map((f) => f.trim()).filter(Boolean);
2820
+ }
2821
+ function convertGroupByFields(fields, primaryObject, objectAliases) {
2822
+ return fields.map((field) => {
2823
+ if (/^(ROLLUP|CUBE)\s*\(/i.test(field)) {
2824
+ return field.replace(/\(([^)]+)\)/g, (_match, inner) => {
2825
+ const innerFields = inner.split(",").map((f) => f.trim());
2826
+ const converted = innerFields.map((f) => convertFieldToSmartStore(f, primaryObject, objectAliases));
2827
+ return `(${converted.join(", ")})`;
2828
+ });
2829
+ }
2830
+ return convertFieldToSmartStore(field, primaryObject, objectAliases);
2831
+ });
2832
+ }
2833
+ function parseFromClause(fromClause) {
2834
+ const joins = [];
2835
+ const primaryMatch = fromClause.match(/^([A-Za-z0-9_]+)(?:\s+(?:AS\s+)?([A-Za-z_][A-Za-z0-9_]*))?/i);
2836
+ if (!primaryMatch) {
2837
+ return { primary: "", joins };
2838
+ }
2839
+ const primary = primaryMatch[1];
2840
+ const alias = primaryMatch[2];
2841
+ const joinRegex = /(LEFT\s+OUTER\s+JOIN|LEFT\s+JOIN|INNER\s+JOIN|JOIN)\s+([A-Za-z0-9_]+)(?:\s+(?:AS\s+)?([A-Za-z_][A-Za-z0-9_]*))?\s+ON\s+([^,]+?)(?=(?:LEFT|INNER|JOIN|$))/gi;
2842
+ let joinMatch;
2843
+ while ((joinMatch = joinRegex.exec(fromClause)) !== null) {
2844
+ joins.push({
2845
+ type: joinMatch[1].toUpperCase().replace(/\s+/g, " "),
2846
+ object: joinMatch[2],
2847
+ alias: joinMatch[3],
2848
+ on: joinMatch[4]?.trim()
2849
+ });
2850
+ }
2851
+ return { primary, alias, joins };
2852
+ }
2853
+ function removeSubqueries(query) {
2854
+ const subqueries = [];
2855
+ let cleanQuery = "";
2856
+ let depth = 0;
2857
+ let currentSubquery = "";
2858
+ let inSubquery = false;
2859
+ for (let i = 0; i < query.length; i++) {
2860
+ const char = query[i];
2861
+ if (char === "(") {
2862
+ depth++;
2863
+ if (depth === 1) {
2864
+ const remaining = query.substring(i + 1).trimStart();
2865
+ if (/^SELECT\s/i.test(remaining)) {
2866
+ inSubquery = true;
2867
+ currentSubquery = char;
2868
+ continue;
2869
+ }
2870
+ }
2871
+ if (inSubquery) {
2872
+ currentSubquery += char;
2873
+ } else {
2874
+ cleanQuery += char;
2875
+ }
2876
+ } else if (char === ")") {
2877
+ if (inSubquery) {
2878
+ currentSubquery += char;
2879
+ depth--;
2880
+ if (depth === 0) {
2881
+ subqueries.push(currentSubquery);
2882
+ currentSubquery = "";
2883
+ inSubquery = false;
2884
+ }
2885
+ } else {
2886
+ depth--;
2887
+ cleanQuery += char;
2888
+ }
2889
+ } else {
2890
+ if (inSubquery) {
2891
+ currentSubquery += char;
2892
+ } else {
2893
+ cleanQuery += char;
2894
+ }
2895
+ }
2896
+ }
2897
+ return { cleanQuery, subqueries };
2898
+ }
2899
+ function findMainFromClause(query) {
2900
+ const { cleanQuery } = removeSubqueries(query);
2901
+ const fromMatch = cleanQuery.match(
2902
+ /FROM\s+([A-Za-z0-9_]+)(?:\s+(?:AS\s+)?[A-Za-z_][A-Za-z0-9_]*)?(?=\s+WHERE\s+|\s+ORDER\s+BY\s+|\s+GROUP\s+BY\s+|\s+HAVING\s+|\s+LIMIT\s+|\s+OFFSET\s+|\s*$)/i
2903
+ );
2904
+ const primaryObject = fromMatch ? fromMatch[1] : null;
2905
+ return { primaryObject, cleanQuery };
2906
+ }
2907
+ function convertSoqlToSmartQuery(soqlQuery) {
2908
+ if (!soqlQuery || typeof soqlQuery !== "string") {
2909
+ return "";
2910
+ }
2911
+ let normalizedQuery = soqlQuery.replace(/\s+/g, " ").trim();
2912
+ const { primaryObject, cleanQuery } = findMainFromClause(normalizedQuery);
2913
+ if (!primaryObject) {
2914
+ return soqlQuery;
2915
+ }
2916
+ normalizedQuery = cleanQuery;
2917
+ normalizedQuery = normalizedQuery.replace(
2918
+ /\bFIELDS\s*\(\s*(ALL|STANDARD|CUSTOM)\s*\)/gi,
2919
+ "__FIELDS_ALL_PLACEHOLDER__"
2920
+ );
2921
+ const selectMatch = normalizedQuery.match(/SELECT\s+([\s\S]+?)\s+FROM\s+/i);
2922
+ if (!selectMatch) {
2923
+ return soqlQuery;
2924
+ }
2925
+ const fromMatch = normalizedQuery.match(
2926
+ /FROM\s+([\s\S]+?)(?=\s+WHERE\s+|\s+ORDER\s+BY\s+|\s+GROUP\s+BY\s+|\s+HAVING\s+|\s+LIMIT\s+|\s+OFFSET\s+|\s*$)/i
2927
+ );
2928
+ const fromParsed = fromMatch ? parseFromClause(fromMatch[1].trim()) : { };
2929
+ const whereMatch = normalizedQuery.match(
2930
+ /WHERE\s+([\s\S]+?)(?=\s+ORDER\s+BY\s+|\s+GROUP\s+BY\s+|\s+HAVING\s+|\s+LIMIT\s+|\s+OFFSET\s+|\s*$)/i
2931
+ );
2932
+ const groupByMatch = normalizedQuery.match(
2933
+ /GROUP\s+BY\s+([\s\S]+?)(?=\s+HAVING\s+|\s+ORDER\s+BY\s+|\s+LIMIT\s+|\s+OFFSET\s+|\s*$)/i
2934
+ );
2935
+ const havingMatch = normalizedQuery.match(/HAVING\s+([\s\S]+?)(?=\s+ORDER\s+BY\s+|\s+LIMIT\s+|\s+OFFSET\s+|\s*$)/i);
2936
+ const orderByMatch = normalizedQuery.match(/ORDER\s+BY\s+([\s\S]+?)(?=\s+LIMIT\s+|\s+OFFSET\s+|\s*$)/i);
2937
+ const limitMatch = normalizedQuery.match(/LIMIT\s+(\d+)/i);
2938
+ const offsetMatch = normalizedQuery.match(/OFFSET\s+(\d+)/i);
2939
+ const objectAliases = /* @__PURE__ */ new Map();
2940
+ if (fromParsed.alias) {
2941
+ objectAliases.set(fromParsed.alias.toLowerCase(), primaryObject);
2942
+ }
2943
+ objectAliases.set(primaryObject.toLowerCase(), primaryObject);
2944
+ const parts = [];
2945
+ const selectFields = parseSelectFields(selectMatch[1].trim());
2946
+ const smartSelectFields = convertSelectFields(selectFields, primaryObject, objectAliases);
2947
+ parts.push(`SELECT ${smartSelectFields.join(", ")}`);
2948
+ parts.push(`FROM {${primaryObject}}`);
2949
+ const whereConditions = [];
2950
+ if (whereMatch) {
2951
+ const smartWhere = convertWhereClause(whereMatch[1].trim(), primaryObject, objectAliases);
2952
+ whereConditions.push(smartWhere);
2953
+ }
2954
+ if (whereConditions.length > 0) {
2955
+ parts.push(`WHERE ${whereConditions.join(" AND ")}`);
2956
+ }
2957
+ if (groupByMatch) {
2958
+ const groupByFields = parseGroupByClause(groupByMatch[1].trim());
2959
+ const smartGroupBy = convertGroupByFields(groupByFields, primaryObject, objectAliases);
2960
+ parts.push(`GROUP BY ${smartGroupBy.join(", ")}`);
2961
+ }
2962
+ if (havingMatch) {
2963
+ const smartHaving = convertWhereClause(havingMatch[1].trim(), primaryObject, objectAliases);
2964
+ parts.push(`HAVING ${smartHaving}`);
2965
+ }
2966
+ if (orderByMatch) {
2967
+ const orderByParts = parseOrderByClause(orderByMatch[1].trim());
2968
+ const smartOrderBy = convertOrderByFields(orderByParts, primaryObject, objectAliases);
2969
+ parts.push(`ORDER BY ${smartOrderBy.join(", ")}`);
2970
+ }
2971
+ if (limitMatch) {
2972
+ parts.push(`LIMIT ${limitMatch[1]}`);
2973
+ }
2974
+ if (offsetMatch) {
2975
+ parts.push(`OFFSET ${offsetMatch[1]}`);
2976
+ }
2977
+ return parts.join(" ");
2978
+ }
2979
+
2534
2980
  function query(payload) {
2535
2981
  return highLevelApi.API.request("query", payload);
2536
2982
  }
2537
2983
  function crmQuery(payload) {
2538
2984
  return highLevelApi.API.request("crm_query", payload);
2539
2985
  }
2986
+ function extractFieldsFromSoql(soqlQuery) {
2987
+ const { cleanQuery } = findMainFromClause(soqlQuery.replace(/\s+/g, " ").trim());
2988
+ const selectMatch = cleanQuery.match(/SELECT\s+([\s\S]+?)\s+FROM\s+/i);
2989
+ if (!selectMatch) return [];
2990
+ const selectClause = selectMatch[1];
2991
+ const fields = [];
2992
+ let depth = 0;
2993
+ let currentField = "";
2994
+ for (let i = 0; i < selectClause.length; i++) {
2995
+ const char = selectClause[i];
2996
+ if (char === "(") {
2997
+ depth++;
2998
+ currentField += char;
2999
+ } else if (char === ")") {
3000
+ depth--;
3001
+ currentField += char;
3002
+ } else if (char === "," && depth === 0) {
3003
+ if (currentField.trim()) {
3004
+ fields.push(currentField.trim());
3005
+ }
3006
+ currentField = "";
3007
+ } else {
3008
+ currentField += char;
3009
+ }
3010
+ }
3011
+ if (currentField.trim()) {
3012
+ fields.push(currentField.trim());
3013
+ }
3014
+ return fields.map((field) => {
3015
+ const aliasMatch = field.match(/^(.+?)\s+(?:AS\s+)?([A-Za-z_][A-Za-z0-9_]*)$/i);
3016
+ const fieldExpr = aliasMatch ? aliasMatch[1].trim() : field.trim();
3017
+ return fieldExpr;
3018
+ });
3019
+ }
3020
+ function extractObjectFromSoql(soqlQuery) {
3021
+ const { primaryObject } = findMainFromClause(soqlQuery.replace(/\s+/g, " ").trim());
3022
+ return primaryObject ?? "";
3023
+ }
3024
+ function setNestedProperty(obj, path, value) {
3025
+ const parts = path.split(".");
3026
+ if (parts.length === 1) {
3027
+ obj[path] = value;
3028
+ return;
3029
+ }
3030
+ let current = obj;
3031
+ for (let i = 0; i < parts.length - 1; i++) {
3032
+ const part = parts[i];
3033
+ if (!current[part] || typeof current[part] !== "object") {
3034
+ current[part] = {};
3035
+ }
3036
+ current = current[part];
3037
+ }
3038
+ current[parts[parts.length - 1]] = value;
3039
+ }
3040
+ function isAllFieldsSelector(field) {
3041
+ const trimmed = field.trim();
3042
+ return trimmed === "*" || /^FIELDS\s*\(\s*(ALL|STANDARD|CUSTOM)\s*\)$/i.test(trimmed);
3043
+ }
3044
+ function transformSmartStoreResults(smartStoreResults, fields, objectName) {
3045
+ if (!smartStoreResults || !Array.isArray(smartStoreResults)) {
3046
+ return [];
3047
+ }
3048
+ return smartStoreResults.map((row) => {
3049
+ const record = {};
3050
+ fields.forEach((field, index) => {
3051
+ if (index < row.length) {
3052
+ const value = row[index];
3053
+ if (isAllFieldsSelector(field)) {
3054
+ if (value && typeof value === "object" && !Array.isArray(value)) {
3055
+ Object.assign(record, value);
3056
+ }
3057
+ } else {
3058
+ setNestedProperty(record, field, value);
3059
+ }
3060
+ }
3061
+ });
3062
+ const recordId = record["Id"] || record["id"] || "";
3063
+ record["attributes"] = {
3064
+ type: objectName,
3065
+ url: recordId ? `/services/data/v57.0/sobjects/${objectName}/${recordId}` : ""
3066
+ };
3067
+ return record;
3068
+ });
3069
+ }
3070
+ async function crmQueryAdaptive(payload) {
3071
+ const query2 = payload.query;
3072
+ if (!query2 || typeof query2 !== "string") {
3073
+ return Promise.reject(new Error("Query is required and must be a string"));
3074
+ }
3075
+ let useSmartStore = false;
3076
+ try {
3077
+ const env = await highLevelApi.API.request("get_env");
3078
+ const isIos = env?.mode === "IOS";
3079
+ const isSfdcSyncEnabled = env?.launch_darkly?.sfdc_offline_enabled === true;
3080
+ useSmartStore = isIos && isSfdcSyncEnabled;
3081
+ } catch {
3082
+ useSmartStore = false;
3083
+ }
3084
+ console.log(`[crmQueryAdaptive] Called query: `, query2);
3085
+ if (useSmartStore) {
3086
+ const fields = extractFieldsFromSoql(query2);
3087
+ const objectName = extractObjectFromSoql(query2);
3088
+ let smartQuery = convertSoqlToSmartQuery(query2);
3089
+ if (!smartQuery.includes("__locally_deleted__")) {
3090
+ const fromMatch = smartQuery.match(/FROM\s+\{([A-Za-z0-9_]+)\}/);
3091
+ const primaryObject = fromMatch?.[1];
3092
+ if (primaryObject) {
3093
+ const filter = `({${primaryObject}:__locally_deleted__} = 0 OR {${primaryObject}:__locally_deleted__} = 'false' OR {${primaryObject}:__locally_deleted__} IS NULL)`;
3094
+ if (smartQuery.includes(" WHERE ")) {
3095
+ smartQuery = smartQuery.replace(
3096
+ /\s+WHERE\s+([\s\S]+?)(?=\s+ORDER\s+BY\s+|\s+GROUP\s+BY\s+|\s+HAVING\s+|\s+LIMIT\s+|\s+OFFSET\s+|\s*$)/i,
3097
+ (_, conditions) => ` WHERE (${conditions}) AND ${filter}`
3098
+ );
3099
+ } else {
3100
+ smartQuery = smartQuery.replace(
3101
+ /(FROM\s+\{[A-Za-z0-9_]+\})((\s+(?:ORDER\s+BY|GROUP\s+BY|HAVING|LIMIT|OFFSET)[\s\S]*)?)$/i,
3102
+ (_, fromClause, rest) => `${fromClause} WHERE ${filter}${rest}`
3103
+ );
3104
+ }
3105
+ }
3106
+ }
3107
+ console.log(`[crmSmartQuery] Called query: `, smartQuery);
3108
+ const smartStoreResults = await crmSmartQuery({ query: smartQuery });
3109
+ const records = transformSmartStoreResults(smartStoreResults, fields, objectName);
3110
+ console.log(`[SmartStore] Results: `, records);
3111
+ return {
3112
+ records,
3113
+ totalSize: records.length
3114
+ };
3115
+ }
3116
+ return crmQuery(payload);
3117
+ }
2540
3118
  function crmSmartQuery(payload) {
2541
3119
  const query2 = payload.query;
2542
3120
  if (!query2 || typeof query2 !== "string") {
2543
3121
  return Promise.reject(new Error("Query is required and must be a string"));
2544
3122
  }
2545
- const smartStorePattern = /\{[^}]+:[^}]+\}/;
3123
+ const smartStorePattern = /\{[^}]+:[^}]+}/;
2546
3124
  if (!smartStorePattern.test(query2.trim())) {
2547
3125
  return Promise.reject(
2548
3126
  new Error(
@@ -2560,6 +3138,9 @@ function crmSmartObjectMetadata(payload) {
2560
3138
  if (!objectName || typeof objectName !== "string" || objectName.trim() === "") {
2561
3139
  return Promise.reject(new Error("Object name is required and must be a non-empty string"));
2562
3140
  }
3141
+ if (payload.record_type_id !== void 0 && (typeof payload.record_type_id !== "string" || payload.record_type_id.trim() === "")) {
3142
+ return Promise.reject(new Error("record_type_id must be a non-empty string if provided"));
3143
+ }
2563
3144
  return highLevelApi.API.request("crm_smart_object_metadata", payload);
2564
3145
  }
2565
3146
  function crmSmartUpsertObjects(payload) {
@@ -2599,7 +3180,14 @@ function crmSmartUpsertObjects(payload) {
2599
3180
  }
2600
3181
  }
2601
3182
  }
2602
- return highLevelApi.API.request("crm_smart_upsert_objects", payload);
3183
+ console.log("[crmSmartUpsertObjects] Request payload:", JSON.stringify(payload, null, 2));
3184
+ return highLevelApi.API.request("crm_smart_upsert_objects", payload).then((result) => {
3185
+ console.log("[crmSmartUpsertObjects] Success:", result);
3186
+ return result;
3187
+ }).catch((error) => {
3188
+ console.error("[crmSmartUpsertObjects] Error:", error);
3189
+ throw error;
3190
+ });
2603
3191
  }
2604
3192
  function crmSmartObjectValidationRules(payload) {
2605
3193
  if (!payload) {
@@ -2611,6 +3199,16 @@ function crmSmartObjectValidationRules(payload) {
2611
3199
  }
2612
3200
  return highLevelApi.API.request("crm_smart_object_validation_rules", payload);
2613
3201
  }
3202
+ function crmSmartObjectLayout(payload) {
3203
+ if (!payload) {
3204
+ return Promise.reject(new Error("Payload is required"));
3205
+ }
3206
+ const objectName = payload.object;
3207
+ if (!objectName || typeof objectName !== "string" || objectName.trim() === "") {
3208
+ return Promise.reject(new Error("Object name is required and must be a non-empty string"));
3209
+ }
3210
+ return highLevelApi.API.request("crm_smart_object_layout", payload);
3211
+ }
2614
3212
  function crmSmartDeleteObjects(payload) {
2615
3213
  if (!payload || !payload.objects || !Array.isArray(payload.objects)) {
2616
3214
  return Promise.reject(new Error("Payload must contain an array of objects"));
@@ -2639,7 +3237,75 @@ function crmSmartDeleteObjects(payload) {
2639
3237
  }
2640
3238
  }
2641
3239
  }
2642
- return highLevelApi.API.request("crm_smart_delete_objects", payload);
3240
+ console.log("[crmSmartDeleteObjects] Request payload:", JSON.stringify(payload, null, 2));
3241
+ return highLevelApi.API.request("crm_smart_delete_objects", payload).then((result) => {
3242
+ console.log("[crmSmartDeleteObjects] Success:", result);
3243
+ return result;
3244
+ }).catch((error) => {
3245
+ console.error("[crmSmartDeleteObjects] Error:", error);
3246
+ throw error;
3247
+ });
3248
+ }
3249
+ function crmCreate(payload) {
3250
+ if (!payload) {
3251
+ return Promise.reject(new Error("Payload is required"));
3252
+ }
3253
+ if (!payload.sobject || typeof payload.sobject !== "string" || payload.sobject.trim() === "") {
3254
+ return Promise.reject(new Error("sobject is required and must be a non-empty string"));
3255
+ }
3256
+ if (!payload.records || !Array.isArray(payload.records) || payload.records.length === 0) {
3257
+ return Promise.reject(new Error("records is required and must be a non-empty array"));
3258
+ }
3259
+ for (let i = 0; i < payload.records.length; i++) {
3260
+ const record = payload.records[i];
3261
+ if (!record || typeof record !== "object" || Array.isArray(record)) {
3262
+ return Promise.reject(
3263
+ new Error(`records contains invalid element at index ${i}. All records must be valid objects.`)
3264
+ );
3265
+ }
3266
+ }
3267
+ return highLevelApi.API.request("crm_create", payload);
3268
+ }
3269
+ function crmUpsert(payload) {
3270
+ if (!payload) {
3271
+ return Promise.reject(new Error("Payload is required"));
3272
+ }
3273
+ if (!payload.sobject || typeof payload.sobject !== "string" || payload.sobject.trim() === "") {
3274
+ return Promise.reject(new Error("sobject is required and must be a non-empty string"));
3275
+ }
3276
+ if (!payload.records || !Array.isArray(payload.records) || payload.records.length === 0) {
3277
+ return Promise.reject(new Error("records is required and must be a non-empty array"));
3278
+ }
3279
+ if (!payload.external_id_field || typeof payload.external_id_field !== "string" || payload.external_id_field.trim() === "") {
3280
+ return Promise.reject(new Error("external_id_field is required and must be a non-empty string"));
3281
+ }
3282
+ for (let i = 0; i < payload.records.length; i++) {
3283
+ const record = payload.records[i];
3284
+ if (!record || typeof record !== "object" || Array.isArray(record)) {
3285
+ return Promise.reject(
3286
+ new Error(`records contains invalid element at index ${i}. All records must be valid objects.`)
3287
+ );
3288
+ }
3289
+ }
3290
+ return highLevelApi.API.request("crm_upsert", payload);
3291
+ }
3292
+ function crmDescribe(payload) {
3293
+ if (!payload) {
3294
+ return Promise.reject(new Error("Payload is required"));
3295
+ }
3296
+ if (!payload.sobject || typeof payload.sobject !== "string" || payload.sobject.trim() === "") {
3297
+ return Promise.reject(new Error("sobject is required and must be a non-empty string"));
3298
+ }
3299
+ return highLevelApi.API.request("crm_describe", payload);
3300
+ }
3301
+ function crmLayout(payload) {
3302
+ if (!payload) {
3303
+ return Promise.reject(new Error("Payload is required"));
3304
+ }
3305
+ if (!payload.sobject || typeof payload.sobject !== "string" || payload.sobject.trim() === "") {
3306
+ return Promise.reject(new Error("sobject is required and must be a non-empty string"));
3307
+ }
3308
+ return highLevelApi.API.request("crm_layout", payload);
2643
3309
  }
2644
3310
 
2645
3311
  function getFolders(payload) {
@@ -2733,18 +3399,22 @@ const modules = /*#__PURE__*/Object.freeze(/*#__PURE__*/Object.defineProperty({
2733
3399
  assignCanvasTheme,
2734
3400
  close: close$2,
2735
3401
  createCanvas: createCanvas$1,
2736
- createEvent,
2737
3402
  createFavorite,
2738
3403
  createFile,
2739
3404
  createFolder,
3405
+ crmCreate,
3406
+ crmDescribe,
3407
+ crmLayout,
2740
3408
  crmQuery,
3409
+ crmQueryAdaptive,
2741
3410
  crmSmartDeleteObjects,
3411
+ crmSmartObjectLayout,
2742
3412
  crmSmartObjectMetadata,
2743
3413
  crmSmartObjectValidationRules,
2744
3414
  crmSmartQuery,
2745
3415
  crmSmartUpsertObjects,
3416
+ crmUpsert,
2746
3417
  deleteCanvas,
2747
- deleteEvent,
2748
3418
  deleteFavorite,
2749
3419
  deleteFile,
2750
3420
  deleteFolder,
@@ -2758,7 +3428,6 @@ const modules = /*#__PURE__*/Object.freeze(/*#__PURE__*/Object.defineProperty({
2758
3428
  getCanvases: getCanvases$1,
2759
3429
  getCoreFolders,
2760
3430
  getEnv: getEnv$2,
2761
- getEvents,
2762
3431
  getFavorites,
2763
3432
  getFile: getFile$2,
2764
3433
  getFileRevisionData,
@@ -2795,7 +3464,6 @@ const modules = /*#__PURE__*/Object.freeze(/*#__PURE__*/Object.defineProperty({
2795
3464
  unassignCanvasTheme,
2796
3465
  updateCanvas: updateCanvas$2,
2797
3466
  updateCanvasIndicators,
2798
- updateEvent,
2799
3467
  updateFile,
2800
3468
  updateFolder,
2801
3469
  updateMyUser
@@ -2841,21 +3509,17 @@ function unsafeStringify(arr, offset = 0) {
2841
3509
  byteToHex[arr[offset + 15]]).toLowerCase();
2842
3510
  }
2843
3511
 
2844
- let getRandomValues;
2845
3512
  const rnds8 = new Uint8Array(16);
2846
3513
  function rng() {
2847
- if (!getRandomValues) {
2848
- if (typeof crypto === 'undefined' || !crypto.getRandomValues) {
2849
- throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');
2850
- }
2851
- getRandomValues = crypto.getRandomValues.bind(crypto);
2852
- }
2853
- return getRandomValues(rnds8);
3514
+ return crypto.getRandomValues(rnds8);
2854
3515
  }
2855
3516
 
2856
- const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);
2857
- const native = { randomUUID };
2858
-
3517
+ function v4(options, buf, offset) {
3518
+ if (crypto.randomUUID) {
3519
+ return crypto.randomUUID();
3520
+ }
3521
+ return _v4(options);
3522
+ }
2859
3523
  function _v4(options, buf, offset) {
2860
3524
  options = options || {};
2861
3525
  const rnds = options.random ?? options.rng?.() ?? rng();
@@ -2866,12 +3530,6 @@ function _v4(options, buf, offset) {
2866
3530
  rnds[8] = (rnds[8] & 0x3f) | 0x80;
2867
3531
  return unsafeStringify(rnds);
2868
3532
  }
2869
- function v4(options, buf, offset) {
2870
- if (native.randomUUID && true && !options) {
2871
- return native.randomUUID();
2872
- }
2873
- return _v4(options);
2874
- }
2875
3533
 
2876
3534
  const PITCHER_EVENT = "PITCHER_EVENT";
2877
3535
  var PitcherMessageType = /* @__PURE__ */ ((PitcherMessageType2) => {
@@ -2916,6 +3574,7 @@ var PitcherEventName = /* @__PURE__ */ ((PitcherEventName2) => {
2916
3574
  PitcherEventName2["ITEM_SHAREBOX_ADD_REQUESTED"] = "item_sharebox_add_requested";
2917
3575
  PitcherEventName2["ITEM_SHAREBOX_ADD_COMPLETED"] = "item_sharebox_add_completed";
2918
3576
  PitcherEventName2["SYNC_BADGE_VALUE_REPORTED"] = "sync_badge_value_reported";
3577
+ PitcherEventName2["SYNC_BOX_RESOLVE_ERROR_TAPPED"] = "sync_box_resolve_error_tapped";
2919
3578
  PitcherEventName2["PEER_CONNECTIVITY_EVENT"] = "peer_connectivity_event";
2920
3579
  return PitcherEventName2;
2921
3580
  })(PitcherEventName || {});
@@ -2950,6 +3609,8 @@ const defaultSkipKeys = [
2950
3609
  "id__in",
2951
3610
  "tags__in",
2952
3611
  "tags__not_in",
3612
+ "template__id",
3613
+ "template__id__in",
2953
3614
  "modified_at__gtr",
2954
3615
  "created_at__gtr",
2955
3616
  "end_at__lt",
@@ -3191,6 +3852,17 @@ function createHttpClient(origin, token) {
3191
3852
  body: JSON.stringify(body)
3192
3853
  });
3193
3854
  return data;
3855
+ },
3856
+ /** PATCH with a full absolute URL (bypasses /api/v1 prefix). */
3857
+ patchUrl: async (absoluteUrl, body, options = {}) => {
3858
+ const data = await fetchWithRetry(absoluteUrl, {
3859
+ ...baseCommon,
3860
+ ...options,
3861
+ method: "PATCH",
3862
+ headers,
3863
+ body: JSON.stringify(body)
3864
+ });
3865
+ return data;
3194
3866
  }
3195
3867
  };
3196
3868
  }
@@ -3259,8 +3931,16 @@ const onlineRestApiHandlers = {
3259
3931
  },
3260
3932
  update_canvas: async (params) => {
3261
3933
  check();
3262
- const { id, ...restParams } = params;
3263
- const res = await http.patch(`/canvases/${params.id}`, restParams);
3934
+ const { id, fields, ...canvasData } = params;
3935
+ const useCoreEndpoint = env?.launch_darkly?.enable_canvas_core_patch === true;
3936
+ if (useCoreEndpoint) {
3937
+ const origin = env.pitcher.token_claims["https://pitcher.com/claims/urls"].custom_domain;
3938
+ const fieldsQs = fields ? `?fields=${encodeURIComponent(fields)}` : "";
3939
+ const url = `${origin}/core/api/protected/v1/canvases/${id}${fieldsQs}`;
3940
+ const res2 = await http.patchUrl(url, canvasData);
3941
+ return res2;
3942
+ }
3943
+ const res = await http.patch(`/canvases/${id}`, { fields, ...canvasData });
3264
3944
  return res;
3265
3945
  },
3266
3946
  delete_canvas: async (params) => {
@@ -3332,6 +4012,18 @@ function getTopPitcherWindow(current = window) {
3332
4012
  }
3333
4013
 
3334
4014
  const TRUNCATE_LENGTH_TRIGGER = 10;
4015
+ const RAW_PAYLOAD_METHODS = [
4016
+ "crm_create",
4017
+ "crm_upsert",
4018
+ "crm_describe",
4019
+ "crm_layout",
4020
+ "crm_smart_query",
4021
+ "crm_smart_object_metadata",
4022
+ "crm_smart_object_validation_rules",
4023
+ "crm_smart_object_layout",
4024
+ "crm_smart_upsert_objects",
4025
+ "crm_smart_delete_objects"
4026
+ ];
3335
4027
  function updateOnlineHandlersEnv(env) {
3336
4028
  env && setEnv(env);
3337
4029
  }
@@ -3397,7 +4089,8 @@ class LowLevelApi extends EventEmitter {
3397
4089
  throw new Error("unsupported response status");
3398
4090
  }
3399
4091
  };
3400
- const payload = cloneDeep(snakeCaseKeys(body));
4092
+ const shouldSkipSnakeCase = RAW_PAYLOAD_METHODS.includes(type);
4093
+ const payload = shouldSkipSnakeCase ? cloneDeep(body) : cloneDeep(snakeCaseKeys(body));
3401
4094
  this.callbacks[id] = {
3402
4095
  dispatched_at: Date.now(),
3403
4096
  type,
@@ -3610,7 +4303,10 @@ const UI_API_METHOD_TYPES = {
3610
4303
  UI_APP_LOADED: "ui_app_loaded",
3611
4304
  UI_APP_RESIZE: "ui_app_resize",
3612
4305
  UI_CLOSE_CANVAS_SECTION_EXECUTION: "ui_close_canvas_section_execution",
3613
- UI_CLOSE_CANVAS_DRAWER: "ui_close_canvas_drawer"
4306
+ UI_CLOSE_CANVAS_DRAWER: "ui_close_canvas_drawer",
4307
+ UI_OPEN_GLOBAL_POPUP: "ui_open_global_popup",
4308
+ UI_CLOSE_GLOBAL_POPUP: "ui_close_global_popup",
4309
+ UI_OPEN_SHARING_SETTINGS: "ui_open_sharing_settings"
3614
4310
  };
3615
4311
  const UI_MESSAGE_TYPES = {
3616
4312
  UI_MEETING_CANCELED: "ui_meeting_canceled",
@@ -3662,10 +4358,25 @@ async function selectAgendaContent$1(payload = {}) {
3662
4358
  const response = await pr.send(window.parent, UI_API_METHOD_TYPES.UI_SELECT_AGENDA_CONTENT, payload);
3663
4359
  return response.data;
3664
4360
  }
4361
+ async function openGlobalPopup(appName, extraContext) {
4362
+ const pr = await usePostRobot();
4363
+ const payload = {
4364
+ app_name: appName,
4365
+ extra_context: extraContext
4366
+ };
4367
+ const response = await pr.send(window.parent, UI_API_METHOD_TYPES.UI_OPEN_GLOBAL_POPUP, payload);
4368
+ return response.data;
4369
+ }
4370
+ async function closeGlobalPopup() {
4371
+ const pr = await usePostRobot();
4372
+ await pr.send(window.parent, UI_API_METHOD_TYPES.UI_CLOSE_GLOBAL_POPUP, {});
4373
+ }
3665
4374
 
3666
4375
  const contentUi = /*#__PURE__*/Object.freeze(/*#__PURE__*/Object.defineProperty({
3667
4376
  __proto__: null,
4377
+ closeGlobalPopup,
3668
4378
  open: open$1,
4379
+ openGlobalPopup,
3669
4380
  preselectSfdcMeetingId,
3670
4381
  selectAgendaContent: selectAgendaContent$1,
3671
4382
  selectCollectionContent: selectCollectionContent$1,
@@ -3817,6 +4528,21 @@ const piaUi = /*#__PURE__*/Object.freeze(/*#__PURE__*/Object.defineProperty({
3817
4528
  promptPia
3818
4529
  }, Symbol.toStringTag, { value: 'Module' }));
3819
4530
 
4531
+ async function openSharingSettings(payload) {
4532
+ const pr = await usePostRobot();
4533
+ const response = await pr.send(
4534
+ window.parent,
4535
+ UI_API_METHOD_TYPES.UI_OPEN_SHARING_SETTINGS,
4536
+ payload
4537
+ );
4538
+ return response.data;
4539
+ }
4540
+
4541
+ const sharingUi = /*#__PURE__*/Object.freeze(/*#__PURE__*/Object.defineProperty({
4542
+ __proto__: null,
4543
+ openSharingSettings
4544
+ }, Symbol.toStringTag, { value: 'Module' }));
4545
+
3820
4546
  async function onNative(type, handler) {
3821
4547
  const messageListener = (event) => {
3822
4548
  if (event.data.type === type) {
@@ -3870,7 +4596,8 @@ const ui = {
3870
4596
  ...appErrorsUi,
3871
4597
  ...canvasUi,
3872
4598
  ...postCallUi,
3873
- ...piaUi
4599
+ ...piaUi,
4600
+ ...sharingUi
3874
4601
  };
3875
4602
 
3876
4603
  const ADMIN_MESSAGE = "ADMIN_MESSAGE";