@budibase/backend-core 2.9.16 → 2.9.18

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 (435) hide show
  1. package/dist/index.js +12544 -0
  2. package/dist/index.js.map +7 -0
  3. package/dist/index.js.meta.json +1 -0
  4. package/dist/package.json +5 -5
  5. package/dist/plugins.js +288 -16
  6. package/dist/plugins.js.map +7 -1
  7. package/dist/plugins.js.meta.json +1 -0
  8. package/dist/tests.js +8476 -0
  9. package/dist/tests.js.map +7 -0
  10. package/dist/tests.js.meta.json +1 -0
  11. package/dist/tsconfig.build.tsbuildinfo +1 -1
  12. package/package.json +5 -5
  13. package/scripts/build.js +6 -0
  14. package/tsconfig.build.json +5 -1
  15. package/tsconfig.json +0 -8
  16. package/dist/jest.config.js +0 -25
  17. package/dist/jest.config.js.map +0 -1
  18. package/dist/plugins.d.ts +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 -92
  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 -189
  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 -76
  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 -120
  36. package/dist/src/cache/base/index.js.map +0 -1
  37. package/dist/src/cache/generic.js +0 -31
  38. package/dist/src/cache/generic.js.map +0 -1
  39. package/dist/src/cache/index.js +0 -35
  40. package/dist/src/cache/index.js.map +0 -1
  41. package/dist/src/cache/user.js +0 -108
  42. package/dist/src/cache/user.js.map +0 -1
  43. package/dist/src/cache/writethrough.js +0 -159
  44. package/dist/src/cache/writethrough.js.map +0 -1
  45. package/dist/src/configs/configs.js +0 -278
  46. package/dist/src/configs/configs.js.map +0 -1
  47. package/dist/src/configs/index.js +0 -18
  48. package/dist/src/configs/index.js.map +0 -1
  49. package/dist/src/constants/db.js +0 -67
  50. package/dist/src/constants/db.js.map +0 -1
  51. package/dist/src/constants/index.js +0 -19
  52. package/dist/src/constants/index.js.map +0 -1
  53. package/dist/src/constants/misc.js +0 -54
  54. package/dist/src/constants/misc.js.map +0 -1
  55. package/dist/src/context/Context.js +0 -14
  56. package/dist/src/context/Context.js.map +0 -1
  57. package/dist/src/context/identity.js +0 -72
  58. package/dist/src/context/identity.js.map +0 -1
  59. package/dist/src/context/index.js +0 -34
  60. package/dist/src/context/index.js.map +0 -1
  61. package/dist/src/context/mainContext.js +0 -331
  62. package/dist/src/context/mainContext.js.map +0 -1
  63. package/dist/src/context/types.js +0 -3
  64. package/dist/src/context/types.js.map +0 -1
  65. package/dist/src/db/Replication.js +0 -85
  66. package/dist/src/db/Replication.js.map +0 -1
  67. package/dist/src/db/constants.js +0 -13
  68. package/dist/src/db/constants.js.map +0 -1
  69. package/dist/src/db/couch/DatabaseImpl.js +0 -248
  70. package/dist/src/db/couch/DatabaseImpl.js.map +0 -1
  71. package/dist/src/db/couch/connections.js +0 -88
  72. package/dist/src/db/couch/connections.js.map +0 -1
  73. package/dist/src/db/couch/index.js +0 -27
  74. package/dist/src/db/couch/index.js.map +0 -1
  75. package/dist/src/db/couch/pouchDB.js +0 -108
  76. package/dist/src/db/couch/pouchDB.js.map +0 -1
  77. package/dist/src/db/couch/pouchDump.js +0 -2
  78. package/dist/src/db/couch/pouchDump.js.map +0 -1
  79. package/dist/src/db/couch/utils.js +0 -55
  80. package/dist/src/db/couch/utils.js.map +0 -1
  81. package/dist/src/db/db.js +0 -59
  82. package/dist/src/db/db.js.map +0 -1
  83. package/dist/src/db/errors.js +0 -22
  84. package/dist/src/db/errors.js.map +0 -1
  85. package/dist/src/db/index.js +0 -48
  86. package/dist/src/db/index.js.map +0 -1
  87. package/dist/src/db/lucene.js +0 -650
  88. package/dist/src/db/lucene.js.map +0 -1
  89. package/dist/src/db/searchIndexes/index.js +0 -18
  90. package/dist/src/db/searchIndexes/index.js.map +0 -1
  91. package/dist/src/db/searchIndexes/searchIndexes.js +0 -77
  92. package/dist/src/db/searchIndexes/searchIndexes.js.map +0 -1
  93. package/dist/src/db/utils.js +0 -213
  94. package/dist/src/db/utils.js.map +0 -1
  95. package/dist/src/db/views.js +0 -219
  96. package/dist/src/db/views.js.map +0 -1
  97. package/dist/src/docIds/conversions.js +0 -62
  98. package/dist/src/docIds/conversions.js.map +0 -1
  99. package/dist/src/docIds/ids.js +0 -112
  100. package/dist/src/docIds/ids.js.map +0 -1
  101. package/dist/src/docIds/index.js +0 -19
  102. package/dist/src/docIds/index.js.map +0 -1
  103. package/dist/src/docIds/newid.js +0 -9
  104. package/dist/src/docIds/newid.js.map +0 -1
  105. package/dist/src/docIds/params.js +0 -138
  106. package/dist/src/docIds/params.js.map +0 -1
  107. package/dist/src/docUpdates/index.js +0 -36
  108. package/dist/src/docUpdates/index.js.map +0 -1
  109. package/dist/src/environment.js +0 -110
  110. package/dist/src/environment.js.map +0 -1
  111. package/dist/src/errors/errors.js +0 -97
  112. package/dist/src/errors/errors.js.map +0 -1
  113. package/dist/src/errors/index.js +0 -18
  114. package/dist/src/errors/index.js.map +0 -1
  115. package/dist/src/events/analytics.js +0 -42
  116. package/dist/src/events/analytics.js.map +0 -1
  117. package/dist/src/events/asyncEvents/index.js +0 -19
  118. package/dist/src/events/asyncEvents/index.js.map +0 -1
  119. package/dist/src/events/asyncEvents/publisher.js +0 -27
  120. package/dist/src/events/asyncEvents/publisher.js.map +0 -1
  121. package/dist/src/events/asyncEvents/queue.js +0 -26
  122. package/dist/src/events/asyncEvents/queue.js.map +0 -1
  123. package/dist/src/events/backfill.js +0 -179
  124. package/dist/src/events/backfill.js.map +0 -1
  125. package/dist/src/events/documentId.js +0 -28
  126. package/dist/src/events/documentId.js.map +0 -1
  127. package/dist/src/events/events.js +0 -73
  128. package/dist/src/events/events.js.map +0 -1
  129. package/dist/src/events/identification.js +0 -300
  130. package/dist/src/events/identification.js.map +0 -1
  131. package/dist/src/events/index.js +0 -47
  132. package/dist/src/events/index.js.map +0 -1
  133. package/dist/src/events/processors/AnalyticsProcessor.js +0 -93
  134. package/dist/src/events/processors/AnalyticsProcessor.js.map +0 -1
  135. package/dist/src/events/processors/AuditLogsProcessor.js +0 -86
  136. package/dist/src/events/processors/AuditLogsProcessor.js.map +0 -1
  137. package/dist/src/events/processors/LoggingProcessor.js +0 -47
  138. package/dist/src/events/processors/LoggingProcessor.js.map +0 -1
  139. package/dist/src/events/processors/Processors.js +0 -52
  140. package/dist/src/events/processors/Processors.js.map +0 -1
  141. package/dist/src/events/processors/async/DocumentUpdateProcessor.js +0 -44
  142. package/dist/src/events/processors/async/DocumentUpdateProcessor.js.map +0 -1
  143. package/dist/src/events/processors/index.js +0 -23
  144. package/dist/src/events/processors/index.js.map +0 -1
  145. package/dist/src/events/processors/posthog/PosthogProcessor.js +0 -139
  146. package/dist/src/events/processors/posthog/PosthogProcessor.js.map +0 -1
  147. package/dist/src/events/processors/posthog/index.js +0 -8
  148. package/dist/src/events/processors/posthog/index.js.map +0 -1
  149. package/dist/src/events/processors/posthog/rateLimiting.js +0 -119
  150. package/dist/src/events/processors/posthog/rateLimiting.js.map +0 -1
  151. package/dist/src/events/processors/types.js +0 -3
  152. package/dist/src/events/processors/types.js.map +0 -1
  153. package/dist/src/events/publishers/account.js +0 -43
  154. package/dist/src/events/publishers/account.js.map +0 -1
  155. package/dist/src/events/publishers/app.js +0 -153
  156. package/dist/src/events/publishers/app.js.map +0 -1
  157. package/dist/src/events/publishers/auditLog.js +0 -34
  158. package/dist/src/events/publishers/auditLog.js.map +0 -1
  159. package/dist/src/events/publishers/auth.js +0 -80
  160. package/dist/src/events/publishers/auth.js.map +0 -1
  161. package/dist/src/events/publishers/automation.js +0 -117
  162. package/dist/src/events/publishers/automation.js.map +0 -1
  163. package/dist/src/events/publishers/backfill.js +0 -85
  164. package/dist/src/events/publishers/backfill.js.map +0 -1
  165. package/dist/src/events/publishers/backup.js +0 -41
  166. package/dist/src/events/publishers/backup.js.map +0 -1
  167. package/dist/src/events/publishers/datasource.js +0 -54
  168. package/dist/src/events/publishers/datasource.js.map +0 -1
  169. package/dist/src/events/publishers/email.js +0 -30
  170. package/dist/src/events/publishers/email.js.map +0 -1
  171. package/dist/src/events/publishers/environmentVariable.js +0 -44
  172. package/dist/src/events/publishers/environmentVariable.js.map +0 -1
  173. package/dist/src/events/publishers/group.js +0 -107
  174. package/dist/src/events/publishers/group.js.map +0 -1
  175. package/dist/src/events/publishers/index.js +0 -55
  176. package/dist/src/events/publishers/index.js.map +0 -1
  177. package/dist/src/events/publishers/installation.js +0 -52
  178. package/dist/src/events/publishers/installation.js.map +0 -1
  179. package/dist/src/events/publishers/layout.js +0 -34
  180. package/dist/src/events/publishers/layout.js.map +0 -1
  181. package/dist/src/events/publishers/license.js +0 -77
  182. package/dist/src/events/publishers/license.js.map +0 -1
  183. package/dist/src/events/publishers/org.js +0 -52
  184. package/dist/src/events/publishers/org.js.map +0 -1
  185. package/dist/src/events/publishers/plugin.js +0 -55
  186. package/dist/src/events/publishers/plugin.js.map +0 -1
  187. package/dist/src/events/publishers/query.js +0 -74
  188. package/dist/src/events/publishers/query.js.map +0 -1
  189. package/dist/src/events/publishers/role.js +0 -69
  190. package/dist/src/events/publishers/role.js.map +0 -1
  191. package/dist/src/events/publishers/rows.js +0 -32
  192. package/dist/src/events/publishers/rows.js.map +0 -1
  193. package/dist/src/events/publishers/screen.js +0 -46
  194. package/dist/src/events/publishers/screen.js.map +0 -1
  195. package/dist/src/events/publishers/serve.js +0 -47
  196. package/dist/src/events/publishers/serve.js.map +0 -1
  197. package/dist/src/events/publishers/table.js +0 -77
  198. package/dist/src/events/publishers/table.js.map +0 -1
  199. package/dist/src/events/publishers/user.js +0 -202
  200. package/dist/src/events/publishers/user.js.map +0 -1
  201. package/dist/src/events/publishers/view.js +0 -111
  202. package/dist/src/events/publishers/view.js.map +0 -1
  203. package/dist/src/featureFlags/index.js +0 -96
  204. package/dist/src/featureFlags/index.js.map +0 -1
  205. package/dist/src/helpers.js +0 -14
  206. package/dist/src/helpers.js.map +0 -1
  207. package/dist/src/index.js +0 -82
  208. package/dist/src/index.js.map +0 -1
  209. package/dist/src/installation.js +0 -138
  210. package/dist/src/installation.js.map +0 -1
  211. package/dist/src/logging/alerts.js +0 -24
  212. package/dist/src/logging/alerts.js.map +0 -1
  213. package/dist/src/logging/correlation/correlation.js +0 -17
  214. package/dist/src/logging/correlation/correlation.js.map +0 -1
  215. package/dist/src/logging/correlation/index.js +0 -18
  216. package/dist/src/logging/correlation/index.js.map +0 -1
  217. package/dist/src/logging/correlation/middleware.js +0 -17
  218. package/dist/src/logging/correlation/middleware.js.map +0 -1
  219. package/dist/src/logging/index.js +0 -35
  220. package/dist/src/logging/index.js.map +0 -1
  221. package/dist/src/logging/pino/logger.js +0 -218
  222. package/dist/src/logging/pino/logger.js.map +0 -1
  223. package/dist/src/logging/pino/middleware.js +0 -47
  224. package/dist/src/logging/pino/middleware.js.map +0 -1
  225. package/dist/src/logging/system.js +0 -101
  226. package/dist/src/logging/system.js.map +0 -1
  227. package/dist/src/middleware/adminOnly.js +0 -19
  228. package/dist/src/middleware/adminOnly.js.map +0 -1
  229. package/dist/src/middleware/auditLog.js +0 -16
  230. package/dist/src/middleware/auditLog.js.map +0 -1
  231. package/dist/src/middleware/authenticated.js +0 -204
  232. package/dist/src/middleware/authenticated.js.map +0 -1
  233. package/dist/src/middleware/builderOnly.js +0 -33
  234. package/dist/src/middleware/builderOnly.js.map +0 -1
  235. package/dist/src/middleware/builderOrAdmin.js +0 -33
  236. package/dist/src/middleware/builderOrAdmin.js.map +0 -1
  237. package/dist/src/middleware/csrf.js +0 -81
  238. package/dist/src/middleware/csrf.js.map +0 -1
  239. package/dist/src/middleware/errorHandling.js +0 -64
  240. package/dist/src/middleware/errorHandling.js.map +0 -1
  241. package/dist/src/middleware/index.js +0 -65
  242. package/dist/src/middleware/index.js.map +0 -1
  243. package/dist/src/middleware/internalApi.js +0 -30
  244. package/dist/src/middleware/internalApi.js.map +0 -1
  245. package/dist/src/middleware/joi-validator.js +0 -47
  246. package/dist/src/middleware/joi-validator.js.map +0 -1
  247. package/dist/src/middleware/matchers.js +0 -43
  248. package/dist/src/middleware/matchers.js.map +0 -1
  249. package/dist/src/middleware/passport/datasource/google.js +0 -95
  250. package/dist/src/middleware/passport/datasource/google.js.map +0 -1
  251. package/dist/src/middleware/passport/local.js +0 -81
  252. package/dist/src/middleware/passport/local.js.map +0 -1
  253. package/dist/src/middleware/passport/sso/google.js +0 -90
  254. package/dist/src/middleware/passport/sso/google.js.map +0 -1
  255. package/dist/src/middleware/passport/sso/oidc.js +0 -151
  256. package/dist/src/middleware/passport/sso/oidc.js.map +0 -1
  257. package/dist/src/middleware/passport/sso/sso.js +0 -165
  258. package/dist/src/middleware/passport/sso/sso.js.map +0 -1
  259. package/dist/src/middleware/passport/utils.js +0 -66
  260. package/dist/src/middleware/passport/utils.js.map +0 -1
  261. package/dist/src/middleware/querystringToBody.js +0 -29
  262. package/dist/src/middleware/querystringToBody.js.map +0 -1
  263. package/dist/src/middleware/tenancy.js +0 -37
  264. package/dist/src/middleware/tenancy.js.map +0 -1
  265. package/dist/src/migrations/definitions.js +0 -39
  266. package/dist/src/migrations/definitions.js.map +0 -1
  267. package/dist/src/migrations/index.js +0 -19
  268. package/dist/src/migrations/index.js.map +0 -1
  269. package/dist/src/migrations/migrations.js +0 -198
  270. package/dist/src/migrations/migrations.js.map +0 -1
  271. package/dist/src/objectStore/buckets/app.js +0 -73
  272. package/dist/src/objectStore/buckets/app.js.map +0 -1
  273. package/dist/src/objectStore/buckets/global.js +0 -58
  274. package/dist/src/objectStore/buckets/global.js.map +0 -1
  275. package/dist/src/objectStore/buckets/index.js +0 -20
  276. package/dist/src/objectStore/buckets/index.js.map +0 -1
  277. package/dist/src/objectStore/buckets/plugins.js +0 -95
  278. package/dist/src/objectStore/buckets/plugins.js.map +0 -1
  279. package/dist/src/objectStore/cloudfront.js +0 -40
  280. package/dist/src/objectStore/cloudfront.js.map +0 -1
  281. package/dist/src/objectStore/index.js +0 -20
  282. package/dist/src/objectStore/index.js.map +0 -1
  283. package/dist/src/objectStore/objectStore.js +0 -382
  284. package/dist/src/objectStore/objectStore.js.map +0 -1
  285. package/dist/src/objectStore/utils.js +0 -32
  286. package/dist/src/objectStore/utils.js.map +0 -1
  287. package/dist/src/platform/index.js +0 -33
  288. package/dist/src/platform/index.js.map +0 -1
  289. package/dist/src/platform/platformDb.js +0 -10
  290. package/dist/src/platform/platformDb.js.map +0 -1
  291. package/dist/src/platform/tenants.js +0 -139
  292. package/dist/src/platform/tenants.js.map +0 -1
  293. package/dist/src/platform/users.js +0 -96
  294. package/dist/src/platform/users.js.map +0 -1
  295. package/dist/src/plugin/index.js +0 -18
  296. package/dist/src/plugin/index.js.map +0 -1
  297. package/dist/src/plugin/utils.js +0 -145
  298. package/dist/src/plugin/utils.js.map +0 -1
  299. package/dist/src/queue/constants.js +0 -11
  300. package/dist/src/queue/constants.js.map +0 -1
  301. package/dist/src/queue/inMemoryQueue.js +0 -145
  302. package/dist/src/queue/inMemoryQueue.js.map +0 -1
  303. package/dist/src/queue/index.js +0 -19
  304. package/dist/src/queue/index.js.map +0 -1
  305. package/dist/src/queue/listeners.js +0 -186
  306. package/dist/src/queue/listeners.js.map +0 -1
  307. package/dist/src/queue/queue.js +0 -92
  308. package/dist/src/queue/queue.js.map +0 -1
  309. package/dist/src/redis/index.js +0 -37
  310. package/dist/src/redis/index.js.map +0 -1
  311. package/dist/src/redis/init.js +0 -138
  312. package/dist/src/redis/init.js.map +0 -1
  313. package/dist/src/redis/redis.js +0 -335
  314. package/dist/src/redis/redis.js.map +0 -1
  315. package/dist/src/redis/redlockImpl.js +0 -162
  316. package/dist/src/redis/redlockImpl.js.map +0 -1
  317. package/dist/src/redis/utils.js +0 -123
  318. package/dist/src/redis/utils.js.map +0 -1
  319. package/dist/src/security/encryption.js +0 -163
  320. package/dist/src/security/encryption.js.map +0 -1
  321. package/dist/src/security/permissions.js +0 -151
  322. package/dist/src/security/permissions.js.map +0 -1
  323. package/dist/src/security/roles.js +0 -388
  324. package/dist/src/security/roles.js.map +0 -1
  325. package/dist/src/security/sessions.js +0 -121
  326. package/dist/src/security/sessions.js.map +0 -1
  327. package/dist/src/tenancy/db.js +0 -10
  328. package/dist/src/tenancy/db.js.map +0 -1
  329. package/dist/src/tenancy/index.js +0 -19
  330. package/dist/src/tenancy/index.js.map +0 -1
  331. package/dist/src/tenancy/tenancy.js +0 -116
  332. package/dist/src/tenancy/tenancy.js.map +0 -1
  333. package/dist/src/timers/index.js +0 -18
  334. package/dist/src/timers/index.js.map +0 -1
  335. package/dist/src/timers/timers.js +0 -26
  336. package/dist/src/timers/timers.js.map +0 -1
  337. package/dist/src/users/db.js +0 -407
  338. package/dist/src/users/db.js.map +0 -1
  339. package/dist/src/users/events.js +0 -169
  340. package/dist/src/users/events.js.map +0 -1
  341. package/dist/src/users/index.js +0 -23
  342. package/dist/src/users/index.js.map +0 -1
  343. package/dist/src/users/lookup.js +0 -112
  344. package/dist/src/users/lookup.js.map +0 -1
  345. package/dist/src/users/users.js +0 -261
  346. package/dist/src/users/users.js.map +0 -1
  347. package/dist/src/users/utils.js +0 -92
  348. package/dist/src/users/utils.js.map +0 -1
  349. package/dist/src/utils/hashing.js +0 -47
  350. package/dist/src/utils/hashing.js.map +0 -1
  351. package/dist/src/utils/index.js +0 -20
  352. package/dist/src/utils/index.js.map +0 -1
  353. package/dist/src/utils/stringUtils.js +0 -9
  354. package/dist/src/utils/stringUtils.js.map +0 -1
  355. package/dist/src/utils/utils.js +0 -247
  356. package/dist/src/utils/utils.js.map +0 -1
  357. package/dist/tests/core/logging.js +0 -33
  358. package/dist/tests/core/logging.js.map +0 -1
  359. package/dist/tests/core/utilities/index.js +0 -37
  360. package/dist/tests/core/utilities/index.js.map +0 -1
  361. package/dist/tests/core/utilities/jestUtils.js +0 -21
  362. package/dist/tests/core/utilities/jestUtils.js.map +0 -1
  363. package/dist/tests/core/utilities/mocks/alerts.js +0 -30
  364. package/dist/tests/core/utilities/mocks/alerts.js.map +0 -1
  365. package/dist/tests/core/utilities/mocks/date.js +0 -6
  366. package/dist/tests/core/utilities/mocks/date.js.map +0 -1
  367. package/dist/tests/core/utilities/mocks/events.js +0 -143
  368. package/dist/tests/core/utilities/mocks/events.js.map +0 -1
  369. package/dist/tests/core/utilities/mocks/fetch.js +0 -15
  370. package/dist/tests/core/utilities/mocks/fetch.js.map +0 -1
  371. package/dist/tests/core/utilities/mocks/index.js +0 -43
  372. package/dist/tests/core/utilities/mocks/index.js.map +0 -1
  373. package/dist/tests/core/utilities/mocks/licenses.js +0 -97
  374. package/dist/tests/core/utilities/mocks/licenses.js.map +0 -1
  375. package/dist/tests/core/utilities/mocks/posthog.js +0 -9
  376. package/dist/tests/core/utilities/mocks/posthog.js.map +0 -1
  377. package/dist/tests/core/utilities/structures/Chance.js +0 -21
  378. package/dist/tests/core/utilities/structures/Chance.js.map +0 -1
  379. package/dist/tests/core/utilities/structures/accounts.js +0 -78
  380. package/dist/tests/core/utilities/structures/accounts.js.map +0 -1
  381. package/dist/tests/core/utilities/structures/apps.js +0 -24
  382. package/dist/tests/core/utilities/structures/apps.js.map +0 -1
  383. package/dist/tests/core/utilities/structures/common.js +0 -11
  384. package/dist/tests/core/utilities/structures/common.js.map +0 -1
  385. package/dist/tests/core/utilities/structures/db.js +0 -16
  386. package/dist/tests/core/utilities/structures/db.js.map +0 -1
  387. package/dist/tests/core/utilities/structures/documents/index.js +0 -18
  388. package/dist/tests/core/utilities/structures/documents/index.js.map +0 -1
  389. package/dist/tests/core/utilities/structures/documents/platform/index.js +0 -28
  390. package/dist/tests/core/utilities/structures/documents/platform/index.js.map +0 -1
  391. package/dist/tests/core/utilities/structures/documents/platform/installation.js +0 -38
  392. package/dist/tests/core/utilities/structures/documents/platform/installation.js.map +0 -1
  393. package/dist/tests/core/utilities/structures/generator.js +0 -9
  394. package/dist/tests/core/utilities/structures/generator.js.map +0 -1
  395. package/dist/tests/core/utilities/structures/index.js +0 -46
  396. package/dist/tests/core/utilities/structures/index.js.map +0 -1
  397. package/dist/tests/core/utilities/structures/koa.js +0 -10
  398. package/dist/tests/core/utilities/structures/koa.js.map +0 -1
  399. package/dist/tests/core/utilities/structures/licenses.js +0 -140
  400. package/dist/tests/core/utilities/structures/licenses.js.map +0 -1
  401. package/dist/tests/core/utilities/structures/plugins.js +0 -23
  402. package/dist/tests/core/utilities/structures/plugins.js.map +0 -1
  403. package/dist/tests/core/utilities/structures/quotas.js +0 -71
  404. package/dist/tests/core/utilities/structures/quotas.js.map +0 -1
  405. package/dist/tests/core/utilities/structures/scim.js +0 -63
  406. package/dist/tests/core/utilities/structures/scim.js.map +0 -1
  407. package/dist/tests/core/utilities/structures/shared.js +0 -14
  408. package/dist/tests/core/utilities/structures/shared.js.map +0 -1
  409. package/dist/tests/core/utilities/structures/sso.js +0 -132
  410. package/dist/tests/core/utilities/structures/sso.js.map +0 -1
  411. package/dist/tests/core/utilities/structures/tenants.js +0 -9
  412. package/dist/tests/core/utilities/structures/tenants.js.map +0 -1
  413. package/dist/tests/core/utilities/structures/userGroups.js +0 -13
  414. package/dist/tests/core/utilities/structures/userGroups.js.map +0 -1
  415. package/dist/tests/core/utilities/structures/users.js +0 -48
  416. package/dist/tests/core/utilities/structures/users.js.map +0 -1
  417. package/dist/tests/core/utilities/testContainerUtils.js +0 -84
  418. package/dist/tests/core/utilities/testContainerUtils.js.map +0 -1
  419. package/dist/tests/core/utilities/utils/index.js +0 -28
  420. package/dist/tests/core/utilities/utils/index.js.map +0 -1
  421. package/dist/tests/core/utilities/utils/time.js +0 -8
  422. package/dist/tests/core/utilities/utils/time.js.map +0 -1
  423. package/dist/tests/extra/DBTestConfiguration.js +0 -55
  424. package/dist/tests/extra/DBTestConfiguration.js.map +0 -1
  425. package/dist/tests/extra/index.js +0 -33
  426. package/dist/tests/extra/index.js.map +0 -1
  427. package/dist/tests/extra/testEnv.js +0 -127
  428. package/dist/tests/extra/testEnv.js.map +0 -1
  429. package/dist/tests/index.js +0 -18
  430. package/dist/tests/index.js.map +0 -1
  431. package/dist/tests/jestEnv.js +0 -8
  432. package/dist/tests/jestEnv.js.map +0 -1
  433. package/dist/tests/jestSetup.js +0 -28
  434. package/dist/tests/jestSetup.js.map +0 -1
  435. package/plugins.ts +0 -1
