@synchronized-console/shared 2.25.7 → 2.31.14

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 (675) hide show
  1. package/dist/commonjs/acc/helpers/types.d.ts +46 -0
  2. package/dist/commonjs/acc/helpers/types.d.ts.map +1 -0
  3. package/dist/commonjs/acc/helpers/types.js +3 -0
  4. package/dist/commonjs/acc/helpers/types.js.map +1 -0
  5. package/dist/commonjs/acc/index.d.ts +2 -0
  6. package/dist/commonjs/acc/index.d.ts.map +1 -0
  7. package/dist/commonjs/acc/index.js +18 -0
  8. package/dist/commonjs/acc/index.js.map +1 -0
  9. package/dist/commonjs/authz/checks/dashboards.d.ts +5 -0
  10. package/dist/commonjs/authz/checks/dashboards.d.ts.map +1 -0
  11. package/dist/commonjs/authz/checks/dashboards.js +11 -0
  12. package/dist/commonjs/authz/checks/dashboards.js.map +1 -0
  13. package/dist/commonjs/authz/domain/authErrors.d.ts +98 -3
  14. package/dist/commonjs/authz/domain/authErrors.d.ts.map +1 -1
  15. package/dist/commonjs/authz/domain/authErrors.js +66 -3
  16. package/dist/commonjs/authz/domain/authErrors.js.map +1 -1
  17. package/dist/commonjs/authz/domain/automate/operations.d.ts +5 -0
  18. package/dist/commonjs/authz/domain/automate/operations.d.ts.map +1 -0
  19. package/dist/commonjs/authz/domain/automate/operations.js +3 -0
  20. package/dist/commonjs/authz/domain/automate/operations.js.map +1 -0
  21. package/dist/commonjs/authz/domain/automate/types.d.ts +10 -0
  22. package/dist/commonjs/authz/domain/automate/types.d.ts.map +1 -0
  23. package/dist/commonjs/authz/domain/automate/types.js +3 -0
  24. package/dist/commonjs/authz/domain/automate/types.js.map +1 -0
  25. package/dist/commonjs/authz/domain/context.d.ts +12 -0
  26. package/dist/commonjs/authz/domain/context.d.ts.map +1 -1
  27. package/dist/commonjs/authz/domain/dashboards/operations.d.ts +5 -0
  28. package/dist/commonjs/authz/domain/dashboards/operations.d.ts.map +1 -0
  29. package/dist/commonjs/authz/domain/dashboards/operations.js +3 -0
  30. package/dist/commonjs/authz/domain/dashboards/operations.js.map +1 -0
  31. package/dist/commonjs/authz/domain/dashboards/types.d.ts +7 -0
  32. package/dist/commonjs/authz/domain/dashboards/types.d.ts.map +1 -0
  33. package/dist/commonjs/authz/domain/dashboards/types.js +3 -0
  34. package/dist/commonjs/authz/domain/dashboards/types.js.map +1 -0
  35. package/dist/commonjs/authz/domain/loaders.d.ts +63 -45
  36. package/dist/commonjs/authz/domain/loaders.d.ts.map +1 -1
  37. package/dist/commonjs/authz/domain/loaders.js +27 -21
  38. package/dist/commonjs/authz/domain/loaders.js.map +1 -1
  39. package/dist/commonjs/authz/domain/savedViews/operations.d.ts +10 -0
  40. package/dist/commonjs/authz/domain/savedViews/operations.d.ts.map +1 -0
  41. package/dist/commonjs/authz/domain/savedViews/operations.js +3 -0
  42. package/dist/commonjs/authz/domain/savedViews/operations.js.map +1 -0
  43. package/dist/commonjs/authz/domain/savedViews/types.d.ts +26 -0
  44. package/dist/commonjs/authz/domain/savedViews/types.d.ts.map +1 -0
  45. package/dist/commonjs/authz/domain/savedViews/types.js +6 -0
  46. package/dist/commonjs/authz/domain/savedViews/types.js.map +1 -0
  47. package/dist/commonjs/authz/domain/workspaces/operations.d.ts +2 -1
  48. package/dist/commonjs/authz/domain/workspaces/operations.d.ts.map +1 -1
  49. package/dist/commonjs/authz/domain/workspaces/types.d.ts +3 -0
  50. package/dist/commonjs/authz/domain/workspaces/types.d.ts.map +1 -1
  51. package/dist/commonjs/authz/fragments/automate.d.ts +7 -0
  52. package/dist/commonjs/authz/fragments/automate.d.ts.map +1 -0
  53. package/dist/commonjs/authz/fragments/automate.js +22 -0
  54. package/dist/commonjs/authz/fragments/automate.js.map +1 -0
  55. package/dist/commonjs/authz/fragments/dashboards.d.ts +8 -0
  56. package/dist/commonjs/authz/fragments/dashboards.d.ts.map +1 -0
  57. package/dist/commonjs/authz/fragments/dashboards.js +48 -0
  58. package/dist/commonjs/authz/fragments/dashboards.js.map +1 -0
  59. package/dist/commonjs/authz/fragments/projects.d.ts +13 -1
  60. package/dist/commonjs/authz/fragments/projects.d.ts.map +1 -1
  61. package/dist/commonjs/authz/fragments/projects.js +25 -1
  62. package/dist/commonjs/authz/fragments/projects.js.map +1 -1
  63. package/dist/commonjs/authz/fragments/savedViews.d.ts +30 -0
  64. package/dist/commonjs/authz/fragments/savedViews.d.ts.map +1 -0
  65. package/dist/commonjs/authz/fragments/savedViews.js +122 -0
  66. package/dist/commonjs/authz/fragments/savedViews.js.map +1 -0
  67. package/dist/commonjs/authz/fragments/workspaces.d.ts +9 -1
  68. package/dist/commonjs/authz/fragments/workspaces.d.ts.map +1 -1
  69. package/dist/commonjs/authz/fragments/workspaces.js +47 -1
  70. package/dist/commonjs/authz/fragments/workspaces.js.map +1 -1
  71. package/dist/commonjs/authz/helpers/graphql.d.ts +1 -1
  72. package/dist/commonjs/authz/helpers/graphql.d.ts.map +1 -1
  73. package/dist/commonjs/authz/helpers/graphql.js +1 -1
  74. package/dist/commonjs/authz/helpers/graphql.js.map +1 -1
  75. package/dist/commonjs/authz/index.d.ts +1 -0
  76. package/dist/commonjs/authz/index.d.ts.map +1 -1
  77. package/dist/commonjs/authz/index.js +1 -0
  78. package/dist/commonjs/authz/index.js.map +1 -1
  79. package/dist/commonjs/authz/policies/automate/function/canEditFunction.d.ts +10 -0
  80. package/dist/commonjs/authz/policies/automate/function/canEditFunction.d.ts.map +1 -0
  81. package/dist/commonjs/authz/policies/automate/function/canEditFunction.js +19 -0
  82. package/dist/commonjs/authz/policies/automate/function/canEditFunction.js.map +1 -0
  83. package/dist/commonjs/authz/policies/dashboard/canCreateToken.d.ts +10 -0
  84. package/dist/commonjs/authz/policies/dashboard/canCreateToken.d.ts.map +1 -0
  85. package/dist/commonjs/authz/policies/dashboard/canCreateToken.js +45 -0
  86. package/dist/commonjs/authz/policies/dashboard/canCreateToken.js.map +1 -0
  87. package/dist/commonjs/authz/policies/dashboard/canDelete.d.ts +10 -0
  88. package/dist/commonjs/authz/policies/dashboard/canDelete.d.ts.map +1 -0
  89. package/dist/commonjs/authz/policies/dashboard/canDelete.js +45 -0
  90. package/dist/commonjs/authz/policies/dashboard/canDelete.js.map +1 -0
  91. package/dist/commonjs/authz/policies/dashboard/canEdit.d.ts +10 -0
  92. package/dist/commonjs/authz/policies/dashboard/canEdit.d.ts.map +1 -0
  93. package/dist/commonjs/authz/policies/dashboard/canEdit.js +43 -0
  94. package/dist/commonjs/authz/policies/dashboard/canEdit.js.map +1 -0
  95. package/dist/commonjs/authz/policies/dashboard/canRead.d.ts +10 -0
  96. package/dist/commonjs/authz/policies/dashboard/canRead.d.ts.map +1 -0
  97. package/dist/commonjs/authz/policies/dashboard/canRead.js +42 -0
  98. package/dist/commonjs/authz/policies/dashboard/canRead.js.map +1 -0
  99. package/dist/commonjs/authz/policies/index.d.ts +62 -1
  100. package/dist/commonjs/authz/policies/index.d.ts.map +1 -1
  101. package/dist/commonjs/authz/policies/index.js +52 -4
  102. package/dist/commonjs/authz/policies/index.js.map +1 -1
  103. package/dist/commonjs/authz/policies/project/canLoad.d.ts.map +1 -1
  104. package/dist/commonjs/authz/policies/project/canLoad.js +6 -0
  105. package/dist/commonjs/authz/policies/project/canLoad.js.map +1 -1
  106. package/dist/commonjs/authz/policies/project/canReadAccIntegrationSettings.d.ts +10 -0
  107. package/dist/commonjs/authz/policies/project/canReadAccIntegrationSettings.d.ts.map +1 -0
  108. package/dist/commonjs/authz/policies/project/canReadAccIntegrationSettings.js +35 -0
  109. package/dist/commonjs/authz/policies/project/canReadAccIntegrationSettings.js.map +1 -0
  110. package/dist/commonjs/authz/policies/project/canUpdateEmbedTokens.d.ts +10 -0
  111. package/dist/commonjs/authz/policies/project/canUpdateEmbedTokens.d.ts.map +1 -0
  112. package/dist/commonjs/authz/policies/project/canUpdateEmbedTokens.js +52 -0
  113. package/dist/commonjs/authz/policies/project/canUpdateEmbedTokens.js.map +1 -0
  114. package/dist/commonjs/authz/policies/project/savedViews/canCreate.d.ts +6 -0
  115. package/dist/commonjs/authz/policies/project/savedViews/canCreate.d.ts.map +1 -0
  116. package/dist/commonjs/authz/policies/project/savedViews/canCreate.js +31 -0
  117. package/dist/commonjs/authz/policies/project/savedViews/canCreate.js.map +1 -0
  118. package/dist/commonjs/authz/policies/project/savedViews/canCreateSavedViewGroupToken.d.ts +6 -0
  119. package/dist/commonjs/authz/policies/project/savedViews/canCreateSavedViewGroupToken.d.ts.map +1 -0
  120. package/dist/commonjs/authz/policies/project/savedViews/canCreateSavedViewGroupToken.js +61 -0
  121. package/dist/commonjs/authz/policies/project/savedViews/canCreateSavedViewGroupToken.js.map +1 -0
  122. package/dist/commonjs/authz/policies/project/savedViews/canEditDescription.d.ts +6 -0
  123. package/dist/commonjs/authz/policies/project/savedViews/canEditDescription.d.ts.map +1 -0
  124. package/dist/commonjs/authz/policies/project/savedViews/canEditDescription.js +14 -0
  125. package/dist/commonjs/authz/policies/project/savedViews/canEditDescription.js.map +1 -0
  126. package/dist/commonjs/authz/policies/project/savedViews/canEditTitle.d.ts +6 -0
  127. package/dist/commonjs/authz/policies/project/savedViews/canEditTitle.d.ts.map +1 -0
  128. package/dist/commonjs/authz/policies/project/savedViews/canEditTitle.js +14 -0
  129. package/dist/commonjs/authz/policies/project/savedViews/canEditTitle.js.map +1 -0
  130. package/dist/commonjs/authz/policies/project/savedViews/canMove.d.ts +6 -0
  131. package/dist/commonjs/authz/policies/project/savedViews/canMove.d.ts.map +1 -0
  132. package/dist/commonjs/authz/policies/project/savedViews/canMove.js +14 -0
  133. package/dist/commonjs/authz/policies/project/savedViews/canMove.js.map +1 -0
  134. package/dist/commonjs/authz/policies/project/savedViews/canRead.d.ts +11 -0
  135. package/dist/commonjs/authz/policies/project/savedViews/canRead.d.ts.map +1 -0
  136. package/dist/commonjs/authz/policies/project/savedViews/canRead.js +15 -0
  137. package/dist/commonjs/authz/policies/project/savedViews/canRead.js.map +1 -0
  138. package/dist/commonjs/authz/policies/project/savedViews/canSetAsHomeView.d.ts +6 -0
  139. package/dist/commonjs/authz/policies/project/savedViews/canSetAsHomeView.d.ts.map +1 -0
  140. package/dist/commonjs/authz/policies/project/savedViews/canSetAsHomeView.js +45 -0
  141. package/dist/commonjs/authz/policies/project/savedViews/canSetAsHomeView.js.map +1 -0
  142. package/dist/commonjs/authz/policies/project/savedViews/canUpdate.d.ts +6 -0
  143. package/dist/commonjs/authz/policies/project/savedViews/canUpdate.d.ts.map +1 -0
  144. package/dist/commonjs/authz/policies/project/savedViews/canUpdate.js +14 -0
  145. package/dist/commonjs/authz/policies/project/savedViews/canUpdate.js.map +1 -0
  146. package/dist/commonjs/authz/policies/project/savedViews/canUpdateGroup.d.ts +6 -0
  147. package/dist/commonjs/authz/policies/project/savedViews/canUpdateGroup.d.ts.map +1 -0
  148. package/dist/commonjs/authz/policies/project/savedViews/canUpdateGroup.js +14 -0
  149. package/dist/commonjs/authz/policies/project/savedViews/canUpdateGroup.js.map +1 -0
  150. package/dist/commonjs/authz/policies/workspace/canCreateDashboards.d.ts +10 -0
  151. package/dist/commonjs/authz/policies/workspace/canCreateDashboards.d.ts.map +1 -0
  152. package/dist/commonjs/authz/policies/workspace/canCreateDashboards.js +39 -0
  153. package/dist/commonjs/authz/policies/workspace/canCreateDashboards.js.map +1 -0
  154. package/dist/commonjs/authz/policies/workspace/canCreateWorkspace.d.ts +10 -0
  155. package/dist/commonjs/authz/policies/workspace/canCreateWorkspace.d.ts.map +1 -0
  156. package/dist/commonjs/authz/policies/workspace/canCreateWorkspace.js +51 -0
  157. package/dist/commonjs/authz/policies/workspace/canCreateWorkspace.js.map +1 -0
  158. package/dist/commonjs/authz/policies/workspace/canListDashboards.d.ts +10 -0
  159. package/dist/commonjs/authz/policies/workspace/canListDashboards.d.ts.map +1 -0
  160. package/dist/commonjs/authz/policies/workspace/canListDashboards.js +26 -0
  161. package/dist/commonjs/authz/policies/workspace/canListDashboards.js.map +1 -0
  162. package/dist/commonjs/authz/policies/workspace/canReadMemberEmail.d.ts +1 -1
  163. package/dist/commonjs/authz/policies/workspace/canReadMemberEmail.d.ts.map +1 -1
  164. package/dist/commonjs/authz/policies/workspace/canReadMemberEmail.js +1 -20
  165. package/dist/commonjs/authz/policies/workspace/canReadMemberEmail.js.map +1 -1
  166. package/dist/commonjs/authz/policies/workspace/{canUpdateEmbedOptions.d.ts → canUseWorkspacePlanFeature.d.ts} +13 -5
  167. package/dist/commonjs/authz/policies/workspace/canUseWorkspacePlanFeature.d.ts.map +1 -0
  168. package/dist/commonjs/authz/policies/workspace/canUseWorkspacePlanFeature.js +27 -0
  169. package/dist/commonjs/authz/policies/workspace/canUseWorkspacePlanFeature.js.map +1 -0
  170. package/dist/commonjs/automate/helpers/types.d.ts +313 -51
  171. package/dist/commonjs/automate/helpers/types.d.ts.map +1 -1
  172. package/dist/commonjs/automate/helpers/types.js +12 -2
  173. package/dist/commonjs/automate/helpers/types.js.map +1 -1
  174. package/dist/commonjs/blobs/index.d.ts +17 -0
  175. package/dist/commonjs/blobs/index.d.ts.map +1 -0
  176. package/dist/commonjs/blobs/index.js +114 -0
  177. package/dist/commonjs/blobs/index.js.map +1 -0
  178. package/dist/commonjs/core/constants.d.ts +4 -2
  179. package/dist/commonjs/core/constants.d.ts.map +1 -1
  180. package/dist/commonjs/core/constants.js +24 -4
  181. package/dist/commonjs/core/constants.js.map +1 -1
  182. package/dist/commonjs/core/helpers/encoding.d.ts +2 -0
  183. package/dist/commonjs/core/helpers/encoding.d.ts.map +1 -0
  184. package/dist/commonjs/core/helpers/encoding.js +15 -0
  185. package/dist/commonjs/core/helpers/encoding.js.map +1 -0
  186. package/dist/commonjs/core/helpers/error.d.ts +11 -0
  187. package/dist/commonjs/core/helpers/error.d.ts.map +1 -1
  188. package/dist/commonjs/core/helpers/error.js +60 -2
  189. package/dist/commonjs/core/helpers/error.js.map +1 -1
  190. package/dist/commonjs/core/helpers/url.d.ts +24 -0
  191. package/dist/commonjs/core/helpers/url.d.ts.map +1 -1
  192. package/dist/commonjs/core/helpers/url.js +30 -0
  193. package/dist/commonjs/core/helpers/url.js.map +1 -1
  194. package/dist/commonjs/core/helpers/utility.d.ts +16 -0
  195. package/dist/commonjs/core/helpers/utility.d.ts.map +1 -1
  196. package/dist/commonjs/core/helpers/utility.js +22 -1
  197. package/dist/commonjs/core/helpers/utility.js.map +1 -1
  198. package/dist/commonjs/core/index.d.ts +2 -0
  199. package/dist/commonjs/core/index.d.ts.map +1 -1
  200. package/dist/commonjs/core/index.js +2 -0
  201. package/dist/commonjs/core/index.js.map +1 -1
  202. package/dist/commonjs/core/utils/base64.d.ts +3 -0
  203. package/dist/commonjs/core/utils/base64.d.ts.map +1 -0
  204. package/dist/commonjs/core/utils/base64.js +25 -0
  205. package/dist/commonjs/core/utils/base64.js.map +1 -0
  206. package/dist/commonjs/environment/{multiRegionConfig.d.ts → db.d.ts} +54 -5
  207. package/dist/commonjs/environment/db.d.ts.map +1 -0
  208. package/dist/commonjs/environment/{multiRegionConfig.js → db.js} +45 -10
  209. package/dist/commonjs/environment/db.js.map +1 -0
  210. package/dist/commonjs/environment/featureFlags.d.ts +25 -0
  211. package/dist/commonjs/environment/featureFlags.d.ts.map +1 -0
  212. package/dist/commonjs/environment/featureFlags.js +6 -0
  213. package/dist/commonjs/environment/featureFlags.js.map +1 -0
  214. package/dist/commonjs/environment/index.d.ts +2 -15
  215. package/dist/commonjs/environment/index.d.ts.map +1 -1
  216. package/dist/commonjs/environment/index.js +44 -7
  217. package/dist/commonjs/environment/index.js.map +1 -1
  218. package/dist/commonjs/environment/node.d.ts +5 -0
  219. package/dist/commonjs/environment/node.d.ts.map +1 -0
  220. package/dist/commonjs/environment/node.js +15 -0
  221. package/dist/commonjs/environment/node.js.map +1 -0
  222. package/dist/commonjs/images/base64.d.ts +2 -0
  223. package/dist/commonjs/images/base64.d.ts.map +1 -0
  224. package/dist/commonjs/images/base64.js +19 -0
  225. package/dist/commonjs/images/base64.js.map +1 -0
  226. package/dist/commonjs/index.d.ts +1 -0
  227. package/dist/commonjs/index.d.ts.map +1 -1
  228. package/dist/commonjs/index.js +1 -0
  229. package/dist/commonjs/index.js.map +1 -1
  230. package/dist/commonjs/observability/index.d.ts.map +1 -1
  231. package/dist/commonjs/observability/index.js +19 -2
  232. package/dist/commonjs/observability/index.js.map +1 -1
  233. package/dist/commonjs/queue/config.d.ts +3 -0
  234. package/dist/commonjs/queue/config.d.ts.map +1 -1
  235. package/dist/commonjs/queue/config.js +14 -5
  236. package/dist/commonjs/queue/config.js.map +1 -1
  237. package/dist/commonjs/rich-text-editor/helpers/index.d.ts +13 -1
  238. package/dist/commonjs/rich-text-editor/helpers/index.d.ts.map +1 -1
  239. package/dist/commonjs/rich-text-editor/helpers/index.js +1 -0
  240. package/dist/commonjs/rich-text-editor/helpers/index.js.map +1 -1
  241. package/dist/commonjs/saved-views/helpers/defaultGroup.d.ts +23 -0
  242. package/dist/commonjs/saved-views/helpers/defaultGroup.d.ts.map +1 -0
  243. package/dist/commonjs/saved-views/helpers/defaultGroup.js +58 -0
  244. package/dist/commonjs/saved-views/helpers/defaultGroup.js.map +1 -0
  245. package/dist/commonjs/saved-views/index.d.ts +2 -0
  246. package/dist/commonjs/saved-views/index.d.ts.map +1 -0
  247. package/dist/commonjs/saved-views/index.js +18 -0
  248. package/dist/commonjs/saved-views/index.js.map +1 -0
  249. package/dist/commonjs/viewer/helpers/route.d.ts +42 -7
  250. package/dist/commonjs/viewer/helpers/route.d.ts.map +1 -1
  251. package/dist/commonjs/viewer/helpers/route.js +149 -38
  252. package/dist/commonjs/viewer/helpers/route.js.map +1 -1
  253. package/dist/commonjs/viewer/helpers/state.d.ts +59 -6
  254. package/dist/commonjs/viewer/helpers/state.d.ts.map +1 -1
  255. package/dist/commonjs/viewer/helpers/state.js +100 -23
  256. package/dist/commonjs/viewer/helpers/state.js.map +1 -1
  257. package/dist/commonjs/workers/fileimport/job.d.ts +85 -9
  258. package/dist/commonjs/workers/fileimport/job.d.ts.map +1 -1
  259. package/dist/commonjs/workers/fileimport/job.js +21 -10
  260. package/dist/commonjs/workers/fileimport/job.js.map +1 -1
  261. package/dist/commonjs/workers/previews/job.d.ts +37 -20
  262. package/dist/commonjs/workers/previews/job.d.ts.map +1 -1
  263. package/dist/commonjs/workers/previews/job.js +23 -2
  264. package/dist/commonjs/workers/previews/job.js.map +1 -1
  265. package/dist/commonjs/workspaces/helpers/features.d.ts +55 -5
  266. package/dist/commonjs/workspaces/helpers/features.d.ts.map +1 -1
  267. package/dist/commonjs/workspaces/helpers/features.js +180 -114
  268. package/dist/commonjs/workspaces/helpers/features.js.map +1 -1
  269. package/dist/commonjs/workspaces/helpers/plans.d.ts +1 -0
  270. package/dist/commonjs/workspaces/helpers/plans.d.ts.map +1 -1
  271. package/dist/commonjs/workspaces/helpers/plans.js.map +1 -1
  272. package/dist/esm/acc/helpers/types.d.ts +46 -0
  273. package/dist/esm/acc/helpers/types.d.ts.map +1 -0
  274. package/dist/esm/acc/helpers/types.js +2 -0
  275. package/dist/esm/acc/helpers/types.js.map +1 -0
  276. package/dist/esm/acc/index.d.ts +2 -0
  277. package/dist/esm/acc/index.d.ts.map +1 -0
  278. package/dist/esm/acc/index.js +2 -0
  279. package/dist/esm/acc/index.js.map +1 -0
  280. package/dist/esm/authz/checks/dashboards.d.ts +5 -0
  281. package/dist/esm/authz/checks/dashboards.d.ts.map +1 -0
  282. package/dist/esm/authz/checks/dashboards.js +7 -0
  283. package/dist/esm/authz/checks/dashboards.js.map +1 -0
  284. package/dist/esm/authz/domain/authErrors.d.ts +98 -3
  285. package/dist/esm/authz/domain/authErrors.d.ts.map +1 -1
  286. package/dist/esm/authz/domain/authErrors.js +65 -2
  287. package/dist/esm/authz/domain/authErrors.js.map +1 -1
  288. package/dist/esm/authz/domain/automate/operations.d.ts +5 -0
  289. package/dist/esm/authz/domain/automate/operations.d.ts.map +1 -0
  290. package/dist/esm/authz/domain/automate/operations.js +2 -0
  291. package/dist/esm/authz/domain/automate/operations.js.map +1 -0
  292. package/dist/esm/authz/domain/automate/types.d.ts +10 -0
  293. package/dist/esm/authz/domain/automate/types.d.ts.map +1 -0
  294. package/dist/esm/authz/domain/automate/types.js +2 -0
  295. package/dist/esm/authz/domain/automate/types.js.map +1 -0
  296. package/dist/esm/authz/domain/context.d.ts +12 -0
  297. package/dist/esm/authz/domain/context.d.ts.map +1 -1
  298. package/dist/esm/authz/domain/dashboards/operations.d.ts +5 -0
  299. package/dist/esm/authz/domain/dashboards/operations.d.ts.map +1 -0
  300. package/dist/esm/authz/domain/dashboards/operations.js +2 -0
  301. package/dist/esm/authz/domain/dashboards/operations.js.map +1 -0
  302. package/dist/esm/authz/domain/dashboards/types.d.ts +7 -0
  303. package/dist/esm/authz/domain/dashboards/types.d.ts.map +1 -0
  304. package/dist/esm/authz/domain/dashboards/types.js +2 -0
  305. package/dist/esm/authz/domain/dashboards/types.js.map +1 -0
  306. package/dist/esm/authz/domain/loaders.d.ts +63 -45
  307. package/dist/esm/authz/domain/loaders.d.ts.map +1 -1
  308. package/dist/esm/authz/domain/loaders.js +27 -21
  309. package/dist/esm/authz/domain/loaders.js.map +1 -1
  310. package/dist/esm/authz/domain/savedViews/operations.d.ts +10 -0
  311. package/dist/esm/authz/domain/savedViews/operations.d.ts.map +1 -0
  312. package/dist/esm/authz/domain/savedViews/operations.js +2 -0
  313. package/dist/esm/authz/domain/savedViews/operations.js.map +1 -0
  314. package/dist/esm/authz/domain/savedViews/types.d.ts +26 -0
  315. package/dist/esm/authz/domain/savedViews/types.d.ts.map +1 -0
  316. package/dist/esm/authz/domain/savedViews/types.js +3 -0
  317. package/dist/esm/authz/domain/savedViews/types.js.map +1 -0
  318. package/dist/esm/authz/domain/workspaces/operations.d.ts +2 -1
  319. package/dist/esm/authz/domain/workspaces/operations.d.ts.map +1 -1
  320. package/dist/esm/authz/domain/workspaces/types.d.ts +3 -0
  321. package/dist/esm/authz/domain/workspaces/types.d.ts.map +1 -1
  322. package/dist/esm/authz/fragments/automate.d.ts +7 -0
  323. package/dist/esm/authz/fragments/automate.d.ts.map +1 -0
  324. package/dist/esm/authz/fragments/automate.js +17 -0
  325. package/dist/esm/authz/fragments/automate.js.map +1 -0
  326. package/dist/esm/authz/fragments/dashboards.d.ts +8 -0
  327. package/dist/esm/authz/fragments/dashboards.d.ts.map +1 -0
  328. package/dist/esm/authz/fragments/dashboards.js +42 -0
  329. package/dist/esm/authz/fragments/dashboards.js.map +1 -0
  330. package/dist/esm/authz/fragments/projects.d.ts +13 -1
  331. package/dist/esm/authz/fragments/projects.d.ts.map +1 -1
  332. package/dist/esm/authz/fragments/projects.js +24 -1
  333. package/dist/esm/authz/fragments/projects.js.map +1 -1
  334. package/dist/esm/authz/fragments/savedViews.d.ts +30 -0
  335. package/dist/esm/authz/fragments/savedViews.d.ts.map +1 -0
  336. package/dist/esm/authz/fragments/savedViews.js +117 -0
  337. package/dist/esm/authz/fragments/savedViews.js.map +1 -0
  338. package/dist/esm/authz/fragments/workspaces.d.ts +9 -1
  339. package/dist/esm/authz/fragments/workspaces.d.ts.map +1 -1
  340. package/dist/esm/authz/fragments/workspaces.js +45 -1
  341. package/dist/esm/authz/fragments/workspaces.js.map +1 -1
  342. package/dist/esm/authz/helpers/graphql.d.ts +1 -1
  343. package/dist/esm/authz/helpers/graphql.d.ts.map +1 -1
  344. package/dist/esm/authz/helpers/graphql.js +1 -1
  345. package/dist/esm/authz/helpers/graphql.js.map +1 -1
  346. package/dist/esm/authz/index.d.ts +1 -0
  347. package/dist/esm/authz/index.d.ts.map +1 -1
  348. package/dist/esm/authz/index.js +1 -0
  349. package/dist/esm/authz/index.js.map +1 -1
  350. package/dist/esm/authz/policies/automate/function/canEditFunction.d.ts +10 -0
  351. package/dist/esm/authz/policies/automate/function/canEditFunction.d.ts.map +1 -0
  352. package/dist/esm/authz/policies/automate/function/canEditFunction.js +15 -0
  353. package/dist/esm/authz/policies/automate/function/canEditFunction.js.map +1 -0
  354. package/dist/esm/authz/policies/dashboard/canCreateToken.d.ts +10 -0
  355. package/dist/esm/authz/policies/dashboard/canCreateToken.d.ts.map +1 -0
  356. package/dist/esm/authz/policies/dashboard/canCreateToken.js +41 -0
  357. package/dist/esm/authz/policies/dashboard/canCreateToken.js.map +1 -0
  358. package/dist/esm/authz/policies/dashboard/canDelete.d.ts +10 -0
  359. package/dist/esm/authz/policies/dashboard/canDelete.d.ts.map +1 -0
  360. package/dist/esm/authz/policies/dashboard/canDelete.js +41 -0
  361. package/dist/esm/authz/policies/dashboard/canDelete.js.map +1 -0
  362. package/dist/esm/authz/policies/dashboard/canEdit.d.ts +10 -0
  363. package/dist/esm/authz/policies/dashboard/canEdit.d.ts.map +1 -0
  364. package/dist/esm/authz/policies/dashboard/canEdit.js +39 -0
  365. package/dist/esm/authz/policies/dashboard/canEdit.js.map +1 -0
  366. package/dist/esm/authz/policies/dashboard/canRead.d.ts +10 -0
  367. package/dist/esm/authz/policies/dashboard/canRead.d.ts.map +1 -0
  368. package/dist/esm/authz/policies/dashboard/canRead.js +38 -0
  369. package/dist/esm/authz/policies/dashboard/canRead.js.map +1 -0
  370. package/dist/esm/authz/policies/index.d.ts +62 -1
  371. package/dist/esm/authz/policies/index.d.ts.map +1 -1
  372. package/dist/esm/authz/policies/index.js +52 -4
  373. package/dist/esm/authz/policies/index.js.map +1 -1
  374. package/dist/esm/authz/policies/project/canLoad.d.ts.map +1 -1
  375. package/dist/esm/authz/policies/project/canLoad.js +6 -0
  376. package/dist/esm/authz/policies/project/canLoad.js.map +1 -1
  377. package/dist/esm/authz/policies/project/canReadAccIntegrationSettings.d.ts +10 -0
  378. package/dist/esm/authz/policies/project/canReadAccIntegrationSettings.d.ts.map +1 -0
  379. package/dist/esm/authz/policies/project/canReadAccIntegrationSettings.js +31 -0
  380. package/dist/esm/authz/policies/project/canReadAccIntegrationSettings.js.map +1 -0
  381. package/dist/esm/authz/policies/project/canUpdateEmbedTokens.d.ts +10 -0
  382. package/dist/esm/authz/policies/project/canUpdateEmbedTokens.d.ts.map +1 -0
  383. package/dist/esm/authz/policies/project/canUpdateEmbedTokens.js +48 -0
  384. package/dist/esm/authz/policies/project/canUpdateEmbedTokens.js.map +1 -0
  385. package/dist/esm/authz/policies/project/savedViews/canCreate.d.ts +6 -0
  386. package/dist/esm/authz/policies/project/savedViews/canCreate.d.ts.map +1 -0
  387. package/dist/esm/authz/policies/project/savedViews/canCreate.js +27 -0
  388. package/dist/esm/authz/policies/project/savedViews/canCreate.js.map +1 -0
  389. package/dist/esm/authz/policies/project/savedViews/canCreateSavedViewGroupToken.d.ts +6 -0
  390. package/dist/esm/authz/policies/project/savedViews/canCreateSavedViewGroupToken.d.ts.map +1 -0
  391. package/dist/esm/authz/policies/project/savedViews/canCreateSavedViewGroupToken.js +57 -0
  392. package/dist/esm/authz/policies/project/savedViews/canCreateSavedViewGroupToken.js.map +1 -0
  393. package/dist/esm/authz/policies/project/savedViews/canEditDescription.d.ts +6 -0
  394. package/dist/esm/authz/policies/project/savedViews/canEditDescription.d.ts.map +1 -0
  395. package/dist/esm/authz/policies/project/savedViews/canEditDescription.js +10 -0
  396. package/dist/esm/authz/policies/project/savedViews/canEditDescription.js.map +1 -0
  397. package/dist/esm/authz/policies/project/savedViews/canEditTitle.d.ts +6 -0
  398. package/dist/esm/authz/policies/project/savedViews/canEditTitle.d.ts.map +1 -0
  399. package/dist/esm/authz/policies/project/savedViews/canEditTitle.js +10 -0
  400. package/dist/esm/authz/policies/project/savedViews/canEditTitle.js.map +1 -0
  401. package/dist/esm/authz/policies/project/savedViews/canMove.d.ts +6 -0
  402. package/dist/esm/authz/policies/project/savedViews/canMove.d.ts.map +1 -0
  403. package/dist/esm/authz/policies/project/savedViews/canMove.js +10 -0
  404. package/dist/esm/authz/policies/project/savedViews/canMove.js.map +1 -0
  405. package/dist/esm/authz/policies/project/savedViews/canRead.d.ts +11 -0
  406. package/dist/esm/authz/policies/project/savedViews/canRead.d.ts.map +1 -0
  407. package/dist/esm/authz/policies/project/savedViews/canRead.js +11 -0
  408. package/dist/esm/authz/policies/project/savedViews/canRead.js.map +1 -0
  409. package/dist/esm/authz/policies/project/savedViews/canSetAsHomeView.d.ts +6 -0
  410. package/dist/esm/authz/policies/project/savedViews/canSetAsHomeView.d.ts.map +1 -0
  411. package/dist/esm/authz/policies/project/savedViews/canSetAsHomeView.js +41 -0
  412. package/dist/esm/authz/policies/project/savedViews/canSetAsHomeView.js.map +1 -0
  413. package/dist/esm/authz/policies/project/savedViews/canUpdate.d.ts +6 -0
  414. package/dist/esm/authz/policies/project/savedViews/canUpdate.d.ts.map +1 -0
  415. package/dist/esm/authz/policies/project/savedViews/canUpdate.js +10 -0
  416. package/dist/esm/authz/policies/project/savedViews/canUpdate.js.map +1 -0
  417. package/dist/esm/authz/policies/project/savedViews/canUpdateGroup.d.ts +6 -0
  418. package/dist/esm/authz/policies/project/savedViews/canUpdateGroup.d.ts.map +1 -0
  419. package/dist/esm/authz/policies/project/savedViews/canUpdateGroup.js +10 -0
  420. package/dist/esm/authz/policies/project/savedViews/canUpdateGroup.js.map +1 -0
  421. package/dist/esm/authz/policies/workspace/canCreateDashboards.d.ts +10 -0
  422. package/dist/esm/authz/policies/workspace/canCreateDashboards.d.ts.map +1 -0
  423. package/dist/esm/authz/policies/workspace/canCreateDashboards.js +35 -0
  424. package/dist/esm/authz/policies/workspace/canCreateDashboards.js.map +1 -0
  425. package/dist/esm/authz/policies/workspace/canCreateWorkspace.d.ts +10 -0
  426. package/dist/esm/authz/policies/workspace/canCreateWorkspace.d.ts.map +1 -0
  427. package/dist/esm/authz/policies/workspace/canCreateWorkspace.js +47 -0
  428. package/dist/esm/authz/policies/workspace/canCreateWorkspace.js.map +1 -0
  429. package/dist/esm/authz/policies/workspace/canListDashboards.d.ts +10 -0
  430. package/dist/esm/authz/policies/workspace/canListDashboards.d.ts.map +1 -0
  431. package/dist/esm/authz/policies/workspace/canListDashboards.js +22 -0
  432. package/dist/esm/authz/policies/workspace/canListDashboards.js.map +1 -0
  433. package/dist/esm/authz/policies/workspace/canReadMemberEmail.d.ts +1 -1
  434. package/dist/esm/authz/policies/workspace/canReadMemberEmail.d.ts.map +1 -1
  435. package/dist/esm/authz/policies/workspace/canReadMemberEmail.js +2 -21
  436. package/dist/esm/authz/policies/workspace/canReadMemberEmail.js.map +1 -1
  437. package/dist/esm/authz/policies/workspace/{canUpdateEmbedOptions.d.ts → canUseWorkspacePlanFeature.d.ts} +13 -5
  438. package/dist/esm/authz/policies/workspace/canUseWorkspacePlanFeature.d.ts.map +1 -0
  439. package/dist/esm/authz/policies/workspace/canUseWorkspacePlanFeature.js +23 -0
  440. package/dist/esm/authz/policies/workspace/canUseWorkspacePlanFeature.js.map +1 -0
  441. package/dist/esm/automate/helpers/types.d.ts +313 -51
  442. package/dist/esm/automate/helpers/types.d.ts.map +1 -1
  443. package/dist/esm/automate/helpers/types.js +11 -1
  444. package/dist/esm/automate/helpers/types.js.map +1 -1
  445. package/dist/esm/blobs/index.d.ts +17 -0
  446. package/dist/esm/blobs/index.d.ts.map +1 -0
  447. package/dist/esm/blobs/index.js +111 -0
  448. package/dist/esm/blobs/index.js.map +1 -0
  449. package/dist/esm/core/constants.d.ts +4 -2
  450. package/dist/esm/core/constants.d.ts.map +1 -1
  451. package/dist/esm/core/constants.js +24 -4
  452. package/dist/esm/core/constants.js.map +1 -1
  453. package/dist/esm/core/helpers/encoding.d.ts +2 -0
  454. package/dist/esm/core/helpers/encoding.d.ts.map +1 -0
  455. package/dist/esm/core/helpers/encoding.js +11 -0
  456. package/dist/esm/core/helpers/encoding.js.map +1 -0
  457. package/dist/esm/core/helpers/error.d.ts +11 -0
  458. package/dist/esm/core/helpers/error.d.ts.map +1 -1
  459. package/dist/esm/core/helpers/error.js +56 -1
  460. package/dist/esm/core/helpers/error.js.map +1 -1
  461. package/dist/esm/core/helpers/url.d.ts +24 -0
  462. package/dist/esm/core/helpers/url.d.ts.map +1 -1
  463. package/dist/esm/core/helpers/url.js +30 -0
  464. package/dist/esm/core/helpers/url.js.map +1 -1
  465. package/dist/esm/core/helpers/utility.d.ts +16 -0
  466. package/dist/esm/core/helpers/utility.d.ts.map +1 -1
  467. package/dist/esm/core/helpers/utility.js +19 -0
  468. package/dist/esm/core/helpers/utility.js.map +1 -1
  469. package/dist/esm/core/index.d.ts +2 -0
  470. package/dist/esm/core/index.d.ts.map +1 -1
  471. package/dist/esm/core/index.js +2 -0
  472. package/dist/esm/core/index.js.map +1 -1
  473. package/dist/esm/core/utils/base64.d.ts +3 -0
  474. package/dist/esm/core/utils/base64.d.ts.map +1 -0
  475. package/dist/esm/core/utils/base64.js +21 -0
  476. package/dist/esm/core/utils/base64.js.map +1 -0
  477. package/dist/esm/environment/{multiRegionConfig.d.ts → db.d.ts} +54 -5
  478. package/dist/esm/environment/db.d.ts.map +1 -0
  479. package/dist/esm/environment/{multiRegionConfig.js → db.js} +40 -7
  480. package/dist/esm/environment/db.js.map +1 -0
  481. package/dist/esm/environment/featureFlags.d.ts +25 -0
  482. package/dist/esm/environment/featureFlags.d.ts.map +1 -0
  483. package/dist/esm/environment/featureFlags.js +5 -0
  484. package/dist/esm/environment/featureFlags.js.map +1 -0
  485. package/dist/esm/environment/index.d.ts +2 -15
  486. package/dist/esm/environment/index.d.ts.map +1 -1
  487. package/dist/esm/environment/index.js +44 -7
  488. package/dist/esm/environment/index.js.map +1 -1
  489. package/dist/esm/environment/node.d.ts +5 -0
  490. package/dist/esm/environment/node.d.ts.map +1 -0
  491. package/dist/esm/environment/node.js +11 -0
  492. package/dist/esm/environment/node.js.map +1 -0
  493. package/dist/esm/images/base64.d.ts +2 -0
  494. package/dist/esm/images/base64.d.ts.map +1 -0
  495. package/dist/esm/images/base64.js +15 -0
  496. package/dist/esm/images/base64.js.map +1 -0
  497. package/dist/esm/index.d.ts +1 -0
  498. package/dist/esm/index.d.ts.map +1 -1
  499. package/dist/esm/index.js +1 -0
  500. package/dist/esm/index.js.map +1 -1
  501. package/dist/esm/observability/index.d.ts.map +1 -1
  502. package/dist/esm/observability/index.js +19 -2
  503. package/dist/esm/observability/index.js.map +1 -1
  504. package/dist/esm/queue/config.d.ts +3 -0
  505. package/dist/esm/queue/config.d.ts.map +1 -1
  506. package/dist/esm/queue/config.js +12 -4
  507. package/dist/esm/queue/config.js.map +1 -1
  508. package/dist/esm/rich-text-editor/helpers/index.d.ts +13 -1
  509. package/dist/esm/rich-text-editor/helpers/index.d.ts.map +1 -1
  510. package/dist/esm/rich-text-editor/helpers/index.js +1 -0
  511. package/dist/esm/rich-text-editor/helpers/index.js.map +1 -1
  512. package/dist/esm/saved-views/helpers/defaultGroup.d.ts +23 -0
  513. package/dist/esm/saved-views/helpers/defaultGroup.d.ts.map +1 -0
  514. package/dist/esm/saved-views/helpers/defaultGroup.js +51 -0
  515. package/dist/esm/saved-views/helpers/defaultGroup.js.map +1 -0
  516. package/dist/esm/saved-views/index.d.ts +2 -0
  517. package/dist/esm/saved-views/index.d.ts.map +1 -0
  518. package/dist/esm/saved-views/index.js +2 -0
  519. package/dist/esm/saved-views/index.js.map +1 -0
  520. package/dist/esm/viewer/helpers/route.d.ts +42 -7
  521. package/dist/esm/viewer/helpers/route.d.ts.map +1 -1
  522. package/dist/esm/viewer/helpers/route.js +140 -30
  523. package/dist/esm/viewer/helpers/route.js.map +1 -1
  524. package/dist/esm/viewer/helpers/state.d.ts +59 -6
  525. package/dist/esm/viewer/helpers/state.d.ts.map +1 -1
  526. package/dist/esm/viewer/helpers/state.js +97 -22
  527. package/dist/esm/viewer/helpers/state.js.map +1 -1
  528. package/dist/esm/workers/fileimport/job.d.ts +85 -9
  529. package/dist/esm/workers/fileimport/job.d.ts.map +1 -1
  530. package/dist/esm/workers/fileimport/job.js +20 -9
  531. package/dist/esm/workers/fileimport/job.js.map +1 -1
  532. package/dist/esm/workers/previews/job.d.ts +37 -20
  533. package/dist/esm/workers/previews/job.d.ts.map +1 -1
  534. package/dist/esm/workers/previews/job.js +20 -1
  535. package/dist/esm/workers/previews/job.js.map +1 -1
  536. package/dist/esm/workspaces/helpers/features.d.ts +55 -5
  537. package/dist/esm/workspaces/helpers/features.d.ts.map +1 -1
  538. package/dist/esm/workspaces/helpers/features.js +173 -113
  539. package/dist/esm/workspaces/helpers/features.js.map +1 -1
  540. package/dist/esm/workspaces/helpers/plans.d.ts +1 -0
  541. package/dist/esm/workspaces/helpers/plans.d.ts.map +1 -1
  542. package/dist/esm/workspaces/helpers/plans.js.map +1 -1
  543. package/package.json +110 -8
  544. package/src/acc/helpers/types.ts +42 -0
  545. package/src/acc/index.ts +1 -0
  546. package/src/authz/checks/dashboards.spec.ts +46 -0
  547. package/src/authz/checks/dashboards.ts +14 -0
  548. package/src/authz/domain/authErrors.ts +87 -2
  549. package/src/authz/domain/automate/operations.ts +5 -0
  550. package/src/authz/domain/automate/types.ts +9 -0
  551. package/src/authz/domain/context.ts +8 -0
  552. package/src/authz/domain/dashboards/operations.ts +3 -0
  553. package/src/authz/domain/dashboards/types.ts +6 -0
  554. package/src/authz/domain/loaders.ts +40 -24
  555. package/src/authz/domain/savedViews/operations.ts +11 -0
  556. package/src/authz/domain/savedViews/types.ts +25 -0
  557. package/src/authz/domain/workspaces/operations.ts +3 -1
  558. package/src/authz/domain/workspaces/types.ts +4 -0
  559. package/src/authz/fragments/automate.spec.ts +120 -0
  560. package/src/authz/fragments/automate.ts +36 -0
  561. package/src/authz/fragments/dashboards.ts +90 -0
  562. package/src/authz/fragments/projects.spec.ts +135 -10
  563. package/src/authz/fragments/projects.ts +53 -1
  564. package/src/authz/fragments/savedViews.spec.ts +551 -0
  565. package/src/authz/fragments/savedViews.ts +245 -0
  566. package/src/authz/fragments/workspaces.spec.ts +234 -7
  567. package/src/authz/fragments/workspaces.ts +84 -0
  568. package/src/authz/helpers/graphql.ts +2 -2
  569. package/src/authz/index.ts +1 -0
  570. package/src/authz/policies/automate/function/canEditFunction.spec.ts +87 -0
  571. package/src/authz/policies/automate/function/canEditFunction.ts +46 -0
  572. package/src/authz/policies/dashboard/canCreateToken.ts +89 -0
  573. package/src/authz/policies/dashboard/canDelete.ts +84 -0
  574. package/src/authz/policies/dashboard/canEdit.ts +79 -0
  575. package/src/authz/policies/dashboard/canRead.ts +83 -0
  576. package/src/authz/policies/index.spec.ts +13 -0
  577. package/src/authz/policies/index.ts +52 -4
  578. package/src/authz/policies/project/automation/canCreate.spec.ts +2 -1
  579. package/src/authz/policies/project/automation/canDelete.spec.ts +2 -1
  580. package/src/authz/policies/project/automation/canUpdate.spec.ts +2 -1
  581. package/src/authz/policies/project/canBroadcastActivity.spec.ts +2 -2
  582. package/src/authz/policies/project/canDelete.spec.ts +2 -2
  583. package/src/authz/policies/project/canLeave.spec.ts +2 -2
  584. package/src/authz/policies/project/canLoad.spec.ts +17 -1
  585. package/src/authz/policies/project/canLoad.ts +7 -0
  586. package/src/authz/policies/project/canMoveToWorkspace.spec.ts +6 -10
  587. package/src/authz/policies/project/canPublish.spec.ts +2 -1
  588. package/src/authz/policies/project/canRead.spec.ts +2 -3
  589. package/src/authz/policies/project/canReadAccIntegrationSettings.spec.ts +133 -0
  590. package/src/authz/policies/project/canReadAccIntegrationSettings.ts +87 -0
  591. package/src/authz/policies/project/canReadSettings.spec.ts +2 -2
  592. package/src/authz/policies/project/canReadWebhooks.spec.ts +2 -2
  593. package/src/authz/policies/project/canUpdate.spec.ts +2 -5
  594. package/src/authz/policies/project/canUpdateEmbedTokens.spec.ts +132 -0
  595. package/src/authz/policies/project/canUpdateEmbedTokens.ts +101 -0
  596. package/src/authz/policies/project/comment/canArchive.spec.ts +6 -5
  597. package/src/authz/policies/project/comment/canCreate.spec.ts +2 -2
  598. package/src/authz/policies/project/comment/canEdit.spec.ts +6 -5
  599. package/src/authz/policies/project/model/canDelete.spec.ts +6 -2
  600. package/src/authz/policies/project/model/canUpdate.spec.ts +2 -5
  601. package/src/authz/policies/project/savedViews/canCreate.spec.ts +186 -0
  602. package/src/authz/policies/project/savedViews/canCreate.ts +81 -0
  603. package/src/authz/policies/project/savedViews/canCreateSavedViewGroupToken.spec.ts +250 -0
  604. package/src/authz/policies/project/savedViews/canCreateSavedViewGroupToken.ts +117 -0
  605. package/src/authz/policies/project/savedViews/canEditDescription.spec.ts +206 -0
  606. package/src/authz/policies/project/savedViews/canEditDescription.ts +67 -0
  607. package/src/authz/policies/project/savedViews/canEditTitle.spec.ts +204 -0
  608. package/src/authz/policies/project/savedViews/canEditTitle.ts +67 -0
  609. package/src/authz/policies/project/savedViews/canMove.spec.ts +204 -0
  610. package/src/authz/policies/project/savedViews/canMove.ts +67 -0
  611. package/src/authz/policies/project/savedViews/canRead.ts +72 -0
  612. package/src/authz/policies/project/savedViews/canSetAsHomeView.spec.ts +248 -0
  613. package/src/authz/policies/project/savedViews/canSetAsHomeView.ts +108 -0
  614. package/src/authz/policies/project/savedViews/canUpdate.spec.ts +191 -0
  615. package/src/authz/policies/project/savedViews/canUpdate.ts +67 -0
  616. package/src/authz/policies/project/savedViews/canUpdateGroup.spec.ts +227 -0
  617. package/src/authz/policies/project/savedViews/canUpdateGroup.ts +63 -0
  618. package/src/authz/policies/project/version/canUpdate.spec.ts +6 -5
  619. package/src/authz/policies/workspace/canCreateDashboards.ts +71 -0
  620. package/src/authz/policies/workspace/canCreateWorkspace.spec.ts +380 -0
  621. package/src/authz/policies/workspace/canCreateWorkspace.ts +77 -0
  622. package/src/authz/policies/workspace/canListDashboards.ts +53 -0
  623. package/src/authz/policies/workspace/canReadMemberEmail.spec.ts +25 -36
  624. package/src/authz/policies/workspace/canReadMemberEmail.ts +11 -34
  625. package/src/authz/policies/workspace/canReceiveProjectsUpdatedMessage.spec.ts +2 -5
  626. package/src/authz/policies/workspace/{canUpdateEmbedOptions.spec.ts → canUseWorkspacePlanFeature.spec.ts} +40 -38
  627. package/src/authz/policies/workspace/canUseWorkspacePlanFeature.ts +69 -0
  628. package/src/automate/helpers/types.ts +17 -3
  629. package/src/blobs/index.ts +121 -0
  630. package/src/core/constants.ts +25 -4
  631. package/src/core/helpers/encoding.ts +12 -0
  632. package/src/core/helpers/error.spec.ts +215 -0
  633. package/src/core/helpers/error.ts +58 -1
  634. package/src/core/helpers/url.ts +33 -0
  635. package/src/core/helpers/utility.spec.ts +19 -1
  636. package/src/core/helpers/utility.ts +31 -0
  637. package/src/core/index.ts +2 -0
  638. package/src/core/utils/base64.spec.ts +31 -0
  639. package/src/core/utils/base64.ts +19 -0
  640. package/src/environment/db.spec.ts +48 -0
  641. package/src/environment/{multiRegionConfig.ts → db.ts} +62 -8
  642. package/src/environment/featureFlags.ts +25 -0
  643. package/src/environment/index.spec.ts +126 -0
  644. package/src/environment/index.ts +51 -24
  645. package/src/environment/node.ts +11 -0
  646. package/src/images/base64.spec.ts +42 -0
  647. package/src/images/base64.ts +15 -0
  648. package/src/index.ts +1 -0
  649. package/src/observability/index.ts +22 -2
  650. package/src/queue/config.ts +18 -6
  651. package/src/rich-text-editor/helpers/index.ts +15 -1
  652. package/src/saved-views/helpers/defaultGroup.spec.ts +12 -0
  653. package/src/saved-views/helpers/defaultGroup.ts +70 -0
  654. package/src/saved-views/index.ts +1 -0
  655. package/src/tests/fakes.ts +55 -4
  656. package/src/viewer/helpers/route.spec.ts +353 -0
  657. package/src/viewer/helpers/route.ts +180 -25
  658. package/src/viewer/helpers/state.spec.ts +252 -0
  659. package/src/viewer/helpers/state.ts +158 -27
  660. package/src/workers/fileimport/job.ts +40 -21
  661. package/src/workers/previews/job.ts +23 -1
  662. package/src/workspaces/helpers/features.spec.ts +99 -0
  663. package/src/workspaces/helpers/features.ts +215 -119
  664. package/src/workspaces/helpers/plans.ts +1 -0
  665. package/dist/commonjs/authz/policies/workspace/canUpdateEmbedOptions.d.ts.map +0 -1
  666. package/dist/commonjs/authz/policies/workspace/canUpdateEmbedOptions.js +0 -44
  667. package/dist/commonjs/authz/policies/workspace/canUpdateEmbedOptions.js.map +0 -1
  668. package/dist/commonjs/environment/multiRegionConfig.d.ts.map +0 -1
  669. package/dist/commonjs/environment/multiRegionConfig.js.map +0 -1
  670. package/dist/esm/authz/policies/workspace/canUpdateEmbedOptions.d.ts.map +0 -1
  671. package/dist/esm/authz/policies/workspace/canUpdateEmbedOptions.js +0 -40
  672. package/dist/esm/authz/policies/workspace/canUpdateEmbedOptions.js.map +0 -1
  673. package/dist/esm/environment/multiRegionConfig.d.ts.map +0 -1
  674. package/dist/esm/environment/multiRegionConfig.js.map +0 -1
  675. package/src/authz/policies/workspace/canUpdateEmbedOptions.ts +0 -89
