@budibase/backend-core 3.2.26 → 3.2.27

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 (466) hide show
  1. package/dist/index.js +62 -23
  2. package/dist/index.js.map +4 -4
  3. package/dist/index.js.meta.json +1 -1
  4. package/dist/package.json +7 -7
  5. package/dist/plugins.js.map +2 -2
  6. package/dist/plugins.js.meta.json +1 -1
  7. package/dist/src/events/processors/types.d.ts +1 -1
  8. package/dist/src/events/publishers/index.d.ts +1 -0
  9. package/dist/src/events/publishers/rowAction.d.ts +6 -0
  10. package/dist/src/events/publishers/table.d.ts +2 -2
  11. package/dist/src/events/publishers/view.d.ts +17 -6
  12. package/dist/src/index.d.ts +11 -11
  13. package/dist/src/platform/platformDb.d.ts +1 -1
  14. package/dist/src/queue/queue.d.ts +1 -1
  15. package/dist/src/tenancy/db.d.ts +1 -1
  16. package/package.json +7 -7
  17. package/dist/jest.config.js +0 -25
  18. package/dist/jest.config.js.map +0 -1
  19. package/dist/src/accounts/accounts.js +0 -83
  20. package/dist/src/accounts/accounts.js.map +0 -1
  21. package/dist/src/accounts/api.js +0 -102
  22. package/dist/src/accounts/api.js.map +0 -1
  23. package/dist/src/accounts/index.js +0 -18
  24. package/dist/src/accounts/index.js.map +0 -1
  25. package/dist/src/auth/auth.js +0 -198
  26. package/dist/src/auth/auth.js.map +0 -1
  27. package/dist/src/auth/index.js +0 -18
  28. package/dist/src/auth/index.js.map +0 -1
  29. package/dist/src/blacklist/blacklist.js +0 -75
  30. package/dist/src/blacklist/blacklist.js.map +0 -1
  31. package/dist/src/blacklist/index.js +0 -18
  32. package/dist/src/blacklist/index.js.map +0 -1
  33. package/dist/src/cache/appMetadata.js +0 -96
  34. package/dist/src/cache/appMetadata.js.map +0 -1
  35. package/dist/src/cache/base/index.js +0 -189
  36. package/dist/src/cache/base/index.js.map +0 -1
  37. package/dist/src/cache/docWritethrough.js +0 -123
  38. package/dist/src/cache/docWritethrough.js.map +0 -1
  39. package/dist/src/cache/generic.js +0 -37
  40. package/dist/src/cache/generic.js.map +0 -1
  41. package/dist/src/cache/index.js +0 -48
  42. package/dist/src/cache/index.js.map +0 -1
  43. package/dist/src/cache/invite.js +0 -128
  44. package/dist/src/cache/invite.js.map +0 -1
  45. package/dist/src/cache/passwordReset.js +0 -92
  46. package/dist/src/cache/passwordReset.js.map +0 -1
  47. package/dist/src/cache/user.js +0 -183
  48. package/dist/src/cache/user.js.map +0 -1
  49. package/dist/src/cache/writethrough.js +0 -170
  50. package/dist/src/cache/writethrough.js.map +0 -1
  51. package/dist/src/configs/configs.js +0 -294
  52. package/dist/src/configs/configs.js.map +0 -1
  53. package/dist/src/configs/index.js +0 -18
  54. package/dist/src/configs/index.js.map +0 -1
  55. package/dist/src/constants/db.js +0 -75
  56. package/dist/src/constants/db.js.map +0 -1
  57. package/dist/src/constants/index.js +0 -19
  58. package/dist/src/constants/index.js.map +0 -1
  59. package/dist/src/constants/misc.js +0 -40
  60. package/dist/src/constants/misc.js.map +0 -1
  61. package/dist/src/context/Context.js +0 -14
  62. package/dist/src/context/Context.js.map +0 -1
  63. package/dist/src/context/identity.js +0 -81
  64. package/dist/src/context/identity.js.map +0 -1
  65. package/dist/src/context/index.js +0 -44
  66. package/dist/src/context/index.js.map +0 -1
  67. package/dist/src/context/mainContext.js +0 -446
  68. package/dist/src/context/mainContext.js.map +0 -1
  69. package/dist/src/context/types.js +0 -3
  70. package/dist/src/context/types.js.map +0 -1
  71. package/dist/src/db/Replication.js +0 -90
  72. package/dist/src/db/Replication.js.map +0 -1
  73. package/dist/src/db/couch/DatabaseImpl.js +0 -475
  74. package/dist/src/db/couch/DatabaseImpl.js.map +0 -1
  75. package/dist/src/db/couch/connections.js +0 -101
  76. package/dist/src/db/couch/connections.js.map +0 -1
  77. package/dist/src/db/couch/index.js +0 -26
  78. package/dist/src/db/couch/index.js.map +0 -1
  79. package/dist/src/db/couch/pouchDB.js +0 -108
  80. package/dist/src/db/couch/pouchDB.js.map +0 -1
  81. package/dist/src/db/couch/pouchDump.js +0 -2
  82. package/dist/src/db/couch/pouchDump.js.map +0 -1
  83. package/dist/src/db/couch/utils.js +0 -60
  84. package/dist/src/db/couch/utils.js.map +0 -1
  85. package/dist/src/db/db.js +0 -47
  86. package/dist/src/db/db.js.map +0 -1
  87. package/dist/src/db/errors.js +0 -21
  88. package/dist/src/db/errors.js.map +0 -1
  89. package/dist/src/db/index.js +0 -58
  90. package/dist/src/db/index.js.map +0 -1
  91. package/dist/src/db/instrumentation.js +0 -202
  92. package/dist/src/db/instrumentation.js.map +0 -1
  93. package/dist/src/db/lucene.js +0 -638
  94. package/dist/src/db/lucene.js.map +0 -1
  95. package/dist/src/db/searchIndexes/index.js +0 -18
  96. package/dist/src/db/searchIndexes/index.js.map +0 -1
  97. package/dist/src/db/searchIndexes/searchIndexes.js +0 -76
  98. package/dist/src/db/searchIndexes/searchIndexes.js.map +0 -1
  99. package/dist/src/db/utils.js +0 -212
  100. package/dist/src/db/utils.js.map +0 -1
  101. package/dist/src/db/views.js +0 -224
  102. package/dist/src/db/views.js.map +0 -1
  103. package/dist/src/docIds/conversions.js +0 -62
  104. package/dist/src/docIds/conversions.js.map +0 -1
  105. package/dist/src/docIds/ids.js +0 -125
  106. package/dist/src/docIds/ids.js.map +0 -1
  107. package/dist/src/docIds/index.js +0 -19
  108. package/dist/src/docIds/index.js.map +0 -1
  109. package/dist/src/docIds/newid.js +0 -8
  110. package/dist/src/docIds/newid.js.map +0 -1
  111. package/dist/src/docIds/params.js +0 -141
  112. package/dist/src/docIds/params.js.map +0 -1
  113. package/dist/src/docUpdates/index.js +0 -35
  114. package/dist/src/docUpdates/index.js.map +0 -1
  115. package/dist/src/environment.js +0 -182
  116. package/dist/src/environment.js.map +0 -1
  117. package/dist/src/errors/errors.js +0 -97
  118. package/dist/src/errors/errors.js.map +0 -1
  119. package/dist/src/errors/index.js +0 -18
  120. package/dist/src/errors/index.js.map +0 -1
  121. package/dist/src/events/analytics.js +0 -52
  122. package/dist/src/events/analytics.js.map +0 -1
  123. package/dist/src/events/asyncEvents/index.js +0 -19
  124. package/dist/src/events/asyncEvents/index.js.map +0 -1
  125. package/dist/src/events/asyncEvents/publisher.js +0 -26
  126. package/dist/src/events/asyncEvents/publisher.js.map +0 -1
  127. package/dist/src/events/asyncEvents/queue.js +0 -26
  128. package/dist/src/events/asyncEvents/queue.js.map +0 -1
  129. package/dist/src/events/backfill.js +0 -189
  130. package/dist/src/events/backfill.js.map +0 -1
  131. package/dist/src/events/documentId.js +0 -27
  132. package/dist/src/events/documentId.js.map +0 -1
  133. package/dist/src/events/events.js +0 -87
  134. package/dist/src/events/events.js.map +0 -1
  135. package/dist/src/events/identification.js +0 -299
  136. package/dist/src/events/identification.js.map +0 -1
  137. package/dist/src/events/index.js +0 -59
  138. package/dist/src/events/index.js.map +0 -1
  139. package/dist/src/events/processors/AnalyticsProcessor.js +0 -103
  140. package/dist/src/events/processors/AnalyticsProcessor.js.map +0 -1
  141. package/dist/src/events/processors/AuditLogsProcessor.js +0 -86
  142. package/dist/src/events/processors/AuditLogsProcessor.js.map +0 -1
  143. package/dist/src/events/processors/LoggingProcessor.js +0 -47
  144. package/dist/src/events/processors/LoggingProcessor.js.map +0 -1
  145. package/dist/src/events/processors/Processors.js +0 -52
  146. package/dist/src/events/processors/Processors.js.map +0 -1
  147. package/dist/src/events/processors/async/DocumentUpdateProcessor.js +0 -44
  148. package/dist/src/events/processors/async/DocumentUpdateProcessor.js.map +0 -1
  149. package/dist/src/events/processors/index.js +0 -23
  150. package/dist/src/events/processors/index.js.map +0 -1
  151. package/dist/src/events/processors/posthog/PosthogProcessor.js +0 -149
  152. package/dist/src/events/processors/posthog/PosthogProcessor.js.map +0 -1
  153. package/dist/src/events/processors/posthog/index.js +0 -8
  154. package/dist/src/events/processors/posthog/index.js.map +0 -1
  155. package/dist/src/events/processors/posthog/rateLimiting.js +0 -129
  156. package/dist/src/events/processors/posthog/rateLimiting.js.map +0 -1
  157. package/dist/src/events/processors/types.js +0 -3
  158. package/dist/src/events/processors/types.js.map +0 -1
  159. package/dist/src/events/publishers/account.js +0 -43
  160. package/dist/src/events/publishers/account.js.map +0 -1
  161. package/dist/src/events/publishers/ai.js +0 -30
  162. package/dist/src/events/publishers/ai.js.map +0 -1
  163. package/dist/src/events/publishers/app.js +0 -166
  164. package/dist/src/events/publishers/app.js.map +0 -1
  165. package/dist/src/events/publishers/auditLog.js +0 -34
  166. package/dist/src/events/publishers/auditLog.js.map +0 -1
  167. package/dist/src/events/publishers/auth.js +0 -80
  168. package/dist/src/events/publishers/auth.js.map +0 -1
  169. package/dist/src/events/publishers/automation.js +0 -117
  170. package/dist/src/events/publishers/automation.js.map +0 -1
  171. package/dist/src/events/publishers/backfill.js +0 -85
  172. package/dist/src/events/publishers/backfill.js.map +0 -1
  173. package/dist/src/events/publishers/backup.js +0 -41
  174. package/dist/src/events/publishers/backup.js.map +0 -1
  175. package/dist/src/events/publishers/datasource.js +0 -54
  176. package/dist/src/events/publishers/datasource.js.map +0 -1
  177. package/dist/src/events/publishers/email.js +0 -30
  178. package/dist/src/events/publishers/email.js.map +0 -1
  179. package/dist/src/events/publishers/environmentVariable.js +0 -44
  180. package/dist/src/events/publishers/environmentVariable.js.map +0 -1
  181. package/dist/src/events/publishers/group.js +0 -107
  182. package/dist/src/events/publishers/group.js.map +0 -1
  183. package/dist/src/events/publishers/index.js +0 -57
  184. package/dist/src/events/publishers/index.js.map +0 -1
  185. package/dist/src/events/publishers/installation.js +0 -52
  186. package/dist/src/events/publishers/installation.js.map +0 -1
  187. package/dist/src/events/publishers/layout.js +0 -34
  188. package/dist/src/events/publishers/layout.js.map +0 -1
  189. package/dist/src/events/publishers/license.js +0 -77
  190. package/dist/src/events/publishers/license.js.map +0 -1
  191. package/dist/src/events/publishers/org.js +0 -52
  192. package/dist/src/events/publishers/org.js.map +0 -1
  193. package/dist/src/events/publishers/plugin.js +0 -55
  194. package/dist/src/events/publishers/plugin.js.map +0 -1
  195. package/dist/src/events/publishers/query.js +0 -74
  196. package/dist/src/events/publishers/query.js.map +0 -1
  197. package/dist/src/events/publishers/role.js +0 -69
  198. package/dist/src/events/publishers/role.js.map +0 -1
  199. package/dist/src/events/publishers/rows.js +0 -32
  200. package/dist/src/events/publishers/rows.js.map +0 -1
  201. package/dist/src/events/publishers/screen.js +0 -46
  202. package/dist/src/events/publishers/screen.js.map +0 -1
  203. package/dist/src/events/publishers/serve.js +0 -47
  204. package/dist/src/events/publishers/serve.js.map +0 -1
  205. package/dist/src/events/publishers/table.js +0 -77
  206. package/dist/src/events/publishers/table.js.map +0 -1
  207. package/dist/src/events/publishers/user.js +0 -201
  208. package/dist/src/events/publishers/user.js.map +0 -1
  209. package/dist/src/events/publishers/view.js +0 -111
  210. package/dist/src/events/publishers/view.js.map +0 -1
  211. package/dist/src/features/features.js +0 -271
  212. package/dist/src/features/features.js.map +0 -1
  213. package/dist/src/features/index.js +0 -42
  214. package/dist/src/features/index.js.map +0 -1
  215. package/dist/src/features/tests/utils.js +0 -56
  216. package/dist/src/features/tests/utils.js.map +0 -1
  217. package/dist/src/helpers.js +0 -13
  218. package/dist/src/helpers.js.map +0 -1
  219. package/dist/src/index.js +0 -99
  220. package/dist/src/index.js.map +0 -1
  221. package/dist/src/installation.js +0 -159
  222. package/dist/src/installation.js.map +0 -1
  223. package/dist/src/logging/alerts.js +0 -23
  224. package/dist/src/logging/alerts.js.map +0 -1
  225. package/dist/src/logging/correlation/correlation.js +0 -18
  226. package/dist/src/logging/correlation/correlation.js.map +0 -1
  227. package/dist/src/logging/correlation/index.js +0 -18
  228. package/dist/src/logging/correlation/index.js.map +0 -1
  229. package/dist/src/logging/correlation/middleware.js +0 -17
  230. package/dist/src/logging/correlation/middleware.js.map +0 -1
  231. package/dist/src/logging/index.js +0 -45
  232. package/dist/src/logging/index.js.map +0 -1
  233. package/dist/src/logging/pino/logger.js +0 -234
  234. package/dist/src/logging/pino/logger.js.map +0 -1
  235. package/dist/src/logging/pino/middleware.js +0 -46
  236. package/dist/src/logging/pino/middleware.js.map +0 -1
  237. package/dist/src/logging/system.js +0 -110
  238. package/dist/src/logging/system.js.map +0 -1
  239. package/dist/src/middleware/adminOnly.js +0 -19
  240. package/dist/src/middleware/adminOnly.js.map +0 -1
  241. package/dist/src/middleware/auditLog.js +0 -18
  242. package/dist/src/middleware/auditLog.js.map +0 -1
  243. package/dist/src/middleware/authenticated.js +0 -254
  244. package/dist/src/middleware/authenticated.js.map +0 -1
  245. package/dist/src/middleware/builderOnly.js +0 -33
  246. package/dist/src/middleware/builderOnly.js.map +0 -1
  247. package/dist/src/middleware/builderOrAdmin.js +0 -33
  248. package/dist/src/middleware/builderOrAdmin.js.map +0 -1
  249. package/dist/src/middleware/contentSecurityPolicy.js +0 -124
  250. package/dist/src/middleware/contentSecurityPolicy.js.map +0 -1
  251. package/dist/src/middleware/csrf.js +0 -81
  252. package/dist/src/middleware/csrf.js.map +0 -1
  253. package/dist/src/middleware/errorHandling.js +0 -88
  254. package/dist/src/middleware/errorHandling.js.map +0 -1
  255. package/dist/src/middleware/index.js +0 -79
  256. package/dist/src/middleware/index.js.map +0 -1
  257. package/dist/src/middleware/internalApi.js +0 -30
  258. package/dist/src/middleware/internalApi.js.map +0 -1
  259. package/dist/src/middleware/ip.js +0 -23
  260. package/dist/src/middleware/ip.js.map +0 -1
  261. package/dist/src/middleware/joi-validator.js +0 -53
  262. package/dist/src/middleware/joi-validator.js.map +0 -1
  263. package/dist/src/middleware/matchers.js +0 -36
  264. package/dist/src/middleware/matchers.js.map +0 -1
  265. package/dist/src/middleware/passport/datasource/google.js +0 -107
  266. package/dist/src/middleware/passport/datasource/google.js.map +0 -1
  267. package/dist/src/middleware/passport/local.js +0 -91
  268. package/dist/src/middleware/passport/local.js.map +0 -1
  269. package/dist/src/middleware/passport/sso/google.js +0 -98
  270. package/dist/src/middleware/passport/sso/google.js.map +0 -1
  271. package/dist/src/middleware/passport/sso/oidc.js +0 -158
  272. package/dist/src/middleware/passport/sso/oidc.js.map +0 -1
  273. package/dist/src/middleware/passport/sso/sso.js +0 -150
  274. package/dist/src/middleware/passport/sso/sso.js.map +0 -1
  275. package/dist/src/middleware/passport/utils.js +0 -75
  276. package/dist/src/middleware/passport/utils.js.map +0 -1
  277. package/dist/src/middleware/querystringToBody.js +0 -29
  278. package/dist/src/middleware/querystringToBody.js.map +0 -1
  279. package/dist/src/middleware/tenancy.js +0 -37
  280. package/dist/src/middleware/tenancy.js.map +0 -1
  281. package/dist/src/migrations/definitions.js +0 -39
  282. package/dist/src/migrations/definitions.js.map +0 -1
  283. package/dist/src/migrations/index.js +0 -19
  284. package/dist/src/migrations/index.js.map +0 -1
  285. package/dist/src/migrations/migrations.js +0 -203
  286. package/dist/src/migrations/migrations.js.map +0 -1
  287. package/dist/src/objectStore/buckets/app.js +0 -95
  288. package/dist/src/objectStore/buckets/app.js.map +0 -1
  289. package/dist/src/objectStore/buckets/global.js +0 -68
  290. package/dist/src/objectStore/buckets/global.js.map +0 -1
  291. package/dist/src/objectStore/buckets/index.js +0 -20
  292. package/dist/src/objectStore/buckets/index.js.map +0 -1
  293. package/dist/src/objectStore/buckets/plugins.js +0 -104
  294. package/dist/src/objectStore/buckets/plugins.js.map +0 -1
  295. package/dist/src/objectStore/cloudfront.js +0 -73
  296. package/dist/src/objectStore/cloudfront.js.map +0 -1
  297. package/dist/src/objectStore/index.js +0 -20
  298. package/dist/src/objectStore/index.js.map +0 -1
  299. package/dist/src/objectStore/objectStore.js +0 -509
  300. package/dist/src/objectStore/objectStore.js.map +0 -1
  301. package/dist/src/objectStore/utils.js +0 -148
  302. package/dist/src/objectStore/utils.js.map +0 -1
  303. package/dist/src/platform/index.js +0 -43
  304. package/dist/src/platform/index.js.map +0 -1
  305. package/dist/src/platform/platformDb.js +0 -9
  306. package/dist/src/platform/platformDb.js.map +0 -1
  307. package/dist/src/platform/tenants.js +0 -149
  308. package/dist/src/platform/tenants.js.map +0 -1
  309. package/dist/src/platform/users.js +0 -118
  310. package/dist/src/platform/users.js.map +0 -1
  311. package/dist/src/plugin/index.js +0 -18
  312. package/dist/src/plugin/index.js.map +0 -1
  313. package/dist/src/plugin/utils.js +0 -158
  314. package/dist/src/plugin/utils.js.map +0 -1
  315. package/dist/src/queue/constants.js +0 -13
  316. package/dist/src/queue/constants.js.map +0 -1
  317. package/dist/src/queue/inMemoryQueue.js +0 -192
  318. package/dist/src/queue/inMemoryQueue.js.map +0 -1
  319. package/dist/src/queue/index.js +0 -19
  320. package/dist/src/queue/index.js.map +0 -1
  321. package/dist/src/queue/listeners.js +0 -199
  322. package/dist/src/queue/listeners.js.map +0 -1
  323. package/dist/src/queue/queue.js +0 -124
  324. package/dist/src/queue/queue.js.map +0 -1
  325. package/dist/src/redis/index.js +0 -47
  326. package/dist/src/redis/index.js.map +0 -1
  327. package/dist/src/redis/init.js +0 -184
  328. package/dist/src/redis/init.js.map +0 -1
  329. package/dist/src/redis/redis.js +0 -396
  330. package/dist/src/redis/redis.js.map +0 -1
  331. package/dist/src/redis/redlockImpl.js +0 -181
  332. package/dist/src/redis/redlockImpl.js.map +0 -1
  333. package/dist/src/redis/utils.js +0 -131
  334. package/dist/src/redis/utils.js.map +0 -1
  335. package/dist/src/security/auth.js +0 -26
  336. package/dist/src/security/auth.js.map +0 -1
  337. package/dist/src/security/encryption.js +0 -169
  338. package/dist/src/security/encryption.js.map +0 -1
  339. package/dist/src/security/index.js +0 -18
  340. package/dist/src/security/index.js.map +0 -1
  341. package/dist/src/security/permissions.js +0 -147
  342. package/dist/src/security/permissions.js.map +0 -1
  343. package/dist/src/security/roles.js +0 -566
  344. package/dist/src/security/roles.js.map +0 -1
  345. package/dist/src/security/secrets.js +0 -53
  346. package/dist/src/security/secrets.js.map +0 -1
  347. package/dist/src/security/sessions.js +0 -156
  348. package/dist/src/security/sessions.js.map +0 -1
  349. package/dist/src/sql/designDoc.js +0 -19
  350. package/dist/src/sql/designDoc.js.map +0 -1
  351. package/dist/src/sql/index.js +0 -47
  352. package/dist/src/sql/index.js.map +0 -1
  353. package/dist/src/sql/sql.js +0 -1536
  354. package/dist/src/sql/sql.js.map +0 -1
  355. package/dist/src/sql/sqlTable.js +0 -256
  356. package/dist/src/sql/sqlTable.js.map +0 -1
  357. package/dist/src/sql/utils.js +0 -179
  358. package/dist/src/sql/utils.js.map +0 -1
  359. package/dist/src/tenancy/db.js +0 -9
  360. package/dist/src/tenancy/db.js.map +0 -1
  361. package/dist/src/tenancy/index.js +0 -19
  362. package/dist/src/tenancy/index.js.map +0 -1
  363. package/dist/src/tenancy/tenancy.js +0 -125
  364. package/dist/src/tenancy/tenancy.js.map +0 -1
  365. package/dist/src/timers/index.js +0 -18
  366. package/dist/src/timers/index.js.map +0 -1
  367. package/dist/src/timers/timers.js +0 -25
  368. package/dist/src/timers/timers.js.map +0 -1
  369. package/dist/src/users/db.js +0 -489
  370. package/dist/src/users/db.js.map +0 -1
  371. package/dist/src/users/events.js +0 -179
  372. package/dist/src/users/events.js.map +0 -1
  373. package/dist/src/users/index.js +0 -23
  374. package/dist/src/users/index.js.map +0 -1
  375. package/dist/src/users/lookup.js +0 -126
  376. package/dist/src/users/lookup.js.map +0 -1
  377. package/dist/src/users/users.js +0 -376
  378. package/dist/src/users/users.js.map +0 -1
  379. package/dist/src/users/utils.js +0 -127
  380. package/dist/src/users/utils.js.map +0 -1
  381. package/dist/src/utils/Duration.js +0 -54
  382. package/dist/src/utils/Duration.js.map +0 -1
  383. package/dist/src/utils/hashing.js +0 -46
  384. package/dist/src/utils/hashing.js.map +0 -1
  385. package/dist/src/utils/index.js +0 -21
  386. package/dist/src/utils/index.js.map +0 -1
  387. package/dist/src/utils/stringUtils.js +0 -8
  388. package/dist/src/utils/stringUtils.js.map +0 -1
  389. package/dist/src/utils/utils.js +0 -267
  390. package/dist/src/utils/utils.js.map +0 -1
  391. package/dist/tests/core/logging.js +0 -33
  392. package/dist/tests/core/logging.js.map +0 -1
  393. package/dist/tests/core/utilities/index.js +0 -48
  394. package/dist/tests/core/utilities/index.js.map +0 -1
  395. package/dist/tests/core/utilities/jestUtils.js +0 -21
  396. package/dist/tests/core/utilities/jestUtils.js.map +0 -1
  397. package/dist/tests/core/utilities/mocks/alerts.js +0 -40
  398. package/dist/tests/core/utilities/mocks/alerts.js.map +0 -1
  399. package/dist/tests/core/utilities/mocks/date.js +0 -6
  400. package/dist/tests/core/utilities/mocks/date.js.map +0 -1
  401. package/dist/tests/core/utilities/mocks/events.js +0 -154
  402. package/dist/tests/core/utilities/mocks/events.js.map +0 -1
  403. package/dist/tests/core/utilities/mocks/index.js +0 -47
  404. package/dist/tests/core/utilities/mocks/index.js.map +0 -1
  405. package/dist/tests/core/utilities/mocks/licenses.js +0 -109
  406. package/dist/tests/core/utilities/mocks/licenses.js.map +0 -1
  407. package/dist/tests/core/utilities/queue.js +0 -21
  408. package/dist/tests/core/utilities/queue.js.map +0 -1
  409. package/dist/tests/core/utilities/structures/Chance.js +0 -21
  410. package/dist/tests/core/utilities/structures/Chance.js.map +0 -1
  411. package/dist/tests/core/utilities/structures/accounts.js +0 -43
  412. package/dist/tests/core/utilities/structures/accounts.js.map +0 -1
  413. package/dist/tests/core/utilities/structures/apps.js +0 -23
  414. package/dist/tests/core/utilities/structures/apps.js.map +0 -1
  415. package/dist/tests/core/utilities/structures/common.js +0 -11
  416. package/dist/tests/core/utilities/structures/common.js.map +0 -1
  417. package/dist/tests/core/utilities/structures/db.js +0 -15
  418. package/dist/tests/core/utilities/structures/db.js.map +0 -1
  419. package/dist/tests/core/utilities/structures/documents/index.js +0 -18
  420. package/dist/tests/core/utilities/structures/documents/index.js.map +0 -1
  421. package/dist/tests/core/utilities/structures/documents/platform/index.js +0 -38
  422. package/dist/tests/core/utilities/structures/documents/platform/index.js.map +0 -1
  423. package/dist/tests/core/utilities/structures/documents/platform/installation.js +0 -47
  424. package/dist/tests/core/utilities/structures/documents/platform/installation.js.map +0 -1
  425. package/dist/tests/core/utilities/structures/generator.js +0 -9
  426. package/dist/tests/core/utilities/structures/generator.js.map +0 -1
  427. package/dist/tests/core/utilities/structures/index.js +0 -56
  428. package/dist/tests/core/utilities/structures/index.js.map +0 -1
  429. package/dist/tests/core/utilities/structures/koa.js +0 -10
  430. package/dist/tests/core/utilities/structures/koa.js.map +0 -1
  431. package/dist/tests/core/utilities/structures/licenses.js +0 -157
  432. package/dist/tests/core/utilities/structures/licenses.js.map +0 -1
  433. package/dist/tests/core/utilities/structures/plugins.js +0 -22
  434. package/dist/tests/core/utilities/structures/plugins.js.map +0 -1
  435. package/dist/tests/core/utilities/structures/quotas.js +0 -73
  436. package/dist/tests/core/utilities/structures/quotas.js.map +0 -1
  437. package/dist/tests/core/utilities/structures/scim.js +0 -62
  438. package/dist/tests/core/utilities/structures/scim.js.map +0 -1
  439. package/dist/tests/core/utilities/structures/sso.js +0 -140
  440. package/dist/tests/core/utilities/structures/sso.js.map +0 -1
  441. package/dist/tests/core/utilities/structures/tenants.js +0 -8
  442. package/dist/tests/core/utilities/structures/tenants.js.map +0 -1
  443. package/dist/tests/core/utilities/structures/userGroups.js +0 -12
  444. package/dist/tests/core/utilities/structures/userGroups.js.map +0 -1
  445. package/dist/tests/core/utilities/structures/users.js +0 -53
  446. package/dist/tests/core/utilities/structures/users.js.map +0 -1
  447. package/dist/tests/core/utilities/testContainerUtils.js +0 -161
  448. package/dist/tests/core/utilities/testContainerUtils.js.map +0 -1
  449. package/dist/tests/core/utilities/utils/index.js +0 -39
  450. package/dist/tests/core/utilities/utils/index.js.map +0 -1
  451. package/dist/tests/core/utilities/utils/queue.js +0 -37
  452. package/dist/tests/core/utilities/utils/queue.js.map +0 -1
  453. package/dist/tests/core/utilities/utils/time.js +0 -7
  454. package/dist/tests/core/utilities/utils/time.js.map +0 -1
  455. package/dist/tests/extra/DBTestConfiguration.js +0 -65
  456. package/dist/tests/extra/DBTestConfiguration.js.map +0 -1
  457. package/dist/tests/extra/index.js +0 -43
  458. package/dist/tests/extra/index.js.map +0 -1
  459. package/dist/tests/extra/testEnv.js +0 -136
  460. package/dist/tests/extra/testEnv.js.map +0 -1
  461. package/dist/tests/index.js +0 -19
  462. package/dist/tests/index.js.map +0 -1
  463. package/dist/tests/jestEnv.js +0 -12
  464. package/dist/tests/jestEnv.js.map +0 -1
  465. package/dist/tests/jestSetup.js +0 -33
  466. package/dist/tests/jestSetup.js.map +0 -1