@@ -1,650 +0,0 @@
1
- "use strict";
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
- });
10
- };
11
- var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
12
- if (kind === "m") throw new TypeError("Private method is not writable");
13
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
14
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
15
- return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
16
- };
17
- var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
18
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
19
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
20
- return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
21
- };
22
- var __importDefault = (this && this.__importDefault) || function (mod) {
23
- return (mod && mod.__esModule) ? mod : { "default": mod };
24
- };
25
- var _QueryBuilder_instances, _QueryBuilder_dbName, _QueryBuilder_index, _QueryBuilder_query, _QueryBuilder_limit, _QueryBuilder_sort, _QueryBuilder_bookmark, _QueryBuilder_sortOrder, _QueryBuilder_sortType, _QueryBuilder_includeDocs, _QueryBuilder_version, _QueryBuilder_indexBuilder, _QueryBuilder_noEscaping, _QueryBuilder_skip, _QueryBuilder_skipItems, _QueryBuilder_execute;
26
- Object.defineProperty(exports, "__esModule", { value: true });
27
- exports.fullSearch = exports.paginatedSearch = exports.QueryBuilder = exports.removeKeyNumbering = void 0;
28
- const node_fetch_1 = __importDefault(require("node-fetch"));
29
- const couch_1 = require("./couch");
30
- const QUERY_START_REGEX = /\d[0-9]*:/g;
31
- function removeKeyNumbering(key) {
32
- if (typeof key === "string" && key.match(QUERY_START_REGEX) != null) {
33
- const parts = key.split(":");
34
- // remove the number
35
- parts.shift();
36
- return parts.join(":");
37
- }
38
- else {
39
- return key;
40
- }
41
- }
42
- exports.removeKeyNumbering = removeKeyNumbering;
43
- /**
44
- * Class to build lucene query URLs.
45
- * Optionally takes a base lucene query object.
46
- */
47
- class QueryBuilder {
48
- constructor(dbName, index, base) {
49
- _QueryBuilder_instances.add(this);
50
- _QueryBuilder_dbName.set(this, void 0);
51
- _QueryBuilder_index.set(this, void 0);
52
- _QueryBuilder_query.set(this, void 0);
53
- _QueryBuilder_limit.set(this, void 0);
54
- _QueryBuilder_sort.set(this, void 0);
55
- _QueryBuilder_bookmark.set(this, void 0);
56
- _QueryBuilder_sortOrder.set(this, void 0);
57
- _QueryBuilder_sortType.set(this, void 0);
58
- _QueryBuilder_includeDocs.set(this, void 0);
59
- _QueryBuilder_version.set(this, void 0);
60
- _QueryBuilder_indexBuilder.set(this, void 0);
61
- _QueryBuilder_noEscaping.set(this, false);
62
- _QueryBuilder_skip.set(this, void 0);
63
- __classPrivateFieldSet(this, _QueryBuilder_dbName, dbName, "f");
64
- __classPrivateFieldSet(this, _QueryBuilder_index, index, "f");
65
- __classPrivateFieldSet(this, _QueryBuilder_query, Object.assign({ allOr: false, string: {}, fuzzy: {}, range: {}, equal: {}, notEqual: {}, empty: {}, notEmpty: {}, oneOf: {}, contains: {}, notContains: {}, containsAny: {} }, base), "f");
66
- __classPrivateFieldSet(this, _QueryBuilder_limit, 50, "f");
67
- __classPrivateFieldSet(this, _QueryBuilder_sortOrder, "ascending", "f");
68
- __classPrivateFieldSet(this, _QueryBuilder_sortType, "string", "f");
69
- __classPrivateFieldSet(this, _QueryBuilder_includeDocs, true, "f");
70
- }
71
- disableEscaping() {
72
- __classPrivateFieldSet(this, _QueryBuilder_noEscaping, true, "f");
73
- return this;
74
- }
75
- setIndexBuilder(builderFn) {
76
- __classPrivateFieldSet(this, _QueryBuilder_indexBuilder, builderFn, "f");
77
- return this;
78
- }
79
- setVersion(version) {
80
- if (version != null) {
81
- __classPrivateFieldSet(this, _QueryBuilder_version, version, "f");
82
- }
83
- return this;
84
- }
85
- setTable(tableId) {
86
- __classPrivateFieldGet(this, _QueryBuilder_query, "f").equal.tableId = tableId;
87
- return this;
88
- }
89
- setLimit(limit) {
90
- if (limit != null) {
91
- __classPrivateFieldSet(this, _QueryBuilder_limit, limit, "f");
92
- }
93
- return this;
94
- }
95
- setSort(sort) {
96
- if (sort != null) {
97
- __classPrivateFieldSet(this, _QueryBuilder_sort, sort, "f");
98
- }
99
- return this;
100
- }
101
- setSortOrder(sortOrder) {
102
- if (sortOrder != null) {
103
- __classPrivateFieldSet(this, _QueryBuilder_sortOrder, sortOrder, "f");
104
- }
105
- return this;
106
- }
107
- setSortType(sortType) {
108
- if (sortType != null) {
109
- __classPrivateFieldSet(this, _QueryBuilder_sortType, sortType, "f");
110
- }
111
- return this;
112
- }
113
- setBookmark(bookmark) {
114
- if (bookmark != null) {
115
- __classPrivateFieldSet(this, _QueryBuilder_bookmark, bookmark, "f");
116
- }
117
- return this;
118
- }
119
- setSkip(skip) {
120
- __classPrivateFieldSet(this, _QueryBuilder_skip, skip, "f");
121
- return this;
122
- }
123
- excludeDocs() {
124
- __classPrivateFieldSet(this, _QueryBuilder_includeDocs, false, "f");
125
- return this;
126
- }
127
- includeDocs() {
128
- __classPrivateFieldSet(this, _QueryBuilder_includeDocs, true, "f");
129
- return this;
130
- }
131
- addString(key, partial) {
132
- __classPrivateFieldGet(this, _QueryBuilder_query, "f").string[key] = partial;
133
- return this;
134
- }
135
- addFuzzy(key, fuzzy) {
136
- __classPrivateFieldGet(this, _QueryBuilder_query, "f").fuzzy[key] = fuzzy;
137
- return this;
138
- }
139
- addRange(key, low, high) {
140
- __classPrivateFieldGet(this, _QueryBuilder_query, "f").range[key] = {
141
- low,
142
- high,
143
- };
144
- return this;
145
- }
146
- addEqual(key, value) {
147
- __classPrivateFieldGet(this, _QueryBuilder_query, "f").equal[key] = value;
148
- return this;
149
- }
150
- addNotEqual(key, value) {
151
- __classPrivateFieldGet(this, _QueryBuilder_query, "f").notEqual[key] = value;
152
- return this;
153
- }
154
- addEmpty(key, value) {
155
- __classPrivateFieldGet(this, _QueryBuilder_query, "f").empty[key] = value;
156
- return this;
157
- }
158
- addNotEmpty(key, value) {
159
- __classPrivateFieldGet(this, _QueryBuilder_query, "f").notEmpty[key] = value;
160
- return this;
161
- }
162
- addOneOf(key, value) {
163
- __classPrivateFieldGet(this, _QueryBuilder_query, "f").oneOf[key] = value;
164
- return this;
165
- }
166
- addContains(key, value) {
167
- __classPrivateFieldGet(this, _QueryBuilder_query, "f").contains[key] = value;
168
- return this;
169
- }
170
- addNotContains(key, value) {
171
- __classPrivateFieldGet(this, _QueryBuilder_query, "f").notContains[key] = value;
172
- return this;
173
- }
174
- addContainsAny(key, value) {
175
- __classPrivateFieldGet(this, _QueryBuilder_query, "f").containsAny[key] = value;
176
- return this;
177
- }
178
- setAllOr() {
179
- __classPrivateFieldGet(this, _QueryBuilder_query, "f").allOr = true;
180
- }
181
- handleSpaces(input) {
182
- if (__classPrivateFieldGet(this, _QueryBuilder_noEscaping, "f")) {
183
- return input;
184
- }
185
- else {
186
- return input.replace(/ /g, "_");
187
- }
188
- }
189
- /**
190
- * Preprocesses a value before going into a lucene search.
191
- * Transforms strings to lowercase and wraps strings and bools in quotes.
192
- * @param value The value to process
193
- * @param options The preprocess options
194
- * @returns {string|*}
195
- */
196
- preprocess(value, { escape, lowercase, wrap, type } = {}) {
197
- const hasVersion = !!__classPrivateFieldGet(this, _QueryBuilder_version, "f");
198
- // Determine if type needs wrapped
199
- const originalType = typeof value;
200
- // Convert to lowercase
201
- if (value && lowercase) {
202
- value = value.toLowerCase ? value.toLowerCase() : value;
203
- }
204
- // Escape characters
205
- if (!__classPrivateFieldGet(this, _QueryBuilder_noEscaping, "f") && escape && originalType === "string") {
206
- value = `${value}`.replace(/[ \/#+\-&|!(){}\]^"~*?:\\]/g, "\\$&");
207
- }
208
- // Wrap in quotes
209
- if (originalType === "string" && !isNaN(value) && !type) {
210
- value = `"${value}"`;
211
- }
212
- else if (hasVersion && wrap) {
213
- value = originalType === "number" ? value : `"${value}"`;
214
- }
215
- return value;
216
- }
217
- isMultiCondition() {
218
- let count = 0;
219
- for (let filters of Object.values(__classPrivateFieldGet(this, _QueryBuilder_query, "f"))) {
220
- // not contains is one massive filter in allOr mode
221
- if (typeof filters === "object") {
222
- count += Object.keys(filters).length;
223
- }
224
- }
225
- return count > 1;
226
- }
227
- compressFilters(filters) {
228
- const compressed = {};
229
- for (let key of Object.keys(filters)) {
230
- const finalKey = removeKeyNumbering(key);
231
- if (compressed[finalKey]) {
232
- compressed[finalKey] = compressed[finalKey].concat(filters[key]);
233
- }
234
- else {
235
- compressed[finalKey] = filters[key];
236
- }
237
- }
238
- // add prefixes back
239
- const final = {};
240
- let count = 1;
241
- for (let [key, value] of Object.entries(compressed)) {
242
- final[`${count++}:${key}`] = value;
243
- }
244
- return final;
245
- }
246
- buildSearchQuery() {
247
- const builder = this;
248
- let allOr = __classPrivateFieldGet(this, _QueryBuilder_query, "f") && __classPrivateFieldGet(this, _QueryBuilder_query, "f").allOr;
249
- let query = allOr ? "" : "*:*";
250
- const allPreProcessingOpts = { escape: true, lowercase: true, wrap: true };
251
- let tableId;
252
- if (__classPrivateFieldGet(this, _QueryBuilder_query, "f").equal.tableId) {
253
- tableId = __classPrivateFieldGet(this, _QueryBuilder_query, "f").equal.tableId;
254
- delete __classPrivateFieldGet(this, _QueryBuilder_query, "f").equal.tableId;
255
- }
256
- const equal = (key, value) => {
257
- // 0 evaluates to false, which means we would return all rows if we don't check it
258
- if (!value && value !== 0) {
259
- return null;
260
- }
261
- return `${key}:${builder.preprocess(value, allPreProcessingOpts)}`;
262
- };
263
- const contains = (key, value, mode = "AND") => {
264
- if (Array.isArray(value) && value.length === 0) {
265
- return null;
266
- }
267
- if (!Array.isArray(value)) {
268
- return `${key}:${value}`;
269
- }
270
- let statement = `${builder.preprocess(value[0], { escape: true })}`;
271
- for (let i = 1; i < value.length; i++) {
272
- statement += ` ${mode} ${builder.preprocess(value[i], {
273
- escape: true,
274
- })}`;
275
- }
276
- return `${key}:(${statement})`;
277
- };
278
- const fuzzy = (key, value) => {
279
- if (!value) {
280
- return null;
281
- }
282
- value = builder.preprocess(value, {
283
- escape: true,
284
- lowercase: true,
285
- type: "fuzzy",
286
- });
287
- return `${key}:/.*${value}.*/`;
288
- };
289
- const notContains = (key, value) => {
290
- const allPrefix = allOr ? "*:* AND " : "";
291
- const mode = allOr ? "AND" : undefined;
292
- return allPrefix + "NOT " + contains(key, value, mode);
293
- };
294
- const containsAny = (key, value) => {
295
- return contains(key, value, "OR");
296
- };
297
- const oneOf = (key, value) => {
298
- if (!value) {
299
- return `*:*`;
300
- }
301
- if (!Array.isArray(value)) {
302
- if (typeof value === "string") {
303
- value = value.split(",");
304
- }
305
- else {
306
- return "";
307
- }
308
- }
309
- let orStatement = `${builder.preprocess(value[0], allPreProcessingOpts)}`;
310
- for (let i = 1; i < value.length; i++) {
311
- orStatement += ` OR ${builder.preprocess(value[i], allPreProcessingOpts)}`;
312
- }
313
- return `${key}:(${orStatement})`;
314
- };
315
- function build(structure, queryFn, opts) {
316
- let built = "";
317
- for (let [key, value] of Object.entries(structure)) {
318
- // check for new format - remove numbering if needed
319
- key = removeKeyNumbering(key);
320
- key = builder.preprocess(builder.handleSpaces(key), {
321
- escape: true,
322
- });
323
- let expression = queryFn(key, value);
324
- if (expression == null) {
325
- continue;
326
- }
327
- if (built.length > 0 || query.length > 0) {
328
- const mode = (opts === null || opts === void 0 ? void 0 : opts.mode) ? opts.mode : allOr ? "OR" : "AND";
329
- built += ` ${mode} `;
330
- }
331
- built += expression;
332
- }
333
- if (opts === null || opts === void 0 ? void 0 : opts.returnBuilt) {
334
- return built;
335
- }
336
- else {
337
- query += built;
338
- }
339
- }
340
- // Construct the actual lucene search query string from JSON structure
341
- if (__classPrivateFieldGet(this, _QueryBuilder_query, "f").string) {
342
- build(__classPrivateFieldGet(this, _QueryBuilder_query, "f").string, (key, value) => {
343
- if (!value) {
344
- return null;
345
- }
346
- value = builder.preprocess(value, {
347
- escape: true,
348
- lowercase: true,
349
- type: "string",
350
- });
351
- return `${key}:${value}*`;
352
- });
353
- }
354
- if (__classPrivateFieldGet(this, _QueryBuilder_query, "f").range) {
355
- build(__classPrivateFieldGet(this, _QueryBuilder_query, "f").range, (key, value) => {
356
- if (!value) {
357
- return null;
358
- }
359
- if (value.low == null || value.low === "") {
360
- return null;
361
- }
362
- if (value.high == null || value.high === "") {
363
- return null;
364
- }
365
- const low = builder.preprocess(value.low, allPreProcessingOpts);
366
- const high = builder.preprocess(value.high, allPreProcessingOpts);
367
- return `${key}:[${low} TO ${high}]`;
368
- });
369
- }
370
- if (__classPrivateFieldGet(this, _QueryBuilder_query, "f").fuzzy) {
371
- build(__classPrivateFieldGet(this, _QueryBuilder_query, "f").fuzzy, fuzzy);
372
- }
373
- if (__classPrivateFieldGet(this, _QueryBuilder_query, "f").equal) {
374
- build(__classPrivateFieldGet(this, _QueryBuilder_query, "f").equal, equal);
375
- }
376
- if (__classPrivateFieldGet(this, _QueryBuilder_query, "f").notEqual) {
377
- build(__classPrivateFieldGet(this, _QueryBuilder_query, "f").notEqual, (key, value) => {
378
- if (!value) {
379
- return null;
380
- }
381
- if (typeof value === "boolean") {
382
- return `(*:* AND !${key}:${value})`;
383
- }
384
- return `!${key}:${builder.preprocess(value, allPreProcessingOpts)}`;
385
- });
386
- }
387
- if (__classPrivateFieldGet(this, _QueryBuilder_query, "f").empty) {
388
- build(__classPrivateFieldGet(this, _QueryBuilder_query, "f").empty, (key) => `(*:* -${key}:["" TO *])`);
389
- }
390
- if (__classPrivateFieldGet(this, _QueryBuilder_query, "f").notEmpty) {
391
- build(__classPrivateFieldGet(this, _QueryBuilder_query, "f").notEmpty, (key) => `${key}:["" TO *]`);
392
- }
393
- if (__classPrivateFieldGet(this, _QueryBuilder_query, "f").oneOf) {
394
- build(__classPrivateFieldGet(this, _QueryBuilder_query, "f").oneOf, oneOf);
395
- }
396
- if (__classPrivateFieldGet(this, _QueryBuilder_query, "f").contains) {
397
- build(__classPrivateFieldGet(this, _QueryBuilder_query, "f").contains, contains);
398
- }
399
- if (__classPrivateFieldGet(this, _QueryBuilder_query, "f").notContains) {
400
- build(this.compressFilters(__classPrivateFieldGet(this, _QueryBuilder_query, "f").notContains), notContains);
401
- }
402
- if (__classPrivateFieldGet(this, _QueryBuilder_query, "f").containsAny) {
403
- build(__classPrivateFieldGet(this, _QueryBuilder_query, "f").containsAny, containsAny);
404
- }
405
- // make sure table ID is always added as an AND
406
- if (tableId) {
407
- query = this.isMultiCondition() ? `(${query})` : query;
408
- allOr = false;
409
- build({ tableId }, equal);
410
- }
411
- return query;
412
- }
413
- buildSearchBody() {
414
- let body = {
415
- q: this.buildSearchQuery(),
416
- limit: Math.min(__classPrivateFieldGet(this, _QueryBuilder_limit, "f"), QueryBuilder.maxLimit),
417
- include_docs: __classPrivateFieldGet(this, _QueryBuilder_includeDocs, "f"),
418
- };
419
- if (__classPrivateFieldGet(this, _QueryBuilder_bookmark, "f")) {
420
- body.bookmark = __classPrivateFieldGet(this, _QueryBuilder_bookmark, "f");
421
- }
422
- if (__classPrivateFieldGet(this, _QueryBuilder_sort, "f")) {
423
- const order = __classPrivateFieldGet(this, _QueryBuilder_sortOrder, "f") === "descending" ? "-" : "";
424
- const type = `<${__classPrivateFieldGet(this, _QueryBuilder_sortType, "f")}>`;
425
- body.sort = `${order}${this.handleSpaces(__classPrivateFieldGet(this, _QueryBuilder_sort, "f"))}${type}`;
426
- }
427
- return body;
428
- }
429
- run() {
430
- return __awaiter(this, void 0, void 0, function* () {
431
- if (__classPrivateFieldGet(this, _QueryBuilder_skip, "f")) {
432
- yield __classPrivateFieldGet(this, _QueryBuilder_instances, "m", _QueryBuilder_skipItems).call(this, __classPrivateFieldGet(this, _QueryBuilder_skip, "f"));
433
- }
434
- return yield __classPrivateFieldGet(this, _QueryBuilder_instances, "m", _QueryBuilder_execute).call(this);
435
- });
436
- }
437
- }
438
- exports.QueryBuilder = QueryBuilder;
439
- _QueryBuilder_dbName = new WeakMap(), _QueryBuilder_index = new WeakMap(), _QueryBuilder_query = new WeakMap(), _QueryBuilder_limit = new WeakMap(), _QueryBuilder_sort = new WeakMap(), _QueryBuilder_bookmark = new WeakMap(), _QueryBuilder_sortOrder = new WeakMap(), _QueryBuilder_sortType = new WeakMap(), _QueryBuilder_includeDocs = new WeakMap(), _QueryBuilder_version = new WeakMap(), _QueryBuilder_indexBuilder = new WeakMap(), _QueryBuilder_noEscaping = new WeakMap(), _QueryBuilder_skip = new WeakMap(), _QueryBuilder_instances = new WeakSet(), _QueryBuilder_skipItems = function _QueryBuilder_skipItems(skip) {
440
- return __awaiter(this, void 0, void 0, function* () {
441
- // Lucene does not support pagination.
442
- // Handle pagination by finding the right bookmark
443
- const prevIncludeDocs = __classPrivateFieldGet(this, _QueryBuilder_includeDocs, "f");
444
- const prevLimit = __classPrivateFieldGet(this, _QueryBuilder_limit, "f");
445
- this.excludeDocs();
446
- let skipRemaining = skip;
447
- let iterationFetched = 0;
448
- do {
449
- const toSkip = Math.min(QueryBuilder.maxLimit, skipRemaining);
450
- this.setLimit(toSkip);
451
- const { bookmark, rows } = yield __classPrivateFieldGet(this, _QueryBuilder_instances, "m", _QueryBuilder_execute).call(this);
452
- this.setBookmark(bookmark);
453
- iterationFetched = rows.length;
454
- skipRemaining -= rows.length;
455
- } while (skipRemaining > 0 && iterationFetched > 0);
456
- __classPrivateFieldSet(this, _QueryBuilder_includeDocs, prevIncludeDocs, "f");
457
- __classPrivateFieldSet(this, _QueryBuilder_limit, prevLimit, "f");
458
- });
459
- }, _QueryBuilder_execute = function _QueryBuilder_execute() {
460
- return __awaiter(this, void 0, void 0, function* () {
461
- const { url, cookie } = (0, couch_1.getCouchInfo)();
462
- const fullPath = `${url}/${__classPrivateFieldGet(this, _QueryBuilder_dbName, "f")}/_design/database/_search/${__classPrivateFieldGet(this, _QueryBuilder_index, "f")}`;
463
- const body = this.buildSearchBody();
464
- try {
465
- return yield runQuery(fullPath, body, cookie);
466
- }
467
- catch (err) {
468
- if (err.status === 404 && __classPrivateFieldGet(this, _QueryBuilder_indexBuilder, "f")) {
469
- yield __classPrivateFieldGet(this, _QueryBuilder_indexBuilder, "f").call(this);
470
- return yield runQuery(fullPath, body, cookie);
471
- }
472
- else {
473
- throw err;
474
- }
475
- }
476
- });
477
- };
478
- QueryBuilder.maxLimit = 200;
479
- /**
480
- * Executes a lucene search query.
481
- * @param url The query URL
482
- * @param body The request body defining search criteria
483
- * @param cookie The auth cookie for CouchDB
484
- * @returns {Promise<{rows: []}>}
485
- */
486
- function runQuery(url, body, cookie) {
487
- return __awaiter(this, void 0, void 0, function* () {
488
- const response = yield (0, node_fetch_1.default)(url, {
489
- body: JSON.stringify(body),
490
- method: "POST",
491
- headers: {
492
- Authorization: cookie,
493
- },
494
- });
495
- if (response.status === 404) {
496
- throw response;
497
- }
498
- const json = yield response.json();
499
- let output = {
500
- rows: [],
501
- totalRows: 0,
502
- };
503
- if (json.rows != null && json.rows.length > 0) {
504
- output.rows = json.rows.map((row) => row.doc);
505
- }
506
- if (json.bookmark) {
507
- output.bookmark = json.bookmark;
508
- }
509
- if (json.total_rows) {
510
- output.totalRows = json.total_rows;
511
- }
512
- return output;
513
- });
514
- }
515
- /**
516
- * Gets round the fixed limit of 200 results from a query by fetching as many
517
- * pages as required and concatenating the results. This recursively operates
518
- * until enough results have been found.
519
- * @param dbName {string} Which database to run a lucene query on
520
- * @param index {string} Which search index to utilise
521
- * @param query {object} The JSON query structure
522
- * @param params {object} The search params including:
523
- * tableId {string} The table ID to search
524
- * sort {string} The sort column
525
- * sortOrder {string} The sort order ("ascending" or "descending")
526
- * sortType {string} Whether to treat sortable values as strings or
527
- * numbers. ("string" or "number")
528
- * limit {number} The number of results to fetch
529
- * bookmark {string|null} Current bookmark in the recursive search
530
- * rows {array|null} Current results in the recursive search
531
- * @returns {Promise<*[]|*>}
532
- */
533
- function recursiveSearch(dbName, index, query, params) {
534
- return __awaiter(this, void 0, void 0, function* () {
535
- const bookmark = params.bookmark;
536
- const rows = params.rows || [];
537
- if (rows.length >= params.limit) {
538
- return rows;
539
- }
540
- let pageSize = QueryBuilder.maxLimit;
541
- if (rows.length > params.limit - QueryBuilder.maxLimit) {
542
- pageSize = params.limit - rows.length;
543
- }
544
- const page = yield new QueryBuilder(dbName, index, query)
545
- .setVersion(params.version)
546
- .setTable(params.tableId)
547
- .setBookmark(bookmark)
548
- .setLimit(pageSize)
549
- .setSort(params.sort)
550
- .setSortOrder(params.sortOrder)
551
- .setSortType(params.sortType)
552
- .run();
553
- if (!page.rows.length) {
554
- return rows;
555
- }
556
- if (page.rows.length < QueryBuilder.maxLimit) {
557
- return [...rows, ...page.rows];
558
- }
559
- const newParams = Object.assign(Object.assign({}, params), { bookmark: page.bookmark, rows: [...rows, ...page.rows] });
560
- return yield recursiveSearch(dbName, index, query, newParams);
561
- });
562
- }
563
- /**
564
- * Performs a paginated search. A bookmark will be returned to allow the next
565
- * page to be fetched. There is a max limit off 200 results per page in a
566
- * paginated search.
567
- * @param dbName {string} Which database to run a lucene query on
568
- * @param index {string} Which search index to utilise
569
- * @param query {object} The JSON query structure
570
- * @param params {object} The search params including:
571
- * tableId {string} The table ID to search
572
- * sort {string} The sort column
573
- * sortOrder {string} The sort order ("ascending" or "descending")
574
- * sortType {string} Whether to treat sortable values as strings or
575
- * numbers. ("string" or "number")
576
- * limit {number} The desired page size
577
- * bookmark {string} The bookmark to resume from
578
- * @returns {Promise<{hasNextPage: boolean, rows: *[]}>}
579
- */
580
- function paginatedSearch(dbName, index, query, params) {
581
- return __awaiter(this, void 0, void 0, function* () {
582
- let limit = params.limit;
583
- if (limit == null || isNaN(limit) || limit < 0) {
584
- limit = 50;
585
- }
586
- limit = Math.min(limit, QueryBuilder.maxLimit);
587
- const search = new QueryBuilder(dbName, index, query);
588
- if (params.version) {
589
- search.setVersion(params.version);
590
- }
591
- if (params.tableId) {
592
- search.setTable(params.tableId);
593
- }
594
- if (params.sort) {
595
- search
596
- .setSort(params.sort)
597
- .setSortOrder(params.sortOrder)
598
- .setSortType(params.sortType);
599
- }
600
- if (params.indexer) {
601
- search.setIndexBuilder(params.indexer);
602
- }
603
- if (params.disableEscaping) {
604
- search.disableEscaping();
605
- }
606
- const searchResults = yield search
607
- .setBookmark(params.bookmark)
608
- .setLimit(limit)
609
- .run();
610
- // Try fetching 1 row in the next page to see if another page of results
611
- // exists or not
612
- search.setBookmark(searchResults.bookmark).setLimit(1);
613
- if (params.tableId) {
614
- search.setTable(params.tableId);
615
- }
616
- const nextResults = yield search.run();
617
- return Object.assign(Object.assign({}, searchResults), { hasNextPage: nextResults.rows && nextResults.rows.length > 0 });
618
- });
619
- }
620
- exports.paginatedSearch = paginatedSearch;
621
- /**
622
- * Performs a full search, fetching multiple pages if required to return the
623
- * desired amount of results. There is a limit of 1000 results to avoid
624
- * heavy performance hits, and to avoid client components breaking from
625
- * handling too much data.
626
- * @param dbName {string} Which database to run a lucene query on
627
- * @param index {string} Which search index to utilise
628
- * @param query {object} The JSON query structure
629
- * @param params {object} The search params including:
630
- * tableId {string} The table ID to search
631
- * sort {string} The sort column
632
- * sortOrder {string} The sort order ("ascending" or "descending")
633
- * sortType {string} Whether to treat sortable values as strings or
634
- * numbers. ("string" or "number")
635
- * limit {number} The desired number of results
636
- * @returns {Promise<{rows: *}>}
637
- */
638
- function fullSearch(dbName, index, query, params) {
639
- return __awaiter(this, void 0, void 0, function* () {
640
- let limit = params.limit;
641
- if (limit == null || isNaN(limit) || limit < 0) {
642
- limit = 1000;
643
- }
644
- params.limit = Math.min(limit, 1000);
645
- const rows = yield recursiveSearch(dbName, index, query, params);
646
- return { rows };
647
- });
648
- }
649
- exports.fullSearch = fullSearch;
650
- //# sourceMappingURL=lucene.js.map