@@ -0,0 +1,215 @@
1
+ import { describe, it, expect } from 'vitest'
2
+ import { errorToString, getErrorMessage } from './error.js'
3
+
4
+ describe('errorToString', () => {
5
+ it('should stringify non-Error objects', () => {
6
+ const obj = { foo: 'bar', num: 42 }
7
+ const result = errorToString(obj)
8
+ expect(result).toBe('{"foo":"bar","num":42}')
9
+ })
10
+
11
+ it('should handle primitive values', () => {
12
+ expect(errorToString('string error')).toBe('"string error"')
13
+ expect(errorToString(123)).toBe('123')
14
+ expect(errorToString(true)).toBe('true')
15
+ expect(errorToString(null)).toBe('null')
16
+ expect(errorToString(undefined)).toBeUndefined()
17
+ })
18
+
19
+ it('should fallback to String() for non-serializable objects', () => {
20
+ const circular: Record<string, unknown> = { name: 'circular' }
21
+ circular.self = circular
22
+
23
+ const result = errorToString(circular)
24
+ expect(result).toBe('[object Object]')
25
+ })
26
+
27
+ it('should return stack trace for Error objects', () => {
28
+ const error = new Error('Test error')
29
+ const result = errorToString(error)
30
+
31
+ expect(result).toContain('Test error')
32
+ expect(result).toContain('Error: Test error')
33
+ })
34
+
35
+ it('should fallback to message if no stack', () => {
36
+ const error = new Error('Test message')
37
+ // Remove stack to test fallback
38
+ delete (error as Error & { stack?: string }).stack
39
+
40
+ const result = errorToString(error)
41
+ expect(result).toBe('Test message')
42
+ })
43
+
44
+ it('should fallback to String(error) if no stack or message', () => {
45
+ const error = new Error()
46
+ delete (error as Error & { stack?: string }).stack
47
+ // Use Reflect.deleteProperty to avoid TypeScript error
48
+ Reflect.deleteProperty(error, 'message')
49
+
50
+ const result = errorToString(error)
51
+ expect(result).toBe('Error')
52
+ })
53
+
54
+ it('should handle Error with cause property', () => {
55
+ const rootCause = new Error('Root cause')
56
+ const error = new Error('Main error') as Error & { cause?: Error }
57
+ error.cause = rootCause
58
+
59
+ const result = errorToString(error)
60
+ expect(result).toContain('Main error')
61
+ expect(result).toContain('Cause: ')
62
+ expect(result).toContain('Root cause')
63
+ })
64
+
65
+ it('should handle Error with jse_cause property', () => {
66
+ const rootCause = new Error('JSE root cause')
67
+ const error = new Error('Main error') as Error & { jse_cause?: Error }
68
+ error['jse_cause'] = rootCause
69
+
70
+ const result = errorToString(error)
71
+ expect(result).toContain('Main error')
72
+ expect(result).toContain('Cause: ')
73
+ expect(result).toContain('JSE root cause')
74
+ })
75
+
76
+ it('should handle nested causes recursively', () => {
77
+ const deepCause = new Error('Deep cause')
78
+ const midCause = new Error('Mid cause') as Error & { cause?: Error }
79
+ midCause.cause = deepCause
80
+
81
+ const error = new Error('Top error') as Error & { cause?: Error }
82
+ error.cause = midCause
83
+
84
+ const result = errorToString(error)
85
+ expect(result).toContain('Top error')
86
+ expect(result).toContain('Mid cause')
87
+ expect(result).toContain('Deep cause')
88
+
89
+ // Should have nested "Cause:" labels
90
+ const causeCount = (result.match(/Cause: /g) || []).length
91
+ expect(causeCount).toBe(2)
92
+ })
93
+
94
+ it('should prioritize jse_cause over cause when both are present', () => {
95
+ const jseCause = new Error('JSE cause')
96
+ const stdCause = new Error('Standard cause')
97
+
98
+ const error = new Error('Main error') as Error & {
99
+ cause?: Error
100
+ jse_cause?: Error
101
+ }
102
+ error.cause = stdCause
103
+ error['jse_cause'] = jseCause
104
+
105
+ const result = errorToString(error)
106
+ expect(result).toContain('Main error')
107
+ expect(result).toContain('JSE cause')
108
+ // Should NOT contain cause since jse_cause takes priority
109
+ expect(result).not.toContain('Standard cause')
110
+
111
+ // Should have only one "Cause:" label
112
+ const causeCount = (result.match(/Cause: /g) || []).length
113
+ expect(causeCount).toBe(1)
114
+ })
115
+
116
+ it('should handle cause when jse_cause is not present', () => {
117
+ const stdCause = new Error('Standard cause')
118
+
119
+ const error = new Error('Main error') as Error & { cause?: Error }
120
+ error.cause = stdCause
121
+
122
+ const result = errorToString(error)
123
+ expect(result).toContain('Main error')
124
+ expect(result).toContain('Standard cause')
125
+
126
+ // Should have one "Cause:" label
127
+ const causeCount = (result.match(/Cause: /g) || []).length
128
+ expect(causeCount).toBe(1)
129
+ })
130
+
131
+ it('should handle error with no cause properties', () => {
132
+ const error = new Error('Error without cause')
133
+
134
+ const result = errorToString(error)
135
+ expect(result).toContain('Error without cause')
136
+ expect(result).not.toContain('Cause:')
137
+
138
+ // Should have no "Cause:" labels
139
+ const causeCount = (result.match(/Cause: /g) || []).length
140
+ expect(causeCount).toBe(0)
141
+ })
142
+
143
+ it('should handle non-Error causes', () => {
144
+ const error = new Error('Main error') as Error & { cause?: unknown }
145
+ error.cause = { type: 'custom', message: 'Custom cause' }
146
+
147
+ const result = errorToString(error)
148
+ expect(result).toContain('Main error')
149
+ expect(result).toContain('Cause: {"type":"custom","message":"Custom cause"}')
150
+ })
151
+
152
+ it('should handle circular reference in causes', () => {
153
+ const error = new Error('Main error') as Error & { cause?: unknown }
154
+ const cause: Record<string, unknown> = { message: 'Circular cause' }
155
+ cause.self = cause
156
+ error.cause = cause
157
+
158
+ const result = errorToString(error)
159
+ expect(result).toContain('Main error')
160
+ expect(result).toContain('Cause: [object Object]')
161
+ })
162
+ })
163
+
164
+ describe('getErrorMessage', () => {
165
+ it('should return message from Error objects', () => {
166
+ const error = new Error('Test error message')
167
+ const result = getErrorMessage(error)
168
+ expect(result).toBe('Test error message')
169
+ })
170
+
171
+ it('should return message from objects with message property', () => {
172
+ const errorLike = { message: 'Custom error message', code: 500 }
173
+ const result = getErrorMessage(errorLike)
174
+ expect(result).toBe('Custom error message')
175
+ })
176
+
177
+ it('should return string values directly', () => {
178
+ const stringError = 'This is a string error'
179
+ const result = getErrorMessage(stringError)
180
+ expect(result).toBe('This is a string error')
181
+ })
182
+
183
+ it('should ignore non-string message properties', () => {
184
+ const errorLike = { message: 123, other: 'value' }
185
+ const result = getErrorMessage(errorLike)
186
+ expect(result).toBe('{"message":123,"other":"value"}')
187
+ })
188
+
189
+ it('should stringify objects without message property', () => {
190
+ const obj = { foo: 'bar', num: 42 }
191
+ const result = getErrorMessage(obj)
192
+ expect(result).toBe('{"foo":"bar","num":42}')
193
+ })
194
+
195
+ it('should handle primitive values', () => {
196
+ expect(getErrorMessage(123)).toBe('123')
197
+ expect(getErrorMessage(true)).toBe('true')
198
+ expect(getErrorMessage(null)).toBe('null')
199
+ expect(getErrorMessage(undefined)).toBe('undefined')
200
+ })
201
+
202
+ it('should fallback to String() for non-serializable objects', () => {
203
+ const circular: Record<string, unknown> = { name: 'circular' }
204
+ circular.self = circular
205
+
206
+ const result = getErrorMessage(circular)
207
+ expect(result).toBe('[object Object]')
208
+ })
209
+
210
+ it('should handle empty Error message', () => {
211
+ const error = new Error('')
212
+ const result = getErrorMessage(error)
213
+ expect(result).toBe('')
214
+ })
215
+ })
@@ -1,3 +1,5 @@
1
+ import { get, isObject, isString, isUndefined } from '#lodash'
2
+
1
3
  class UnexpectedErrorStructureError extends Error {}
