@budibase/backend-core 2.9.39-alpha.0 → 2.9.39-alpha.2

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 (479) hide show
  1. package/dist/package.json +5 -5
  2. package/dist/src/accounts/accounts.js +100 -0
  3. package/dist/src/accounts/accounts.js.map +7 -0
  4. package/dist/src/accounts/api.js +78 -0
  5. package/dist/src/accounts/api.js.map +7 -0
  6. package/dist/src/accounts/index.js +23 -0
  7. package/dist/src/accounts/index.js.map +7 -0
  8. package/dist/src/auth/auth.js +208 -0
  9. package/dist/src/auth/auth.js.map +7 -0
  10. package/dist/src/auth/index.js +23 -0
  11. package/dist/src/auth/index.js.map +7 -0
  12. package/dist/src/auth/tests/auth.spec.js +37 -0
  13. package/dist/src/auth/tests/auth.spec.js.map +7 -0
  14. package/dist/src/blacklist/blacklist.js +88 -0
  15. package/dist/src/blacklist/blacklist.js.map +7 -0
  16. package/dist/src/blacklist/index.js +23 -0
  17. package/dist/src/blacklist/index.js.map +7 -0
  18. package/dist/src/blacklist/tests/blacklist.spec.js +61 -0
  19. package/dist/src/blacklist/tests/blacklist.spec.js.map +7 -0
  20. package/dist/src/cache/appMetadata.js +86 -0
  21. package/dist/src/cache/appMetadata.js.map +7 -0
  22. package/dist/src/cache/base/index.js +102 -0
  23. package/dist/src/cache/base/index.js.map +7 -0
  24. package/dist/src/cache/generic.js +69 -0
  25. package/dist/src/cache/generic.js.map +7 -0
  26. package/dist/src/cache/index.js +51 -0
  27. package/dist/src/cache/index.js.map +7 -0
  28. package/dist/src/cache/tests/writethrough.spec.js +132 -0
  29. package/dist/src/cache/tests/writethrough.spec.js.map +7 -0
  30. package/dist/src/cache/user.js +99 -0
  31. package/dist/src/cache/user.js.map +7 -0
  32. package/dist/src/cache/writethrough.js +144 -0
  33. package/dist/src/cache/writethrough.js.map +7 -0
  34. package/dist/src/configs/configs.js +228 -0
  35. package/dist/src/configs/configs.js.map +7 -0
  36. package/dist/src/configs/index.js +23 -0
  37. package/dist/src/configs/index.js.map +7 -0
  38. package/dist/src/configs/tests/configs.spec.js +182 -0
  39. package/dist/src/configs/tests/configs.spec.js.map +7 -0
  40. package/dist/src/constants/db.js +107 -0
  41. package/dist/src/constants/db.js.map +7 -0
  42. package/dist/src/constants/index.js +25 -0
  43. package/dist/src/constants/index.js.map +7 -0
  44. package/dist/src/constants/misc.js +92 -0
  45. package/dist/src/constants/misc.js.map +7 -0
  46. package/dist/src/context/Context.js +36 -0
  47. package/dist/src/context/Context.js.map +7 -0
  48. package/dist/src/context/identity.js +87 -0
  49. package/dist/src/context/identity.js.map +7 -0
  50. package/dist/src/context/index.js +45 -0
  51. package/dist/src/context/index.js.map +7 -0
  52. package/dist/src/context/mainContext.js +320 -0
  53. package/dist/src/context/mainContext.js.map +7 -0
  54. package/dist/src/context/tests/index.spec.js +147 -0
  55. package/dist/src/context/tests/index.spec.js.map +7 -0
  56. package/dist/src/context/types.js +17 -0
  57. package/dist/src/context/types.js.map +7 -0
  58. package/dist/src/db/Replication.js +89 -0
  59. package/dist/src/db/Replication.js.map +7 -0
  60. package/dist/src/db/constants.js +39 -0
  61. package/dist/src/db/constants.js.map +7 -0
  62. package/dist/src/db/couch/DatabaseImpl.js +224 -0
  63. package/dist/src/db/couch/DatabaseImpl.js.map +7 -0
  64. package/dist/src/db/couch/connections.js +103 -0
  65. package/dist/src/db/couch/connections.js.map +7 -0
  66. package/dist/src/db/couch/index.js +44 -0
  67. package/dist/src/db/couch/index.js.map +7 -0
  68. package/dist/src/db/couch/pouchDB.js +118 -0
  69. package/dist/src/db/couch/pouchDB.js.map +7 -0
  70. package/dist/src/db/couch/pouchDump.js +2 -0
  71. package/dist/src/db/couch/pouchDump.js.map +7 -0
  72. package/dist/src/db/couch/utils.js +76 -0
  73. package/dist/src/db/couch/utils.js.map +7 -0
  74. package/dist/src/db/db.js +73 -0
  75. package/dist/src/db/db.js.map +7 -0
  76. package/dist/src/db/errors.js +43 -0
  77. package/dist/src/db/errors.js.map +7 -0
  78. package/dist/src/db/index.js +64 -0
  79. package/dist/src/db/index.js.map +7 -0
  80. package/dist/src/db/lucene.js +595 -0
  81. package/dist/src/db/lucene.js.map +7 -0
  82. package/dist/src/db/searchIndexes/index.js +23 -0
  83. package/dist/src/db/searchIndexes/index.js.map +7 -0
  84. package/dist/src/db/searchIndexes/searchIndexes.js +82 -0
  85. package/dist/src/db/searchIndexes/searchIndexes.js.map +7 -0
  86. package/dist/src/db/tests/index.spec.js +24 -0
  87. package/dist/src/db/tests/index.spec.js.map +7 -0
  88. package/dist/src/db/tests/lucene.spec.js +312 -0
  89. package/dist/src/db/tests/lucene.spec.js.map +7 -0
  90. package/dist/src/db/tests/pouch.spec.js +63 -0
  91. package/dist/src/db/tests/pouch.spec.js.map +7 -0
  92. package/dist/src/db/tests/utils.spec.js +50 -0
  93. package/dist/src/db/tests/utils.spec.js.map +7 -0
  94. package/dist/src/db/utils.js +198 -0
  95. package/dist/src/db/utils.js.map +7 -0
  96. package/dist/src/db/views.js +223 -0
  97. package/dist/src/db/views.js.map +7 -0
  98. package/dist/src/docIds/conversions.js +83 -0
  99. package/dist/src/docIds/conversions.js.map +7 -0
  100. package/dist/src/docIds/ids.js +101 -0
  101. package/dist/src/docIds/ids.js.map +7 -0
  102. package/dist/src/docIds/index.js +25 -0
  103. package/dist/src/docIds/index.js.map +7 -0
  104. package/dist/src/docIds/newid.js +32 -0
  105. package/dist/src/docIds/newid.js.map +7 -0
  106. package/dist/src/docIds/params.js +136 -0
  107. package/dist/src/docIds/params.js.map +7 -0
  108. package/dist/src/docUpdates/index.js +61 -0
  109. package/dist/src/docUpdates/index.js.map +7 -0
  110. package/dist/src/environment.js +181 -0
  111. package/dist/src/environment.js.map +7 -0
  112. package/dist/src/errors/errors.js +126 -0
  113. package/dist/src/errors/errors.js.map +7 -0
  114. package/dist/src/errors/index.js +23 -0
  115. package/dist/src/errors/index.js.map +7 -0
  116. package/dist/src/events/analytics.js +42 -0
  117. package/dist/src/events/analytics.js.map +7 -0
  118. package/dist/src/events/asyncEvents/index.js +25 -0
  119. package/dist/src/events/asyncEvents/index.js.map +7 -0
  120. package/dist/src/events/asyncEvents/publisher.js +39 -0
  121. package/dist/src/events/asyncEvents/publisher.js.map +7 -0
  122. package/dist/src/events/asyncEvents/queue.js +42 -0
  123. package/dist/src/events/asyncEvents/queue.js.map +7 -0
  124. package/dist/src/events/backfill.js +172 -0
  125. package/dist/src/events/backfill.js.map +7 -0
  126. package/dist/src/events/documentId.js +51 -0
  127. package/dist/src/events/documentId.js.map +7 -0
  128. package/dist/src/events/events.js +63 -0
  129. package/dist/src/events/events.js.map +7 -0
  130. package/dist/src/events/identification.js +275 -0
  131. package/dist/src/events/identification.js.map +7 -0
  132. package/dist/src/events/index.js +62 -0
  133. package/dist/src/events/index.js.map +7 -0
  134. package/dist/src/events/processors/AnalyticsProcessor.js +76 -0
  135. package/dist/src/events/processors/AnalyticsProcessor.js.map +7 -0
  136. package/dist/src/events/processors/AuditLogsProcessor.js +97 -0
  137. package/dist/src/events/processors/AuditLogsProcessor.js.map +7 -0
  138. package/dist/src/events/processors/LoggingProcessor.js +58 -0
  139. package/dist/src/events/processors/LoggingProcessor.js.map +7 -0
  140. package/dist/src/events/processors/Processors.js +57 -0
  141. package/dist/src/events/processors/Processors.js.map +7 -0
  142. package/dist/src/events/processors/async/DocumentUpdateProcessor.js +53 -0
  143. package/dist/src/events/processors/async/DocumentUpdateProcessor.js.map +7 -0
  144. package/dist/src/events/processors/index.js +57 -0
  145. package/dist/src/events/processors/index.js.map +7 -0
  146. package/dist/src/events/processors/posthog/PosthogProcessor.js +126 -0
  147. package/dist/src/events/processors/posthog/PosthogProcessor.js.map +7 -0
  148. package/dist/src/events/processors/posthog/index.js +36 -0
  149. package/dist/src/events/processors/posthog/index.js.map +7 -0
  150. package/dist/src/events/processors/posthog/rateLimiting.js +105 -0
  151. package/dist/src/events/processors/posthog/rateLimiting.js.map +7 -0
  152. package/dist/src/events/processors/posthog/tests/PosthogProcessor.spec.js +154 -0
  153. package/dist/src/events/processors/posthog/tests/PosthogProcessor.spec.js.map +7 -0
  154. package/dist/src/events/processors/types.js +29 -0
  155. package/dist/src/events/processors/types.js.map +7 -0
  156. package/dist/src/events/publishers/account.js +49 -0
  157. package/dist/src/events/publishers/account.js.map +7 -0
  158. package/dist/src/events/publishers/app.js +145 -0
  159. package/dist/src/events/publishers/app.js.map +7 -0
  160. package/dist/src/events/publishers/auditLog.js +42 -0
  161. package/dist/src/events/publishers/auditLog.js.map +7 -0
  162. package/dist/src/events/publishers/auth.js +80 -0
  163. package/dist/src/events/publishers/auth.js.map +7 -0
  164. package/dist/src/events/publishers/automation.js +111 -0
  165. package/dist/src/events/publishers/automation.js.map +7 -0
  166. package/dist/src/events/publishers/backfill.js +92 -0
  167. package/dist/src/events/publishers/backfill.js.map +7 -0
  168. package/dist/src/events/publishers/backup.js +49 -0
  169. package/dist/src/events/publishers/backup.js.map +7 -0
  170. package/dist/src/events/publishers/datasource.js +59 -0
  171. package/dist/src/events/publishers/datasource.js.map +7 -0
  172. package/dist/src/events/publishers/email.js +38 -0
  173. package/dist/src/events/publishers/email.js.map +7 -0
  174. package/dist/src/events/publishers/environmentVariable.js +53 -0
  175. package/dist/src/events/publishers/environmentVariable.js.map +7 -0
  176. package/dist/src/events/publishers/group.js +105 -0
  177. package/dist/src/events/publishers/group.js.map +7 -0
  178. package/dist/src/events/publishers/index.js +108 -0
  179. package/dist/src/events/publishers/index.js.map +7 -0
  180. package/dist/src/events/publishers/installation.js +56 -0
  181. package/dist/src/events/publishers/installation.js.map +7 -0
  182. package/dist/src/events/publishers/layout.js +42 -0
  183. package/dist/src/events/publishers/layout.js.map +7 -0
  184. package/dist/src/events/publishers/license.js +78 -0
  185. package/dist/src/events/publishers/license.js.map +7 -0
  186. package/dist/src/events/publishers/org.js +53 -0
  187. package/dist/src/events/publishers/org.js.map +7 -0
  188. package/dist/src/events/publishers/plugin.js +61 -0
  189. package/dist/src/events/publishers/plugin.js.map +7 -0
  190. package/dist/src/events/publishers/query.js +85 -0
  191. package/dist/src/events/publishers/query.js.map +7 -0
  192. package/dist/src/events/publishers/role.js +71 -0
  193. package/dist/src/events/publishers/role.js.map +7 -0
  194. package/dist/src/events/publishers/rows.js +43 -0
  195. package/dist/src/events/publishers/rows.js.map +7 -0
  196. package/dist/src/events/publishers/screen.js +52 -0
  197. package/dist/src/events/publishers/screen.js.map +7 -0
  198. package/dist/src/events/publishers/serve.js +53 -0
  199. package/dist/src/events/publishers/serve.js.map +7 -0
  200. package/dist/src/events/publishers/table.js +79 -0
  201. package/dist/src/events/publishers/table.js.map +7 -0
  202. package/dist/src/events/publishers/user.js +191 -0
  203. package/dist/src/events/publishers/user.js.map +7 -0
  204. package/dist/src/events/publishers/view.js +102 -0
  205. package/dist/src/events/publishers/view.js.map +7 -0
  206. package/dist/src/features/index.js +105 -0
  207. package/dist/src/features/index.js.map +7 -0
  208. package/dist/src/features/installation.js +42 -0
  209. package/dist/src/features/installation.js.map +7 -0
  210. package/dist/src/features/tests/featureFlags.spec.js +86 -0
  211. package/dist/src/features/tests/featureFlags.spec.js.map +7 -0
  212. package/dist/src/helpers.js +31 -0
  213. package/dist/src/helpers.js.map +7 -0
  214. package/dist/src/index.js +154 -0
  215. package/dist/src/index.js.map +7 -0
  216. package/dist/src/installation.js +139 -0
  217. package/dist/src/installation.js.map +7 -0
  218. package/dist/src/logging/alerts.js +49 -0
  219. package/dist/src/logging/alerts.js.map +7 -0
  220. package/dist/src/logging/correlation/correlation.js +41 -0
  221. package/dist/src/logging/correlation/correlation.js.map +7 -0
  222. package/dist/src/logging/correlation/index.js +23 -0
  223. package/dist/src/logging/correlation/index.js.map +7 -0
  224. package/dist/src/logging/correlation/middleware.js +37 -0
  225. package/dist/src/logging/correlation/middleware.js.map +7 -0
  226. package/dist/src/logging/index.js +48 -0
  227. package/dist/src/logging/index.js.map +7 -0
  228. package/dist/src/logging/pino/logger.js +197 -0
  229. package/dist/src/logging/pino/logger.js.map +7 -0
  230. package/dist/src/logging/pino/middleware.js +77 -0
  231. package/dist/src/logging/pino/middleware.js.map +7 -0
  232. package/dist/src/logging/system.js +110 -0
  233. package/dist/src/logging/system.js.map +7 -0
  234. package/dist/src/logging/tests/system.spec.js +59 -0
  235. package/dist/src/logging/tests/system.spec.js.map +7 -0
  236. package/dist/src/middleware/adminOnly.js +31 -0
  237. package/dist/src/middleware/adminOnly.js.map +7 -0
  238. package/dist/src/middleware/auditLog.js +27 -0
  239. package/dist/src/middleware/auditLog.js.map +7 -0
  240. package/dist/src/middleware/authenticated.js +178 -0
  241. package/dist/src/middleware/authenticated.js.map +7 -0
  242. package/dist/src/middleware/builderOnly.js +48 -0
  243. package/dist/src/middleware/builderOnly.js.map +7 -0
  244. package/dist/src/middleware/builderOrAdmin.js +48 -0
  245. package/dist/src/middleware/builderOrAdmin.js.map +7 -0
  246. package/dist/src/middleware/csrf.js +60 -0
  247. package/dist/src/middleware/csrf.js.map +7 -0
  248. package/dist/src/middleware/errorHandling.js +62 -0
  249. package/dist/src/middleware/errorHandling.js.map +7 -0
  250. package/dist/src/middleware/index.js +95 -0
  251. package/dist/src/middleware/index.js.map +7 -0
  252. package/dist/src/middleware/internalApi.js +39 -0
  253. package/dist/src/middleware/internalApi.js.map +7 -0
  254. package/dist/src/middleware/joi-validator.js +73 -0
  255. package/dist/src/middleware/joi-validator.js.map +7 -0
  256. package/dist/src/middleware/matchers.js +62 -0
  257. package/dist/src/middleware/matchers.js.map +7 -0
  258. package/dist/src/middleware/passport/datasource/google.js +103 -0
  259. package/dist/src/middleware/passport/datasource/google.js.map +7 -0
  260. package/dist/src/middleware/passport/local.js +73 -0
  261. package/dist/src/middleware/passport/local.js.map +7 -0
  262. package/dist/src/middleware/passport/sso/google.js +93 -0
  263. package/dist/src/middleware/passport/sso/google.js.map +7 -0
  264. package/dist/src/middleware/passport/sso/oidc.js +135 -0
  265. package/dist/src/middleware/passport/sso/oidc.js.map +7 -0
  266. package/dist/src/middleware/passport/sso/sso.js +149 -0
  267. package/dist/src/middleware/passport/sso/sso.js.map +7 -0
  268. package/dist/src/middleware/passport/sso/tests/google.spec.js +77 -0
  269. package/dist/src/middleware/passport/sso/tests/google.spec.js.map +7 -0
  270. package/dist/src/middleware/passport/sso/tests/oidc.spec.js +143 -0
  271. package/dist/src/middleware/passport/sso/tests/oidc.spec.js.map +7 -0
  272. package/dist/src/middleware/passport/sso/tests/sso.spec.js +167 -0
  273. package/dist/src/middleware/passport/sso/tests/sso.spec.js.map +7 -0
  274. package/dist/src/middleware/passport/utils.js +62 -0
  275. package/dist/src/middleware/passport/utils.js.map +7 -0
  276. package/dist/src/middleware/querystringToBody.js +45 -0
  277. package/dist/src/middleware/querystringToBody.js.map +7 -0
  278. package/dist/src/middleware/tenancy.js +46 -0
  279. package/dist/src/middleware/tenancy.js.map +7 -0
  280. package/dist/src/middleware/tests/builder.spec.js +169 -0
  281. package/dist/src/middleware/tests/builder.spec.js.map +7 -0
  282. package/dist/src/middleware/tests/matchers.spec.js +120 -0
  283. package/dist/src/middleware/tests/matchers.spec.js.map +7 -0
  284. package/dist/src/migrations/definitions.js +63 -0
  285. package/dist/src/migrations/definitions.js.map +7 -0
  286. package/dist/src/migrations/index.js +25 -0
  287. package/dist/src/migrations/index.js.map +7 -0
  288. package/dist/src/migrations/migrations.js +178 -0
  289. package/dist/src/migrations/migrations.js.map +7 -0
  290. package/dist/src/migrations/tests/migrations.spec.js +78 -0
  291. package/dist/src/migrations/tests/migrations.spec.js.map +7 -0
  292. package/dist/src/objectStore/buckets/app.js +65 -0
  293. package/dist/src/objectStore/buckets/app.js.map +7 -0
  294. package/dist/src/objectStore/buckets/global.js +63 -0
  295. package/dist/src/objectStore/buckets/global.js.map +7 -0
  296. package/dist/src/objectStore/buckets/index.js +27 -0
  297. package/dist/src/objectStore/buckets/index.js.map +7 -0
  298. package/dist/src/objectStore/buckets/plugins.js +101 -0
  299. package/dist/src/objectStore/buckets/plugins.js.map +7 -0
  300. package/dist/src/objectStore/buckets/tests/app.spec.js +171 -0
  301. package/dist/src/objectStore/buckets/tests/app.spec.js.map +7 -0
  302. package/dist/src/objectStore/buckets/tests/global.spec.js +87 -0
  303. package/dist/src/objectStore/buckets/tests/global.spec.js.map +7 -0
  304. package/dist/src/objectStore/buckets/tests/plugins.spec.js +123 -0
  305. package/dist/src/objectStore/buckets/tests/plugins.spec.js.map +7 -0
  306. package/dist/src/objectStore/cloudfront.js +74 -0
  307. package/dist/src/objectStore/cloudfront.js.map +7 -0
  308. package/dist/src/objectStore/index.js +27 -0
  309. package/dist/src/objectStore/index.js.map +7 -0
  310. package/dist/src/objectStore/objectStore.js +372 -0
  311. package/dist/src/objectStore/objectStore.js.map +7 -0
  312. package/dist/src/objectStore/utils.js +58 -0
  313. package/dist/src/objectStore/utils.js.map +7 -0
  314. package/dist/src/platform/index.js +45 -0
  315. package/dist/src/platform/index.js.map +7 -0
  316. package/dist/src/platform/platformDb.js +33 -0
  317. package/dist/src/platform/platformDb.js.map +7 -0
  318. package/dist/src/platform/tenants.js +123 -0
  319. package/dist/src/platform/tenants.js.map +7 -0
  320. package/dist/src/platform/tests/tenants.spec.js +46 -0
  321. package/dist/src/platform/tests/tenants.spec.js.map +7 -0
  322. package/dist/src/platform/users.js +104 -0
  323. package/dist/src/platform/users.js.map +7 -0
  324. package/dist/src/plugin/index.js +23 -0
  325. package/dist/src/plugin/index.js.map +7 -0
  326. package/dist/src/plugin/tests/validation.spec.js +97 -0
  327. package/dist/src/plugin/tests/validation.spec.js.map +7 -0
  328. package/dist/src/plugin/utils.js +153 -0
  329. package/dist/src/plugin/utils.js.map +7 -0
  330. package/dist/src/queue/constants.js +35 -0
  331. package/dist/src/queue/constants.js.map +7 -0
  332. package/dist/src/queue/inMemoryQueue.js +139 -0
  333. package/dist/src/queue/inMemoryQueue.js.map +7 -0
  334. package/dist/src/queue/index.js +25 -0
  335. package/dist/src/queue/index.js.map +7 -0
  336. package/dist/src/queue/listeners.js +177 -0
  337. package/dist/src/queue/listeners.js.map +7 -0
  338. package/dist/src/queue/queue.js +85 -0
  339. package/dist/src/queue/queue.js.map +7 -0
  340. package/dist/src/redis/index.js +48 -0
  341. package/dist/src/redis/index.js.map +7 -0
  342. package/dist/src/redis/init.js +128 -0
  343. package/dist/src/redis/init.js.map +7 -0
  344. package/dist/src/redis/redis.js +277 -0
  345. package/dist/src/redis/redis.js.map +7 -0
  346. package/dist/src/redis/redlockImpl.js +145 -0
  347. package/dist/src/redis/redlockImpl.js.map +7 -0
  348. package/dist/src/redis/utils.js +136 -0
  349. package/dist/src/redis/utils.js.map +7 -0
  350. package/dist/src/security/encryption.js +184 -0
  351. package/dist/src/security/encryption.js.map +7 -0
  352. package/dist/src/security/permissions.js +188 -0
  353. package/dist/src/security/permissions.js.map +7 -0
  354. package/dist/src/security/roles.js +337 -0
  355. package/dist/src/security/roles.js.map +7 -0
  356. package/dist/src/security/sessions.js +135 -0
  357. package/dist/src/security/sessions.js.map +7 -0
  358. package/dist/src/security/tests/encryption.spec.js +51 -0
  359. package/dist/src/security/tests/encryption.spec.js.map +7 -0
  360. package/dist/src/security/tests/permissions.spec.js +154 -0
  361. package/dist/src/security/tests/permissions.spec.js.map +7 -0
  362. package/dist/src/security/tests/sessions.spec.js +33 -0
  363. package/dist/src/security/tests/sessions.spec.js.map +7 -0
  364. package/dist/src/tenancy/db.js +33 -0
  365. package/dist/src/tenancy/db.js.map +7 -0
  366. package/dist/src/tenancy/index.js +25 -0
  367. package/dist/src/tenancy/index.js.map +7 -0
  368. package/dist/src/tenancy/tenancy.js +129 -0
  369. package/dist/src/tenancy/tenancy.js.map +7 -0
  370. package/dist/src/tenancy/tests/tenancy.spec.js +154 -0
  371. package/dist/src/tenancy/tests/tenancy.spec.js.map +7 -0
  372. package/dist/src/timers/index.js +23 -0
  373. package/dist/src/timers/index.js.map +7 -0
  374. package/dist/src/timers/timers.js +51 -0
  375. package/dist/src/timers/timers.js.map +7 -0
  376. package/dist/src/users/db.js +381 -0
  377. package/dist/src/users/db.js.map +7 -0
  378. package/dist/src/users/events.js +152 -0
  379. package/dist/src/users/events.js.map +7 -0
  380. package/dist/src/users/index.js +36 -0
  381. package/dist/src/users/index.js.map +7 -0
  382. package/dist/src/users/lookup.js +110 -0
  383. package/dist/src/users/lookup.js.map +7 -0
  384. package/dist/src/users/users.js +257 -0
  385. package/dist/src/users/users.js.map +7 -0
  386. package/dist/src/users/utils.js +95 -0
  387. package/dist/src/users/utils.js.map +7 -0
  388. package/dist/src/utils/hashing.js +53 -0
  389. package/dist/src/utils/hashing.js.map +7 -0
  390. package/dist/src/utils/index.js +27 -0
  391. package/dist/src/utils/index.js.map +7 -0
  392. package/dist/src/utils/stringUtils.js +33 -0
  393. package/dist/src/utils/stringUtils.js.map +7 -0
  394. package/dist/src/utils/tests/utils.spec.js +165 -0
  395. package/dist/src/utils/tests/utils.spec.js.map +7 -0
  396. package/dist/src/utils/utils.js +207 -0
  397. package/dist/src/utils/utils.js.map +7 -0
  398. package/dist/tests/core/logging.js +57 -0
  399. package/dist/tests/core/logging.js.map +7 -0
  400. package/dist/tests/core/utilities/index.js +54 -0
  401. package/dist/tests/core/utilities/index.js.map +7 -0
  402. package/dist/tests/core/utilities/jestUtils.js +50 -0
  403. package/dist/tests/core/utilities/jestUtils.js.map +7 -0
  404. package/dist/tests/core/utilities/mocks/alerts.js +41 -0
  405. package/dist/tests/core/utilities/mocks/alerts.js.map +7 -0
  406. package/dist/tests/core/utilities/mocks/date.js +32 -0
  407. package/dist/tests/core/utilities/mocks/date.js.map +7 -0
  408. package/dist/tests/core/utilities/mocks/events.js +133 -0
  409. package/dist/tests/core/utilities/mocks/events.js.map +7 -0
  410. package/dist/tests/core/utilities/mocks/fetch.js +39 -0
  411. package/dist/tests/core/utilities/mocks/fetch.js.map +7 -0
  412. package/dist/tests/core/utilities/mocks/index.js +55 -0
  413. package/dist/tests/core/utilities/mocks/index.js.map +7 -0
  414. package/dist/tests/core/utilities/mocks/licenses.js +145 -0
  415. package/dist/tests/core/utilities/mocks/licenses.js.map +7 -0
  416. package/dist/tests/core/utilities/mocks/posthog.js +9 -0
  417. package/dist/tests/core/utilities/mocks/posthog.js.map +7 -0
  418. package/dist/tests/core/utilities/structures/Chance.js +48 -0
  419. package/dist/tests/core/utilities/structures/Chance.js.map +7 -0
  420. package/dist/tests/core/utilities/structures/accounts.js +148 -0
  421. package/dist/tests/core/utilities/structures/accounts.js.map +7 -0
  422. package/dist/tests/core/utilities/structures/apps.js +47 -0
  423. package/dist/tests/core/utilities/structures/apps.js.map +7 -0
  424. package/dist/tests/core/utilities/structures/common.js +35 -0
  425. package/dist/tests/core/utilities/structures/common.js.map +7 -0
  426. package/dist/tests/core/utilities/structures/db.js +40 -0
  427. package/dist/tests/core/utilities/structures/db.js.map +7 -0
  428. package/dist/tests/core/utilities/structures/documents/index.js +23 -0
  429. package/dist/tests/core/utilities/structures/documents/index.js.map +7 -0
  430. package/dist/tests/core/utilities/structures/documents/platform/index.js +39 -0
  431. package/dist/tests/core/utilities/structures/documents/platform/index.js.map +7 -0
  432. package/dist/tests/core/utilities/structures/documents/platform/installation.js +48 -0
  433. package/dist/tests/core/utilities/structures/documents/platform/installation.js.map +7 -0
  434. package/dist/tests/core/utilities/structures/generator.js +40 -0
  435. package/dist/tests/core/utilities/structures/generator.js.map +7 -0
  436. package/dist/tests/core/utilities/structures/index.js +81 -0
  437. package/dist/tests/core/utilities/structures/index.js.map +7 -0
  438. package/dist/tests/core/utilities/structures/koa.js +42 -0
  439. package/dist/tests/core/utilities/structures/koa.js.map +7 -0
  440. package/dist/tests/core/utilities/structures/licenses.js +175 -0
  441. package/dist/tests/core/utilities/structures/licenses.js.map +7 -0
  442. package/dist/tests/core/utilities/structures/plugins.js +46 -0
  443. package/dist/tests/core/utilities/structures/plugins.js.map +7 -0
  444. package/dist/tests/core/utilities/structures/quotas.js +94 -0
  445. package/dist/tests/core/utilities/structures/quotas.js.map +7 -0
  446. package/dist/tests/core/utilities/structures/scim.js +90 -0
  447. package/dist/tests/core/utilities/structures/scim.js.map +7 -0
  448. package/dist/tests/core/utilities/structures/shared.js +46 -0
  449. package/dist/tests/core/utilities/structures/shared.js.map +7 -0
  450. package/dist/tests/core/utilities/structures/sso.js +144 -0
  451. package/dist/tests/core/utilities/structures/sso.js.map +7 -0
  452. package/dist/tests/core/utilities/structures/tenants.js +32 -0
  453. package/dist/tests/core/utilities/structures/tenants.js.map +7 -0
  454. package/dist/tests/core/utilities/structures/userGroups.js +36 -0
  455. package/dist/tests/core/utilities/structures/userGroups.js.map +7 -0
  456. package/dist/tests/core/utilities/structures/users.js +96 -0
  457. package/dist/tests/core/utilities/structures/users.js.map +7 -0
  458. package/dist/tests/core/utilities/testContainerUtils.js +100 -0
  459. package/dist/tests/core/utilities/testContainerUtils.js.map +7 -0
  460. package/dist/tests/core/utilities/utils/index.js +39 -0
  461. package/dist/tests/core/utilities/utils/index.js.map +7 -0
  462. package/dist/tests/core/utilities/utils/time.js +31 -0
  463. package/dist/tests/core/utilities/utils/time.js.map +7 -0
  464. package/dist/tests/extra/DBTestConfiguration.js +61 -0
  465. package/dist/tests/extra/DBTestConfiguration.js.map +7 -0
  466. package/dist/tests/extra/index.js +42 -0
  467. package/dist/tests/extra/index.js.map +7 -0
  468. package/dist/tests/extra/testEnv.js +106 -0
  469. package/dist/tests/extra/testEnv.js.map +7 -0
  470. package/dist/tests/index.js +23 -0
  471. package/dist/tests/index.js.map +7 -0
  472. package/dist/tests/jestEnv.js +8 -0
  473. package/dist/tests/jestEnv.js.map +7 -0
  474. package/dist/tests/jestSetup.js +41 -0
  475. package/dist/tests/jestSetup.js.map +7 -0
  476. package/package.json +5 -5
  477. package/dist/tests.js +0 -8467
  478. package/dist/tests.js.map +0 -7
  479. package/dist/tests.js.meta.json +0 -1
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __copyProps = (to, from, except, desc) => {
7
+ if (from && typeof from === "object" || typeof from === "function") {
8
+ for (let key of __getOwnPropNames(from))
9
+ if (!__hasOwnProp.call(to, key) && key !== except)
10
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
11
+ }
12
+ return to;
13
+ };
14
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
15
+ var types_exports = {};
16
+ module.exports = __toCommonJS(types_exports);
17
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/context/types.ts"],
4
+ "sourcesContent": ["import { IdentityContext } from \"@budibase/types\"\n\n// keep this out of Budibase types, don't want to expose context info\nexport type ContextMap = {\n tenantId?: string\n appId?: string\n identity?: IdentityContext\n environmentVariables?: Record<string, string>\n isScim?: boolean\n automationId?: string\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;AAAA;AAAA;",
6
+ "names": []
7
+ }
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var Replication_exports = {};
20
+ __export(Replication_exports, {
21
+ default: () => Replication_default
22
+ });
23
+ module.exports = __toCommonJS(Replication_exports);
24
+ var import_couch = require("./couch");
25
+ var import_constants = require("../constants");
26
+ class Replication {
27
+ /**
28
+ *
29
+ * @param {String} source - the DB you want to replicate or rollback to
30
+ * @param {String} target - the DB you want to replicate to, or rollback from
31
+ */
32
+ constructor({ source, target }) {
33
+ this.source = (0, import_couch.getPouchDB)(source);
34
+ this.target = (0, import_couch.getPouchDB)(target);
35
+ }
36
+ close() {
37
+ return Promise.all([(0, import_couch.closePouchDB)(this.source), (0, import_couch.closePouchDB)(this.target)]);
38
+ }
39
+ promisify(operation, opts = {}) {
40
+ return new Promise((resolve) => {
41
+ operation(this.target, opts).on("denied", function(err) {
42
+ throw new Error(`Denied: Document failed to replicate ${err}`);
43
+ }).on("complete", function(info) {
44
+ return resolve(info);
45
+ }).on("error", function(err) {
46
+ throw new Error(`Replication Error: ${err}`);
47
+ });
48
+ });
49
+ }
50
+ /**
51
+ * Two way replication operation, intended to be promise based.
52
+ * @param {Object} opts - PouchDB replication options
53
+ */
54
+ sync(opts = {}) {
55
+ this.replication = this.promisify(this.source.sync, opts);
56
+ return this.replication;
57
+ }
58
+ /**
59
+ * One way replication operation, intended to be promise based.
60
+ * @param {Object} opts - PouchDB replication options
61
+ */
62
+ replicate(opts = {}) {
63
+ this.replication = this.promisify(this.source.replicate.to, opts);
64
+ return this.replication;
65
+ }
66
+ appReplicateOpts() {
67
+ return {
68
+ filter: (doc) => {
69
+ if (doc._id && doc._id.startsWith(import_constants.DocumentType.AUTOMATION_LOG)) {
70
+ return false;
71
+ }
72
+ return doc._id !== import_constants.DocumentType.APP_METADATA;
73
+ }
74
+ };
75
+ }
76
+ /**
77
+ * Rollback the target DB back to the state of the source DB
78
+ */
79
+ async rollback() {
80
+ await this.target.destroy();
81
+ this.target = (0, import_couch.getPouchDB)(this.target.name);
82
+ await this.replicate();
83
+ }
84
+ cancel() {
85
+ this.replication.cancel();
86
+ }
87
+ }
88
+ var Replication_default = Replication;
89
+ //# sourceMappingURL=Replication.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/db/Replication.ts"],
4
+ "sourcesContent": ["import { getPouchDB, closePouchDB } from \"./couch\"\nimport { DocumentType } from \"../constants\"\n\nclass Replication {\n source: any\n target: any\n replication: any\n\n /**\n *\n * @param {String} source - the DB you want to replicate or rollback to\n * @param {String} target - the DB you want to replicate to, or rollback from\n */\n constructor({ source, target }: any) {\n this.source = getPouchDB(source)\n this.target = getPouchDB(target)\n }\n\n close() {\n return Promise.all([closePouchDB(this.source), closePouchDB(this.target)])\n }\n\n promisify(operation: any, opts = {}) {\n return new Promise(resolve => {\n operation(this.target, opts)\n .on(\"denied\", function (err: any) {\n // a document failed to replicate (e.g. due to permissions)\n throw new Error(`Denied: Document failed to replicate ${err}`)\n })\n .on(\"complete\", function (info: any) {\n return resolve(info)\n })\n .on(\"error\", function (err: any) {\n throw new Error(`Replication Error: ${err}`)\n })\n })\n }\n\n /**\n * Two way replication operation, intended to be promise based.\n * @param {Object} opts - PouchDB replication options\n */\n sync(opts = {}) {\n this.replication = this.promisify(this.source.sync, opts)\n return this.replication\n }\n\n /**\n * One way replication operation, intended to be promise based.\n * @param {Object} opts - PouchDB replication options\n */\n replicate(opts = {}) {\n this.replication = this.promisify(this.source.replicate.to, opts)\n return this.replication\n }\n\n appReplicateOpts() {\n return {\n filter: (doc: any) => {\n if (doc._id && doc._id.startsWith(DocumentType.AUTOMATION_LOG)) {\n return false\n }\n return doc._id !== DocumentType.APP_METADATA\n },\n }\n }\n\n /**\n * Rollback the target DB back to the state of the source DB\n */\n async rollback() {\n await this.target.destroy()\n // Recreate the DB again\n this.target = getPouchDB(this.target.name)\n // take the opportunity to remove deleted tombstones\n await this.replicate()\n }\n\n cancel() {\n this.replication.cancel()\n }\n}\n\nexport default Replication\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAyC;AACzC,uBAA6B;AAE7B,MAAM,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUhB,YAAY,EAAE,QAAQ,OAAO,GAAQ;AACnC,SAAK,aAAS,yBAAW,MAAM;AAC/B,SAAK,aAAS,yBAAW,MAAM;AAAA,EACjC;AAAA,EAEA,QAAQ;AACN,WAAO,QAAQ,IAAI,KAAC,2BAAa,KAAK,MAAM,OAAG,2BAAa,KAAK,MAAM,CAAC,CAAC;AAAA,EAC3E;AAAA,EAEA,UAAU,WAAgB,OAAO,CAAC,GAAG;AACnC,WAAO,IAAI,QAAQ,aAAW;AAC5B,gBAAU,KAAK,QAAQ,IAAI,EACxB,GAAG,UAAU,SAAU,KAAU;AAEhC,cAAM,IAAI,MAAM,wCAAwC,GAAG,EAAE;AAAA,MAC/D,CAAC,EACA,GAAG,YAAY,SAAU,MAAW;AACnC,eAAO,QAAQ,IAAI;AAAA,MACrB,CAAC,EACA,GAAG,SAAS,SAAU,KAAU;AAC/B,cAAM,IAAI,MAAM,sBAAsB,GAAG,EAAE;AAAA,MAC7C,CAAC;AAAA,IACL,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,KAAK,OAAO,CAAC,GAAG;AACd,SAAK,cAAc,KAAK,UAAU,KAAK,OAAO,MAAM,IAAI;AACxD,WAAO,KAAK;AAAA,EACd;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,UAAU,OAAO,CAAC,GAAG;AACnB,SAAK,cAAc,KAAK,UAAU,KAAK,OAAO,UAAU,IAAI,IAAI;AAChE,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,mBAAmB;AACjB,WAAO;AAAA,MACL,QAAQ,CAAC,QAAa;AACpB,YAAI,IAAI,OAAO,IAAI,IAAI,WAAW,8BAAa,cAAc,GAAG;AAC9D,iBAAO;AAAA,QACT;AACA,eAAO,IAAI,QAAQ,8BAAa;AAAA,MAClC;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,WAAW;AACf,UAAM,KAAK,OAAO,QAAQ;AAE1B,SAAK,aAAS,yBAAW,KAAK,OAAO,IAAI;AAEzC,UAAM,KAAK,UAAU;AAAA,EACvB;AAAA,EAEA,SAAS;AACP,SAAK,YAAY,OAAO;AAAA,EAC1B;AACF;AAEA,IAAO,sBAAQ;",
6
+ "names": []
7
+ }
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var constants_exports = {};
20
+ __export(constants_exports, {
21
+ CONSTANT_EXTERNAL_ROW_COLS: () => CONSTANT_EXTERNAL_ROW_COLS,
22
+ CONSTANT_INTERNAL_ROW_COLS: () => CONSTANT_INTERNAL_ROW_COLS
23
+ });
24
+ module.exports = __toCommonJS(constants_exports);
25
+ const CONSTANT_INTERNAL_ROW_COLS = [
26
+ "_id",
27
+ "_rev",
28
+ "type",
29
+ "createdAt",
30
+ "updatedAt",
31
+ "tableId"
32
+ ];
33
+ const CONSTANT_EXTERNAL_ROW_COLS = ["_id", "_rev", "tableId"];
34
+ // Annotate the CommonJS export names for ESM import in node:
35
+ 0 && (module.exports = {
36
+ CONSTANT_EXTERNAL_ROW_COLS,
37
+ CONSTANT_INTERNAL_ROW_COLS
38
+ });
39
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/db/constants.ts"],
4
+ "sourcesContent": ["export const CONSTANT_INTERNAL_ROW_COLS = [\n \"_id\",\n \"_rev\",\n \"type\",\n \"createdAt\",\n \"updatedAt\",\n \"tableId\",\n] as const\n\nexport const CONSTANT_EXTERNAL_ROW_COLS = [\"_id\", \"_rev\", \"tableId\"] as const\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO,MAAM,6BAA6B;AAAA,EACxC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEO,MAAM,6BAA6B,CAAC,OAAO,QAAQ,SAAS;",
6
+ "names": []
7
+ }
@@ -0,0 +1,224 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var DatabaseImpl_exports = {};
30
+ __export(DatabaseImpl_exports, {
31
+ DatabaseImpl: () => DatabaseImpl,
32
+ DatabaseWithConnection: () => DatabaseWithConnection
33
+ });
34
+ module.exports = __toCommonJS(DatabaseImpl_exports);
35
+ var import_nano = __toESM(require("@budibase/nano"));
36
+ var import_types = require("@budibase/types");
37
+ var import_connections = require("./connections");
38
+ var import_utils = require("./utils");
39
+ var import_pouchDB = require("./pouchDB");
40
+ var import_newid = require("../../docIds/newid");
41
+ function buildNano(couchInfo) {
42
+ return (0, import_nano.default)({
43
+ url: couchInfo.url,
44
+ requestDefaults: {
45
+ headers: {
46
+ Authorization: couchInfo.cookie
47
+ }
48
+ },
49
+ parseUrl: false
50
+ });
51
+ }
52
+ function DatabaseWithConnection(dbName, connection, opts) {
53
+ if (!connection) {
54
+ throw new Error("Must provide connection details");
55
+ }
56
+ return new DatabaseImpl(dbName, opts, connection);
57
+ }
58
+ class DatabaseImpl {
59
+ constructor(dbName, opts, connection) {
60
+ this.couchInfo = (0, import_connections.getCouchInfo)();
61
+ if (dbName == null) {
62
+ throw new Error("Database name cannot be undefined.");
63
+ }
64
+ this.name = dbName;
65
+ this.pouchOpts = opts || {};
66
+ if (connection) {
67
+ this.couchInfo = (0, import_connections.getCouchInfo)(connection);
68
+ this.instanceNano = buildNano(this.couchInfo);
69
+ }
70
+ if (!DatabaseImpl.nano) {
71
+ DatabaseImpl.init();
72
+ }
73
+ }
74
+ static init() {
75
+ const couchInfo = (0, import_connections.getCouchInfo)();
76
+ DatabaseImpl.nano = buildNano(couchInfo);
77
+ }
78
+ async exists() {
79
+ const response = await (0, import_utils.directCouchUrlCall)({
80
+ url: `${this.couchInfo.url}/${this.name}`,
81
+ method: "HEAD",
82
+ cookie: this.couchInfo.cookie
83
+ });
84
+ return response.status === 200;
85
+ }
86
+ nano() {
87
+ return this.instanceNano || DatabaseImpl.nano;
88
+ }
89
+ async checkSetup() {
90
+ let shouldCreate = !this.pouchOpts?.skip_setup;
91
+ let exists = await this.exists();
92
+ if (!shouldCreate && !exists) {
93
+ throw new Error("DB does not exist");
94
+ }
95
+ if (!exists) {
96
+ try {
97
+ await this.nano().db.create(this.name);
98
+ } catch (err) {
99
+ if (err.statusCode !== 412) {
100
+ throw err;
101
+ }
102
+ }
103
+ }
104
+ return this.nano().db.use(this.name);
105
+ }
106
+ async updateOutput(fnc) {
107
+ try {
108
+ return await fnc();
109
+ } catch (err) {
110
+ if (err.statusCode) {
111
+ err.status = err.statusCode;
112
+ }
113
+ throw err;
114
+ }
115
+ }
116
+ async get(id) {
117
+ const db = await this.checkSetup();
118
+ if (!id) {
119
+ throw new Error("Unable to get doc without a valid _id.");
120
+ }
121
+ return this.updateOutput(() => db.get(id));
122
+ }
123
+ async remove(idOrDoc, rev) {
124
+ const db = await this.checkSetup();
125
+ let _id;
126
+ let _rev;
127
+ if ((0, import_types.isDocument)(idOrDoc)) {
128
+ _id = idOrDoc._id;
129
+ _rev = idOrDoc._rev;
130
+ } else {
131
+ _id = idOrDoc;
132
+ _rev = rev;
133
+ }
134
+ if (!_id || !_rev) {
135
+ throw new Error("Unable to remove doc without a valid _id and _rev.");
136
+ }
137
+ return this.updateOutput(() => db.destroy(_id, _rev));
138
+ }
139
+ async post(document, opts) {
140
+ if (!document._id) {
141
+ document._id = (0, import_newid.newid)();
142
+ }
143
+ return this.put(document, opts);
144
+ }
145
+ async put(document, opts) {
146
+ if (!document._id) {
147
+ throw new Error("Cannot store document without _id field.");
148
+ }
149
+ const db = await this.checkSetup();
150
+ if (!document.createdAt) {
151
+ document.createdAt = (/* @__PURE__ */ new Date()).toISOString();
152
+ }
153
+ document.updatedAt = (/* @__PURE__ */ new Date()).toISOString();
154
+ if (opts?.force && document._id) {
155
+ try {
156
+ const existing = await this.get(document._id);
157
+ if (existing) {
158
+ document._rev = existing._rev;
159
+ }
160
+ } catch (err) {
161
+ if (err.status !== 404) {
162
+ throw err;
163
+ }
164
+ }
165
+ }
166
+ return this.updateOutput(() => db.insert(document));
167
+ }
168
+ async bulkDocs(documents) {
169
+ const db = await this.checkSetup();
170
+ return this.updateOutput(() => db.bulk({ docs: documents }));
171
+ }
172
+ async allDocs(params) {
173
+ const db = await this.checkSetup();
174
+ return this.updateOutput(() => db.list(params));
175
+ }
176
+ async query(viewName, params) {
177
+ const db = await this.checkSetup();
178
+ const [database, view] = viewName.split("/");
179
+ return this.updateOutput(() => db.view(database, view, params));
180
+ }
181
+ async destroy() {
182
+ try {
183
+ return await this.nano().db.destroy(this.name);
184
+ } catch (err) {
185
+ if (err.statusCode === 404) {
186
+ return;
187
+ } else {
188
+ throw { ...err, status: err.statusCode };
189
+ }
190
+ }
191
+ }
192
+ async compact() {
193
+ const db = await this.checkSetup();
194
+ return this.updateOutput(() => db.compact());
195
+ }
196
+ // All below functions are in-frequently called, just utilise PouchDB
197
+ // for them as it implements them better than we can
198
+ async dump(stream, opts) {
199
+ const pouch = (0, import_pouchDB.getPouchDB)(this.name);
200
+ return pouch.dump(stream, opts);
201
+ }
202
+ async load(stream) {
203
+ const pouch = (0, import_pouchDB.getPouchDB)(this.name);
204
+ return pouch.load(stream);
205
+ }
206
+ async createIndex(opts) {
207
+ const pouch = (0, import_pouchDB.getPouchDB)(this.name);
208
+ return pouch.createIndex(opts);
209
+ }
210
+ async deleteIndex(opts) {
211
+ const pouch = (0, import_pouchDB.getPouchDB)(this.name);
212
+ return pouch.deleteIndex(opts);
213
+ }
214
+ async getIndexes() {
215
+ const pouch = (0, import_pouchDB.getPouchDB)(this.name);
216
+ return pouch.getIndexes();
217
+ }
218
+ }
219
+ // Annotate the CommonJS export names for ESM import in node:
220
+ 0 && (module.exports = {
221
+ DatabaseImpl,
222
+ DatabaseWithConnection
223
+ });
224
+ //# sourceMappingURL=DatabaseImpl.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/db/couch/DatabaseImpl.ts"],
4
+ "sourcesContent": ["import Nano from \"@budibase/nano\"\nimport {\n AllDocsResponse,\n AnyDocument,\n Database,\n DatabaseOpts,\n DatabaseQueryOpts,\n DatabasePutOpts,\n DatabaseCreateIndexOpts,\n DatabaseDeleteIndexOpts,\n Document,\n isDocument,\n} from \"@budibase/types\"\nimport { getCouchInfo } from \"./connections\"\nimport { directCouchUrlCall } from \"./utils\"\nimport { getPouchDB } from \"./pouchDB\"\nimport { WriteStream, ReadStream } from \"fs\"\nimport { newid } from \"../../docIds/newid\"\n\nfunction buildNano(couchInfo: { url: string; cookie: string }) {\n return Nano({\n url: couchInfo.url,\n requestDefaults: {\n headers: {\n Authorization: couchInfo.cookie,\n },\n },\n parseUrl: false,\n })\n}\n\nexport function DatabaseWithConnection(\n dbName: string,\n connection: string,\n opts?: DatabaseOpts\n) {\n if (!connection) {\n throw new Error(\"Must provide connection details\")\n }\n return new DatabaseImpl(dbName, opts, connection)\n}\n\nexport class DatabaseImpl implements Database {\n public readonly name: string\n private static nano: Nano.ServerScope\n private readonly instanceNano?: Nano.ServerScope\n private readonly pouchOpts: DatabaseOpts\n\n private readonly couchInfo = getCouchInfo()\n\n constructor(dbName?: string, opts?: DatabaseOpts, connection?: string) {\n if (dbName == null) {\n throw new Error(\"Database name cannot be undefined.\")\n }\n this.name = dbName\n this.pouchOpts = opts || {}\n if (connection) {\n this.couchInfo = getCouchInfo(connection)\n this.instanceNano = buildNano(this.couchInfo)\n }\n if (!DatabaseImpl.nano) {\n DatabaseImpl.init()\n }\n }\n\n static init() {\n const couchInfo = getCouchInfo()\n DatabaseImpl.nano = buildNano(couchInfo)\n }\n\n async exists() {\n const response = await directCouchUrlCall({\n url: `${this.couchInfo.url}/${this.name}`,\n method: \"HEAD\",\n cookie: this.couchInfo.cookie,\n })\n return response.status === 200\n }\n\n private nano() {\n return this.instanceNano || DatabaseImpl.nano\n }\n\n async checkSetup() {\n let shouldCreate = !this.pouchOpts?.skip_setup\n // check exists in a lightweight fashion\n let exists = await this.exists()\n if (!shouldCreate && !exists) {\n throw new Error(\"DB does not exist\")\n }\n if (!exists) {\n try {\n await this.nano().db.create(this.name)\n } catch (err: any) {\n // Handling race conditions\n if (err.statusCode !== 412) {\n throw err\n }\n }\n }\n return this.nano().db.use(this.name)\n }\n\n private async updateOutput(fnc: any) {\n try {\n return await fnc()\n } catch (err: any) {\n if (err.statusCode) {\n err.status = err.statusCode\n }\n throw err\n }\n }\n\n async get<T>(id?: string): Promise<T | any> {\n const db = await this.checkSetup()\n if (!id) {\n throw new Error(\"Unable to get doc without a valid _id.\")\n }\n return this.updateOutput(() => db.get(id))\n }\n\n async remove(idOrDoc: string | Document, rev?: string) {\n const db = await this.checkSetup()\n let _id: string\n let _rev: string\n\n if (isDocument(idOrDoc)) {\n _id = idOrDoc._id!\n _rev = idOrDoc._rev!\n } else {\n _id = idOrDoc\n _rev = rev!\n }\n\n if (!_id || !_rev) {\n throw new Error(\"Unable to remove doc without a valid _id and _rev.\")\n }\n return this.updateOutput(() => db.destroy(_id, _rev))\n }\n\n async post(document: AnyDocument, opts?: DatabasePutOpts) {\n if (!document._id) {\n document._id = newid()\n }\n return this.put(document, opts)\n }\n\n async put(document: AnyDocument, opts?: DatabasePutOpts) {\n if (!document._id) {\n throw new Error(\"Cannot store document without _id field.\")\n }\n const db = await this.checkSetup()\n if (!document.createdAt) {\n document.createdAt = new Date().toISOString()\n }\n document.updatedAt = new Date().toISOString()\n if (opts?.force && document._id) {\n try {\n const existing = await this.get(document._id)\n if (existing) {\n document._rev = existing._rev\n }\n } catch (err: any) {\n if (err.status !== 404) {\n throw err\n }\n }\n }\n return this.updateOutput(() => db.insert(document))\n }\n\n async bulkDocs(documents: AnyDocument[]) {\n const db = await this.checkSetup()\n return this.updateOutput(() => db.bulk({ docs: documents }))\n }\n\n async allDocs<T>(params: DatabaseQueryOpts): Promise<AllDocsResponse<T>> {\n const db = await this.checkSetup()\n return this.updateOutput(() => db.list(params))\n }\n\n async query<T>(\n viewName: string,\n params: DatabaseQueryOpts\n ): Promise<AllDocsResponse<T>> {\n const db = await this.checkSetup()\n const [database, view] = viewName.split(\"/\")\n return this.updateOutput(() => db.view(database, view, params))\n }\n\n async destroy() {\n try {\n return await this.nano().db.destroy(this.name)\n } catch (err: any) {\n // didn't exist, don't worry\n if (err.statusCode === 404) {\n return\n } else {\n throw { ...err, status: err.statusCode }\n }\n }\n }\n\n async compact() {\n const db = await this.checkSetup()\n return this.updateOutput(() => db.compact())\n }\n\n // All below functions are in-frequently called, just utilise PouchDB\n // for them as it implements them better than we can\n async dump(stream: WriteStream, opts?: { filter?: any }) {\n const pouch = getPouchDB(this.name)\n // @ts-ignore\n return pouch.dump(stream, opts)\n }\n\n async load(stream: ReadStream) {\n const pouch = getPouchDB(this.name)\n // @ts-ignore\n return pouch.load(stream)\n }\n\n async createIndex(opts: DatabaseCreateIndexOpts) {\n const pouch = getPouchDB(this.name)\n return pouch.createIndex(opts)\n }\n\n async deleteIndex(opts: DatabaseDeleteIndexOpts) {\n const pouch = getPouchDB(this.name)\n return pouch.deleteIndex(opts)\n }\n\n async getIndexes() {\n const pouch = getPouchDB(this.name)\n return pouch.getIndexes()\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["Nano"]
7
+ }
@@ -0,0 +1,103 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var connections_exports = {};
30
+ __export(connections_exports, {
31
+ getCouchInfo: () => getCouchInfo,
32
+ getUrlInfo: () => getUrlInfo
33
+ });
34
+ module.exports = __toCommonJS(connections_exports);
35
+ var import_environment = __toESM(require("../../environment"));
36
+ const getCouchInfo = (connection) => {
37
+ const urlInfo = getUrlInfo(connection);
38
+ let username;
39
+ let password;
40
+ if (urlInfo.auth?.username) {
41
+ username = urlInfo.auth.username;
42
+ } else if (import_environment.default.COUCH_DB_USERNAME) {
43
+ username = import_environment.default.COUCH_DB_USERNAME;
44
+ } else if (!import_environment.default.isTest()) {
45
+ throw new Error("CouchDB username not set");
46
+ }
47
+ if (urlInfo.auth?.password) {
48
+ password = urlInfo.auth.password;
49
+ } else if (import_environment.default.COUCH_DB_PASSWORD) {
50
+ password = import_environment.default.COUCH_DB_PASSWORD;
51
+ } else if (!import_environment.default.isTest()) {
52
+ throw new Error("CouchDB password not set");
53
+ }
54
+ const authCookie = Buffer.from(`${username}:${password}`).toString("base64");
55
+ return {
56
+ url: urlInfo.url,
57
+ auth: {
58
+ username,
59
+ password
60
+ },
61
+ cookie: `Basic ${authCookie}`
62
+ };
63
+ };
64
+ const getUrlInfo = (url = import_environment.default.COUCH_DB_URL) => {
65
+ let cleanUrl, username, password, host;
66
+ if (url) {
67
+ const protoRegex = /^https?:\/\//i;
68
+ if (!protoRegex.test(url)) {
69
+ url = `http://${url}`;
70
+ }
71
+ const split = url.split("://");
72
+ const protocol = split[0];
73
+ const rest = split.slice(1).join("://");
74
+ if (url.includes("@")) {
75
+ let parts = rest.split("@");
76
+ host = parts[parts.length - 1];
77
+ let auth = parts.slice(0, -1).join("@");
78
+ if (auth.includes(":")) {
79
+ const authParts = auth.split(":");
80
+ username = authParts[0];
81
+ password = authParts.slice(1).join(":");
82
+ } else {
83
+ username = auth;
84
+ }
85
+ } else {
86
+ host = rest;
87
+ }
88
+ cleanUrl = `${protocol}://${host}`;
89
+ }
90
+ return {
91
+ url: cleanUrl,
92
+ auth: {
93
+ username,
94
+ password
95
+ }
96
+ };
97
+ };
98
+ // Annotate the CommonJS export names for ESM import in node:
99
+ 0 && (module.exports = {
100
+ getCouchInfo,
101
+ getUrlInfo
102
+ });
103
+ //# sourceMappingURL=connections.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/db/couch/connections.ts"],
4
+ "sourcesContent": ["import env from \"../../environment\"\n\nexport const getCouchInfo = (connection?: string) => {\n const urlInfo = getUrlInfo(connection)\n let username\n let password\n if (urlInfo.auth?.username) {\n // set from url\n username = urlInfo.auth.username\n } else if (env.COUCH_DB_USERNAME) {\n // set from env\n username = env.COUCH_DB_USERNAME\n } else if (!env.isTest()) {\n throw new Error(\"CouchDB username not set\")\n }\n if (urlInfo.auth?.password) {\n // set from url\n password = urlInfo.auth.password\n } else if (env.COUCH_DB_PASSWORD) {\n // set from env\n password = env.COUCH_DB_PASSWORD\n } else if (!env.isTest()) {\n throw new Error(\"CouchDB password not set\")\n }\n const authCookie = Buffer.from(`${username}:${password}`).toString(\"base64\")\n return {\n url: urlInfo.url!,\n auth: {\n username: username,\n password: password,\n },\n cookie: `Basic ${authCookie}`,\n }\n}\n\nexport const getUrlInfo = (url = env.COUCH_DB_URL) => {\n let cleanUrl, username, password, host\n if (url) {\n // Ensure the URL starts with a protocol\n const protoRegex = /^https?:\\/\\//i\n if (!protoRegex.test(url)) {\n url = `http://${url}`\n }\n\n // Split into protocol and remainder\n const split = url.split(\"://\")\n const protocol = split[0]\n const rest = split.slice(1).join(\"://\")\n\n // Extract auth if specified\n if (url.includes(\"@\")) {\n // Split into host and remainder\n let parts = rest.split(\"@\")\n host = parts[parts.length - 1]\n let auth = parts.slice(0, -1).join(\"@\")\n\n // Split auth into username and password\n if (auth.includes(\":\")) {\n const authParts = auth.split(\":\")\n username = authParts[0]\n password = authParts.slice(1).join(\":\")\n } else {\n username = auth\n }\n } else {\n host = rest\n }\n cleanUrl = `${protocol}://${host}`\n }\n return {\n url: cleanUrl,\n auth: {\n username,\n password,\n },\n }\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,yBAAgB;AAET,MAAM,eAAe,CAAC,eAAwB;AACnD,QAAM,UAAU,WAAW,UAAU;AACrC,MAAI;AACJ,MAAI;AACJ,MAAI,QAAQ,MAAM,UAAU;AAE1B,eAAW,QAAQ,KAAK;AAAA,EAC1B,WAAW,mBAAAA,QAAI,mBAAmB;AAEhC,eAAW,mBAAAA,QAAI;AAAA,EACjB,WAAW,CAAC,mBAAAA,QAAI,OAAO,GAAG;AACxB,UAAM,IAAI,MAAM,0BAA0B;AAAA,EAC5C;AACA,MAAI,QAAQ,MAAM,UAAU;AAE1B,eAAW,QAAQ,KAAK;AAAA,EAC1B,WAAW,mBAAAA,QAAI,mBAAmB;AAEhC,eAAW,mBAAAA,QAAI;AAAA,EACjB,WAAW,CAAC,mBAAAA,QAAI,OAAO,GAAG;AACxB,UAAM,IAAI,MAAM,0BAA0B;AAAA,EAC5C;AACA,QAAM,aAAa,OAAO,KAAK,GAAG,QAAQ,IAAI,QAAQ,EAAE,EAAE,SAAS,QAAQ;AAC3E,SAAO;AAAA,IACL,KAAK,QAAQ;AAAA,IACb,MAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACF;AAAA,IACA,QAAQ,SAAS,UAAU;AAAA,EAC7B;AACF;AAEO,MAAM,aAAa,CAAC,MAAM,mBAAAA,QAAI,iBAAiB;AACpD,MAAI,UAAU,UAAU,UAAU;AAClC,MAAI,KAAK;AAEP,UAAM,aAAa;AACnB,QAAI,CAAC,WAAW,KAAK,GAAG,GAAG;AACzB,YAAM,UAAU,GAAG;AAAA,IACrB;AAGA,UAAM,QAAQ,IAAI,MAAM,KAAK;AAC7B,UAAM,WAAW,MAAM,CAAC;AACxB,UAAM,OAAO,MAAM,MAAM,CAAC,EAAE,KAAK,KAAK;AAGtC,QAAI,IAAI,SAAS,GAAG,GAAG;AAErB,UAAI,QAAQ,KAAK,MAAM,GAAG;AAC1B,aAAO,MAAM,MAAM,SAAS,CAAC;AAC7B,UAAI,OAAO,MAAM,MAAM,GAAG,EAAE,EAAE,KAAK,GAAG;AAGtC,UAAI,KAAK,SAAS,GAAG,GAAG;AACtB,cAAM,YAAY,KAAK,MAAM,GAAG;AAChC,mBAAW,UAAU,CAAC;AACtB,mBAAW,UAAU,MAAM,CAAC,EAAE,KAAK,GAAG;AAAA,MACxC,OAAO;AACL,mBAAW;AAAA,MACb;AAAA,IACF,OAAO;AACL,aAAO;AAAA,IACT;AACA,eAAW,GAAG,QAAQ,MAAM,IAAI;AAAA,EAClC;AACA,SAAO;AAAA,IACL,KAAK;AAAA,IACL,MAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACF;",
6
+ "names": ["env"]
7
+ }
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
19
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
20
+ var couch_exports = {};
21
+ __export(couch_exports, {
22
+ closePouchDB: () => import_pouchDB.closePouchDB,
23
+ getPouch: () => import_pouchDB.getPouch,
24
+ getPouchDB: () => import_pouchDB.getPouchDB,
25
+ init: () => import_pouchDB.init
26
+ });
27
+ module.exports = __toCommonJS(couch_exports);
28
+ __reExport(couch_exports, require("./connections"), module.exports);
29
+ __reExport(couch_exports, require("./DatabaseImpl"), module.exports);
30
+ __reExport(couch_exports, require("./utils"), module.exports);
31
+ var import_pouchDB = require("./pouchDB");
32
+ __reExport(couch_exports, require("../constants"), module.exports);
33
+ // Annotate the CommonJS export names for ESM import in node:
34
+ 0 && (module.exports = {
35
+ closePouchDB,
36
+ getPouch,
37
+ getPouchDB,
38
+ init,
39
+ ...require("./connections"),
40
+ ...require("./DatabaseImpl"),
41
+ ...require("./utils"),
42
+ ...require("../constants")
43
+ });
44
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/db/couch/index.ts"],
4
+ "sourcesContent": ["export * from \"./connections\"\nexport * from \"./DatabaseImpl\"\nexport * from \"./utils\"\nexport { init, getPouch, getPouchDB, closePouchDB } from \"./pouchDB\"\nexport * from \"../constants\"\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0BAAc,0BAAd;AACA,0BAAc,2BADd;AAEA,0BAAc,oBAFd;AAGA,qBAAyD;AACzD,0BAAc,yBAJd;",
6
+ "names": []
7
+ }