@budibase/backend-core 3.2.41 → 3.2.43

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