@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,126 @@
1
+ import { describe, it, expect, afterEach, beforeEach } from 'vitest'
2
+ import { parseFeatureFlags } from './index.js'
3
+ import { FeatureFlags } from './featureFlags.js'
4
+
5
+ const originalDisableAllFfs = process.env.DISABLE_ALL_FFS || ''
6
+ const originalEnableAllFfs = process.env.ENABLE_ALL_FFS || ''
7
+
8
+ const setDisableAllFfs = (value: boolean) => {
9
+ process.env.DISABLE_ALL_FFS = value.toString()
10
+ }
11
+
12
+ const setEnableAllFfs = (value: boolean) => {
13
+ process.env.ENABLE_ALL_FFS = value.toString()
14
+ }
15
+
16
+ const resetEnv = () => {
17
+ process.env.DISABLE_ALL_FFS = originalDisableAllFfs
18
+ process.env.ENABLE_ALL_FFS = originalEnableAllFfs
19
+ }
20
+
21
+ describe('parseFeatureFlags', () => {
22
+ beforeEach(() => {
23
+ // Disable global "ALL FFs"/"NO FFs" modes for these tests, cause they break em
24
+ setDisableAllFfs(false)
25
+ setEnableAllFfs(false)
26
+ })
27
+
28
+ afterEach(() => {
29
+ resetEnv()
30
+ })
31
+
32
+ it('returns all defaults as false', () => {
33
+ const flags = parseFeatureFlags({})
34
+ for (const key of Object.keys(flags)) {
35
+ expect(flags[key as keyof FeatureFlags]).toBe(false)
36
+ }
37
+ })
38
+
39
+ it('parses explicit true/false values', () => {
40
+ const flags = parseFeatureFlags({
41
+ FF_AUTOMATE_MODULE_ENABLED: 'true',
42
+ FF_GENDOAI_MODULE_ENABLED: 'false',
43
+ FF_SAVED_VIEWS_ENABLED: 'true'
44
+ })
45
+ expect(flags.FF_AUTOMATE_MODULE_ENABLED).toBe(true)
46
+ expect(flags.FF_GENDOAI_MODULE_ENABLED).toBe(false)
47
+ expect(flags.FF_SAVED_VIEWS_ENABLED).toBe(true)
48
+ })
49
+
50
+ it('DISABLE_ALL_FFS disables all flags unless forceInputs is true', () => {
51
+ setDisableAllFfs(true)
52
+ const flags = parseFeatureFlags(
53
+ {
54
+ FF_AUTOMATE_MODULE_ENABLED: 'true',
55
+ FF_SAVED_VIEWS_ENABLED: 'true'
56
+ },
57
+ { forceInputs: false }
58
+ )
59
+ for (const key of Object.keys(flags)) {
60
+ expect(flags[key as keyof FeatureFlags]).toBe(false)
61
+ }
62
+ })
63
+
64
+ it('ENABLE_ALL_FFS enables all flags unless forceInputs is true', () => {
65
+ setEnableAllFfs(true)
66
+ const flags = parseFeatureFlags(
67
+ {
68
+ FF_AUTOMATE_MODULE_ENABLED: 'false',
69
+ FF_SAVED_VIEWS_ENABLED: 'false'
70
+ },
71
+ { forceInputs: false }
72
+ )
73
+ for (const key of Object.keys(flags)) {
74
+ expect(flags[key as keyof FeatureFlags]).toBe(true)
75
+ }
76
+ })
77
+
78
+ it('forceInputs=true preserves explicit input values even with DISABLE_ALL_FFS', () => {
79
+ setDisableAllFfs(true)
80
+ const flags = parseFeatureFlags(
81
+ {
82
+ FF_AUTOMATE_MODULE_ENABLED: 'true',
83
+ FF_SAVED_VIEWS_ENABLED: 'false'
84
+ },
85
+ { forceInputs: true }
86
+ )
87
+
88
+ expect(flags.FF_AUTOMATE_MODULE_ENABLED).toBe(true)
89
+ expect(flags.FF_SAVED_VIEWS_ENABLED).toBe(false)
90
+ // All others should be false
91
+ for (const key of Object.keys(flags)) {
92
+ if (key !== 'FF_AUTOMATE_MODULE_ENABLED' && key !== 'FF_SAVED_VIEWS_ENABLED') {
93
+ expect(flags[key as keyof FeatureFlags]).toBe(false)
94
+ }
95
+ }
96
+ })
97
+
98
+ it('forceInputs=true preserves explicit input values even with ENABLE_ALL_FFS', () => {
99
+ setEnableAllFfs(true)
100
+ const flags = parseFeatureFlags(
101
+ {
102
+ FF_AUTOMATE_MODULE_ENABLED: 'false',
103
+ FF_SAVED_VIEWS_ENABLED: 'true'
104
+ },
105
+ { forceInputs: true }
106
+ )
107
+
108
+ expect(flags.FF_AUTOMATE_MODULE_ENABLED).toBe(false)
109
+ expect(flags.FF_SAVED_VIEWS_ENABLED).toBe(true)
110
+ // All others should be true
111
+ for (const key of Object.keys(flags)) {
112
+ if (key !== 'FF_AUTOMATE_MODULE_ENABLED' && key !== 'FF_SAVED_VIEWS_ENABLED') {
113
+ expect(flags[key as keyof FeatureFlags]).toBe(true)
114
+ }
115
+ }
116
+ })
117
+
118
+ it('it can handle empty string env vars', () => {
119
+ const flags = parseFeatureFlags({
120
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
121
+ // @ts-expect-error
122
+ FF_AUTOMATE_MODULE_ENABLED: ''
123
+ })
124
+ expect(flags.FF_AUTOMATE_MODULE_ENABLED).toBe(false)
125
+ })
126
+ })
@@ -1,6 +1,7 @@
1
1
  import { has } from '#lodash'
