@budibase/backend-core 2.9.39-alpha.8 → 2.9.39

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 (481) hide show
  1. package/dist/jest.config.js +25 -0
  2. package/dist/jest.config.js.map +1 -0
  3. package/dist/package.json +5 -5
  4. package/dist/src/accounts/accounts.js +75 -92
  5. package/dist/src/accounts/accounts.js.map +1 -7
  6. package/dist/src/accounts/api.js +85 -71
  7. package/dist/src/accounts/api.js.map +1 -7
  8. package/dist/src/accounts/index.js +16 -21
  9. package/dist/src/accounts/index.js.map +1 -7
  10. package/dist/src/auth/auth.js +178 -197
  11. package/dist/src/auth/auth.js.map +1 -7
  12. package/dist/src/auth/index.js +16 -21
  13. package/dist/src/auth/index.js.map +1 -7
  14. package/dist/src/blacklist/blacklist.js +69 -81
  15. package/dist/src/blacklist/blacklist.js.map +1 -7
  16. package/dist/src/blacklist/index.js +16 -21
  17. package/dist/src/blacklist/index.js.map +1 -7
  18. package/dist/src/cache/appMetadata.js +88 -78
  19. package/dist/src/cache/appMetadata.js.map +1 -7
  20. package/dist/src/cache/base/index.js +110 -92
  21. package/dist/src/cache/base/index.js.map +1 -7
  22. package/dist/src/cache/generic.js +26 -64
  23. package/dist/src/cache/generic.js.map +1 -7
  24. package/dist/src/cache/index.js +32 -48
  25. package/dist/src/cache/index.js.map +1 -7
  26. package/dist/src/cache/user.js +115 -91
  27. package/dist/src/cache/user.js.map +1 -7
  28. package/dist/src/cache/writethrough.js +144 -129
  29. package/dist/src/cache/writethrough.js.map +1 -7
  30. package/dist/src/configs/configs.js +265 -215
  31. package/dist/src/configs/configs.js.map +1 -7
  32. package/dist/src/configs/index.js +16 -21
  33. package/dist/src/configs/index.js.map +1 -7
  34. package/dist/src/constants/db.js +64 -104
  35. package/dist/src/constants/db.js.map +1 -7
  36. package/dist/src/constants/index.js +17 -23
  37. package/dist/src/constants/index.js.map +1 -7
  38. package/dist/src/constants/misc.js +53 -91
  39. package/dist/src/constants/misc.js.map +1 -7
  40. package/dist/src/context/Context.js +11 -33
  41. package/dist/src/context/Context.js.map +1 -7
  42. package/dist/src/context/identity.js +60 -75
  43. package/dist/src/context/identity.js.map +1 -7
  44. package/dist/src/context/index.js +31 -42
  45. package/dist/src/context/index.js.map +1 -7
  46. package/dist/src/context/mainContext.js +275 -264
  47. package/dist/src/context/mainContext.js.map +1 -7
  48. package/dist/src/context/types.js +2 -16
  49. package/dist/src/context/types.js.map +1 -7
  50. package/dist/src/db/Replication.js +81 -85
  51. package/dist/src/db/Replication.js.map +1 -7
  52. package/dist/src/db/constants.js +11 -37
  53. package/dist/src/db/constants.js.map +1 -7
  54. package/dist/src/db/couch/DatabaseImpl.js +236 -212
  55. package/dist/src/db/couch/DatabaseImpl.js.map +1 -7
  56. package/dist/src/db/couch/connections.js +81 -96
  57. package/dist/src/db/couch/connections.js.map +1 -7
  58. package/dist/src/db/couch/index.js +25 -42
  59. package/dist/src/db/couch/index.js.map +1 -7
  60. package/dist/src/db/couch/pouchDB.js +93 -103
  61. package/dist/src/db/couch/pouchDB.js.map +1 -7
  62. package/dist/src/db/couch/pouchDump.js +1 -1
  63. package/dist/src/db/couch/pouchDump.js.map +1 -7
  64. package/dist/src/db/couch/utils.js +49 -70
  65. package/dist/src/db/couch/utils.js.map +1 -7
  66. package/dist/src/db/db.js +49 -63
  67. package/dist/src/db/db.js.map +1 -7
  68. package/dist/src/db/errors.js +17 -38
  69. package/dist/src/db/errors.js.map +1 -7
  70. package/dist/src/db/index.js +45 -61
  71. package/dist/src/db/index.js.map +1 -7
  72. package/dist/src/db/lucene.js +655 -582
  73. package/dist/src/db/lucene.js.map +1 -7
  74. package/dist/src/db/searchIndexes/index.js +16 -21
  75. package/dist/src/db/searchIndexes/index.js.map +1 -7
  76. package/dist/src/db/searchIndexes/searchIndexes.js +72 -77
  77. package/dist/src/db/searchIndexes/searchIndexes.js.map +1 -7
  78. package/dist/src/db/utils.js +199 -184
  79. package/dist/src/db/utils.js.map +1 -7
  80. package/dist/src/db/views.js +187 -191
  81. package/dist/src/db/views.js.map +1 -7
  82. package/dist/src/docIds/conversions.js +48 -69
  83. package/dist/src/docIds/conversions.js.map +1 -7
  84. package/dist/src/docIds/ids.js +87 -76
  85. package/dist/src/docIds/ids.js.map +1 -7
  86. package/dist/src/docIds/index.js +17 -23
  87. package/dist/src/docIds/index.js.map +1 -7
  88. package/dist/src/docIds/newid.js +6 -29
  89. package/dist/src/docIds/newid.js.map +1 -7
  90. package/dist/src/docIds/params.js +111 -109
  91. package/dist/src/docIds/params.js.map +1 -7
  92. package/dist/src/docUpdates/index.js +29 -54
  93. package/dist/src/docUpdates/index.js.map +1 -7
  94. package/dist/src/environment.js +81 -152
  95. package/dist/src/environment.js.map +1 -7
  96. package/dist/src/errors/errors.js +77 -106
  97. package/dist/src/errors/errors.js.map +1 -7
  98. package/dist/src/errors/index.js +16 -21
  99. package/dist/src/errors/index.js.map +1 -7
  100. package/dist/src/events/analytics.js +38 -38
  101. package/dist/src/events/analytics.js.map +1 -7
  102. package/dist/src/events/asyncEvents/index.js +17 -23
  103. package/dist/src/events/asyncEvents/index.js.map +1 -7
  104. package/dist/src/events/asyncEvents/publisher.js +24 -36
  105. package/dist/src/events/asyncEvents/publisher.js.map +1 -7
  106. package/dist/src/events/asyncEvents/queue.js +21 -37
  107. package/dist/src/events/asyncEvents/queue.js.map +1 -7
  108. package/dist/src/events/backfill.js +170 -163
  109. package/dist/src/events/backfill.js.map +1 -7
  110. package/dist/src/events/documentId.js +23 -46
  111. package/dist/src/events/documentId.js.map +1 -7
  112. package/dist/src/events/events.js +68 -58
  113. package/dist/src/events/events.js.map +1 -7
  114. package/dist/src/events/identification.js +279 -254
  115. package/dist/src/events/identification.js.map +1 -7
  116. package/dist/src/events/index.js +42 -57
  117. package/dist/src/events/index.js.map +1 -7
  118. package/dist/src/events/processors/AnalyticsProcessor.js +81 -64
  119. package/dist/src/events/processors/AnalyticsProcessor.js.map +1 -7
  120. package/dist/src/events/processors/AuditLogsProcessor.js +79 -90
  121. package/dist/src/events/processors/AuditLogsProcessor.js.map +1 -7
  122. package/dist/src/events/processors/LoggingProcessor.js +39 -50
  123. package/dist/src/events/processors/LoggingProcessor.js.map +1 -7
  124. package/dist/src/events/processors/Processors.js +44 -49
  125. package/dist/src/events/processors/Processors.js.map +1 -7
  126. package/dist/src/events/processors/async/DocumentUpdateProcessor.js +37 -46
  127. package/dist/src/events/processors/async/DocumentUpdateProcessor.js.map +1 -7
  128. package/dist/src/events/processors/index.js +18 -52
  129. package/dist/src/events/processors/index.js.map +1 -7
  130. package/dist/src/events/processors/posthog/PosthogProcessor.js +126 -113
  131. package/dist/src/events/processors/posthog/PosthogProcessor.js.map +1 -7
  132. package/dist/src/events/processors/posthog/index.js +6 -34
  133. package/dist/src/events/processors/posthog/index.js.map +1 -7
  134. package/dist/src/events/processors/posthog/rateLimiting.js +104 -90
  135. package/dist/src/events/processors/posthog/rateLimiting.js.map +1 -7
  136. package/dist/src/events/processors/types.js +2 -28
  137. package/dist/src/events/processors/types.js.map +1 -7
  138. package/dist/src/events/publishers/account.js +37 -43
  139. package/dist/src/events/publishers/account.js.map +1 -7
  140. package/dist/src/events/publishers/app.js +139 -131
  141. package/dist/src/events/publishers/app.js.map +1 -7
  142. package/dist/src/events/publishers/auditLog.js +29 -37
  143. package/dist/src/events/publishers/auditLog.js.map +1 -7
  144. package/dist/src/events/publishers/auth.js +71 -71
  145. package/dist/src/events/publishers/auth.js.map +1 -7
  146. package/dist/src/events/publishers/automation.js +108 -102
  147. package/dist/src/events/publishers/automation.js.map +1 -7
  148. package/dist/src/events/publishers/backfill.js +75 -82
  149. package/dist/src/events/publishers/backfill.js.map +1 -7
  150. package/dist/src/events/publishers/backup.js +36 -44
  151. package/dist/src/events/publishers/backup.js.map +1 -7
  152. package/dist/src/events/publishers/datasource.js +46 -51
  153. package/dist/src/events/publishers/datasource.js.map +1 -7
  154. package/dist/src/events/publishers/email.js +25 -33
  155. package/dist/src/events/publishers/email.js.map +1 -7
  156. package/dist/src/events/publishers/environmentVariable.js +38 -47
  157. package/dist/src/events/publishers/environmentVariable.js.map +1 -7
  158. package/dist/src/events/publishers/group.js +97 -95
  159. package/dist/src/events/publishers/group.js.map +1 -7
  160. package/dist/src/events/publishers/index.js +53 -106
  161. package/dist/src/events/publishers/index.js.map +1 -7
  162. package/dist/src/events/publishers/installation.js +45 -49
  163. package/dist/src/events/publishers/installation.js.map +1 -7
  164. package/dist/src/events/publishers/layout.js +29 -37
  165. package/dist/src/events/publishers/layout.js.map +1 -7
  166. package/dist/src/events/publishers/license.js +67 -68
  167. package/dist/src/events/publishers/license.js.map +1 -7
  168. package/dist/src/events/publishers/org.js +44 -45
  169. package/dist/src/events/publishers/org.js.map +1 -7
  170. package/dist/src/events/publishers/plugin.js +49 -55
  171. package/dist/src/events/publishers/plugin.js.map +1 -7
  172. package/dist/src/events/publishers/query.js +70 -81
  173. package/dist/src/events/publishers/query.js.map +1 -7
  174. package/dist/src/events/publishers/role.js +61 -63
  175. package/dist/src/events/publishers/role.js.map +1 -7
  176. package/dist/src/events/publishers/rows.js +28 -39
  177. package/dist/src/events/publishers/rows.js.map +1 -7
  178. package/dist/src/events/publishers/screen.js +41 -47
  179. package/dist/src/events/publishers/screen.js.map +1 -7
  180. package/dist/src/events/publishers/serve.js +41 -47
  181. package/dist/src/events/publishers/serve.js.map +1 -7
  182. package/dist/src/events/publishers/table.js +69 -71
  183. package/dist/src/events/publishers/table.js.map +1 -7
  184. package/dist/src/events/publishers/user.js +184 -173
  185. package/dist/src/events/publishers/user.js.map +1 -7
  186. package/dist/src/events/publishers/view.js +98 -89
  187. package/dist/src/events/publishers/view.js.map +1 -7
  188. package/dist/src/features/index.js +88 -93
  189. package/dist/src/features/index.js.map +1 -7
  190. package/dist/src/features/installation.js +16 -38
  191. package/dist/src/features/installation.js.map +1 -7
  192. package/dist/src/helpers.js +11 -28
  193. package/dist/src/helpers.js.map +1 -7
  194. package/dist/src/index.js +77 -148
  195. package/dist/src/index.js.map +1 -7
  196. package/dist/src/installation.js +127 -128
  197. package/dist/src/installation.js.map +1 -7
  198. package/dist/src/logging/alerts.js +14 -39
  199. package/dist/src/logging/alerts.js.map +1 -7
  200. package/dist/src/logging/correlation/correlation.js +11 -35
  201. package/dist/src/logging/correlation/correlation.js.map +1 -7
  202. package/dist/src/logging/correlation/index.js +16 -21
  203. package/dist/src/logging/correlation/index.js.map +1 -7
  204. package/dist/src/logging/correlation/middleware.js +13 -33
  205. package/dist/src/logging/correlation/middleware.js.map +1 -7
  206. package/dist/src/logging/index.js +32 -45
  207. package/dist/src/logging/index.js.map +1 -7
  208. package/dist/src/logging/pino/logger.js +206 -185
  209. package/dist/src/logging/pino/logger.js.map +1 -7
  210. package/dist/src/logging/pino/middleware.js +38 -68
  211. package/dist/src/logging/pino/middleware.js.map +1 -7
  212. package/dist/src/logging/system.js +86 -95
  213. package/dist/src/logging/system.js.map +1 -7
  214. package/dist/src/middleware/adminOnly.js +16 -28
  215. package/dist/src/middleware/adminOnly.js.map +1 -7
  216. package/dist/src/middleware/auditLog.js +13 -24
  217. package/dist/src/middleware/auditLog.js.map +1 -7
  218. package/dist/src/middleware/authenticated.js +191 -165
  219. package/dist/src/middleware/authenticated.js.map +1 -7
  220. package/dist/src/middleware/builderOnly.js +29 -44
  221. package/dist/src/middleware/builderOnly.js.map +1 -7
  222. package/dist/src/middleware/builderOrAdmin.js +29 -44
  223. package/dist/src/middleware/builderOrAdmin.js.map +1 -7
  224. package/dist/src/middleware/csrf.js +75 -54
  225. package/dist/src/middleware/csrf.js.map +1 -7
  226. package/dist/src/middleware/errorHandling.js +60 -58
  227. package/dist/src/middleware/errorHandling.js.map +1 -7
  228. package/dist/src/middleware/index.js +61 -91
  229. package/dist/src/middleware/index.js.map +1 -7
  230. package/dist/src/middleware/internalApi.js +27 -36
  231. package/dist/src/middleware/internalApi.js.map +1 -7
  232. package/dist/src/middleware/joi-validator.js +39 -65
  233. package/dist/src/middleware/joi-validator.js.map +1 -7
  234. package/dist/src/middleware/matchers.js +36 -55
  235. package/dist/src/middleware/matchers.js.map +1 -7
  236. package/dist/src/middleware/passport/datasource/google.js +88 -96
  237. package/dist/src/middleware/passport/datasource/google.js.map +1 -7
  238. package/dist/src/middleware/passport/local.js +74 -66
  239. package/dist/src/middleware/passport/local.js.map +1 -7
  240. package/dist/src/middleware/passport/sso/google.js +81 -84
  241. package/dist/src/middleware/passport/sso/google.js.map +1 -7
  242. package/dist/src/middleware/passport/sso/oidc.js +140 -124
  243. package/dist/src/middleware/passport/sso/oidc.js.map +1 -7
  244. package/dist/src/middleware/passport/sso/sso.js +157 -141
  245. package/dist/src/middleware/passport/sso/sso.js.map +1 -7
  246. package/dist/src/middleware/passport/utils.js +60 -56
  247. package/dist/src/middleware/passport/utils.js.map +1 -7
  248. package/dist/src/middleware/querystringToBody.js +26 -42
  249. package/dist/src/middleware/querystringToBody.js.map +1 -7
  250. package/dist/src/middleware/tenancy.js +33 -42
  251. package/dist/src/middleware/tenancy.js.map +1 -7
  252. package/dist/src/migrations/definitions.js +37 -61
  253. package/dist/src/migrations/definitions.js.map +1 -7
  254. package/dist/src/migrations/index.js +17 -23
  255. package/dist/src/migrations/index.js.map +1 -7
  256. package/dist/src/migrations/migrations.js +182 -162
  257. package/dist/src/migrations/migrations.js.map +1 -7
  258. package/dist/src/objectStore/buckets/app.js +65 -57
  259. package/dist/src/objectStore/buckets/app.js.map +1 -7
  260. package/dist/src/objectStore/buckets/global.js +50 -55
  261. package/dist/src/objectStore/buckets/global.js.map +1 -7
  262. package/dist/src/objectStore/buckets/index.js +18 -25
  263. package/dist/src/objectStore/buckets/index.js.map +1 -7
  264. package/dist/src/objectStore/buckets/plugins.js +76 -82
  265. package/dist/src/objectStore/buckets/plugins.js.map +1 -7
  266. package/dist/src/objectStore/cloudfront.js +27 -61
  267. package/dist/src/objectStore/cloudfront.js.map +1 -7
  268. package/dist/src/objectStore/index.js +18 -25
  269. package/dist/src/objectStore/index.js.map +1 -7
  270. package/dist/src/objectStore/objectStore.js +351 -341
  271. package/dist/src/objectStore/objectStore.js.map +1 -7
  272. package/dist/src/objectStore/utils.js +26 -52
  273. package/dist/src/objectStore/utils.js.map +1 -7
  274. package/dist/src/platform/index.js +30 -42
  275. package/dist/src/platform/index.js.map +1 -7
  276. package/dist/src/platform/platformDb.js +7 -30
  277. package/dist/src/platform/platformDb.js.map +1 -7
  278. package/dist/src/platform/tenants.js +126 -110
  279. package/dist/src/platform/tenants.js.map +1 -7
  280. package/dist/src/platform/users.js +84 -92
  281. package/dist/src/platform/users.js.map +1 -7
  282. package/dist/src/plugin/index.js +16 -21
  283. package/dist/src/plugin/index.js.map +1 -7
  284. package/dist/src/plugin/utils.js +129 -137
  285. package/dist/src/plugin/utils.js.map +1 -7
  286. package/dist/src/queue/constants.js +10 -34
  287. package/dist/src/queue/constants.js.map +1 -7
  288. package/dist/src/queue/inMemoryQueue.js +137 -131
  289. package/dist/src/queue/inMemoryQueue.js.map +1 -7
  290. package/dist/src/queue/index.js +17 -23
  291. package/dist/src/queue/index.js.map +1 -7
  292. package/dist/src/queue/listeners.js +170 -161
  293. package/dist/src/queue/listeners.js.map +1 -7
  294. package/dist/src/queue/queue.js +83 -76
  295. package/dist/src/queue/queue.js.map +1 -7
  296. package/dist/src/redis/index.js +34 -45
  297. package/dist/src/redis/index.js.map +1 -7
  298. package/dist/src/redis/init.js +125 -115
  299. package/dist/src/redis/init.js.map +1 -7
  300. package/dist/src/redis/redis.js +302 -244
  301. package/dist/src/redis/redis.js.map +1 -7
  302. package/dist/src/redis/redlockImpl.js +152 -135
  303. package/dist/src/redis/redlockImpl.js.map +1 -7
  304. package/dist/src/redis/utils.js +115 -128
  305. package/dist/src/redis/utils.js.map +1 -7
  306. package/dist/src/security/encryption.js +141 -162
  307. package/dist/src/security/encryption.js.map +1 -7
  308. package/dist/src/security/permissions.js +132 -170
  309. package/dist/src/security/permissions.js.map +1 -7
  310. package/dist/src/security/roles.js +319 -298
  311. package/dist/src/security/roles.js.map +1 -7
  312. package/dist/src/security/sessions.js +106 -120
  313. package/dist/src/security/sessions.js.map +1 -7
  314. package/dist/src/tenancy/db.js +7 -30
  315. package/dist/src/tenancy/db.js.map +1 -7
  316. package/dist/src/tenancy/index.js +17 -23
  317. package/dist/src/tenancy/index.js.map +1 -7
  318. package/dist/src/tenancy/tenancy.js +101 -114
  319. package/dist/src/tenancy/tenancy.js.map +1 -7
  320. package/dist/src/timers/index.js +16 -21
  321. package/dist/src/timers/index.js.map +1 -7
  322. package/dist/src/timers/timers.js +18 -43
  323. package/dist/src/timers/timers.js.map +1 -7
  324. package/dist/src/users/db.js +403 -357
  325. package/dist/src/users/db.js.map +1 -7
  326. package/dist/src/users/events.js +150 -133
  327. package/dist/src/users/events.js.map +1 -7
  328. package/dist/src/users/index.js +21 -34
  329. package/dist/src/users/index.js.map +1 -7
  330. package/dist/src/users/lookup.js +104 -102
  331. package/dist/src/users/lookup.js.map +1 -7
  332. package/dist/src/users/users.js +244 -240
  333. package/dist/src/users/users.js.map +1 -7
  334. package/dist/src/users/utils.js +87 -90
  335. package/dist/src/users/utils.js.map +1 -7
  336. package/dist/src/utils/hashing.js +42 -48
  337. package/dist/src/utils/hashing.js.map +1 -7
  338. package/dist/src/utils/index.js +18 -25
  339. package/dist/src/utils/index.js.map +1 -7
  340. package/dist/src/utils/stringUtils.js +6 -30
  341. package/dist/src/utils/stringUtils.js.map +1 -7
  342. package/dist/src/utils/utils.js +212 -172
  343. package/dist/src/utils/utils.js.map +1 -7
  344. package/dist/tests/core/logging.js +21 -45
  345. package/dist/tests/core/logging.js.map +1 -7
  346. package/dist/tests/core/utilities/index.js +34 -51
  347. package/dist/tests/core/utilities/index.js.map +1 -7
  348. package/dist/tests/core/utilities/jestUtils.js +16 -45
  349. package/dist/tests/core/utilities/jestUtils.js.map +1 -7
  350. package/dist/tests/core/utilities/mocks/alerts.js +27 -38
  351. package/dist/tests/core/utilities/mocks/alerts.js.map +1 -7
  352. package/dist/tests/core/utilities/mocks/date.js +5 -31
  353. package/dist/tests/core/utilities/mocks/date.js.map +1 -7
  354. package/dist/tests/core/utilities/mocks/events.js +141 -131
  355. package/dist/tests/core/utilities/mocks/events.js.map +1 -7
  356. package/dist/tests/core/utilities/mocks/fetch.js +10 -34
  357. package/dist/tests/core/utilities/mocks/fetch.js.map +1 -7
  358. package/dist/tests/core/utilities/mocks/index.js +39 -51
  359. package/dist/tests/core/utilities/mocks/index.js.map +1 -7
  360. package/dist/tests/core/utilities/mocks/licenses.js +67 -107
  361. package/dist/tests/core/utilities/mocks/licenses.js.map +1 -7
  362. package/dist/tests/core/utilities/mocks/posthog.js +6 -6
  363. package/dist/tests/core/utilities/mocks/posthog.js.map +1 -7
  364. package/dist/tests/core/utilities/structures/Chance.js +17 -44
  365. package/dist/tests/core/utilities/structures/Chance.js.map +1 -7
  366. package/dist/tests/core/utilities/structures/accounts.js +61 -131
  367. package/dist/tests/core/utilities/structures/accounts.js.map +1 -7
  368. package/dist/tests/core/utilities/structures/apps.js +21 -44
  369. package/dist/tests/core/utilities/structures/apps.js.map +1 -7
  370. package/dist/tests/core/utilities/structures/common.js +8 -32
  371. package/dist/tests/core/utilities/structures/common.js.map +1 -7
  372. package/dist/tests/core/utilities/structures/db.js +11 -35
  373. package/dist/tests/core/utilities/structures/db.js.map +1 -7
  374. package/dist/tests/core/utilities/structures/documents/index.js +16 -21
  375. package/dist/tests/core/utilities/structures/documents/index.js.map +1 -7
  376. package/dist/tests/core/utilities/structures/documents/platform/index.js +26 -37
  377. package/dist/tests/core/utilities/structures/documents/platform/index.js.map +1 -7
  378. package/dist/tests/core/utilities/structures/documents/platform/installation.js +34 -44
  379. package/dist/tests/core/utilities/structures/documents/platform/installation.js.map +1 -7
  380. package/dist/tests/core/utilities/structures/generator.js +7 -38
  381. package/dist/tests/core/utilities/structures/generator.js.map +1 -7
  382. package/dist/tests/core/utilities/structures/index.js +43 -78
  383. package/dist/tests/core/utilities/structures/index.js.map +1 -7
  384. package/dist/tests/core/utilities/structures/koa.js +7 -39
  385. package/dist/tests/core/utilities/structures/koa.js.map +1 -7
  386. package/dist/tests/core/utilities/structures/licenses.js +121 -156
  387. package/dist/tests/core/utilities/structures/licenses.js.map +1 -7
  388. package/dist/tests/core/utilities/structures/plugins.js +20 -43
  389. package/dist/tests/core/utilities/structures/plugins.js.map +1 -7
  390. package/dist/tests/core/utilities/structures/quotas.js +67 -90
  391. package/dist/tests/core/utilities/structures/quotas.js.map +1 -7
  392. package/dist/tests/core/utilities/structures/scim.js +57 -84
  393. package/dist/tests/core/utilities/structures/scim.js.map +1 -7
  394. package/dist/tests/core/utilities/structures/shared.js +9 -41
  395. package/dist/tests/core/utilities/structures/shared.js.map +1 -7
  396. package/dist/tests/core/utilities/structures/sso.js +112 -124
  397. package/dist/tests/core/utilities/structures/sso.js.map +1 -7
  398. package/dist/tests/core/utilities/structures/tenants.js +6 -29
  399. package/dist/tests/core/utilities/structures/tenants.js.map +1 -7
  400. package/dist/tests/core/utilities/structures/userGroups.js +10 -33
  401. package/dist/tests/core/utilities/structures/userGroups.js.map +1 -7
  402. package/dist/tests/core/utilities/structures/users.js +36 -84
  403. package/dist/tests/core/utilities/structures/users.js.map +1 -7
  404. package/dist/tests/core/utilities/testContainerUtils.js +59 -84
  405. package/dist/tests/core/utilities/testContainerUtils.js.map +1 -7
  406. package/dist/tests/core/utilities/utils/index.js +26 -37
  407. package/dist/tests/core/utilities/utils/index.js.map +1 -7
  408. package/dist/tests/core/utilities/utils/time.js +5 -28
  409. package/dist/tests/core/utilities/utils/time.js.map +1 -7
  410. package/dist/tests/extra/DBTestConfiguration.js +50 -56
  411. package/dist/tests/extra/DBTestConfiguration.js.map +1 -7
  412. package/dist/tests/extra/index.js +30 -39
  413. package/dist/tests/extra/index.js.map +1 -7
  414. package/dist/tests/extra/testEnv.js +105 -84
  415. package/dist/tests/extra/testEnv.js.map +1 -7
  416. package/dist/tests/index.js +16 -21
  417. package/dist/tests/index.js.map +1 -7
  418. package/dist/tests/jestEnv.js +1 -1
  419. package/dist/tests/jestEnv.js.map +1 -7
  420. package/dist/tests/jestSetup.js +20 -33
  421. package/dist/tests/jestSetup.js.map +1 -7
  422. package/package.json +5 -5
  423. package/dist/plugins.js +0 -290
  424. package/dist/plugins.js.map +0 -7
  425. package/dist/plugins.js.meta.json +0 -1
  426. package/dist/src/auth/tests/auth.spec.js +0 -37
  427. package/dist/src/auth/tests/auth.spec.js.map +0 -7
  428. package/dist/src/blacklist/tests/blacklist.spec.js +0 -61
  429. package/dist/src/blacklist/tests/blacklist.spec.js.map +0 -7
  430. package/dist/src/cache/tests/writethrough.spec.js +0 -132
  431. package/dist/src/cache/tests/writethrough.spec.js.map +0 -7
  432. package/dist/src/configs/tests/configs.spec.js +0 -182
  433. package/dist/src/configs/tests/configs.spec.js.map +0 -7
  434. package/dist/src/context/tests/index.spec.js +0 -147
  435. package/dist/src/context/tests/index.spec.js.map +0 -7
  436. package/dist/src/db/tests/index.spec.js +0 -24
  437. package/dist/src/db/tests/index.spec.js.map +0 -7
  438. package/dist/src/db/tests/lucene.spec.js +0 -312
  439. package/dist/src/db/tests/lucene.spec.js.map +0 -7
  440. package/dist/src/db/tests/pouch.spec.js +0 -63
  441. package/dist/src/db/tests/pouch.spec.js.map +0 -7
  442. package/dist/src/db/tests/utils.spec.js +0 -50
  443. package/dist/src/db/tests/utils.spec.js.map +0 -7
  444. package/dist/src/events/processors/posthog/tests/PosthogProcessor.spec.js +0 -154
  445. package/dist/src/events/processors/posthog/tests/PosthogProcessor.spec.js.map +0 -7
  446. package/dist/src/features/tests/featureFlags.spec.js +0 -86
  447. package/dist/src/features/tests/featureFlags.spec.js.map +0 -7
  448. package/dist/src/logging/tests/system.spec.js +0 -59
  449. package/dist/src/logging/tests/system.spec.js.map +0 -7
  450. package/dist/src/middleware/passport/sso/tests/google.spec.js +0 -77
  451. package/dist/src/middleware/passport/sso/tests/google.spec.js.map +0 -7
  452. package/dist/src/middleware/passport/sso/tests/oidc.spec.js +0 -143
  453. package/dist/src/middleware/passport/sso/tests/oidc.spec.js.map +0 -7
  454. package/dist/src/middleware/passport/sso/tests/sso.spec.js +0 -167
  455. package/dist/src/middleware/passport/sso/tests/sso.spec.js.map +0 -7
  456. package/dist/src/middleware/tests/builder.spec.js +0 -169
  457. package/dist/src/middleware/tests/builder.spec.js.map +0 -7
  458. package/dist/src/middleware/tests/matchers.spec.js +0 -120
  459. package/dist/src/middleware/tests/matchers.spec.js.map +0 -7
  460. package/dist/src/migrations/tests/migrations.spec.js +0 -78
  461. package/dist/src/migrations/tests/migrations.spec.js.map +0 -7
  462. package/dist/src/objectStore/buckets/tests/app.spec.js +0 -171
  463. package/dist/src/objectStore/buckets/tests/app.spec.js.map +0 -7
  464. package/dist/src/objectStore/buckets/tests/global.spec.js +0 -87
  465. package/dist/src/objectStore/buckets/tests/global.spec.js.map +0 -7
  466. package/dist/src/objectStore/buckets/tests/plugins.spec.js +0 -123
  467. package/dist/src/objectStore/buckets/tests/plugins.spec.js.map +0 -7
  468. package/dist/src/platform/tests/tenants.spec.js +0 -46
  469. package/dist/src/platform/tests/tenants.spec.js.map +0 -7
  470. package/dist/src/plugin/tests/validation.spec.js +0 -97
  471. package/dist/src/plugin/tests/validation.spec.js.map +0 -7
  472. package/dist/src/security/tests/encryption.spec.js +0 -51
  473. package/dist/src/security/tests/encryption.spec.js.map +0 -7
  474. package/dist/src/security/tests/permissions.spec.js +0 -154
  475. package/dist/src/security/tests/permissions.spec.js.map +0 -7
  476. package/dist/src/security/tests/sessions.spec.js +0 -33
  477. package/dist/src/security/tests/sessions.spec.js.map +0 -7
  478. package/dist/src/tenancy/tests/tenancy.spec.js +0 -154
  479. package/dist/src/tenancy/tests/tenancy.spec.js.map +0 -7
  480. package/dist/src/utils/tests/utils.spec.js +0 -165
  481. package/dist/src/utils/tests/utils.spec.js.map +0 -7