2
4
 
3
5
  /**
@@ -36,13 +38,68 @@ export function createUncoveredError(e: unknown) {
36
38
  return new UncoveredError(`Uncovered error case ${errorRepr}.`)
37
39
  }
38
40
 
41
+ /**
42
+ * A custom error class that produces a cleaner stack trace when instantiated.
43
+ */
44
+ export class CleanStackTrace extends Error {
45
+ constructor() {
46
+ super('')
47
+ this.name = 'Stack trace:'
48
+ }
49
+ }
50
+
39
51
  /**
40
52
  * Note: Only V8 and Node.js support controlling the stack trace limit
41
53
  */
42
54
  export const collectLongTrace = (limit?: number) => {
43
55
  const originalLimit = Error.stackTraceLimit
44
56
  Error.stackTraceLimit = limit || 30
45
- const trace = (new Error().stack || '').split('\n').slice(1).join('\n').trim()
57
+ const trace = (new CleanStackTrace().stack || '')
58
+ .split('\n')
59
+ .slice(2) // remove "Error" and this function's own frame
60
+ .join('\n')
61
+ .trim()
46
62
  Error.stackTraceLimit = originalLimit
47
63
  return trace
48
64
  }
65
+
66
+ /**
67
+ * When you need to log a full error representation, w/ full .cause() support
68
+ */
69
+ export const errorToString = (e: unknown): string => {
70
+ if (!(e instanceof Error)) {
71
+ try {
72
+ return JSON.stringify(e)
73
+ } catch {
74
+ return String(e)
75
+ }
76
+ }
77
+
78
+ let ret = e.stack || e.message || String(e)
79
+ const causeProps = ['jse_cause', 'cause'] as const
80
+
81
+ for (const prop of causeProps) {
82
+ if (prop in e) {
83
+ const cause = get(e, prop)
84
+ if (!cause) continue
85
+
86
+ ret += `\nCause: ${errorToString(cause)}`
87
+ break // avoid chaining multiple causes
88
+ }
89
+ }
90
+
91
+ return ret
92
+ }
93
+
94
+ export const getErrorMessage = (e: unknown): string => {
95
+ if (e instanceof Error) return e.message
96
+ if (isObject(e) && 'message' in e && isString(e.message)) return e.message
97
+ if (isString(e)) return e
98
+ if (isUndefined(e)) return 'undefined'
99
+
100
+ try {
101
+ return JSON.stringify(e)
102
+ } catch {
103
+ return String(e)
104
+ }
105
+ }
@@ -8,10 +8,16 @@ export class RelativeURL extends URL {
8
8
  super(url, RelativeURL.#fakeOrigin)
9
9
  }
10
10
 
11
+ /**
12
+ * @deprecated Not supported in relative URL
13
+ */
11
14
  get host(): string {
12
15
  throw new Error('host is not supported in a relative URL')
13
16
  }
14
17
 
18
+ /**
19
+ * @deprecated Not supported in relative URL
20
+ */
15
21
  get hostname(): string {
16
22
  throw new Error('hostname is not supported in a relative URL')
17
23
  }
@@ -20,26 +26,53 @@ export class RelativeURL extends URL {
20
26
  return this.pathname + this.search + this.hash
21
27
  }
22
28
 
29
+ /**
30
+ * @deprecated Not supported in relative URL
31
+ */
23
32
  get origin(): string {
24
33
  throw new Error('origin is not supported in a relative URL')
25
34
  }
26
35
 
36
+ /**
37
+ * @deprecated Not supported in relative URL
38
+ */
27
39
  get password(): string {
28
40
  throw new Error('password is not supported in a relative URL')
29
41
  }
30
42
 
43
+ /**
44
+ * @deprecated Not supported in relative URL
45
+ */
31
46
  get protocol(): string {
32
47
  throw new Error('protocol is not supported in a relative URL')
33
48
  }
34
49
 
50
+ /**
51
+ * @deprecated Not supported in relative URL
52
+ */
35
53
  get port(): string {
36
54
  throw new Error('port is not supported in a relative URL')
37
55
  }
38
56
 
57
+ /**
58
+ * @deprecated Not supported in relative URL
59
+ */
39
60
  get username(): string {
40
61
  throw new Error('username is not supported in a relative URL')
41
62
  }
42
63
 
64
+ get path(): string {
65
+ return this.pathname
66
+ }
67
+
68
+ get pathOnly(): string {
69
+ return this.pathname
70
+ }
71
+
72
+ get fullPath(): string {
73
+ return this.href
74
+ }
75
+
43
76
  toJSON(): string {
44
77
  return this.href
45
78
  }
@@ -1,5 +1,5 @@
1
1
  import { describe, expect, test } from 'vitest'
2
- import { xor } from './utility.js'
2
+ import { xor, StringEnum } from './utility.js'
3
3
 
4
4
  describe('xor', () => {
5
5
  test('returns true if only one of the arguments is truthy', () => {
@@ -9,3 +9,21 @@ describe('xor', () => {
9
9
  expect(xor(false, false)).toBe(false)
10
10
  })
11
11
  })
12
+
13
+ describe('StringEnum', () => {
14
+ const Colors = StringEnum(['RED', 'GREEN', 'BLUE'])
15
+
16
+ test('creates an object with keys and values matching the input strings', () => {
17
+ expect(Colors).toEqual({
18
+ RED: 'RED',
19
+ GREEN: 'GREEN',
20
+ BLUE: 'BLUE'
21
+ })
22
+ })
23
+
24
+ test('works with empty array', () => {
25
+ const EmptyEnum = StringEnum([])
26
+ expect(EmptyEnum).toEqual({})
27
+ expect(Object.isFrozen(EmptyEnum)).toBe(true)
28
+ })
29
+ })
@@ -167,3 +167,34 @@ export const waitForever = (): Promise<never> => new Promise<never>(noop)
167
167
  * Returns true if only one of the arguments is truthy
168
168
  */
169
169
  export const xor = (a: unknown, b: unknown) => !!((a || b) && !(a && b))
170
+
171
+ /**
172
+ * Shortcut for creating string key & value enums. Native TS Enums are problematic in many ways
173
+ * (transform code, instead of just adding types; you cant put a string literal matching the enum value
174
+ * in a variable typed as the enum, etc.)
175
+ */
176
+ export const StringEnum = <T extends string>(args: T[]) => {
177
+ const enumObj = Object.fromEntries(args.map((arg) => [arg, arg])) as {
178
+ [K in T]: K
179
+ }
180
+ return Object.freeze(enumObj)
181
+ }
182
+
183
+ /**
184
+ * Shortcut for (typeof StringEnum)[keyof typeof StringEnum]
185
+ */
186
+ export type StringEnumValues<T extends Record<string, string>> = {
187
+ [K in keyof T]: T[K] extends string ? T[K] : never
188
+ }[keyof T]
189
+
190
+ /**
191
+ * Get first non-undefined/null value, or undefined if none found
192
+ */
193
+ export const firstDefinedValue = <T>(
194
+ ...args: (T | undefined | null)[]
195
+ ): T | undefined => {
196
+ for (const arg of args) {
197
+ if (!isNullOrUndefined(arg)) return arg
198
+ }
199
+ return undefined
200
+ }
package/src/core/index.ts CHANGED
@@ -7,7 +7,9 @@ export * from './helpers/utilityTypes.js'
7
7
  export * from './helpers/tracking.js'
8
8
  export * from './utils/localStorage.js'
9
9
  export * from './utils/md5.js'
10
+ export * from './utils/base64.js'
10
11
  export * from './helpers/os.js'
11
12
  export * from './helpers/optimization.js'
12
13
  export * from './helpers/debugging.js'
13
14
  export * from './helpers/url.js'
15
+ export * from './helpers/encoding.js'
@@ -0,0 +1,31 @@
1
+ import { describe, expect, it } from 'vitest'
2
+ import { base64Decode, base64Encode } from './base64.js'
3
+
4
+ describe('base64Encode & base64Decode', () => {
5
+ it('should encode/decode a string to base64', () => {
6
+ const str = 'Hello, World!'
7
+ const encoded = base64Encode(str)
8
+ expect(encoded).toBe('SGVsbG8sIFdvcmxkIQ==')
9
+
10
+ const decoded = base64Decode(encoded)
11
+ expect(decoded).toBe(str)
12
+ })
13
+
14
+ it('should handle empty strings', () => {
15
+ const str = ''
16
+ const encoded = base64Encode(str)
17
+ expect(encoded).toBe('')
18
+
19
+ const decoded = base64Decode(encoded)
20
+ expect(decoded).toBe(str)
21
+ })
22
+
23
+ it('should handle special characters', () => {
24
+ const str = '¡Hola, Mundo!'
25
+ const encoded = base64Encode(str)
26
+ expect(encoded).toBe('wqFIb2xhLCBNdW5kbyE=')
27
+
28
+ const decoded = base64Decode(encoded)
29
+ expect(decoded).toBe(str)
30
+ })
31
+ })
@@ -0,0 +1,19 @@
1
+ export function base64Encode(val: string): string {
2
+ if (typeof window === 'undefined') {
3
+ // Node.js
4
+ return Buffer.from(val, 'utf8').toString('base64')
5
+ } else {
6
+ // Browser
7
+ return btoa(unescape(encodeURIComponent(val)))
8
+ }
9
+ }
10
+
11
+ export function base64Decode(val: string): string {
12
+ if (typeof window === 'undefined') {
13
+ // Node.js
14
+ return Buffer.from(val, 'base64').toString('utf8')
15
+ } else {
16
+ // Browser
17
+ return decodeURIComponent(escape(atob(val)))
18
+ }
19
+ }
@@ -0,0 +1,48 @@
1
+ import { afterEach, beforeAll, describe, expect, it } from 'vitest'
2
+ import { regionConfigSchema } from './db.js'
3
+
4
+ describe('Database Configuration', () => {
5
+ let baseNodeEnv: string
6
+
7
+ beforeAll(() => {
8
+ baseNodeEnv = process.env.NODE_ENV || ''
9
+ })
10
+
11
+ afterEach(() => {
12
+ process.env.NODE_ENV = baseNodeEnv
13
+ })
14
+
15
+ it('regionConfigSchema does not allow skipInitialization in non-test environments', () => {
16
+ const validConfig = {
17
+ postgres: {
18
+ connectionUri: 'postgres://user:password@host:port/dbname',
19
+ databaseName: 'dbname',
20
+ privateConnectionUri: 'postgres://user:password@host:port/dbname',
21
+ publicTlsCertificate: 'cert',
22
+ skipInitialization: false
23
+ },
24
+ blobStorage: {
25
+ endpoint: 'https://s3.example.com',
26
+ publicEndpoint: 'https://public.s3.example.com',
27
+ accessKey: 'accessKey',
28
+ secretKey: 'secretKey',
29
+ bucket: 'bucketName',
30
+ createBucketIfNotExists: true,
31
+ s3Region: 'us-west-1'
32
+ }
33
+ }
34
+
35
+ process.env.NODE_ENV = 'test' // this should work
36
+ expect(() => regionConfigSchema.parse(validConfig)).not.toThrow()
37
+
38
+ const invalidConfig = {
39
+ ...validConfig,
40
+ postgres: { ...validConfig.postgres, skipInitialization: true }
41
+ }
42
+
43
+ process.env.NODE_ENV = 'production' // this should throw
44
+ expect(() => regionConfigSchema.parse(invalidConfig)).toThrow(
45
+ /skipInitialization can only be set when NODE_ENV is \\\"test\\\"/
46
+ )
47
+ })
48
+ })
@@ -7,7 +7,7 @@ import { isUndefined, get } from '#lodash'
7
7
  // cause of knex's ESM/CJS interop issues
8
8
  const knex = get(Knex, 'knex') || get(Knex, 'default')
9
9
 
10
- const regionConfigSchema = z.object({
10
+ export const regionConfigSchema = z.object({
11
11
  postgres: z.object({
12
12
  connectionUri: z
13
13
  .string()
@@ -29,10 +29,31 @@ const regionConfigSchema = z.object({
29
29
  publicTlsCertificate: z
30
30
  .string()
31
31
  .describe('Public TLS ("CA") certificate for the Postgres server')
32
+ .optional(),
33
+ skipInitialization: z
34
+ .boolean()
32
35
  .optional()
36
+ .describe(
37
+ 'Skip database initialization (migration run & replication setup). Only used in tests.'
38
+ )
39
+ .refine((val) => val !== true || process.env.NODE_ENV === 'test', {
40
+ message: 'skipInitialization can only be set when NODE_ENV is "test"'
41
+ })
33
42
  }),
34
43
  blobStorage: z.object({
35
- endpoint: z.string().url().describe('URL of the S3-compatible storage endpoint'),
44
+ endpoint: z
45
+ .string()
46
+ .url()
47
+ .describe(
48
+ 'URL of the S3-compatible storage endpoint, accessible from the server'
49
+ ),
50
+ publicEndpoint: z
51
+ .string()
52
+ .url()
53
+ .optional()
54
+ .describe(
55
+ 'Public URL of the S3-compatible storage endpoint, accessible from clients via the public internet'
56
+ ),
36
57
  accessKey: z.string().describe('Access key for the S3-compatible storage endpoint'),
37
58
  secretKey: z.string().describe('Secret key for the S3-compatible storage endpoint'),
38
59
  bucket: z.string().describe('Name of the S3-compatible storage bucket'),
@@ -89,8 +110,14 @@ export const loadMultiRegionsConfig = async ({
89
110
 
90
111
  export type KnexConfigArgs = {
91
112
  migrationDirs: string[]
92
- isTestEnv: boolean
93
- isDevOrTestEnv: boolean
113
+ /**
114
+ * Override migration source loader to load migrations a custom way
115
+ */
116
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
117
+ migrationSource?: any // no type from knex for this
118
+ isTestEnv?: boolean
119
+ isDevOrTestEnv?: boolean
120
+ isDevEnv?: boolean
94
121
  logger: Logger
95
122
  maxConnections: number
96
123
  applicationName: string
@@ -114,7 +141,8 @@ export const createKnexConfig = ({
114
141
  caCertificate,
115
142
  connectionAcquireTimeoutMillis,
116
143
  connectionCreateTimeoutMillis,
117
- asyncStackTraces
144
+ asyncStackTraces,
145
+ migrationSource
118
146
  }: {
119
147
  connectionString?: string | undefined
120
148
  caCertificate?: string | undefined
@@ -127,8 +155,17 @@ export const createKnexConfig = ({
127
155
  client: 'pg',
128
156
  migrations: {
129
157
  extension: 'ts',
130
- loadExtensions: isTestEnv ? ['.js', '.ts'] : ['.js'],
131
- directory: migrationDirs
158
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
159
+ migrationSource,
160
+ // these warnings are annoying locally when switching branches:
161
+ disableMigrationsListValidation: !!isDevOrTestEnv,
162
+ ...(migrationSource
163
+ ? {}
164
+ : {
165
+ // Can only be set if migrationSource is not set
166
+ loadExtensions: isTestEnv ? ['.js', '.ts'] : ['.js'],
167
+ directory: migrationDirs
168
+ })
132
169
  },
133
170
  log: {
134
171
  warn(message: unknown) {
@@ -158,7 +195,7 @@ export const createKnexConfig = ({
158
195
  max: maxConnections,
159
196
  acquireTimeoutMillis: connectionAcquireTimeoutMillis, // If the maximum number of connections is reached, it wait for 16 seconds trying to acquire an existing connection before throwing a timeout error.
160
197
  createTimeoutMillis: connectionCreateTimeoutMillis // If no existing connection is available and the maximum number of connections is not yet reached, the pool will try to create a new connection for 5 seconds before throwing a timeout error.
161
- // createRetryIntervalMillis: 200, // Irrelevant & ignored because propogateCreateError is true.
198
+ // createRetryIntervalMillis: 200, // Irrelevant & ignored because propagateCreateError is true.
162
199
  // propagateCreateError: true // The propagateCreateError is set to true by default in Knex and throws a TimeoutError if the first create connection to the database fails. Knex recommends that this value is NOT set to false, despite what 'helpful' people on Stackoverflow tell you: https://github.com/knex/knex/issues/3455#issuecomment-535554401
163
200
  }
164
201
  }
@@ -184,3 +221,20 @@ export const configureKnexClient = (
184
221
  : undefined
185
222
  return { public: knex(knexConfig), private: privateConfig }
186
223
  }
224
+
225
+ export const getConnectionSettings = (
226
+ knex: Knex.Knex
227
+ ): {
228
+ connectionString?: string
229
+ ssl?: boolean
230
+ application_name?: string
231
+ } => {
232
+ return (knex.client as Knex.Knex.Client).connectionSettings
233
+ }
234
+
235
+ export const obfuscateConnectionString = (connectionString: string): string => {
236
+ const url = new URL(connectionString)
237
+ const obfuscatedUrl = new URL(url)
238
+ obfuscatedUrl.password = '****'
239
+ return obfuscatedUrl.toString()
240
+ }
@@ -0,0 +1,25 @@
1
+ /**
2
+ * IMPORTANT: This should not have any node-only code (e.g. Zod)
3
+ */
4
+
5
+ export type FeatureFlags = {
6
+ FF_AUTOMATE_MODULE_ENABLED: boolean
7
+ FF_GENDOAI_MODULE_ENABLED: boolean
8
+ FF_WORKSPACES_MODULE_ENABLED: boolean
9
+ FF_WORKSPACES_SSO_ENABLED: boolean
10
+ FF_GATEKEEPER_MODULE_ENABLED: boolean
11
+ FF_BILLING_INTEGRATION_ENABLED: boolean
12
+ FF_WORKSPACES_MULTI_REGION_ENABLED: boolean
13
+ FF_FORCE_ONBOARDING: boolean
14
+ FF_MOVE_PROJECT_REGION_ENABLED: boolean
15
+ FF_NO_PERSONAL_EMAILS_ENABLED: boolean
16
+ FF_RETRY_ERRORED_PREVIEWS_ENABLED: boolean
17
+ FF_PERSONAL_PROJECTS_LIMITS_ENABLED: boolean
18
+ FF_NEXT_GEN_FILE_IMPORTER_ENABLED: boolean
19
+ FF_RHINO_FILE_IMPORTER_ENABLED: boolean
20
+ FF_LEGACY_FILE_IMPORTS_ENABLED: boolean
21
+ FF_ACC_INTEGRATION_ENABLED: boolean
22
+ FF_DASHBOARDS_MODULE_ENABLED: boolean
23
+ FF_SAVED_VIEWS_ENABLED: boolean
24
+ FF_USERS_INVITE_SCOPE_IS_PUBLIC: boolean
25
+ }