2
2
  import { parseEnv } from 'znv'
3
3
  import { z } from 'zod'
4
+ import { FeatureFlags } from './featureFlags.js'
4
5
 
5
6
  // Convenience variable to override below individual feature flags, which has the effect of setting all to 'false' (disabled)
6
7
  // Takes precedence over ENABLE_ALL_FFS
@@ -17,7 +18,7 @@ export const parseFeatureFlags = (
17
18
  input: Partial<Record<keyof FeatureFlags, 'true' | 'false' | undefined>>,
18
19
  options?: Partial<{
19
20
  /**
20
- * Whether to prevent inputs from being overriden by disable/enable all
21
+ * Whether to prevent inputs from being overridden by disable/enable all
21
22
  * Default: true
22
23
  */
23
24
  forceInputs: boolean
@@ -25,10 +26,19 @@ export const parseFeatureFlags = (
25
26
  ): FeatureFlags => {
26
27
  const { forceInputs = true } = options || {}
27
28
 
29
+ // Clean up input: unset empty values
30
+ for (const key of Object.keys(input)) {
31
+ const typedKey = key as keyof FeatureFlags
32
+ const typedVal = input[typedKey] as unknown
33
+
34
+ if (typedVal === undefined || typedVal === '') {
35
+ delete input[typedKey]
36
+ }
37
+ }
38
+
28
39
  //INFO
29
40
  // As a convention all feature flags should be prefixed with a FF_
30
41
  const res = parseEnv(input, {
31
- // Enables the automate module.
32
42
  FF_AUTOMATE_MODULE_ENABLED: {
33
43
  schema: z.boolean(),
34
44
  description:
@@ -40,7 +50,6 @@ export const parseFeatureFlags = (
40
50
  description: 'Enables the gendo ai integration',
41
51
  defaults: { _: false }
42
52
  },
43
- //
44
53
  FF_WORKSPACES_MODULE_ENABLED: {
45
54
  schema: z.boolean(),
46
55
  description:
@@ -78,7 +87,6 @@ export const parseFeatureFlags = (
78
87
  'Enables workspaces multi region DB support. Requires FF_GATEKEEPER_MODULE_ENABLED and FF_WORKSPACES_MODULE_ENABLED to be true. This requires a valid Synchronized Enterprise Edition license in order to be enabled. See https://github.com/KingDaryush1/synchronized-server?tab=License-1-ov-file#readme',
79
88
  defaults: { _: false }
80
89
  },
81
- // Forces onboarding for all users
82
90
  FF_FORCE_ONBOARDING: {
83
91
  schema: z.boolean(),
84
92
  description: 'Forces onboarding flow for all users',
@@ -89,25 +97,59 @@ export const parseFeatureFlags = (
89
97
  description: 'Enable to not allow personal emails',
90
98
  defaults: { _: false }
91
99
  },
92
- //
93
100
  FF_MOVE_PROJECT_REGION_ENABLED: {
94
101
  schema: z.boolean(),
95
102
  description:
96
103
  "Enables endpoint(s) for updating a project's region. Requires FF_WORKSPACES_MULTI_REGION_ENABLED to be true (which indirectly requires FF_GATEKEEPER_MODULE_ENABLED and FF_WORKSPACES_MODULE_ENABLED to be true. This requires a valid Synchronized Enterprise Edition license in order to be enabled, see https://github.com/KingDaryush1/synchronized-server?tab=License-1-ov-file#readme",
97
104
  defaults: { _: false }
98
105
  },
99
- // Enable limits on personal projects
100
106
  FF_PERSONAL_PROJECTS_LIMITS_ENABLED: {
101
107
  schema: z.boolean(),
102
- description:
103
- 'Enables limits on personal projects. Requires FF_GATEKEEPER_MODULE_ENABLED and FF_WORKSPACES_MODULE_ENABLED to be true. This requires a valid Synchronized Enterprise Edition license in order to be enabled, see https://github.com/KingDaryush1/synchronized-server?tab=License-1-ov-file#readme',
104
108
  defaults: { _: false }
105
109
  },
106
- // Enables the new file importer
110
+ // Enables retrying errored previews
111
+ FF_RETRY_ERRORED_PREVIEWS_ENABLED: {
112
+ schema: z.boolean(),
113
+ description: 'Allows the retrying of previews which have previously failed.',
114
+ defaults: { _: false }
115
+ },
107
116
  FF_NEXT_GEN_FILE_IMPORTER_ENABLED: {
108
117
  schema: z.boolean(),
109
118
  description: 'Enables the new file importer.',
110
119
  defaults: { _: false }
120
+ },
121
+ FF_RHINO_FILE_IMPORTER_ENABLED: {
122
+ schema: z.boolean(),
123
+ description: 'Enables the Rhino based file importer.',
124
+ defaults: { _: false }
125
+ },
126
+ FF_LEGACY_FILE_IMPORTS_ENABLED: {
127
+ schema: z.boolean(),
128
+ description:
129
+ 'Enables the legacy file importer. This proxies file uploads via REST API on the server instead of directly PUTing files to S3 via pre-signed urls.',
130
+ defaults: { _: false }
131
+ },
132
+ FF_ACC_INTEGRATION_ENABLED: {
133
+ schema: z.boolean(),
134
+ description:
135
+ 'Enables the integration with ACC. This synchronizes models with specified ACC assets.',
136
+ defaults: { _: false }
137
+ },
138
+ FF_DASHBOARDS_MODULE_ENABLED: {
139
+ schema: z.boolean(),
140
+ description: 'Enables the dashboards module.',
141
+ defaults: { _: false }
142
+ },
143
+ FF_SAVED_VIEWS_ENABLED: {
144
+ schema: z.boolean(),
145
+ description: 'Enables the saved views feature for project models',
146
+ defaults: { _: false }
147
+ },
148
+ FF_USERS_INVITE_SCOPE_IS_PUBLIC: {
149
+ schema: z.boolean(),
150
+ description:
151
+ 'Enables Personal Access Tokens (PAT) to be created with users:invite scope. **WARNING** This can be used to spam invitations to any email address. It is not advised to enable this on servers which are open to public account registration or to which untrusted users have been, or can be, invited.',
152
+ defaults: { _: false }
111
153
  }
112
154
  })
113
155
 
@@ -127,21 +169,6 @@ export const parseFeatureFlags = (
127
169
 
128
170
  let parsedFlags: FeatureFlags | undefined
129
171
 
130
- export type FeatureFlags = {
131
- FF_AUTOMATE_MODULE_ENABLED: boolean
132
- FF_GENDOAI_MODULE_ENABLED: boolean
133
- FF_WORKSPACES_MODULE_ENABLED: boolean
134
- FF_WORKSPACES_SSO_ENABLED: boolean
135
- FF_GATEKEEPER_MODULE_ENABLED: boolean
136
- FF_BILLING_INTEGRATION_ENABLED: boolean
137
- FF_WORKSPACES_MULTI_REGION_ENABLED: boolean
138
- FF_FORCE_ONBOARDING: boolean
139
- FF_MOVE_PROJECT_REGION_ENABLED: boolean
140
- FF_NO_PERSONAL_EMAILS_ENABLED: boolean
141
- FF_PERSONAL_PROJECTS_LIMITS_ENABLED: boolean
142
- FF_NEXT_GEN_FILE_IMPORTER_ENABLED: boolean
143
- }
144
-
145
172
  export function getFeatureFlags(): FeatureFlags {
146
173
  //@ts-expect-error this way, the parse function typing is a lot better
147
174
  if (!parsedFlags) parsedFlags = parseFeatureFlags(process.env, { forceInputs: false })
@@ -0,0 +1,11 @@
1
+ import { fileURLToPath } from 'url'
2
+ import { dirname } from 'path'
3
+
4
+ /**
5
+ * Feed in import.meta and get the module's filesystem location
6
+ */
7
+ export const getModuleDirectory = (meta: ImportMeta): string => {
8
+ const __filename = fileURLToPath(meta.url)
9
+ const __dirname = dirname(__filename)
10
+ return __dirname
11
+ }
@@ -0,0 +1,42 @@
1
+ import { isValidBase64Image } from './base64.js'
2
+ import { describe, it, expect } from 'vitest'
3
+
4
+ describe('isValidBase64Image', () => {
5
+ it('returns true for a valid base64 PNG image', () => {
6
+ const validPng = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA'
7
+ expect(isValidBase64Image(validPng)).toBe(true)
8
+ })
9
+
10
+ it('returns true for a valid base64 JPEG image', () => {
11
+ const validJpeg = 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD'
12
+ expect(isValidBase64Image(validJpeg)).toBe(true)
13
+ })
14
+
15
+ it('returns false if string does not start with data:image/', () => {
16
+ const invalid = 'data:text/plain;base64,SGVsbG8gd29ybGQ='
17
+ expect(isValidBase64Image(invalid)).toBe(false)
18
+ })
19
+
20
+ it('returns false if there is no comma separator', () => {
21
+ const invalid = 'data:image/png;base64iVBORw0KGgoAAAANSUhEUgAAAAUA'
22
+ expect(isValidBase64Image(invalid)).toBe(false)
23
+ })
24
+
25
+ it('returns false if base64 part is invalid', () => {
26
+ const invalid = 'data:image/png;base64,not_base64!'
27
+ expect(isValidBase64Image(invalid)).toBe(false)
28
+ })
29
+
30
+ it('returns false for empty string', () => {
31
+ expect(isValidBase64Image('')).toBe(false)
32
+ })
33
+
34
+ it('returns false for data:image/ with empty base64', () => {
35
+ expect(isValidBase64Image('data:image/png;base64,')).toBe(false)
36
+ })
37
+
38
+ it('returns true for valid base64 with whitespace', () => {
39
+ const validWithWhitespace = 'data:image/png;base64,iVBOR w0KGgoA AAANSUhEUgAAAAUA'
40
+ expect(isValidBase64Image(validWithWhitespace)).toBe(true)
41
+ })
42
+ })
@@ -0,0 +1,15 @@
1
+ export const isValidBase64Image = (data: string): boolean => {
2
+ if (!data.startsWith('data:image/')) return false
3
+
4
+ const parts = data.split(',')
5
+ if (parts.length !== 2) return false
6
+
7
+ // Remove all whitespace characters from base64 string
8
+ const base64String = parts[1].replace(/\s+/g, '')
9
+
10
+ // Validate that the cleaned string only has valid base64 characters
11
+ const base64Regex = /^[A-Za-z0-9+/]+={0,2}$/
12
+ if (!base64Regex.test(base64String)) return false
13
+
14
+ return true
15
+ }
package/src/index.ts CHANGED
@@ -1,3 +1,4 @@
1
+ /** TODO: We should get rid of the index barrel file at some point entirely and exclusively rely on exports maps */
1
2
  export * as RichTextEditor from './rich-text-editor/index.js'
2
3
  export * as SynchronizedViewer from './viewer/index.js'
3
4
  export * as Automate from './automate/index.js'
@@ -12,6 +12,9 @@ type LogFormatter = (logObject: Record<string, unknown>) => Record<string, unkno
12
12
  const allowPrettyDebugger = ['1', 'true'].includes(
13
13
  process.env.ALLOW_PRETTY_DEBUGGER || 'false'
14
14
  )
15
+ const debugNamespaces = (process.env.LOG_FILTER || '')
16
+ .split(',')
17
+ .filter((s) => !!s?.length)
15
18
 
16
19
  const defaultLevelFormatterFactory =
17
20
  (pretty: boolean): LogLevelFormatter =>
@@ -42,7 +45,23 @@ export function getLogger(
42
45
  messageKey: pretty ? 'msg' : '@mt',
43
46
  level: minimumLoggedLevel,
44
47
  // when not pretty, we need the time in the clef appropriate field, not from pino
45
- timestamp: pretty ? pino.stdTimeFunctions.isoTime : false
48
+ timestamp: pretty ? pino.stdTimeFunctions.isoTime : false,
49
+ hooks: {
50
+ logMethod(args, method) {
51
+ // Invoke as is
52
+ if (!debugNamespaces.length) {
53
+ return method.apply(this, args)
54
+ }
55
+
56
+ // Filter out if component not in allowed debug namespaces
57
+ const component = (this.bindings() as { component: string }).component
58
+ if (debugNamespaces.includes(component)) {
59
+ return method.apply(this, args)
60
+ }
61
+
62
+ // Otherwise, skip actually logging
63
+ }
64
+ }
46
65
  }
47
66
 
48
67
  // pino-pretty hangs in debugger mode in node 22 for some (Ubuntu/WSL2?), dunno why
@@ -52,7 +71,7 @@ export function getLogger(
52
71
  options: {
53
72
  colorize: true,
54
73
  destination: 2, //stderr
55
- ignore: 'time',
74
+ // ignore: 'time',
56
75
  levelFirst: true,
57
76
  singleLine: true
58
77
  }
@@ -60,6 +79,7 @@ export function getLogger(
60
79
  }
61
80
 
62
81
  logger = pino(pinoOptions)
82
+
63
83
  return logger
64
84
  }
65
85
 
@@ -2,12 +2,14 @@ import Bull from 'bull'
2
2
  import { Redis } from 'ioredis'
3
3
  import { isRedisReady } from '../redis/isRedisReady.js'
4
4
 
5
- // we're caching this here, so that there is one client for the app lifecycle
6
-
7
5
  type ClientCache = Record<string, { client?: Redis; subscriber?: Redis }>
8
6
 
7
+ // we're caching this here, so that there is one client for the app lifecycle
9
8
  const clientCache: ClientCache = {}
10
9
 
10
+ // so we can get all active queues for monitoring
11
+ const queueCache: Record<string, Bull.Queue> = {}
12
+
11
13
  export const initializeQueue = async <T>({
12
14
  queueName,
13
15
  redisUrl,
@@ -57,13 +59,23 @@ export const initializeQueue = async <T>({
57
59
  }
58
60
  }
59
61
  }
62
+
60
63
  const newQueue = new Bull<T>(queueName, opts)
61
- // bull does not check if redis is ready...
62
- //
63
- // logger.info('Checking Redis connection is ready...')
64
+ queueCache[queueName] = newQueue
65
+
66
+ // When newQueue closed, remove from cache
67
+ newQueue.on('close', () => {
68
+ delete queueCache[queueName]
69
+ })
70
+ newQueue.client.on('end', () => {
71
+ delete queueCache[queueName]
72
+ })
73
+
64
74
  if (!clientCache[redisUrl].client)
65
75
  throw new Error('Redis client not properly initialized')
76
+
66
77
  await isRedisReady(clientCache[redisUrl].client)
67
- // await isRedisReady(clientCache[redisUrl].subscriber)
68
78
  return await newQueue.isReady()
69
79
  }
80
+
81
+ export const getActiveQueues = () => ({ ...queueCache })
@@ -1,7 +1,21 @@
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
1
2
  import { trim, isNumber } from '#lodash'
2
- import type { JSONContent } from '@tiptap/core'
3
3
  import type { Optional } from '../../core/helpers/utilityTypes.js'
4
4
 
5
+ // TODO: had to copy out of tiptap/core, because of a build issue w/ a type-only import from CJS
6
+ type JSONContent = {
7
+ [key: string]: any
8
+ type?: string | undefined
9
+ attrs?: Record<string, any> | undefined
10
+ content?: JSONContent[]
11
+ marks?: {
12
+ type: string
13
+ attrs?: Record<string, any>
14
+ [key: string]: any
15
+ }[]
16
+ text?: string
17
+ }
18
+
5
19
  /**
6
20
  * Used to match URLs that can appear anywhere in a string, not perfect, but crafting a perfect
7
21
  * URL regex is quite complex and we only need this for legacy comments
@@ -0,0 +1,12 @@
1
+ import { describe, expect, it } from 'vitest'
2
+ import { isUngroupedGroup } from './defaultGroup.js'
3
+
4
+ describe('isUngroupedGroup', () => {
5
+ it('should return true for ungrouped groups', () => {
6
+ expect(isUngroupedGroup('default-group')).toBe(true)
7
+ })
8
+
9
+ it('should return false for grouped groups', () => {
10
+ expect(isUngroupedGroup('custom-group')).toBe(false)
11
+ })
12
+ })
@@ -0,0 +1,70 @@
1
+ import { isObjectLike } from '#lodash'
2
+ import { Nullable } from '../../core/helpers/utilityTypes.js'
3
+ import { base64Decode, base64Encode } from '../../core/utils/base64.js'
4
+ import {
5
+ isModelResource,
6
+ isObjectResource,
7
+ resourceBuilder,
8
+ ViewerResourcesTarget
9
+ } from '../../viewer/helpers/route.js'
10
+
11
+ /**
12
+ * Title used for the default 'Ungrouped Scenes' group in the saved views panel.
13
+ */
14
+ export const ungroupedScenesGroupTitle = 'Ungrouped'
15
+
16
+ export type DefaultGroupMetadata = {
17
+ resourceIds: string[]
18
+ projectId: string
19
+ name: 'Default Group'
20
+ }
21
+
22
+ /**
23
+ * Converts a resourceId string into a more abstract format used by groups that disregards
24
+ * specific versions of models and objects.
25
+ */
26
+ export const formatResourceIdsForGroup = (resources: ViewerResourcesTarget) => {
27
+ return resourceBuilder()
28
+ .addResources(resources)
29
+ .clearVersions()
30
+ .filter((r) => {
31
+ // filter out any resources that are not ViewerModelResource or ViewerObjectResource
32
+ return isModelResource(r) || isObjectResource(r)
33
+ })
34
+ .map((r) => r.toString())
35
+ }
36
+
37
+ export const buildDefaultGroupId = (params: {
38
+ resourceIds: string[]
39
+ projectId: string
40
+ }) => {
41
+ const payload: DefaultGroupMetadata = {
42
+ resourceIds: formatResourceIdsForGroup(params.resourceIds),
43
+ projectId: params.projectId,
44
+ name: 'Default Group'
45
+ }
46
+ const str = JSON.stringify(payload)
47
+ return 'default-' + base64Encode(str)
48
+ }
49
+
50
+ export const decodeDefaultGroupId = (id: string): Nullable<DefaultGroupMetadata> => {
51
+ try {
52
+ if (!isUngroupedGroup(id)) return null
53
+ const json = base64Decode(id.replace('default-', ''))
54
+ const obj = JSON.parse(json) as Record<string, unknown>
55
+ if (
56
+ !isObjectLike(obj) ||
57
+ !obj.resourceIds ||
58
+ !obj.projectId ||
59
+ obj.name !== 'Default Group'
60
+ ) {
61
+ throw new Error('Invalid saved view group ID format')
62
+ }
63
+ return obj as Nullable<DefaultGroupMetadata>
64
+ } catch {
65
+ // Suppress - not the default group ID
66
+ return null
67
+ }
68
+ }
69
+
70
+ export const isUngroupedGroup = (groupId: string) => groupId.startsWith('default-')
@@ -0,0 +1 @@
1
+ export * from './helpers/defaultGroup.js'
@@ -4,9 +4,21 @@ import { Comment } from '../authz/domain/comments/types.js'
4
4
  import { nanoid } from 'nanoid'
5
5
  import { Model } from '../authz/domain/models/types.js'
6
6
  import { Version } from '../authz/domain/versions/types.js'
7
- import { Workspace } from '../authz/domain/workspaces/types.js'
8
- import { FeatureFlags, parseFeatureFlags } from '../environment/index.js'
7
+ import {
8
+ Workspace,
9
+ WorkspaceSsoProvider,
10
+ WorkspaceSsoSession
11
+ } from '../authz/domain/workspaces/types.js'
12
+ import { parseFeatureFlags } from '../environment/index.js'
9
13
  import { mapValues } from 'lodash'
14
+ import { WorkspaceFeatureFlags, WorkspacePlan } from '../workspaces/index.js'
15
+ import { TIME_MS } from '../core/index.js'
16
+ import {
17
+ SavedView,
18
+ SavedViewGroup,
19
+ SavedViewVisibility
20
+ } from '../authz/domain/savedViews/types.js'
21
+ import { FeatureFlags } from '../environment/featureFlags.js'
10
22
 
11
23
  export const fakeGetFactory =
12
24
  <T extends Record<string, unknown>>(defaults: () => T) =>
@@ -28,7 +40,27 @@ export const getProjectFake = fakeGetFactory<Project>(() => ({
28
40
 
29
41
  export const getWorkspaceFake = fakeGetFactory<Workspace>(() => ({
30
42
  id: nanoid(10),
31
- slug: nanoid(10)
43
+ slug: nanoid(10),
44
+ isExclusive: false
45
+ }))
46
+
47
+ export const getWorkspacePlanFake = fakeGetFactory<WorkspacePlan>(() => ({
48
+ name: 'team',
49
+ status: 'valid',
50
+ workspaceId: nanoid(10),
51
+ createdAt: new Date(Date.now() - TIME_MS.day),
52
+ updatedAt: new Date(Date.now() - TIME_MS.day),
53
+ featureFlags: WorkspaceFeatureFlags.none
54
+ }))
55
+
56
+ export const getWorkspaceSsoProviderFake = fakeGetFactory<WorkspaceSsoProvider>(() => ({
57
+ providerId: nanoid(10)
58
+ }))
59
+
60
+ export const getWorkspaceSsoSessionFake = fakeGetFactory<WorkspaceSsoSession>(() => ({
61
+ userId: nanoid(10),
62
+ providerId: nanoid(10),
63
+ validUntil: new Date(Date.now() + TIME_MS.day)
32
64
  }))
33
65
 
34
66
  export const getCommentFake = fakeGetFactory<Comment>(() => ({
@@ -50,5 +82,24 @@ export const getVersionFake = fakeGetFactory<Version>(() => ({
50
82
  authorId: nanoid(10)
51
83
  }))
52
84
 
53
- export const getEnvFake = (overrides?: Partial<FeatureFlags>) =>
85
+ export const getSavedViewFake = fakeGetFactory<SavedView>(() => ({
86
+ id: nanoid(10),
87
+ name: nanoid(10),
88
+ authorId: nanoid(10),
89
+ projectId: nanoid(10),
90
+ groupId: null,
91
+ visibility: SavedViewVisibility.public,
92
+ resourceIds: [nanoid(10)]
93
+ }))
94
+
95
+ export const getSavedViewGroupFake = fakeGetFactory<SavedViewGroup>(() => ({
96
+ id: nanoid(10),
97
+ name: nanoid(10),
98
+ projectId: nanoid(10),
99
+ resourceIds: [nanoid(10)],
100
+ authorId: nanoid(10)
101
+ }))
102
+
103
+ // eslint-disable-next-line @typescript-eslint/require-await
104
+ export const getEnvFake = (overrides?: Partial<FeatureFlags>) => async () =>
54
105
  parseFeatureFlags(mapValues(overrides || {}, (v) => `${v}` as 'true' | 'false'))