@@ -1,224 +1,248 @@
1
1
  "use strict";
2
- var __create = Object.create;
3
- var __defProp = Object.defineProperty;
4
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
- var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __getProtoOf = Object.getPrototypeOf;
7
- var __hasOwnProp = Object.prototype.hasOwnProperty;
8
- var __export = (target, all) => {
9
- for (var name in all)
10
- __defProp(target, name, { get: all[name], enumerable: true });
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
11
10
  };
12
- var __copyProps = (to, from, except, desc) => {
13
- if (from && typeof from === "object" || typeof from === "function") {
14
- for (let key of __getOwnPropNames(from))
15
- if (!__hasOwnProp.call(to, key) && key !== except)
16
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
- }
18
- return to;
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
19
13
  };
20
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
- // If the importer is in node compatibility mode or this is not an ESM
22
- // file that has been converted to a CommonJS file using a Babel-
23
- // compatible transform (i.e. "__esModule" has not been set), then set
24
- // "default" to the CommonJS "module.exports" for node compatibility.
25
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
- mod
27
- ));
28
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
- var DatabaseImpl_exports = {};
30
- __export(DatabaseImpl_exports, {
31
- DatabaseImpl: () => DatabaseImpl,
32
- DatabaseWithConnection: () => DatabaseWithConnection
33
- });
34
- module.exports = __toCommonJS(DatabaseImpl_exports);
35
- var import_nano = __toESM(require("@budibase/nano"));
36
- var import_types = require("@budibase/types");
37
- var import_connections = require("./connections");
38
- var import_utils = require("./utils");
39
- var import_pouchDB = require("./pouchDB");
40
- var import_newid = require("../../docIds/newid");
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.DatabaseImpl = exports.DatabaseWithConnection = void 0;
16
+ const nano_1 = __importDefault(require("@budibase/nano"));
17
+ const types_1 = require("@budibase/types");
18
+ const connections_1 = require("./connections");
19
+ const utils_1 = require("./utils");
20
+ const pouchDB_1 = require("./pouchDB");
21
+ const newid_1 = require("../../docIds/newid");
41
22
  function buildNano(couchInfo) {
42
- return (0, import_nano.default)({
43
- url: couchInfo.url,
44
- requestDefaults: {
45
- headers: {
46
- Authorization: couchInfo.cookie
47
- }
48
- },
49
- parseUrl: false
50
- });
23
+ return (0, nano_1.default)({
24
+ url: couchInfo.url,
25
+ requestDefaults: {
26
+ headers: {
27
+ Authorization: couchInfo.cookie,
28
+ },
29
+ },
30
+ parseUrl: false,
31
+ });
51
32
  }