@@ -1,125 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getTenantIDFromCtx = exports.isUserInAppTenant = void 0;
4
- exports.addTenantToUrl = addTenantToUrl;
5
- const context_1 = require("../context");
6
- const types_1 = require("@budibase/types");
7
- const constants_1 = require("../constants");
8
- function addTenantToUrl(url) {
9
- const tenantId = (0, context_1.getTenantId)();
10
- if ((0, context_1.isMultiTenant)()) {
11
- const char = url.indexOf("?") === -1 ? "?" : "&";
12
- url += `${char}tenantId=${tenantId}`;
13
- }
14
- return url;
15
- }
16
- const isUserInAppTenant = (appId, user) => {
17
- let userTenantId;
18
- if (user) {
19
- userTenantId = user.tenantId || context_1.DEFAULT_TENANT_ID;
20
- }
21
- else {
22
- userTenantId = (0, context_1.getTenantId)();
23
- }
24
- const tenantId = (0, context_1.getTenantIDFromAppID)(appId) || context_1.DEFAULT_TENANT_ID;
25
- return tenantId === userTenantId;
26
- };
27
- exports.isUserInAppTenant = isUserInAppTenant;
28
- const ALL_STRATEGIES = Object.values(types_1.TenantResolutionStrategy);
29
- const getTenantIDFromCtx = (ctx, opts) => {
30
- var _a;
31
- // exit early if not multi-tenant
32
- if (!(0, context_1.isMultiTenant)()) {
33
- return context_1.DEFAULT_TENANT_ID;
34
- }
35
- // opt defaults
36
- if (opts.allowNoTenant === undefined) {
37
- opts.allowNoTenant = false;
38
- }
39
- if (!opts.includeStrategies) {
40
- opts.includeStrategies = ALL_STRATEGIES;
41
- }
42
- if (!opts.excludeStrategies) {
43
- opts.excludeStrategies = [];
44
- }
45
- const isAllowed = (strategy) => {
46
- var _a, _b;
47
- // excluded takes precedence
48
- if ((_a = opts.excludeStrategies) === null || _a === void 0 ? void 0 : _a.includes(strategy)) {
49
- return false;
50
- }
51
- if ((_b = opts.includeStrategies) === null || _b === void 0 ? void 0 : _b.includes(strategy)) {
52
- return true;
53
- }
54
- };
55
- // always use user first
56
- if (isAllowed(types_1.TenantResolutionStrategy.USER)) {
57
- const userTenantId = (_a = ctx.user) === null || _a === void 0 ? void 0 : _a.tenantId;
58
- if (userTenantId) {
59
- return userTenantId;
60
- }
61
- }
62
- // header
63
- if (isAllowed(types_1.TenantResolutionStrategy.HEADER)) {
64
- const headerTenantId = ctx.request.headers[constants_1.Header.TENANT_ID];
65
- if (headerTenantId) {
66
- return headerTenantId;
67
- }
68
- }
69
- // query param
70
- if (isAllowed(types_1.TenantResolutionStrategy.QUERY)) {
71
- const queryTenantId = ctx.request.query.tenantId;
72
- if (queryTenantId) {
73
- return queryTenantId;
74
- }
75
- }
76
- // subdomain
77
- if (isAllowed(types_1.TenantResolutionStrategy.SUBDOMAIN)) {
78
- // e.g. budibase.app or local.com:10000
79
- let platformHost;
80
- try {
81
- platformHost = new URL((0, context_1.getPlatformURL)()).host.split(":")[0];
82
- }
83
- catch (err) {
84
- // if invalid URL, just don't try to process subdomain
85
- if (err.code !== "ERR_INVALID_URL") {
86
- throw err;
87
- }
88
- }
89
- // e.g. tenant.budibase.app or tenant.local.com
90
- const requestHost = ctx.host;
91
- // parse the tenant id from the difference
92
- if (platformHost && requestHost.includes(platformHost)) {
93
- const tenantId = requestHost.substring(0, requestHost.indexOf(`.${platformHost}`));
94
- if (tenantId) {
95
- return tenantId;
96
- }
97
- }
98
- }
99
- // path
100
- if (isAllowed(types_1.TenantResolutionStrategy.PATH)) {
101
- // params - have to parse manually due to koa-router not run yet
102
- const match = ctx.matched.find((m) => !!m.paramNames.find((p) => p.name === "tenantId"));
103
- // get the raw path url - without any query params
104
- const ctxUrl = ctx.originalUrl;
105
- let url;
106
- if (ctxUrl.includes("?")) {
107
- url = ctxUrl.split("?")[0];
108
- }
109
- else {
110
- url = ctxUrl;
111
- }
112
- if (match) {
113
- const params = match.params(url, match.captures(url), {});
114
- if (params.tenantId) {
115
- return params.tenantId;
116
- }
117
- }
118
- }
119
- if (!opts.allowNoTenant) {
120
- ctx.throw(403, "Tenant id not set");
121
- }
122
- return undefined;
123
- };
124
- exports.getTenantIDFromCtx = getTenantIDFromCtx;
125
- //# sourceMappingURL=tenancy.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tenancy.js","sourceRoot":"","sources":["../../../src/tenancy/tenancy.ts"],"names":[],"mappings":"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"}
@@ -1,18 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./timers"), exports);
18
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/timers/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAwB"}
@@ -1,25 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.set = set;
4
- exports.clear = clear;
5
- exports.cleanup = cleanup;
6
- let intervals = [];
7
- function set(callback, period) {
8
- const interval = setInterval(callback, period);
9
- intervals.push(interval);
10
- return interval;
11
- }
12
- function clear(interval) {
13
- const idx = intervals.indexOf(interval);
14
- if (idx !== -1) {
15
- intervals.splice(idx, 1);
16
- }
17
- clearInterval(interval);
18
- }
19
- function cleanup() {
20
- for (let interval of intervals) {
21
- clearInterval(interval);
22
- }
23
- intervals = [];
24
- }
25
- //# sourceMappingURL=timers.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"timers.js","sourceRoot":"","sources":["../../../src/timers/timers.ts"],"names":[],"mappings":";;AAEA,kBAIC;AAED,sBAMC;AAED,0BAKC;AArBD,IAAI,SAAS,GAAqB,EAAE,CAAA;AAEpC,SAAgB,GAAG,CAAC,QAAmB,EAAE,MAAc;IACrD,MAAM,QAAQ,GAAG,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;IAC9C,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IACxB,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED,SAAgB,KAAK,CAAC,QAAwB;IAC5C,MAAM,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;IACvC,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC;QACf,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;IAC1B,CAAC;IACD,aAAa,CAAC,QAAQ,CAAC,CAAA;AACzB,CAAC;AAED,SAAgB,OAAO;IACrB,KAAK,IAAI,QAAQ,IAAI,SAAS,EAAE,CAAC;QAC/B,aAAa,CAAC,QAAQ,CAAC,CAAA;IACzB,CAAC;IACD,SAAS,GAAG,EAAE,CAAA;AAChB,CAAC"}
@@ -1,489 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
36
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
37
- return new (P || (P = Promise))(function (resolve, reject) {
38
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
39
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
40
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
41
- step((generator = generator.apply(thisArg, _arguments || [])).next());
42
- });
43
- };
44
- var __importDefault = (this && this.__importDefault) || function (mod) {
45
- return (mod && mod.__esModule) ? mod : { "default": mod };
46
- };
47
- Object.defineProperty(exports, "__esModule", { value: true });
48
- exports.UserDB = void 0;
49
- const environment_1 = __importDefault(require("../environment"));
50
- const eventHelpers = __importStar(require("./events"));
51
- const accountSdk = __importStar(require("../accounts"));
52
- const cache = __importStar(require("../cache"));
53
- const context_1 = require("../context");
54
- const dbUtils = __importStar(require("../db"));
55
- const errors_1 = require("../errors");
56
- const platform = __importStar(require("../platform"));
57
- const sessions = __importStar(require("../security/sessions"));
58
- const usersCore = __importStar(require("./users"));
59
- const types_1 = require("@budibase/types");
60
- const utils_1 = require("./utils");
61
- const lookup_1 = require("./lookup");
62
- const utils_2 = require("../utils");
63
- const security_1 = require("../security");
64
- const bulkDeleteProcessing = (dbUser) => __awaiter(void 0, void 0, void 0, function* () {
65
- const userId = dbUser._id;
66
- yield platform.users.removeUser(dbUser);
67
- yield eventHelpers.handleDeleteEvents(dbUser);
68
- yield cache.user.invalidateUser(userId);
69
- yield sessions.invalidateSessions(userId, { reason: "bulk-deletion" });
70
- });
71
- class UserDB {
72
- static init(quotaFns, groupFns, featureFns) {
73
- UserDB.quotas = quotaFns;
74
- UserDB.groups = groupFns;
75
- UserDB.features = featureFns;
76
- }
77
- static isPreventPasswordActions(user, account) {
78
- return __awaiter(this, void 0, void 0, function* () {
79
- // when in maintenance mode we allow sso users with the admin role
80
- // to perform any password action - this prevents lockout
81
- if (environment_1.default.ENABLE_SSO_MAINTENANCE_MODE && (0, utils_1.isAdmin)(user)) {
82
- return false;
83
- }
84
- // SSO is enforced for all users
85
- if (yield UserDB.features.isSSOEnforced()) {
86
- return true;
87
- }
88
- // Check local sso
89
- if ((0, types_1.isSSOUser)(user)) {
90
- return true;
91
- }
92
- // Check account sso
93
- if (!account) {
94
- account = yield accountSdk.getAccountByTenantId((0, context_1.getTenantId)());
95
- }
96
- return !!(account && account.email === user.email && (0, types_1.isSSOAccount)(account));
97
- });
98
- }
99
- static buildUser(user_1) {
100
- return __awaiter(this, arguments, void 0, function* (user, opts = {
101
- hashPassword: true,
102
- requirePassword: true,
103
- }, tenantId, dbUser, account) {
104
- let { password, _id } = user;
105
- // don't require a password if the db user doesn't already have one
106
- if (dbUser && !dbUser.password) {
107
- opts.requirePassword = false;
108
- }
109
- let hashedPassword;
110
- if (password) {
111
- if (yield UserDB.isPreventPasswordActions(user, account)) {
112
- throw new errors_1.HTTPError("Password change is disabled for this user", 400);
113
- }
114
- if (!opts.skipPasswordValidation) {
115
- const passwordValidation = (0, security_1.validatePassword)(password);
116
- if (!passwordValidation.valid) {
117
- throw new errors_1.HTTPError(passwordValidation.error, 400);
118
- }
119
- }
120
- hashedPassword = opts.hashPassword ? yield (0, utils_2.hash)(password) : password;
121
- }
122
- else if (dbUser) {
123
- hashedPassword = dbUser.password;
124
- }
125
- // passwords are never required if sso is enforced
126
- const requirePasswords = opts.requirePassword && !(yield UserDB.features.isSSOEnforced());
127
- if (!hashedPassword && requirePasswords) {
128
- throw "Password must be specified.";
129
- }
130
- _id = _id || dbUtils.generateGlobalUserID();
131
- const fullUser = Object.assign(Object.assign(Object.assign({ createdAt: Date.now() }, dbUser), user), { _id, password: hashedPassword, tenantId });
132
- // make sure the roles object is always present
133
- if (!fullUser.roles) {
134
- fullUser.roles = {};
135
- }
136
- // add the active status to a user if it's not provided
137
- if (fullUser.status == null) {
138
- fullUser.status = types_1.UserStatus.ACTIVE;
139
- }
140
- return fullUser;
141
- });
142
- }
143
- static allUsers() {
144
- return __awaiter(this, void 0, void 0, function* () {
145
- const db = (0, context_1.getGlobalDB)();
146
- const response = yield db.allDocs(dbUtils.getGlobalUserParams(null, {
147
- include_docs: true,
148
- }));
149
- return response.rows.map(row => row.doc);
150
- });
151
- }
152
- static countUsersByApp(appId) {
153
- return __awaiter(this, void 0, void 0, function* () {
154
- let response = yield usersCore.searchGlobalUsersByApp(appId, {});
155
- return {
156
- userCount: response.length,
157
- };
158
- });
159
- }
160
- static getUsersByAppAccess(opts) {
161
- return __awaiter(this, void 0, void 0, function* () {
162
- let response = yield usersCore.searchGlobalUsersByAppAccess(opts.appId, { limit: opts.limit || 50 });
163
- return response;
164
- });
165
- }
166
- static getUserByEmail(email) {
167
- return __awaiter(this, void 0, void 0, function* () {
168
- return usersCore.getGlobalUserByEmail(email);
169
- });
170
- }
171
- /**
172
- * Gets a user by ID from the global database, based on the current tenancy.
173
- */
174
- static getUser(userId) {
175
- return __awaiter(this, void 0, void 0, function* () {
176
- const user = yield usersCore.getById(userId);
177
- if (user) {
178
- delete user.password;
179
- }
180
- return user;
181
- });
182
- }
183
- static bulkGet(userIds) {
184
- return __awaiter(this, void 0, void 0, function* () {
185
- return yield usersCore.bulkGetGlobalUsersById(userIds);
186
- });
187
- }
188
- static bulkUpdate(users) {
189
- return __awaiter(this, void 0, void 0, function* () {
190
- return yield usersCore.bulkUpdateGlobalUsers(users);
191
- });
192
- }
193
- static save(user_1) {
194
- return __awaiter(this, arguments, void 0, function* (user, opts = {}) {
195
- // default booleans to true
196
- if (opts.hashPassword == null) {
197
- opts.hashPassword = true;
198
- }
199
- if (opts.requirePassword == null) {
200
- opts.requirePassword = true;
201
- }
202
- const tenantId = (0, context_1.getTenantId)();
203
- const db = (0, context_1.getGlobalDB)();
204
- const { email, _id, userGroups = [], roles } = user;
205
- if (!email && !_id) {
206
- throw new Error("_id or email is required");
207
- }
208
- let dbUser;
209
- if (_id) {
210
- // try to get existing user from db
211
- try {
212
- dbUser = yield usersCore.getById(_id);
213
- if (email && dbUser.email !== email && !opts.allowChangingEmail) {
214
- throw new Error("Email address cannot be changed");
215
- }
216
- }
217
- catch (e) {
218
- if (e.status === 404) {
219
- // do nothing, save this new user with the id specified - required for SSO auth
220
- }
221
- else {
222
- throw e;
223
- }
224
- }
225
- }
226
- if (!dbUser && email) {
227
- // no id was specified - load from email instead
228
- dbUser = yield usersCore.getGlobalUserByEmail(email);
229
- if (dbUser && dbUser._id !== _id) {
230
- throw new errors_1.EmailUnavailableError(email);
231
- }
232
- }
233
- const change = dbUser ? 0 : 1; // no change if there is existing user
234
- const creatorsChange = (yield (0, utils_1.isCreator)(dbUser)) !== (yield (0, utils_1.isCreator)(user)) ? 1 : 0;
235
- return UserDB.quotas.addUsers(change, creatorsChange, () => __awaiter(this, void 0, void 0, function* () {
236
- yield (0, utils_1.validateUniqueUser)(email, tenantId);
237
- let builtUser = yield UserDB.buildUser(user, opts, tenantId, dbUser);
238
- // don't allow a user to update its own roles/perms
239
- if (opts.currentUserId && opts.currentUserId === (dbUser === null || dbUser === void 0 ? void 0 : dbUser._id)) {
240
- builtUser = usersCore.cleanseUserObject(builtUser, dbUser);
241
- }
242
- if (!dbUser && (roles === null || roles === void 0 ? void 0 : roles.length)) {
243
- builtUser.roles = Object.assign({}, roles);
244
- }
245
- // make sure we set the _id field for a new user
246
- // Also if this is a new user, associate groups with them
247
- const groupPromises = [];
248
- if (!_id) {
249
- if (userGroups.length > 0) {
250
- for (let groupId of userGroups) {
251
- groupPromises.push(UserDB.groups.addUsers(groupId, [builtUser._id]));
252
- }
253
- }
254
- }
255
- try {
256
- // save the user to db
257
- let response = yield db.put(builtUser);
258
- builtUser._rev = response.rev;
259
- yield eventHelpers.handleSaveEvents(builtUser, dbUser);
260
- if (dbUser && builtUser.email !== dbUser.email) {
261
- // Remove the plaform email reference if the email changed
262
- yield platform.users.removeUser({ email: dbUser.email });
263
- }
264
- yield platform.users.addUser(tenantId, builtUser._id, builtUser.email, builtUser.ssoId);
265
- yield cache.user.invalidateUser(response.id);
266
- yield Promise.all(groupPromises);
267
- // finally returned the saved user from the db
268
- return db.get(builtUser._id);
269
- }
270
- catch (err) {
271
- if (err.status === 409) {
272
- throw "User exists already";
273
- }
274
- else {
275
- throw err;
276
- }
277
- }
278
- }));
279
- });
280
- }
281
- static bulkCreate(newUsersRequested, groups) {
282
- return __awaiter(this, void 0, void 0, function* () {
283
- const tenantId = (0, context_1.getTenantId)();
284
- let usersToSave = [];
285
- let newUsers = [];
286
- let newCreators = [];
287
- const emails = newUsersRequested.map((user) => user.email);
288
- const existingEmails = yield (0, lookup_1.searchExistingEmails)(emails);
289
- const unsuccessful = [];
290
- for (const newUser of newUsersRequested) {
291
- if (newUsers.find((x) => x.email.toLowerCase() === newUser.email.toLowerCase()) ||
292
- existingEmails.includes(newUser.email.toLowerCase())) {
293
- unsuccessful.push({
294
- email: newUser.email,
295
- reason: `Unavailable`,
296
- });
297
- continue;
298
- }
299
- newUser.userGroups = groups || [];
300
- newUsers.push(newUser);
301
- if (yield (0, utils_1.isCreator)(newUser)) {
302
- newCreators.push(newUser);
303
- }
304
- }
305
- const account = yield accountSdk.getAccountByTenantId(tenantId);
306
- return UserDB.quotas.addUsers(newUsers.length, newCreators.length, () => __awaiter(this, void 0, void 0, function* () {
307
- // create the promises array that will be called by bulkDocs
308
- newUsers.forEach((user) => {
309
- usersToSave.push(UserDB.buildUser(user, {
310
- hashPassword: true,
311
- requirePassword: user.requirePassword,
312
- }, tenantId, undefined, // no dbUser
313
- account));
314
- });
315
- const usersToBulkSave = yield Promise.all(usersToSave);
316
- yield usersCore.bulkUpdateGlobalUsers(usersToBulkSave);
317
- // Post-processing of bulk added users, e.g. events and cache operations
318
- for (const user of usersToBulkSave) {
319
- // TODO: Refactor to bulk insert users into the info db
320
- // instead of relying on looping tenant creation
321
- yield platform.users.addUser(tenantId, user._id, user.email);
322
- yield eventHelpers.handleSaveEvents(user, undefined);
323
- }
324
- const saved = usersToBulkSave.map(user => {
325
- return {
326
- _id: user._id,
327
- email: user.email,
328
- };
329
- });
330
- // now update the groups
331
- if (Array.isArray(saved) && groups) {
332
- const groupPromises = [];
333
- const createdUserIds = saved.map(user => user._id);
334
- for (let groupId of groups) {
335
- groupPromises.push(UserDB.groups.addUsers(groupId, createdUserIds));
336
- }
337
- yield Promise.all(groupPromises);
338
- }
339
- return {
340
- successful: saved,
341
- unsuccessful,
342
- };
343
- }));
344
- });
345
- }
346
- static bulkDelete(users) {
347
- return __awaiter(this, void 0, void 0, function* () {
348
- const db = (0, context_1.getGlobalDB)();
349
- const response = {
350
- successful: [],
351
- unsuccessful: [],
352
- };
353
- // remove the account holder from the delete request if present
354
- const accountHolder = yield (0, utils_1.getAccountHolderFromUsers)(users);
355
- if (accountHolder) {
356
- users = users.filter(u => u.userId !== accountHolder.userId);
357
- // mark user as unsuccessful
358
- response.unsuccessful.push({
359
- _id: accountHolder.userId,
360
- email: accountHolder.email,
361
- reason: "Account holder cannot be deleted",
362
- });
363
- }
364
- // Get users and delete
365
- const allDocsResponse = yield db.allDocs({
366
- include_docs: true,
367
- keys: users.map(u => u.userId),
368
- });
369
- const usersToDelete = allDocsResponse.rows.map(user => {
370
- return user.doc;
371
- });
372
- // Delete from DB
373
- const toDelete = usersToDelete.map(user => (Object.assign(Object.assign({}, user), { _deleted: true })));
374
- const dbResponse = yield usersCore.bulkUpdateGlobalUsers(toDelete);
375
- const creatorsEval = yield Promise.all(usersToDelete.map(utils_1.isCreator));
376
- const creatorsToDeleteCount = creatorsEval.filter(creator => !!creator).length;
377
- const ssoUsersToDelete = [];
378
- for (let user of usersToDelete) {
379
- const platformUser = (yield (0, lookup_1.getFirstPlatformUser)(user._id));
380
- const ssoId = platformUser.ssoId;
381
- if (ssoId) {
382
- // Need to get the _rev of the SSO user doc to delete it. The view also returns docs that have the ssoId property, so we need to ignore those.
383
- const ssoUsers = (yield (0, lookup_1.getPlatformUsers)(ssoId));
384
- ssoUsers
385
- .filter(user => user.ssoId == null)
386
- .forEach(user => {
387
- ssoUsersToDelete.push(Object.assign(Object.assign({}, user), { _deleted: true }));
388
- });
389
- }
390
- yield bulkDeleteProcessing(user);
391
- }
392
- // Delete any associated SSO user docs
393
- yield platform.getPlatformDB().bulkDocs(ssoUsersToDelete);
394
- yield UserDB.quotas.removeUsers(toDelete.length, creatorsToDeleteCount);
395
- // Build Response
396
- // index users by id
397
- const userIndex = {};
398
- usersToDelete.reduce((prev, current) => {
399
- prev[current._id] = current;
400
- return prev;
401
- }, userIndex);
402
- // add the successful and unsuccessful users to response
403
- dbResponse.forEach(item => {
404
- const email = userIndex[item.id].email;
405
- if (item.ok) {
406
- response.successful.push({ _id: item.id, email });
407
- }
408
- else {
409
- response.unsuccessful.push({
410
- _id: item.id,
411
- email,
412
- reason: "Database error",
413
- });
414
- }
415
- });
416
- return response;
417
- });
418
- }
419
- static destroy(id) {
420
- return __awaiter(this, void 0, void 0, function* () {
421
- const db = (0, context_1.getGlobalDB)();
422
- const dbUser = (yield db.get(id));
423
- const userId = dbUser._id;
424
- if (!environment_1.default.SELF_HOSTED && !environment_1.default.DISABLE_ACCOUNT_PORTAL) {
425
- // root account holder can't be deleted from inside budibase
426
- const email = dbUser.email;
427
- const account = yield accountSdk.getAccount(email);
428
- if (account) {
429
- if (dbUser.userId === (0, context_1.getIdentity)()._id) {
430
- throw new errors_1.HTTPError('Please visit "Account" to delete this user', 400);
431
- }
432
- else {
433
- throw new errors_1.HTTPError("Account holder cannot be deleted", 400);
434
- }
435
- }
436
- }
437
- yield platform.users.removeUser(dbUser);
438
- yield db.remove(userId, dbUser._rev);
439
- const creatorsToDelete = (yield (0, utils_1.isCreator)(dbUser)) ? 1 : 0;
440
- yield UserDB.quotas.removeUsers(1, creatorsToDelete);
441
- yield eventHelpers.handleDeleteEvents(dbUser);
442
- yield cache.user.invalidateUser(userId);
443
- yield sessions.invalidateSessions(userId, { reason: "deletion" });
444
- });
445
- }
446
- static createAdminUser(email, tenantId, opts) {
447
- return __awaiter(this, void 0, void 0, function* () {
448
- const password = opts === null || opts === void 0 ? void 0 : opts.password;
449
- const user = {
450
- email: email,
451
- password,
452
- createdAt: Date.now(),
453
- roles: {},
454
- builder: {
455
- global: true,
456
- },
457
- admin: {
458
- global: true,
459
- },
460
- tenantId,
461
- firstName: opts === null || opts === void 0 ? void 0 : opts.firstName,
462
- lastName: opts === null || opts === void 0 ? void 0 : opts.lastName,
463
- };
464
- if (opts === null || opts === void 0 ? void 0 : opts.ssoId) {
465
- user.ssoId = opts.ssoId;
466
- }
467
- // always bust checklist beforehand, if an error occurs but can proceed, don't get
468
- // stuck in a cycle
469
- yield cache.bustCache(cache.CacheKey.CHECKLIST);
470
- return yield UserDB.save(user, {
471
- hashPassword: opts === null || opts === void 0 ? void 0 : opts.hashPassword,
472
- requirePassword: opts === null || opts === void 0 ? void 0 : opts.requirePassword,
473
- skipPasswordValidation: opts === null || opts === void 0 ? void 0 : opts.skipPasswordValidation,
474
- });
475
- });
476
- }
477
- static getGroups(groupIds) {
478
- return __awaiter(this, void 0, void 0, function* () {
479
- return yield this.groups.getBulk(groupIds);
480
- });
481
- }
482
- static getGroupBuilderAppIds(user) {
483
- return __awaiter(this, void 0, void 0, function* () {
484
- return yield this.groups.getGroupBuilderAppIds(user);
485
- });
486
- }
487
- }
488
- exports.UserDB = UserDB;
489
- //# sourceMappingURL=db.js.map