@budibase/backend-core 3.2.41 → 3.2.43

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 (358) hide show
  1. package/dist/package.json +3 -3
  2. package/dist/src/accounts/accounts.js +83 -0
  3. package/dist/src/accounts/accounts.js.map +1 -0
  4. package/dist/src/accounts/api.js +102 -0
  5. package/dist/src/accounts/api.js.map +1 -0
  6. package/dist/src/accounts/index.js +18 -0
  7. package/dist/src/accounts/index.js.map +1 -0
  8. package/dist/src/cache/appMetadata.js +96 -0
  9. package/dist/src/cache/appMetadata.js.map +1 -0
  10. package/dist/src/cache/base/index.js +189 -0
  11. package/dist/src/cache/base/index.js.map +1 -0
  12. package/dist/src/cache/docWritethrough.js +123 -0
  13. package/dist/src/cache/docWritethrough.js.map +1 -0
  14. package/dist/src/cache/generic.js +37 -0
  15. package/dist/src/cache/generic.js.map +1 -0
  16. package/dist/src/cache/index.js +48 -0
  17. package/dist/src/cache/index.js.map +1 -0
  18. package/dist/src/cache/invite.js +128 -0
  19. package/dist/src/cache/invite.js.map +1 -0
  20. package/dist/src/cache/passwordReset.js +92 -0
  21. package/dist/src/cache/passwordReset.js.map +1 -0
  22. package/dist/src/cache/user.js +183 -0
  23. package/dist/src/cache/user.js.map +1 -0
  24. package/dist/src/cache/writethrough.js +170 -0
  25. package/dist/src/cache/writethrough.js.map +1 -0
  26. package/dist/src/configs/configs.js +294 -0
  27. package/dist/src/configs/configs.js.map +1 -0
  28. package/dist/src/configs/index.js +18 -0
  29. package/dist/src/configs/index.js.map +1 -0
  30. package/dist/src/constants/db.js +75 -0
  31. package/dist/src/constants/db.js.map +1 -0
  32. package/dist/src/constants/index.js +19 -0
  33. package/dist/src/constants/index.js.map +1 -0
  34. package/dist/src/constants/misc.js +40 -0
  35. package/dist/src/constants/misc.js.map +1 -0
  36. package/dist/src/context/Context.js +14 -0
  37. package/dist/src/context/Context.js.map +1 -0
  38. package/dist/src/context/identity.js +81 -0
  39. package/dist/src/context/identity.js.map +1 -0
  40. package/dist/src/context/index.js +44 -0
  41. package/dist/src/context/index.js.map +1 -0
  42. package/dist/src/context/mainContext.js +446 -0
  43. package/dist/src/context/mainContext.js.map +1 -0
  44. package/dist/src/context/types.js +3 -0
  45. package/dist/src/context/types.js.map +1 -0
  46. package/dist/src/db/Replication.js +90 -0
  47. package/dist/src/db/Replication.js.map +1 -0
  48. package/dist/src/db/couch/DatabaseImpl.js +475 -0
  49. package/dist/src/db/couch/DatabaseImpl.js.map +1 -0
  50. package/dist/src/db/couch/connections.js +101 -0
  51. package/dist/src/db/couch/connections.js.map +1 -0
  52. package/dist/src/db/couch/index.js +26 -0
  53. package/dist/src/db/couch/index.js.map +1 -0
  54. package/dist/src/db/couch/pouchDB.js +108 -0
  55. package/dist/src/db/couch/pouchDB.js.map +1 -0
  56. package/dist/src/db/couch/utils.js +60 -0
  57. package/dist/src/db/couch/utils.js.map +1 -0
  58. package/dist/src/db/db.js +47 -0
  59. package/dist/src/db/db.js.map +1 -0
  60. package/dist/src/db/errors.js +21 -0
  61. package/dist/src/db/errors.js.map +1 -0
  62. package/dist/src/db/index.js +58 -0
  63. package/dist/src/db/index.js.map +1 -0
  64. package/dist/src/db/instrumentation.js +202 -0
  65. package/dist/src/db/instrumentation.js.map +1 -0
  66. package/dist/src/db/lucene.js +638 -0
  67. package/dist/src/db/lucene.js.map +1 -0
  68. package/dist/src/db/searchIndexes/index.js +18 -0
  69. package/dist/src/db/searchIndexes/index.js.map +1 -0
  70. package/dist/src/db/searchIndexes/searchIndexes.js +76 -0
  71. package/dist/src/db/searchIndexes/searchIndexes.js.map +1 -0
  72. package/dist/src/db/utils.js +212 -0
  73. package/dist/src/db/utils.js.map +1 -0
  74. package/dist/src/db/views.js +224 -0
  75. package/dist/src/db/views.js.map +1 -0
  76. package/dist/src/docIds/conversions.js +62 -0
  77. package/dist/src/docIds/conversions.js.map +1 -0
  78. package/dist/src/docIds/ids.js +125 -0
  79. package/dist/src/docIds/ids.js.map +1 -0
  80. package/dist/src/docIds/index.js +19 -0
  81. package/dist/src/docIds/index.js.map +1 -0
  82. package/dist/src/docIds/newid.js +8 -0
  83. package/dist/src/docIds/newid.js.map +1 -0
  84. package/dist/src/docIds/params.js +141 -0
  85. package/dist/src/docIds/params.js.map +1 -0
  86. package/dist/src/environment.js +182 -0
  87. package/dist/src/environment.js.map +1 -0
  88. package/dist/src/errors/errors.js +97 -0
  89. package/dist/src/errors/errors.js.map +1 -0
  90. package/dist/src/errors/index.js +18 -0
  91. package/dist/src/errors/index.js.map +1 -0
  92. package/dist/src/events/analytics.js +52 -0
  93. package/dist/src/events/analytics.js.map +1 -0
  94. package/dist/src/events/asyncEvents/index.js +19 -0
  95. package/dist/src/events/asyncEvents/index.js.map +1 -0
  96. package/dist/src/events/asyncEvents/publisher.js +26 -0
  97. package/dist/src/events/asyncEvents/publisher.js.map +1 -0
  98. package/dist/src/events/asyncEvents/queue.js +26 -0
  99. package/dist/src/events/asyncEvents/queue.js.map +1 -0
  100. package/dist/src/events/backfill.js +189 -0
  101. package/dist/src/events/backfill.js.map +1 -0
  102. package/dist/src/events/events.js +87 -0
  103. package/dist/src/events/events.js.map +1 -0
  104. package/dist/src/events/identification.js +299 -0
  105. package/dist/src/events/identification.js.map +1 -0
  106. package/dist/src/events/index.js +59 -0
  107. package/dist/src/events/index.js.map +1 -0
  108. package/dist/src/events/processors/AnalyticsProcessor.js +103 -0
  109. package/dist/src/events/processors/AnalyticsProcessor.js.map +1 -0
  110. package/dist/src/events/processors/AuditLogsProcessor.js +86 -0
  111. package/dist/src/events/processors/AuditLogsProcessor.js.map +1 -0
  112. package/dist/src/events/processors/LoggingProcessor.js +47 -0
  113. package/dist/src/events/processors/LoggingProcessor.js.map +1 -0
  114. package/dist/src/events/processors/Processors.js +52 -0
  115. package/dist/src/events/processors/Processors.js.map +1 -0
  116. package/dist/src/events/processors/index.js +23 -0
  117. package/dist/src/events/processors/index.js.map +1 -0
  118. package/dist/src/events/processors/posthog/PosthogProcessor.js +147 -0
  119. package/dist/src/events/processors/posthog/PosthogProcessor.js.map +1 -0
  120. package/dist/src/events/processors/posthog/index.js +8 -0
  121. package/dist/src/events/processors/posthog/index.js.map +1 -0
  122. package/dist/src/events/processors/posthog/rateLimiting.js +129 -0
  123. package/dist/src/events/processors/posthog/rateLimiting.js.map +1 -0
  124. package/dist/src/events/processors/types.js +3 -0
  125. package/dist/src/events/processors/types.js.map +1 -0
  126. package/dist/src/events/publishers/account.js +43 -0
  127. package/dist/src/events/publishers/account.js.map +1 -0
  128. package/dist/src/events/publishers/ai.js +30 -0
  129. package/dist/src/events/publishers/ai.js.map +1 -0
  130. package/dist/src/events/publishers/app.js +166 -0
  131. package/dist/src/events/publishers/app.js.map +1 -0
  132. package/dist/src/events/publishers/auditLog.js +34 -0
  133. package/dist/src/events/publishers/auditLog.js.map +1 -0
  134. package/dist/src/events/publishers/auth.js +80 -0
  135. package/dist/src/events/publishers/auth.js.map +1 -0
  136. package/dist/src/events/publishers/automation.js +117 -0
  137. package/dist/src/events/publishers/automation.js.map +1 -0
  138. package/dist/src/events/publishers/backfill.js +85 -0
  139. package/dist/src/events/publishers/backfill.js.map +1 -0
  140. package/dist/src/events/publishers/backup.js +41 -0
  141. package/dist/src/events/publishers/backup.js.map +1 -0
  142. package/dist/src/events/publishers/datasource.js +54 -0
  143. package/dist/src/events/publishers/datasource.js.map +1 -0
  144. package/dist/src/events/publishers/email.js +30 -0
  145. package/dist/src/events/publishers/email.js.map +1 -0
  146. package/dist/src/events/publishers/environmentVariable.js +44 -0
  147. package/dist/src/events/publishers/environmentVariable.js.map +1 -0
  148. package/dist/src/events/publishers/group.js +107 -0
  149. package/dist/src/events/publishers/group.js.map +1 -0
  150. package/dist/src/events/publishers/index.js +59 -0
  151. package/dist/src/events/publishers/index.js.map +1 -0
  152. package/dist/src/events/publishers/installation.js +52 -0
  153. package/dist/src/events/publishers/installation.js.map +1 -0
  154. package/dist/src/events/publishers/layout.js +34 -0
  155. package/dist/src/events/publishers/layout.js.map +1 -0
  156. package/dist/src/events/publishers/license.js +77 -0
  157. package/dist/src/events/publishers/license.js.map +1 -0
  158. package/dist/src/events/publishers/org.js +52 -0
  159. package/dist/src/events/publishers/org.js.map +1 -0
  160. package/dist/src/events/publishers/plugin.js +55 -0
  161. package/dist/src/events/publishers/plugin.js.map +1 -0
  162. package/dist/src/events/publishers/query.js +73 -0
  163. package/dist/src/events/publishers/query.js.map +1 -0
  164. package/dist/src/events/publishers/role.js +69 -0
  165. package/dist/src/events/publishers/role.js.map +1 -0
  166. package/dist/src/events/publishers/rowAction.js +22 -0
  167. package/dist/src/events/publishers/rowAction.js.map +1 -0
  168. package/dist/src/events/publishers/rows.js +31 -0
  169. package/dist/src/events/publishers/rows.js.map +1 -0
  170. package/dist/src/events/publishers/screen.js +46 -0
  171. package/dist/src/events/publishers/screen.js.map +1 -0
  172. package/dist/src/events/publishers/serve.js +47 -0
  173. package/dist/src/events/publishers/serve.js.map +1 -0
  174. package/dist/src/events/publishers/table.js +95 -0
  175. package/dist/src/events/publishers/table.js.map +1 -0
  176. package/dist/src/events/publishers/user.js +201 -0
  177. package/dist/src/events/publishers/user.js.map +1 -0
  178. package/dist/src/events/publishers/view.js +123 -0
  179. package/dist/src/events/publishers/view.js.map +1 -0
  180. package/dist/src/helpers.js +13 -0
  181. package/dist/src/helpers.js.map +1 -0
  182. package/dist/src/installation.js +159 -0
  183. package/dist/src/installation.js.map +1 -0
  184. package/dist/src/logging/alerts.js +23 -0
  185. package/dist/src/logging/alerts.js.map +1 -0
  186. package/dist/src/logging/correlation/correlation.js +18 -0
  187. package/dist/src/logging/correlation/correlation.js.map +1 -0
  188. package/dist/src/logging/correlation/index.js +18 -0
  189. package/dist/src/logging/correlation/index.js.map +1 -0
  190. package/dist/src/logging/index.js +45 -0
  191. package/dist/src/logging/index.js.map +1 -0
  192. package/dist/src/logging/pino/logger.js +234 -0
  193. package/dist/src/logging/pino/logger.js.map +1 -0
  194. package/dist/src/logging/system.js +110 -0
  195. package/dist/src/logging/system.js.map +1 -0
  196. package/dist/src/objectStore/buckets/app.js +95 -0
  197. package/dist/src/objectStore/buckets/app.js.map +1 -0
  198. package/dist/src/objectStore/buckets/global.js +68 -0
  199. package/dist/src/objectStore/buckets/global.js.map +1 -0
  200. package/dist/src/objectStore/buckets/index.js +20 -0
  201. package/dist/src/objectStore/buckets/index.js.map +1 -0
  202. package/dist/src/objectStore/buckets/plugins.js +104 -0
  203. package/dist/src/objectStore/buckets/plugins.js.map +1 -0
  204. package/dist/src/objectStore/cloudfront.js +73 -0
  205. package/dist/src/objectStore/cloudfront.js.map +1 -0
  206. package/dist/src/objectStore/index.js +20 -0
  207. package/dist/src/objectStore/index.js.map +1 -0
  208. package/dist/src/objectStore/objectStore.js +509 -0
  209. package/dist/src/objectStore/objectStore.js.map +1 -0
  210. package/dist/src/objectStore/utils.js +148 -0
  211. package/dist/src/objectStore/utils.js.map +1 -0
  212. package/dist/src/platform/index.js +43 -0
  213. package/dist/src/platform/index.js.map +1 -0
  214. package/dist/src/platform/platformDb.js +9 -0
  215. package/dist/src/platform/platformDb.js.map +1 -0
  216. package/dist/src/platform/tenants.js +149 -0
  217. package/dist/src/platform/tenants.js.map +1 -0
  218. package/dist/src/platform/users.js +118 -0
  219. package/dist/src/platform/users.js.map +1 -0
  220. package/dist/src/queue/constants.js +13 -0
  221. package/dist/src/queue/constants.js.map +1 -0
  222. package/dist/src/queue/inMemoryQueue.js +192 -0
  223. package/dist/src/queue/inMemoryQueue.js.map +1 -0
  224. package/dist/src/queue/index.js +19 -0
  225. package/dist/src/queue/index.js.map +1 -0
  226. package/dist/src/queue/listeners.js +199 -0
  227. package/dist/src/queue/listeners.js.map +1 -0
  228. package/dist/src/queue/queue.js +124 -0
  229. package/dist/src/queue/queue.js.map +1 -0
  230. package/dist/src/redis/index.js +47 -0
  231. package/dist/src/redis/index.js.map +1 -0
  232. package/dist/src/redis/init.js +184 -0
  233. package/dist/src/redis/init.js.map +1 -0
  234. package/dist/src/redis/redis.js +396 -0
  235. package/dist/src/redis/redis.js.map +1 -0
  236. package/dist/src/redis/redlockImpl.js +181 -0
  237. package/dist/src/redis/redlockImpl.js.map +1 -0
  238. package/dist/src/redis/utils.js +131 -0
  239. package/dist/src/redis/utils.js.map +1 -0
  240. package/dist/src/security/auth.js +26 -0
  241. package/dist/src/security/auth.js.map +1 -0
  242. package/dist/src/security/index.js +18 -0
  243. package/dist/src/security/index.js.map +1 -0
  244. package/dist/src/security/roles.js +566 -0
  245. package/dist/src/security/roles.js.map +1 -0
  246. package/dist/src/security/sessions.js +156 -0
  247. package/dist/src/security/sessions.js.map +1 -0
  248. package/dist/src/sql/utils.js +180 -0
  249. package/dist/src/sql/utils.js.map +1 -0
  250. package/dist/src/tenancy/db.js +9 -0
  251. package/dist/src/tenancy/db.js.map +1 -0
  252. package/dist/src/tenancy/index.js +19 -0
  253. package/dist/src/tenancy/index.js.map +1 -0
  254. package/dist/src/tenancy/tenancy.js +125 -0
  255. package/dist/src/tenancy/tenancy.js.map +1 -0
  256. package/dist/src/timers/index.js +18 -0
  257. package/dist/src/timers/index.js.map +1 -0
  258. package/dist/src/timers/timers.js +25 -0
  259. package/dist/src/timers/timers.js.map +1 -0
  260. package/dist/src/users/db.js +489 -0
  261. package/dist/src/users/db.js.map +1 -0
  262. package/dist/src/users/events.js +179 -0
  263. package/dist/src/users/events.js.map +1 -0
  264. package/dist/src/users/index.js +23 -0
  265. package/dist/src/users/index.js.map +1 -0
  266. package/dist/src/users/lookup.js +126 -0
  267. package/dist/src/users/lookup.js.map +1 -0
  268. package/dist/src/users/users.js +376 -0
  269. package/dist/src/users/users.js.map +1 -0
  270. package/dist/src/users/utils.js +127 -0
  271. package/dist/src/users/utils.js.map +1 -0
  272. package/dist/src/utils/Duration.js +54 -0
  273. package/dist/src/utils/Duration.js.map +1 -0
  274. package/dist/src/utils/hashing.js +46 -0
  275. package/dist/src/utils/hashing.js.map +1 -0
  276. package/dist/src/utils/index.js +21 -0
  277. package/dist/src/utils/index.js.map +1 -0
  278. package/dist/src/utils/stringUtils.js +8 -0
  279. package/dist/src/utils/stringUtils.js.map +1 -0
  280. package/dist/src/utils/utils.js +267 -0
  281. package/dist/src/utils/utils.js.map +1 -0
  282. package/dist/tests/core/logging.js +33 -0
  283. package/dist/tests/core/logging.js.map +1 -0
  284. package/dist/tests/core/utilities/index.js +48 -0
  285. package/dist/tests/core/utilities/index.js.map +1 -0
  286. package/dist/tests/core/utilities/jestUtils.js +21 -0
  287. package/dist/tests/core/utilities/jestUtils.js.map +1 -0
  288. package/dist/tests/core/utilities/mocks/alerts.js +40 -0
  289. package/dist/tests/core/utilities/mocks/alerts.js.map +1 -0
  290. package/dist/tests/core/utilities/mocks/date.js +6 -0
  291. package/dist/tests/core/utilities/mocks/date.js.map +1 -0
  292. package/dist/tests/core/utilities/mocks/events.js +155 -0
  293. package/dist/tests/core/utilities/mocks/events.js.map +1 -0
  294. package/dist/tests/core/utilities/mocks/index.js +47 -0
  295. package/dist/tests/core/utilities/mocks/index.js.map +1 -0
  296. package/dist/tests/core/utilities/mocks/licenses.js +109 -0
  297. package/dist/tests/core/utilities/mocks/licenses.js.map +1 -0
  298. package/dist/tests/core/utilities/queue.js +21 -0
  299. package/dist/tests/core/utilities/queue.js.map +1 -0
  300. package/dist/tests/core/utilities/structures/Chance.js +21 -0
  301. package/dist/tests/core/utilities/structures/Chance.js.map +1 -0
  302. package/dist/tests/core/utilities/structures/accounts.js +43 -0
  303. package/dist/tests/core/utilities/structures/accounts.js.map +1 -0
  304. package/dist/tests/core/utilities/structures/apps.js +23 -0
  305. package/dist/tests/core/utilities/structures/apps.js.map +1 -0
  306. package/dist/tests/core/utilities/structures/common.js +11 -0
  307. package/dist/tests/core/utilities/structures/common.js.map +1 -0
  308. package/dist/tests/core/utilities/structures/db.js +15 -0
  309. package/dist/tests/core/utilities/structures/db.js.map +1 -0
  310. package/dist/tests/core/utilities/structures/documents/index.js +18 -0
  311. package/dist/tests/core/utilities/structures/documents/index.js.map +1 -0
  312. package/dist/tests/core/utilities/structures/documents/platform/index.js +38 -0
  313. package/dist/tests/core/utilities/structures/documents/platform/index.js.map +1 -0
  314. package/dist/tests/core/utilities/structures/documents/platform/installation.js +47 -0
  315. package/dist/tests/core/utilities/structures/documents/platform/installation.js.map +1 -0
  316. package/dist/tests/core/utilities/structures/generator.js +9 -0
  317. package/dist/tests/core/utilities/structures/generator.js.map +1 -0
  318. package/dist/tests/core/utilities/structures/index.js +56 -0
  319. package/dist/tests/core/utilities/structures/index.js.map +1 -0
  320. package/dist/tests/core/utilities/structures/koa.js +10 -0
  321. package/dist/tests/core/utilities/structures/koa.js.map +1 -0
  322. package/dist/tests/core/utilities/structures/licenses.js +157 -0
  323. package/dist/tests/core/utilities/structures/licenses.js.map +1 -0
  324. package/dist/tests/core/utilities/structures/plugins.js +22 -0
  325. package/dist/tests/core/utilities/structures/plugins.js.map +1 -0
  326. package/dist/tests/core/utilities/structures/quotas.js +73 -0
  327. package/dist/tests/core/utilities/structures/quotas.js.map +1 -0
  328. package/dist/tests/core/utilities/structures/scim.js +62 -0
  329. package/dist/tests/core/utilities/structures/scim.js.map +1 -0
  330. package/dist/tests/core/utilities/structures/sso.js +140 -0
  331. package/dist/tests/core/utilities/structures/sso.js.map +1 -0
  332. package/dist/tests/core/utilities/structures/tenants.js +8 -0
  333. package/dist/tests/core/utilities/structures/tenants.js.map +1 -0
  334. package/dist/tests/core/utilities/structures/userGroups.js +12 -0
  335. package/dist/tests/core/utilities/structures/userGroups.js.map +1 -0
  336. package/dist/tests/core/utilities/structures/users.js +53 -0
  337. package/dist/tests/core/utilities/structures/users.js.map +1 -0
  338. package/dist/tests/core/utilities/testContainerUtils.js +161 -0
  339. package/dist/tests/core/utilities/testContainerUtils.js.map +1 -0
  340. package/dist/tests/core/utilities/utils/index.js +39 -0
  341. package/dist/tests/core/utilities/utils/index.js.map +1 -0
  342. package/dist/tests/core/utilities/utils/queue.js +37 -0
  343. package/dist/tests/core/utilities/utils/queue.js.map +1 -0
  344. package/dist/tests/core/utilities/utils/time.js +7 -0
  345. package/dist/tests/core/utilities/utils/time.js.map +1 -0
  346. package/dist/tests/extra/DBTestConfiguration.js +65 -0
  347. package/dist/tests/extra/DBTestConfiguration.js.map +1 -0
  348. package/dist/tests/extra/index.js +43 -0
  349. package/dist/tests/extra/index.js.map +1 -0
  350. package/dist/tests/extra/testEnv.js +136 -0
  351. package/dist/tests/extra/testEnv.js.map +1 -0
  352. package/dist/tests/index.js +19 -0
  353. package/dist/tests/index.js.map +1 -0
  354. package/dist/tests/jestEnv.js +12 -0
  355. package/dist/tests/jestEnv.js.map +1 -0
  356. package/dist/tests/jestSetup.js +33 -0
  357. package/dist/tests/jestSetup.js.map +1 -0
  358. package/package.json +3 -3
@@ -0,0 +1,489 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"db.js","sourceRoot":"","sources":["../../../src/users/db.ts"],"names":[],"mappings":"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"}