52
33
  function DatabaseWithConnection(dbName, connection, opts) {
53
- if (!connection) {
54
- throw new Error("Must provide connection details");
55
- }
56
- return new DatabaseImpl(dbName, opts, connection);
34
+ if (!connection) {
35
+ throw new Error("Must provide connection details");
36
+ }
37
+ return new DatabaseImpl(dbName, opts, connection);
57
38
  }
39
+ exports.DatabaseWithConnection = DatabaseWithConnection;
58
40
  class DatabaseImpl {
59
- constructor(dbName, opts, connection) {
60
- this.couchInfo = (0, import_connections.getCouchInfo)();
61
- if (dbName == null) {
62
- throw new Error("Database name cannot be undefined.");
63
- }
64
- this.name = dbName;
65
- this.pouchOpts = opts || {};
66
- if (connection) {
67
- this.couchInfo = (0, import_connections.getCouchInfo)(connection);
68
- this.instanceNano = buildNano(this.couchInfo);
69
- }
70
- if (!DatabaseImpl.nano) {
71
- DatabaseImpl.init();
72
- }
73
- }
74
- static init() {
75
- const couchInfo = (0, import_connections.getCouchInfo)();
76
- DatabaseImpl.nano = buildNano(couchInfo);
77
- }
78
- async exists() {
79
- const response = await (0, import_utils.directCouchUrlCall)({
80
- url: `${this.couchInfo.url}/${this.name}`,
81
- method: "HEAD",
82
- cookie: this.couchInfo.cookie
83
- });
84
- return response.status === 200;
85
- }
86
- nano() {
87
- return this.instanceNano || DatabaseImpl.nano;
88
- }
89
- async checkSetup() {
90
- let shouldCreate = !this.pouchOpts?.skip_setup;
91
- let exists = await this.exists();
92
- if (!shouldCreate && !exists) {
93
- throw new Error("DB does not exist");
94
- }
95
- if (!exists) {
96
- try {
97
- await this.nano().db.create(this.name);
98
- } catch (err) {
99
- if (err.statusCode !== 412) {
100
- throw err;
41
+ constructor(dbName, opts, connection) {
42
+ this.couchInfo = (0, connections_1.getCouchInfo)();
43
+ if (dbName == null) {
44
+ throw new Error("Database name cannot be undefined.");
101
45
  }
102
- }
103
- }
104
- return this.nano().db.use(this.name);
105
- }
106
- async updateOutput(fnc) {
107
- try {
108
- return await fnc();
109
- } catch (err) {
110
- if (err.statusCode) {
111
- err.status = err.statusCode;
112
- }
113
- throw err;
114
- }
115
- }
116
- async get(id) {
117
- const db = await this.checkSetup();
118
- if (!id) {
119
- throw new Error("Unable to get doc without a valid _id.");
120
- }
121
- return this.updateOutput(() => db.get(id));
122
- }
123
- async remove(idOrDoc, rev) {
124
- const db = await this.checkSetup();
125
- let _id;
126
- let _rev;
127
- if ((0, import_types.isDocument)(idOrDoc)) {
128
- _id = idOrDoc._id;
129
- _rev = idOrDoc._rev;
130
- } else {
131
- _id = idOrDoc;
132
- _rev = rev;
133
- }
134
- if (!_id || !_rev) {
135
- throw new Error("Unable to remove doc without a valid _id and _rev.");
136
- }
137
- return this.updateOutput(() => db.destroy(_id, _rev));
138
- }
139
- async post(document, opts) {
140
- if (!document._id) {
141
- document._id = (0, import_newid.newid)();
142
- }
143
- return this.put(document, opts);
144
- }
145
- async put(document, opts) {
146
- if (!document._id) {
147
- throw new Error("Cannot store document without _id field.");
148
- }
149
- const db = await this.checkSetup();
150
- if (!document.createdAt) {
151
- document.createdAt = (/* @__PURE__ */ new Date()).toISOString();
152
- }
153
- document.updatedAt = (/* @__PURE__ */ new Date()).toISOString();
154
- if (opts?.force && document._id) {
155
- try {
156
- const existing = await this.get(document._id);
157
- if (existing) {
158
- document._rev = existing._rev;
46
+ this.name = dbName;
47
+ this.pouchOpts = opts || {};
48
+ if (connection) {
49
+ this.couchInfo = (0, connections_1.getCouchInfo)(connection);
50
+ this.instanceNano = buildNano(this.couchInfo);
159
51
  }
160
- } catch (err) {
161
- if (err.status !== 404) {
162
- throw err;
52
+ if (!DatabaseImpl.nano) {
53
+ DatabaseImpl.init();
163
54
  }
164
- }
165
- }
166
- return this.updateOutput(() => db.insert(document));
167
- }
168
- async bulkDocs(documents) {
169
- const db = await this.checkSetup();
170
- return this.updateOutput(() => db.bulk({ docs: documents }));
171
- }
172
- async allDocs(params) {
173
- const db = await this.checkSetup();
174
- return this.updateOutput(() => db.list(params));
175
- }
176
- async query(viewName, params) {
177
- const db = await this.checkSetup();
178
- const [database, view] = viewName.split("/");
179
- return this.updateOutput(() => db.view(database, view, params));
180
- }
181
- async destroy() {
182
- try {
183
- return await this.nano().db.destroy(this.name);
184
- } catch (err) {
185
- if (err.statusCode === 404) {
186
- return;
187
- } else {
188
- throw { ...err, status: err.statusCode };
189
- }
190
- }
191
- }
192
- async compact() {
193
- const db = await this.checkSetup();
194
- return this.updateOutput(() => db.compact());
195
- }
196
- // All below functions are in-frequently called, just utilise PouchDB
197
- // for them as it implements them better than we can
198
- async dump(stream, opts) {
199
- const pouch = (0, import_pouchDB.getPouchDB)(this.name);
200
- return pouch.dump(stream, opts);
201
- }
202
- async load(stream) {
203
- const pouch = (0, import_pouchDB.getPouchDB)(this.name);
204
- return pouch.load(stream);
205
- }
206
- async createIndex(opts) {
207
- const pouch = (0, import_pouchDB.getPouchDB)(this.name);
208
- return pouch.createIndex(opts);
209
- }
210
- async deleteIndex(opts) {
211
- const pouch = (0, import_pouchDB.getPouchDB)(this.name);
212
- return pouch.deleteIndex(opts);
213
- }
214
- async getIndexes() {
215
- const pouch = (0, import_pouchDB.getPouchDB)(this.name);
216
- return pouch.getIndexes();
217
- }
55
+ }
56
+ static init() {
57
+ const couchInfo = (0, connections_1.getCouchInfo)();
58
+ DatabaseImpl.nano = buildNano(couchInfo);
59
+ }
60
+ exists() {
61
+ return __awaiter(this, void 0, void 0, function* () {
62
+ const response = yield (0, utils_1.directCouchUrlCall)({
63
+ url: `${this.couchInfo.url}/${this.name}`,
64
+ method: "HEAD",
65
+ cookie: this.couchInfo.cookie,
66
+ });
67
+ return response.status === 200;
68
+ });
69
+ }
70
+ nano() {
71
+ return this.instanceNano || DatabaseImpl.nano;
72
+ }
73
+ checkSetup() {
74
+ var _a;
75
+ return __awaiter(this, void 0, void 0, function* () {
76
+ let shouldCreate = !((_a = this.pouchOpts) === null || _a === void 0 ? void 0 : _a.skip_setup);
77
+ // check exists in a lightweight fashion
78
+ let exists = yield this.exists();
79
+ if (!shouldCreate && !exists) {
80
+ throw new Error("DB does not exist");
81
+ }
82
+ if (!exists) {
83
+ try {
84
+ yield this.nano().db.create(this.name);
85
+ }
86
+ catch (err) {
87
+ // Handling race conditions
88
+ if (err.statusCode !== 412) {
89
+ throw err;
90
+ }
91
+ }
92
+ }
93
+ return this.nano().db.use(this.name);
94
+ });
95
+ }
96
+ updateOutput(fnc) {
97
+ return __awaiter(this, void 0, void 0, function* () {
98
+ try {
99
+ return yield fnc();
100
+ }
101
+ catch (err) {
102
+ if (err.statusCode) {
103
+ err.status = err.statusCode;
104
+ }
105
+ throw err;
106
+ }
107
+ });
108
+ }
109
+ get(id) {
110
+ return __awaiter(this, void 0, void 0, function* () {
111
+ const db = yield this.checkSetup();
112
+ if (!id) {
113
+ throw new Error("Unable to get doc without a valid _id.");
114
+ }
115
+ return this.updateOutput(() => db.get(id));
116
+ });
117
+ }
118
+ remove(idOrDoc, rev) {
119
+ return __awaiter(this, void 0, void 0, function* () {
120
+ const db = yield this.checkSetup();
121
+ let _id;
122
+ let _rev;
123
+ if ((0, types_1.isDocument)(idOrDoc)) {
124
+ _id = idOrDoc._id;
125
+ _rev = idOrDoc._rev;
126
+ }
127
+ else {
128
+ _id = idOrDoc;
129
+ _rev = rev;
130
+ }
131
+ if (!_id || !_rev) {
132
+ throw new Error("Unable to remove doc without a valid _id and _rev.");
133
+ }
134
+ return this.updateOutput(() => db.destroy(_id, _rev));
135
+ });
136
+ }
137
+ post(document, opts) {
138
+ return __awaiter(this, void 0, void 0, function* () {
139
+ if (!document._id) {
140
+ document._id = (0, newid_1.newid)();
141
+ }
142
+ return this.put(document, opts);
143
+ });
144
+ }
145
+ put(document, opts) {
146
+ return __awaiter(this, void 0, void 0, function* () {
147
+ if (!document._id) {
148
+ throw new Error("Cannot store document without _id field.");
149
+ }
150
+ const db = yield this.checkSetup();
151
+ if (!document.createdAt) {
152
+ document.createdAt = new Date().toISOString();
153
+ }
154
+ document.updatedAt = new Date().toISOString();
155
+ if ((opts === null || opts === void 0 ? void 0 : opts.force) && document._id) {
156
+ try {
157
+ const existing = yield this.get(document._id);
158
+ if (existing) {
159
+ document._rev = existing._rev;
160
+ }
161
+ }
162
+ catch (err) {
163
+ if (err.status !== 404) {
164
+ throw err;
165
+ }
166
+ }
167
+ }
168
+ return this.updateOutput(() => db.insert(document));
169
+ });
170
+ }
171
+ bulkDocs(documents) {
172
+ return __awaiter(this, void 0, void 0, function* () {
173
+ const db = yield this.checkSetup();
174
+ return this.updateOutput(() => db.bulk({ docs: documents }));
175
+ });
176
+ }
177
+ allDocs(params) {
178
+ return __awaiter(this, void 0, void 0, function* () {
179
+ const db = yield this.checkSetup();
180
+ return this.updateOutput(() => db.list(params));
181
+ });
182
+ }
183
+ query(viewName, params) {
184
+ return __awaiter(this, void 0, void 0, function* () {
185
+ const db = yield this.checkSetup();
186
+ const [database, view] = viewName.split("/");
187
+ return this.updateOutput(() => db.view(database, view, params));
188
+ });
189
+ }
190
+ destroy() {
191
+ return __awaiter(this, void 0, void 0, function* () {
192
+ try {
193
+ return yield this.nano().db.destroy(this.name);
194
+ }
195
+ catch (err) {
196
+ // didn't exist, don't worry
197
+ if (err.statusCode === 404) {
198
+ return;
199
+ }
200
+ else {
201
+ throw Object.assign(Object.assign({}, err), { status: err.statusCode });
202
+ }
203
+ }
204
+ });
205
+ }
206
+ compact() {
207
+ return __awaiter(this, void 0, void 0, function* () {
208
+ const db = yield this.checkSetup();
209
+ return this.updateOutput(() => db.compact());
210
+ });
211
+ }
212
+ // All below functions are in-frequently called, just utilise PouchDB
213
+ // for them as it implements them better than we can
214
+ dump(stream, opts) {
215
+ return __awaiter(this, void 0, void 0, function* () {
216
+ const pouch = (0, pouchDB_1.getPouchDB)(this.name);
217
+ // @ts-ignore
218
+ return pouch.dump(stream, opts);
219
+ });
220
+ }
221
+ load(stream) {
222
+ return __awaiter(this, void 0, void 0, function* () {
223
+ const pouch = (0, pouchDB_1.getPouchDB)(this.name);
224
+ // @ts-ignore
225
+ return pouch.load(stream);
226
+ });
227
+ }
228
+ createIndex(opts) {
229
+ return __awaiter(this, void 0, void 0, function* () {
230
+ const pouch = (0, pouchDB_1.getPouchDB)(this.name);
231
+ return pouch.createIndex(opts);
232
+ });
233
+ }
234
+ deleteIndex(opts) {
235
+ return __awaiter(this, void 0, void 0, function* () {
236
+ const pouch = (0, pouchDB_1.getPouchDB)(this.name);
237
+ return pouch.deleteIndex(opts);
238
+ });
239
+ }
240
+ getIndexes() {
241
+ return __awaiter(this, void 0, void 0, function* () {
242
+ const pouch = (0, pouchDB_1.getPouchDB)(this.name);
243
+ return pouch.getIndexes();
244
+ });
245
+ }
218
246
  }
219
- // Annotate the CommonJS export names for ESM import in node:
220
- 0 && (module.exports = {
221
- DatabaseImpl,
222
- DatabaseWithConnection
223
- });
224
- //# sourceMappingURL=DatabaseImpl.js.map
247
+ exports.DatabaseImpl = DatabaseImpl;
248
+ //# sourceMappingURL=DatabaseImpl.js.map
@@ -1,7 +1 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../../src/db/couch/DatabaseImpl.ts"],
4
- "sourcesContent": ["import Nano from \"@budibase/nano\"\nimport {\n AllDocsResponse,\n AnyDocument,\n Database,\n DatabaseOpts,\n DatabaseQueryOpts,\n DatabasePutOpts,\n DatabaseCreateIndexOpts,\n DatabaseDeleteIndexOpts,\n Document,\n isDocument,\n} from \"@budibase/types\"\nimport { getCouchInfo } from \"./connections\"\nimport { directCouchUrlCall } from \"./utils\"\nimport { getPouchDB } from \"./pouchDB\"\nimport { WriteStream, ReadStream } from \"fs\"\nimport { newid } from \"../../docIds/newid\"\n\nfunction buildNano(couchInfo: { url: string; cookie: string }) {\n return Nano({\n url: couchInfo.url,\n requestDefaults: {\n headers: {\n Authorization: couchInfo.cookie,\n },\n },\n parseUrl: false,\n })\n}\n\nexport function DatabaseWithConnection(\n dbName: string,\n connection: string,\n opts?: DatabaseOpts\n) {\n if (!connection) {\n throw new Error(\"Must provide connection details\")\n }\n return new DatabaseImpl(dbName, opts, connection)\n}\n\nexport class DatabaseImpl implements Database {\n public readonly name: string\n private static nano: Nano.ServerScope\n private readonly instanceNano?: Nano.ServerScope\n private readonly pouchOpts: DatabaseOpts\n\n private readonly couchInfo = getCouchInfo()\n\n constructor(dbName?: string, opts?: DatabaseOpts, connection?: string) {\n if (dbName == null) {\n throw new Error(\"Database name cannot be undefined.\")\n }\n this.name = dbName\n this.pouchOpts = opts || {}\n if (connection) {\n this.couchInfo = getCouchInfo(connection)\n this.instanceNano = buildNano(this.couchInfo)\n }\n if (!DatabaseImpl.nano) {\n DatabaseImpl.init()\n }\n }\n\n static init() {\n const couchInfo = getCouchInfo()\n DatabaseImpl.nano = buildNano(couchInfo)\n }\n\n async exists() {\n const response = await directCouchUrlCall({\n url: `${this.couchInfo.url}/${this.name}`,\n method: \"HEAD\",\n cookie: this.couchInfo.cookie,\n })\n return response.status === 200\n }\n\n private nano() {\n return this.instanceNano || DatabaseImpl.nano\n }\n\n async checkSetup() {\n let shouldCreate = !this.pouchOpts?.skip_setup\n // check exists in a lightweight fashion\n let exists = await this.exists()\n if (!shouldCreate && !exists) {\n throw new Error(\"DB does not exist\")\n }\n if (!exists) {\n try {\n await this.nano().db.create(this.name)\n } catch (err: any) {\n // Handling race conditions\n if (err.statusCode !== 412) {\n throw err\n }\n }\n }\n return this.nano().db.use(this.name)\n }\n\n private async updateOutput(fnc: any) {\n try {\n return await fnc()\n } catch (err: any) {\n if (err.statusCode) {\n err.status = err.statusCode\n }\n throw err\n }\n }\n\n async get<T>(id?: string): Promise<T | any> {\n const db = await this.checkSetup()\n if (!id) {\n throw new Error(\"Unable to get doc without a valid _id.\")\n }\n return this.updateOutput(() => db.get(id))\n }\n\n async remove(idOrDoc: string | Document, rev?: string) {\n const db = await this.checkSetup()\n let _id: string\n let _rev: string\n\n if (isDocument(idOrDoc)) {\n _id = idOrDoc._id!\n _rev = idOrDoc._rev!\n } else {\n _id = idOrDoc\n _rev = rev!\n }\n\n if (!_id || !_rev) {\n throw new Error(\"Unable to remove doc without a valid _id and _rev.\")\n }\n return this.updateOutput(() => db.destroy(_id, _rev))\n }\n\n async post(document: AnyDocument, opts?: DatabasePutOpts) {\n if (!document._id) {\n document._id = newid()\n }\n return this.put(document, opts)\n }\n\n async put(document: AnyDocument, opts?: DatabasePutOpts) {\n if (!document._id) {\n throw new Error(\"Cannot store document without _id field.\")\n }\n const db = await this.checkSetup()\n if (!document.createdAt) {\n document.createdAt = new Date().toISOString()\n }\n document.updatedAt = new Date().toISOString()\n if (opts?.force && document._id) {\n try {\n const existing = await this.get(document._id)\n if (existing) {\n document._rev = existing._rev\n }\n } catch (err: any) {\n if (err.status !== 404) {\n throw err\n }\n }\n }\n return this.updateOutput(() => db.insert(document))\n }\n\n async bulkDocs(documents: AnyDocument[]) {\n const db = await this.checkSetup()\n return this.updateOutput(() => db.bulk({ docs: documents }))\n }\n\n async allDocs<T>(params: DatabaseQueryOpts): Promise<AllDocsResponse<T>> {\n const db = await this.checkSetup()\n return this.updateOutput(() => db.list(params))\n }\n\n async query<T>(\n viewName: string,\n params: DatabaseQueryOpts\n ): Promise<AllDocsResponse<T>> {\n const db = await this.checkSetup()\n const [database, view] = viewName.split(\"/\")\n return this.updateOutput(() => db.view(database, view, params))\n }\n\n async destroy() {\n try {\n return await this.nano().db.destroy(this.name)\n } catch (err: any) {\n // didn't exist, don't worry\n if (err.statusCode === 404) {\n return\n } else {\n throw { ...err, status: err.statusCode }\n }\n }\n }\n\n async compact() {\n const db = await this.checkSetup()\n return this.updateOutput(() => db.compact())\n }\n\n // All below functions are in-frequently called, just utilise PouchDB\n // for them as it implements them better than we can\n async dump(stream: WriteStream, opts?: { filter?: any }) {\n const pouch = getPouchDB(this.name)\n // @ts-ignore\n return pouch.dump(stream, opts)\n }\n\n async load(stream: ReadStream) {\n const pouch = getPouchDB(this.name)\n // @ts-ignore\n return pouch.load(stream)\n }\n\n async createIndex(opts: DatabaseCreateIndexOpts) {\n const pouch = getPouchDB(this.name)\n return pouch.createIndex(opts)\n }\n\n async deleteIndex(opts: DatabaseDeleteIndexOpts) {\n const pouch = getPouchDB(this.name)\n return pouch.deleteIndex(opts)\n }\n\n async getIndexes() {\n const pouch = getPouchDB(this.name)\n return pouch.getIndexes()\n }\n}\n"],
5
- "mappings": "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",
6
- "names": ["Nano"]
7
- }
1
+ {"version":3,"file":"DatabaseImpl.js","sourceRoot":"","sources":["../../../../src/db/couch/DatabaseImpl.ts"],"names":[],"mappings":"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"}