@budibase/backend-core 2.9.38 → 2.9.39-alpha.1

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 (494) hide show
  1. package/dist/index.js +3027 -3025
  2. package/dist/index.js.map +4 -4
  3. package/dist/index.js.meta.json +1 -1
  4. package/dist/package.json +5 -5
  5. package/dist/plugins.js +1 -1
  6. package/dist/plugins.js.map +2 -2
  7. package/dist/plugins.js.meta.json +1 -1
  8. package/dist/src/accounts/accounts.js +100 -0
  9. package/dist/src/accounts/accounts.js.map +7 -0
  10. package/dist/src/accounts/api.js +78 -0
  11. package/dist/src/accounts/api.js.map +7 -0
  12. package/dist/src/accounts/index.js +23 -0
  13. package/dist/src/accounts/index.js.map +7 -0
  14. package/dist/src/auth/auth.js +208 -0
  15. package/dist/src/auth/auth.js.map +7 -0
  16. package/dist/src/auth/index.js +23 -0
  17. package/dist/src/auth/index.js.map +7 -0
  18. package/dist/src/auth/tests/auth.spec.js +37 -0
  19. package/dist/src/auth/tests/auth.spec.js.map +7 -0
  20. package/dist/src/blacklist/blacklist.js +88 -0
  21. package/dist/src/blacklist/blacklist.js.map +7 -0
  22. package/dist/src/blacklist/index.js +23 -0
  23. package/dist/src/blacklist/index.js.map +7 -0
  24. package/dist/src/blacklist/tests/blacklist.spec.js +61 -0
  25. package/dist/src/blacklist/tests/blacklist.spec.js.map +7 -0
  26. package/dist/src/cache/appMetadata.js +86 -0
  27. package/dist/src/cache/appMetadata.js.map +7 -0
  28. package/dist/src/cache/base/index.js +102 -0
  29. package/dist/src/cache/base/index.js.map +7 -0
  30. package/dist/src/cache/generic.js +69 -0
  31. package/dist/src/cache/generic.js.map +7 -0
  32. package/dist/src/cache/index.js +51 -0
  33. package/dist/src/cache/index.js.map +7 -0
  34. package/dist/src/cache/tests/writethrough.spec.js +132 -0
  35. package/dist/src/cache/tests/writethrough.spec.js.map +7 -0
  36. package/dist/src/cache/user.js +99 -0
  37. package/dist/src/cache/user.js.map +7 -0
  38. package/dist/src/cache/writethrough.js +144 -0
  39. package/dist/src/cache/writethrough.js.map +7 -0
  40. package/dist/src/configs/configs.js +228 -0
  41. package/dist/src/configs/configs.js.map +7 -0
  42. package/dist/src/configs/index.js +23 -0
  43. package/dist/src/configs/index.js.map +7 -0
  44. package/dist/src/configs/tests/configs.spec.js +182 -0
  45. package/dist/src/configs/tests/configs.spec.js.map +7 -0
  46. package/dist/src/constants/db.js +107 -0
  47. package/dist/src/constants/db.js.map +7 -0
  48. package/dist/src/constants/index.js +25 -0
  49. package/dist/src/constants/index.js.map +7 -0
  50. package/dist/src/constants/misc.js +92 -0
  51. package/dist/src/constants/misc.js.map +7 -0
  52. package/dist/src/context/Context.js +36 -0
  53. package/dist/src/context/Context.js.map +7 -0
  54. package/dist/src/context/identity.js +87 -0
  55. package/dist/src/context/identity.js.map +7 -0
  56. package/dist/src/context/index.js +45 -0
  57. package/dist/src/context/index.js.map +7 -0
  58. package/dist/src/context/mainContext.js +320 -0
  59. package/dist/src/context/mainContext.js.map +7 -0
  60. package/dist/src/context/tests/index.spec.js +147 -0
  61. package/dist/src/context/tests/index.spec.js.map +7 -0
  62. package/dist/src/context/types.js +17 -0
  63. package/dist/src/context/types.js.map +7 -0
  64. package/dist/src/db/Replication.js +89 -0
  65. package/dist/src/db/Replication.js.map +7 -0
  66. package/dist/src/db/constants.js +39 -0
  67. package/dist/src/db/constants.js.map +7 -0
  68. package/dist/src/db/couch/DatabaseImpl.js +224 -0
  69. package/dist/src/db/couch/DatabaseImpl.js.map +7 -0
  70. package/dist/src/db/couch/connections.js +103 -0
  71. package/dist/src/db/couch/connections.js.map +7 -0
  72. package/dist/src/db/couch/index.js +44 -0
  73. package/dist/src/db/couch/index.js.map +7 -0
  74. package/dist/src/db/couch/pouchDB.js +118 -0
  75. package/dist/src/db/couch/pouchDB.js.map +7 -0
  76. package/dist/src/db/couch/pouchDump.js +2 -0
  77. package/dist/src/db/couch/pouchDump.js.map +7 -0
  78. package/dist/src/db/couch/utils.js +76 -0
  79. package/dist/src/db/couch/utils.js.map +7 -0
  80. package/dist/src/db/db.d.ts +1 -1
  81. package/dist/src/db/db.js +73 -0
  82. package/dist/src/db/db.js.map +7 -0
  83. package/dist/src/db/errors.js +43 -0
  84. package/dist/src/db/errors.js.map +7 -0
  85. package/dist/src/db/index.js +64 -0
  86. package/dist/src/db/index.js.map +7 -0
  87. package/dist/src/db/lucene.d.ts +2 -1
  88. package/dist/src/db/lucene.js +595 -0
  89. package/dist/src/db/lucene.js.map +7 -0
  90. package/dist/src/db/searchIndexes/index.js +23 -0
  91. package/dist/src/db/searchIndexes/index.js.map +7 -0
  92. package/dist/src/db/searchIndexes/searchIndexes.js +82 -0
  93. package/dist/src/db/searchIndexes/searchIndexes.js.map +7 -0
  94. package/dist/src/db/tests/index.spec.js +24 -0
  95. package/dist/src/db/tests/index.spec.js.map +7 -0
  96. package/dist/src/db/tests/lucene.spec.js +312 -0
  97. package/dist/src/db/tests/lucene.spec.js.map +7 -0
  98. package/dist/src/db/tests/pouch.spec.js +63 -0
  99. package/dist/src/db/tests/pouch.spec.js.map +7 -0
  100. package/dist/src/db/tests/utils.spec.js +50 -0
  101. package/dist/src/db/tests/utils.spec.js.map +7 -0
  102. package/dist/src/db/utils.d.ts +1 -1
  103. package/dist/src/db/utils.js +198 -0
  104. package/dist/src/db/utils.js.map +7 -0
  105. package/dist/src/db/views.js +223 -0
  106. package/dist/src/db/views.js.map +7 -0
  107. package/dist/src/docIds/conversions.js +83 -0
  108. package/dist/src/docIds/conversions.js.map +7 -0
  109. package/dist/src/docIds/ids.js +101 -0
  110. package/dist/src/docIds/ids.js.map +7 -0
  111. package/dist/src/docIds/index.js +25 -0
  112. package/dist/src/docIds/index.js.map +7 -0
  113. package/dist/src/docIds/newid.js +32 -0
  114. package/dist/src/docIds/newid.js.map +7 -0
  115. package/dist/src/docIds/params.js +136 -0
  116. package/dist/src/docIds/params.js.map +7 -0
  117. package/dist/src/docUpdates/index.js +61 -0
  118. package/dist/src/docUpdates/index.js.map +7 -0
  119. package/dist/src/environment.js +181 -0
  120. package/dist/src/environment.js.map +7 -0
  121. package/dist/src/errors/errors.js +126 -0
  122. package/dist/src/errors/errors.js.map +7 -0
  123. package/dist/src/errors/index.js +23 -0
  124. package/dist/src/errors/index.js.map +7 -0
  125. package/dist/src/events/analytics.js +42 -0
  126. package/dist/src/events/analytics.js.map +7 -0
  127. package/dist/src/events/asyncEvents/index.js +25 -0
  128. package/dist/src/events/asyncEvents/index.js.map +7 -0
  129. package/dist/src/events/asyncEvents/publisher.js +39 -0
  130. package/dist/src/events/asyncEvents/publisher.js.map +7 -0
  131. package/dist/src/events/asyncEvents/queue.js +42 -0
  132. package/dist/src/events/asyncEvents/queue.js.map +7 -0
  133. package/dist/src/events/backfill.js +172 -0
  134. package/dist/src/events/backfill.js.map +7 -0
  135. package/dist/src/events/documentId.js +51 -0
  136. package/dist/src/events/documentId.js.map +7 -0
  137. package/dist/src/events/events.js +63 -0
  138. package/dist/src/events/events.js.map +7 -0
  139. package/dist/src/events/identification.js +275 -0
  140. package/dist/src/events/identification.js.map +7 -0
  141. package/dist/src/events/index.js +62 -0
  142. package/dist/src/events/index.js.map +7 -0
  143. package/dist/src/events/processors/AnalyticsProcessor.js +76 -0
  144. package/dist/src/events/processors/AnalyticsProcessor.js.map +7 -0
  145. package/dist/src/events/processors/AuditLogsProcessor.js +97 -0
  146. package/dist/src/events/processors/AuditLogsProcessor.js.map +7 -0
  147. package/dist/src/events/processors/LoggingProcessor.js +58 -0
  148. package/dist/src/events/processors/LoggingProcessor.js.map +7 -0
  149. package/dist/src/events/processors/Processors.js +57 -0
  150. package/dist/src/events/processors/Processors.js.map +7 -0
  151. package/dist/src/events/processors/async/DocumentUpdateProcessor.js +53 -0
  152. package/dist/src/events/processors/async/DocumentUpdateProcessor.js.map +7 -0
  153. package/dist/src/events/processors/index.js +57 -0
  154. package/dist/src/events/processors/index.js.map +7 -0
  155. package/dist/src/events/processors/posthog/PosthogProcessor.js +126 -0
  156. package/dist/src/events/processors/posthog/PosthogProcessor.js.map +7 -0
  157. package/dist/src/events/processors/posthog/index.js +36 -0
  158. package/dist/src/events/processors/posthog/index.js.map +7 -0
  159. package/dist/src/events/processors/posthog/rateLimiting.js +105 -0
  160. package/dist/src/events/processors/posthog/rateLimiting.js.map +7 -0
  161. package/dist/src/events/processors/posthog/tests/PosthogProcessor.spec.js +154 -0
  162. package/dist/src/events/processors/posthog/tests/PosthogProcessor.spec.js.map +7 -0
  163. package/dist/src/events/processors/types.js +29 -0
  164. package/dist/src/events/processors/types.js.map +7 -0
  165. package/dist/src/events/publishers/account.js +49 -0
  166. package/dist/src/events/publishers/account.js.map +7 -0
  167. package/dist/src/events/publishers/app.js +145 -0
  168. package/dist/src/events/publishers/app.js.map +7 -0
  169. package/dist/src/events/publishers/auditLog.js +42 -0
  170. package/dist/src/events/publishers/auditLog.js.map +7 -0
  171. package/dist/src/events/publishers/auth.js +80 -0
  172. package/dist/src/events/publishers/auth.js.map +7 -0
  173. package/dist/src/events/publishers/automation.js +111 -0
  174. package/dist/src/events/publishers/automation.js.map +7 -0
  175. package/dist/src/events/publishers/backfill.js +92 -0
  176. package/dist/src/events/publishers/backfill.js.map +7 -0
  177. package/dist/src/events/publishers/backup.js +49 -0
  178. package/dist/src/events/publishers/backup.js.map +7 -0
  179. package/dist/src/events/publishers/datasource.js +59 -0
  180. package/dist/src/events/publishers/datasource.js.map +7 -0
  181. package/dist/src/events/publishers/email.js +38 -0
  182. package/dist/src/events/publishers/email.js.map +7 -0
  183. package/dist/src/events/publishers/environmentVariable.js +53 -0
  184. package/dist/src/events/publishers/environmentVariable.js.map +7 -0
  185. package/dist/src/events/publishers/group.js +105 -0
  186. package/dist/src/events/publishers/group.js.map +7 -0
  187. package/dist/src/events/publishers/index.js +108 -0
  188. package/dist/src/events/publishers/index.js.map +7 -0
  189. package/dist/src/events/publishers/installation.js +56 -0
  190. package/dist/src/events/publishers/installation.js.map +7 -0
  191. package/dist/src/events/publishers/layout.js +42 -0
  192. package/dist/src/events/publishers/layout.js.map +7 -0
  193. package/dist/src/events/publishers/license.js +78 -0
  194. package/dist/src/events/publishers/license.js.map +7 -0
  195. package/dist/src/events/publishers/org.js +53 -0
  196. package/dist/src/events/publishers/org.js.map +7 -0
  197. package/dist/src/events/publishers/plugin.js +61 -0
  198. package/dist/src/events/publishers/plugin.js.map +7 -0
  199. package/dist/src/events/publishers/query.js +85 -0
  200. package/dist/src/events/publishers/query.js.map +7 -0
  201. package/dist/src/events/publishers/role.js +71 -0
  202. package/dist/src/events/publishers/role.js.map +7 -0
  203. package/dist/src/events/publishers/rows.js +43 -0
  204. package/dist/src/events/publishers/rows.js.map +7 -0
  205. package/dist/src/events/publishers/screen.js +52 -0
  206. package/dist/src/events/publishers/screen.js.map +7 -0
  207. package/dist/src/events/publishers/serve.js +53 -0
  208. package/dist/src/events/publishers/serve.js.map +7 -0
  209. package/dist/src/events/publishers/table.js +79 -0
  210. package/dist/src/events/publishers/table.js.map +7 -0
  211. package/dist/src/events/publishers/user.js +191 -0
  212. package/dist/src/events/publishers/user.js.map +7 -0
  213. package/dist/src/events/publishers/view.js +102 -0
  214. package/dist/src/events/publishers/view.js.map +7 -0
  215. package/dist/src/{featureFlags → features}/index.d.ts +1 -0
  216. package/dist/src/features/index.js +105 -0
  217. package/dist/src/features/index.js.map +7 -0
  218. package/dist/src/features/installation.d.ts +1 -0
  219. package/dist/src/features/installation.js +42 -0
  220. package/dist/src/features/installation.js.map +7 -0
  221. package/dist/src/features/tests/featureFlags.spec.js +86 -0
  222. package/dist/src/features/tests/featureFlags.spec.js.map +7 -0
  223. package/dist/src/helpers.js +31 -0
  224. package/dist/src/helpers.js.map +7 -0
  225. package/dist/src/index.d.ts +2 -1
  226. package/dist/src/index.js +154 -0
  227. package/dist/src/index.js.map +7 -0
  228. package/dist/src/installation.js +139 -0
  229. package/dist/src/installation.js.map +7 -0
  230. package/dist/src/logging/alerts.js +49 -0
  231. package/dist/src/logging/alerts.js.map +7 -0
  232. package/dist/src/logging/correlation/correlation.js +41 -0
  233. package/dist/src/logging/correlation/correlation.js.map +7 -0
  234. package/dist/src/logging/correlation/index.js +23 -0
  235. package/dist/src/logging/correlation/index.js.map +7 -0
  236. package/dist/src/logging/correlation/middleware.js +37 -0
  237. package/dist/src/logging/correlation/middleware.js.map +7 -0
  238. package/dist/src/logging/index.js +48 -0
  239. package/dist/src/logging/index.js.map +7 -0
  240. package/dist/src/logging/pino/logger.js +197 -0
  241. package/dist/src/logging/pino/logger.js.map +7 -0
  242. package/dist/src/logging/pino/middleware.js +77 -0
  243. package/dist/src/logging/pino/middleware.js.map +7 -0
  244. package/dist/src/logging/system.js +110 -0
  245. package/dist/src/logging/system.js.map +7 -0
  246. package/dist/src/logging/tests/system.spec.js +59 -0
  247. package/dist/src/logging/tests/system.spec.js.map +7 -0
  248. package/dist/src/middleware/adminOnly.js +31 -0
  249. package/dist/src/middleware/adminOnly.js.map +7 -0
  250. package/dist/src/middleware/auditLog.js +27 -0
  251. package/dist/src/middleware/auditLog.js.map +7 -0
  252. package/dist/src/middleware/authenticated.js +178 -0
  253. package/dist/src/middleware/authenticated.js.map +7 -0
  254. package/dist/src/middleware/builderOnly.js +48 -0
  255. package/dist/src/middleware/builderOnly.js.map +7 -0
  256. package/dist/src/middleware/builderOrAdmin.js +48 -0
  257. package/dist/src/middleware/builderOrAdmin.js.map +7 -0
  258. package/dist/src/middleware/csrf.js +60 -0
  259. package/dist/src/middleware/csrf.js.map +7 -0
  260. package/dist/src/middleware/errorHandling.js +62 -0
  261. package/dist/src/middleware/errorHandling.js.map +7 -0
  262. package/dist/src/middleware/index.js +95 -0
  263. package/dist/src/middleware/index.js.map +7 -0
  264. package/dist/src/middleware/internalApi.js +39 -0
  265. package/dist/src/middleware/internalApi.js.map +7 -0
  266. package/dist/src/middleware/joi-validator.js +73 -0
  267. package/dist/src/middleware/joi-validator.js.map +7 -0
  268. package/dist/src/middleware/matchers.js +62 -0
  269. package/dist/src/middleware/matchers.js.map +7 -0
  270. package/dist/src/middleware/passport/datasource/google.js +103 -0
  271. package/dist/src/middleware/passport/datasource/google.js.map +7 -0
  272. package/dist/src/middleware/passport/local.js +73 -0
  273. package/dist/src/middleware/passport/local.js.map +7 -0
  274. package/dist/src/middleware/passport/sso/google.js +93 -0
  275. package/dist/src/middleware/passport/sso/google.js.map +7 -0
  276. package/dist/src/middleware/passport/sso/oidc.js +135 -0
  277. package/dist/src/middleware/passport/sso/oidc.js.map +7 -0
  278. package/dist/src/middleware/passport/sso/sso.js +149 -0
  279. package/dist/src/middleware/passport/sso/sso.js.map +7 -0
  280. package/dist/src/middleware/passport/sso/tests/google.spec.js +77 -0
  281. package/dist/src/middleware/passport/sso/tests/google.spec.js.map +7 -0
  282. package/dist/src/middleware/passport/sso/tests/oidc.spec.js +143 -0
  283. package/dist/src/middleware/passport/sso/tests/oidc.spec.js.map +7 -0
  284. package/dist/src/middleware/passport/sso/tests/sso.spec.js +167 -0
  285. package/dist/src/middleware/passport/sso/tests/sso.spec.js.map +7 -0
  286. package/dist/src/middleware/passport/utils.js +62 -0
  287. package/dist/src/middleware/passport/utils.js.map +7 -0
  288. package/dist/src/middleware/querystringToBody.js +45 -0
  289. package/dist/src/middleware/querystringToBody.js.map +7 -0
  290. package/dist/src/middleware/tenancy.js +46 -0
  291. package/dist/src/middleware/tenancy.js.map +7 -0
  292. package/dist/src/middleware/tests/builder.spec.js +169 -0
  293. package/dist/src/middleware/tests/builder.spec.js.map +7 -0
  294. package/dist/src/middleware/tests/matchers.spec.js +120 -0
  295. package/dist/src/middleware/tests/matchers.spec.js.map +7 -0
  296. package/dist/src/migrations/definitions.js +63 -0
  297. package/dist/src/migrations/definitions.js.map +7 -0
  298. package/dist/src/migrations/index.js +25 -0
  299. package/dist/src/migrations/index.js.map +7 -0
  300. package/dist/src/migrations/migrations.js +178 -0
  301. package/dist/src/migrations/migrations.js.map +7 -0
  302. package/dist/src/migrations/tests/migrations.spec.js +78 -0
  303. package/dist/src/migrations/tests/migrations.spec.js.map +7 -0
  304. package/dist/src/objectStore/buckets/app.js +65 -0
  305. package/dist/src/objectStore/buckets/app.js.map +7 -0
  306. package/dist/src/objectStore/buckets/global.js +63 -0
  307. package/dist/src/objectStore/buckets/global.js.map +7 -0
  308. package/dist/src/objectStore/buckets/index.js +27 -0
  309. package/dist/src/objectStore/buckets/index.js.map +7 -0
  310. package/dist/src/objectStore/buckets/plugins.js +101 -0
  311. package/dist/src/objectStore/buckets/plugins.js.map +7 -0
  312. package/dist/src/objectStore/buckets/tests/app.spec.js +171 -0
  313. package/dist/src/objectStore/buckets/tests/app.spec.js.map +7 -0
  314. package/dist/src/objectStore/buckets/tests/global.spec.js +87 -0
  315. package/dist/src/objectStore/buckets/tests/global.spec.js.map +7 -0
  316. package/dist/src/objectStore/buckets/tests/plugins.spec.js +123 -0
  317. package/dist/src/objectStore/buckets/tests/plugins.spec.js.map +7 -0
  318. package/dist/src/objectStore/cloudfront.js +74 -0
  319. package/dist/src/objectStore/cloudfront.js.map +7 -0
  320. package/dist/src/objectStore/index.js +27 -0
  321. package/dist/src/objectStore/index.js.map +7 -0
  322. package/dist/src/objectStore/objectStore.js +372 -0
  323. package/dist/src/objectStore/objectStore.js.map +7 -0
  324. package/dist/src/objectStore/utils.js +58 -0
  325. package/dist/src/objectStore/utils.js.map +7 -0
  326. package/dist/src/platform/index.js +45 -0
  327. package/dist/src/platform/index.js.map +7 -0
  328. package/dist/src/platform/platformDb.js +33 -0
  329. package/dist/src/platform/platformDb.js.map +7 -0
  330. package/dist/src/platform/tenants.js +123 -0
  331. package/dist/src/platform/tenants.js.map +7 -0
  332. package/dist/src/platform/tests/tenants.spec.js +46 -0
  333. package/dist/src/platform/tests/tenants.spec.js.map +7 -0
  334. package/dist/src/platform/users.js +104 -0
  335. package/dist/src/platform/users.js.map +7 -0
  336. package/dist/src/plugin/index.js +23 -0
  337. package/dist/src/plugin/index.js.map +7 -0
  338. package/dist/src/plugin/tests/validation.spec.js +97 -0
  339. package/dist/src/plugin/tests/validation.spec.js.map +7 -0
  340. package/dist/src/plugin/utils.js +153 -0
  341. package/dist/src/plugin/utils.js.map +7 -0
  342. package/dist/src/queue/constants.js +35 -0
  343. package/dist/src/queue/constants.js.map +7 -0
  344. package/dist/src/queue/inMemoryQueue.js +139 -0
  345. package/dist/src/queue/inMemoryQueue.js.map +7 -0
  346. package/dist/src/queue/index.js +25 -0
  347. package/dist/src/queue/index.js.map +7 -0
  348. package/dist/src/queue/listeners.js +177 -0
  349. package/dist/src/queue/listeners.js.map +7 -0
  350. package/dist/src/queue/queue.js +85 -0
  351. package/dist/src/queue/queue.js.map +7 -0
  352. package/dist/src/redis/index.js +48 -0
  353. package/dist/src/redis/index.js.map +7 -0
  354. package/dist/src/redis/init.js +128 -0
  355. package/dist/src/redis/init.js.map +7 -0
  356. package/dist/src/redis/redis.js +277 -0
  357. package/dist/src/redis/redis.js.map +7 -0
  358. package/dist/src/redis/redlockImpl.js +145 -0
  359. package/dist/src/redis/redlockImpl.js.map +7 -0
  360. package/dist/src/redis/utils.js +136 -0
  361. package/dist/src/redis/utils.js.map +7 -0
  362. package/dist/src/security/encryption.js +184 -0
  363. package/dist/src/security/encryption.js.map +7 -0
  364. package/dist/src/security/permissions.js +188 -0
  365. package/dist/src/security/permissions.js.map +7 -0
  366. package/dist/src/security/roles.d.ts +1 -12
  367. package/dist/src/security/roles.js +337 -0
  368. package/dist/src/security/roles.js.map +7 -0
  369. package/dist/src/security/sessions.js +135 -0
  370. package/dist/src/security/sessions.js.map +7 -0
  371. package/dist/src/security/tests/encryption.spec.js +51 -0
  372. package/dist/src/security/tests/encryption.spec.js.map +7 -0
  373. package/dist/src/security/tests/permissions.spec.js +154 -0
  374. package/dist/src/security/tests/permissions.spec.js.map +7 -0
  375. package/dist/src/security/tests/sessions.spec.js +33 -0
  376. package/dist/src/security/tests/sessions.spec.js.map +7 -0
  377. package/dist/src/tenancy/db.js +33 -0
  378. package/dist/src/tenancy/db.js.map +7 -0
  379. package/dist/src/tenancy/index.js +25 -0
  380. package/dist/src/tenancy/index.js.map +7 -0
  381. package/dist/src/tenancy/tenancy.js +129 -0
  382. package/dist/src/tenancy/tenancy.js.map +7 -0
  383. package/dist/src/tenancy/tests/tenancy.spec.js +154 -0
  384. package/dist/src/tenancy/tests/tenancy.spec.js.map +7 -0
  385. package/dist/src/timers/index.js +23 -0
  386. package/dist/src/timers/index.js.map +7 -0
  387. package/dist/src/timers/timers.js +51 -0
  388. package/dist/src/timers/timers.js.map +7 -0
  389. package/dist/src/users/db.d.ts +9 -1
  390. package/dist/src/users/db.js +381 -0
  391. package/dist/src/users/db.js.map +7 -0
  392. package/dist/src/users/events.js +152 -0
  393. package/dist/src/users/events.js.map +7 -0
  394. package/dist/src/users/index.js +36 -0
  395. package/dist/src/users/index.js.map +7 -0
  396. package/dist/src/users/lookup.js +110 -0
  397. package/dist/src/users/lookup.js.map +7 -0
  398. package/dist/src/users/users.js +257 -0
  399. package/dist/src/users/users.js.map +7 -0
  400. package/dist/src/users/utils.js +95 -0
  401. package/dist/src/users/utils.js.map +7 -0
  402. package/dist/src/utils/hashing.js +53 -0
  403. package/dist/src/utils/hashing.js.map +7 -0
  404. package/dist/src/utils/index.js +27 -0
  405. package/dist/src/utils/index.js.map +7 -0
  406. package/dist/src/utils/stringUtils.js +33 -0
  407. package/dist/src/utils/stringUtils.js.map +7 -0
  408. package/dist/src/utils/tests/utils.spec.js +165 -0
  409. package/dist/src/utils/tests/utils.spec.js.map +7 -0
  410. package/dist/src/utils/utils.js +207 -0
  411. package/dist/src/utils/utils.js.map +7 -0
  412. package/dist/tests/core/logging.js +57 -0
  413. package/dist/tests/core/logging.js.map +7 -0
  414. package/dist/tests/core/utilities/index.js +54 -0
  415. package/dist/tests/core/utilities/index.js.map +7 -0
  416. package/dist/tests/core/utilities/jestUtils.js +50 -0
  417. package/dist/tests/core/utilities/jestUtils.js.map +7 -0
  418. package/dist/tests/core/utilities/mocks/alerts.js +41 -0
  419. package/dist/tests/core/utilities/mocks/alerts.js.map +7 -0
  420. package/dist/tests/core/utilities/mocks/date.js +32 -0
  421. package/dist/tests/core/utilities/mocks/date.js.map +7 -0
  422. package/dist/tests/core/utilities/mocks/events.js +133 -0
  423. package/dist/tests/core/utilities/mocks/events.js.map +7 -0
  424. package/dist/tests/core/utilities/mocks/fetch.js +39 -0
  425. package/dist/tests/core/utilities/mocks/fetch.js.map +7 -0
  426. package/dist/tests/core/utilities/mocks/index.js +55 -0
  427. package/dist/tests/core/utilities/mocks/index.js.map +7 -0
  428. package/dist/tests/core/utilities/mocks/licenses.d.ts +2 -0
  429. package/dist/tests/core/utilities/mocks/licenses.js +145 -0
  430. package/dist/tests/core/utilities/mocks/licenses.js.map +7 -0
  431. package/dist/tests/core/utilities/mocks/posthog.js +9 -0
  432. package/dist/tests/core/utilities/mocks/posthog.js.map +7 -0
  433. package/dist/tests/core/utilities/structures/Chance.js +48 -0
  434. package/dist/tests/core/utilities/structures/Chance.js.map +7 -0
  435. package/dist/tests/core/utilities/structures/accounts.js +148 -0
  436. package/dist/tests/core/utilities/structures/accounts.js.map +7 -0
  437. package/dist/tests/core/utilities/structures/apps.js +47 -0
  438. package/dist/tests/core/utilities/structures/apps.js.map +7 -0
  439. package/dist/tests/core/utilities/structures/common.js +35 -0
  440. package/dist/tests/core/utilities/structures/common.js.map +7 -0
  441. package/dist/tests/core/utilities/structures/db.js +40 -0
  442. package/dist/tests/core/utilities/structures/db.js.map +7 -0
  443. package/dist/tests/core/utilities/structures/documents/index.js +23 -0
  444. package/dist/tests/core/utilities/structures/documents/index.js.map +7 -0
  445. package/dist/tests/core/utilities/structures/documents/platform/index.js +39 -0
  446. package/dist/tests/core/utilities/structures/documents/platform/index.js.map +7 -0
  447. package/dist/tests/core/utilities/structures/documents/platform/installation.js +48 -0
  448. package/dist/tests/core/utilities/structures/documents/platform/installation.js.map +7 -0
  449. package/dist/tests/core/utilities/structures/generator.js +40 -0
  450. package/dist/tests/core/utilities/structures/generator.js.map +7 -0
  451. package/dist/tests/core/utilities/structures/index.js +81 -0
  452. package/dist/tests/core/utilities/structures/index.js.map +7 -0
  453. package/dist/tests/core/utilities/structures/koa.js +42 -0
  454. package/dist/tests/core/utilities/structures/koa.js.map +7 -0
  455. package/dist/tests/core/utilities/structures/licenses.js +175 -0
  456. package/dist/tests/core/utilities/structures/licenses.js.map +7 -0
  457. package/dist/tests/core/utilities/structures/plugins.js +46 -0
  458. package/dist/tests/core/utilities/structures/plugins.js.map +7 -0
  459. package/dist/tests/core/utilities/structures/quotas.js +94 -0
  460. package/dist/tests/core/utilities/structures/quotas.js.map +7 -0
  461. package/dist/tests/core/utilities/structures/scim.js +90 -0
  462. package/dist/tests/core/utilities/structures/scim.js.map +7 -0
  463. package/dist/tests/core/utilities/structures/shared.js +46 -0
  464. package/dist/tests/core/utilities/structures/shared.js.map +7 -0
  465. package/dist/tests/core/utilities/structures/sso.js +144 -0
  466. package/dist/tests/core/utilities/structures/sso.js.map +7 -0
  467. package/dist/tests/core/utilities/structures/tenants.js +32 -0
  468. package/dist/tests/core/utilities/structures/tenants.js.map +7 -0
  469. package/dist/tests/core/utilities/structures/userGroups.js +36 -0
  470. package/dist/tests/core/utilities/structures/userGroups.js.map +7 -0
  471. package/dist/tests/core/utilities/structures/users.js +96 -0
  472. package/dist/tests/core/utilities/structures/users.js.map +7 -0
  473. package/dist/tests/core/utilities/testContainerUtils.js +100 -0
  474. package/dist/tests/core/utilities/testContainerUtils.js.map +7 -0
  475. package/dist/tests/core/utilities/utils/index.js +39 -0
  476. package/dist/tests/core/utilities/utils/index.js.map +7 -0
  477. package/dist/tests/core/utilities/utils/time.js +31 -0
  478. package/dist/tests/core/utilities/utils/time.js.map +7 -0
  479. package/dist/tests/extra/DBTestConfiguration.js +61 -0
  480. package/dist/tests/extra/DBTestConfiguration.js.map +7 -0
  481. package/dist/tests/extra/index.js +42 -0
  482. package/dist/tests/extra/index.js.map +7 -0
  483. package/dist/tests/extra/testEnv.js +106 -0
  484. package/dist/tests/extra/testEnv.js.map +7 -0
  485. package/dist/tests/index.js +23 -0
  486. package/dist/tests/index.js.map +7 -0
  487. package/dist/tests/jestEnv.js +8 -0
  488. package/dist/tests/jestEnv.js.map +7 -0
  489. package/dist/tests/jestSetup.js +41 -0
  490. package/dist/tests/jestSetup.js.map +7 -0
  491. package/package.json +5 -5
  492. package/dist/tests.js +0 -8476
  493. package/dist/tests.js.map +0 -7
  494. package/dist/tests.js.meta.json +0 -1
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/context/index.ts"],
4
+ "sourcesContent": ["export { DEFAULT_TENANT_ID } from \"../constants\"\nexport * as identity from \"./identity\"\nexport * from \"./mainContext\"\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAAkC;AAClC,eAA0B;AAC1B,4BAAc,0BAFd;",
6
+ "names": []
7
+ }
@@ -0,0 +1,320 @@
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 mainContext_exports = {};
30
+ __export(mainContext_exports, {
31
+ baseGlobalDBName: () => baseGlobalDBName,
32
+ doInAppContext: () => doInAppContext,
33
+ doInAutomationContext: () => doInAutomationContext,
34
+ doInContext: () => doInContext,
35
+ doInEnvironmentContext: () => doInEnvironmentContext,
36
+ doInIdentityContext: () => doInIdentityContext,
37
+ doInScimContext: () => doInScimContext,
38
+ doInTenant: () => doInTenant,
39
+ getAppDB: () => getAppDB,
40
+ getAppId: () => getAppId,
41
+ getAuditLogDBName: () => getAuditLogDBName,
42
+ getAuditLogsDB: () => getAuditLogsDB,
43
+ getAutomationId: () => getAutomationId,
44
+ getDevAppDB: () => getDevAppDB,
45
+ getEnvironmentVariables: () => getEnvironmentVariables,
46
+ getGlobalDB: () => getGlobalDB,
47
+ getGlobalDBName: () => getGlobalDBName,
48
+ getIdentity: () => getIdentity,
49
+ getPlatformURL: () => getPlatformURL,
50
+ getProdAppDB: () => getProdAppDB,
51
+ getProdAppId: () => getProdAppId,
52
+ getTenantIDFromAppID: () => getTenantIDFromAppID,
53
+ getTenantId: () => getTenantId,
54
+ isMultiTenant: () => isMultiTenant,
55
+ isScim: () => isScim,
56
+ isTenancyEnabled: () => isTenancyEnabled,
57
+ isTenantIdSet: () => isTenantIdSet
58
+ });
59
+ module.exports = __toCommonJS(mainContext_exports);
60
+ var import_environment = __toESM(require("../environment"));
61
+ var import_Context = __toESM(require("./Context"));
62
+ var conversions = __toESM(require("../docIds/conversions"));
63
+ var import_db = require("../db/db");
64
+ var import_constants = require("../constants");
65
+ let TEST_APP_ID = null;
66
+ function getGlobalDBName(tenantId) {
67
+ if (!tenantId) {
68
+ tenantId = getTenantId();
69
+ }
70
+ return baseGlobalDBName(tenantId);
71
+ }
72
+ function getAuditLogDBName(tenantId) {
73
+ if (!tenantId) {
74
+ tenantId = getTenantId();
75
+ }
76
+ if (tenantId === import_constants.DEFAULT_TENANT_ID) {
77
+ return import_constants.StaticDatabases.AUDIT_LOGS.name;
78
+ } else {
79
+ return `${tenantId}${import_constants.SEPARATOR}${import_constants.StaticDatabases.AUDIT_LOGS.name}`;
80
+ }
81
+ }
82
+ function baseGlobalDBName(tenantId) {
83
+ if (!tenantId || tenantId === import_constants.DEFAULT_TENANT_ID) {
84
+ return import_constants.StaticDatabases.GLOBAL.name;
85
+ } else {
86
+ return `${tenantId}${import_constants.SEPARATOR}${import_constants.StaticDatabases.GLOBAL.name}`;
87
+ }
88
+ }
89
+ function getPlatformURL() {
90
+ return import_environment.default.PLATFORM_URL;
91
+ }
92
+ function isMultiTenant() {
93
+ return !!import_environment.default.MULTI_TENANCY;
94
+ }
95
+ function isTenantIdSet() {
96
+ const context = import_Context.default.get();
97
+ return !!context?.tenantId;
98
+ }
99
+ function isTenancyEnabled() {
100
+ return import_environment.default.MULTI_TENANCY;
101
+ }
102
+ function getTenantIDFromAppID(appId) {
103
+ if (!appId) {
104
+ return void 0;
105
+ }
106
+ if (!isMultiTenant()) {
107
+ return import_constants.DEFAULT_TENANT_ID;
108
+ }
109
+ const split = appId.split(import_constants.SEPARATOR);
110
+ const hasDev = split[1] === import_constants.DocumentType.DEV;
111
+ if (hasDev && split.length === 3 || !hasDev && split.length === 2) {
112
+ return void 0;
113
+ }
114
+ if (hasDev) {
115
+ return split[2];
116
+ } else {
117
+ return split[1];
118
+ }
119
+ }
120
+ function updateContext(updates) {
121
+ let context;
122
+ try {
123
+ context = import_Context.default.get();
124
+ } catch (err) {
125
+ context = {};
126
+ }
127
+ context = {
128
+ ...context,
129
+ ...updates
130
+ };
131
+ return context;
132
+ }
133
+ async function newContext(updates, task) {
134
+ let context = updateContext(updates);
135
+ return import_Context.default.run(context, task);
136
+ }
137
+ async function doInAutomationContext(params) {
138
+ const tenantId = getTenantIDFromAppID(params.appId);
139
+ return newContext(
140
+ {
141
+ tenantId,
142
+ appId: params.appId,
143
+ automationId: params.automationId
144
+ },
145
+ params.task
146
+ );
147
+ }
148
+ async function doInContext(appId, task) {
149
+ const tenantId = getTenantIDFromAppID(appId);
150
+ return newContext(
151
+ {
152
+ tenantId,
153
+ appId
154
+ },
155
+ task
156
+ );
157
+ }
158
+ async function doInTenant(tenantId, task) {
159
+ if (!import_environment.default.MULTI_TENANCY) {
160
+ tenantId = tenantId || import_constants.DEFAULT_TENANT_ID;
161
+ }
162
+ const updates = tenantId ? { tenantId } : {};
163
+ return newContext(updates, task);
164
+ }
165
+ async function doInAppContext(appId, task) {
166
+ if (!appId && !import_environment.default.isTest()) {
167
+ throw new Error("appId is required");
168
+ }
169
+ let updates;
170
+ if (!appId) {
171
+ updates = { appId: "" };
172
+ } else {
173
+ const tenantId = getTenantIDFromAppID(appId);
174
+ updates = { appId };
175
+ if (tenantId) {
176
+ updates.tenantId = tenantId;
177
+ }
178
+ }
179
+ return newContext(updates, task);
180
+ }
181
+ async function doInIdentityContext(identity, task) {
182
+ if (!identity) {
183
+ throw new Error("identity is required");
184
+ }
185
+ const context = {
186
+ identity
187
+ };
188
+ if (identity.tenantId) {
189
+ context.tenantId = identity.tenantId;
190
+ }
191
+ return newContext(context, task);
192
+ }
193
+ function getIdentity() {
194
+ try {
195
+ const context = import_Context.default.get();
196
+ return context?.identity;
197
+ } catch (e) {
198
+ }
199
+ }
200
+ function getTenantId() {
201
+ if (!isMultiTenant()) {
202
+ return import_constants.DEFAULT_TENANT_ID;
203
+ }
204
+ const context = import_Context.default.get();
205
+ const tenantId = context?.tenantId;
206
+ if (!tenantId) {
207
+ throw new Error("Tenant id not found");
208
+ }
209
+ return tenantId;
210
+ }
211
+ function getAutomationId() {
212
+ const context = import_Context.default.get();
213
+ return context?.automationId;
214
+ }
215
+ function getAppId() {
216
+ const context = import_Context.default.get();
217
+ const foundId = context?.appId;
218
+ if (!foundId && import_environment.default.isTest() && TEST_APP_ID) {
219
+ return TEST_APP_ID;
220
+ } else {
221
+ return foundId;
222
+ }
223
+ }
224
+ const getProdAppId = () => {
225
+ const appId = getAppId();
226
+ if (!appId) {
227
+ throw new Error("Could not get appId");
228
+ }
229
+ return conversions.getProdAppID(appId);
230
+ };
231
+ function doInEnvironmentContext(values, task) {
232
+ if (!values) {
233
+ throw new Error("Must supply environment variables.");
234
+ }
235
+ const updates = {
236
+ environmentVariables: values
237
+ };
238
+ return newContext(updates, task);
239
+ }
240
+ function doInScimContext(task) {
241
+ const updates = {
242
+ isScim: true
243
+ };
244
+ return newContext(updates, task);
245
+ }
246
+ function getEnvironmentVariables() {
247
+ const context = import_Context.default.get();
248
+ if (!context.environmentVariables) {
249
+ return null;
250
+ } else {
251
+ return context.environmentVariables;
252
+ }
253
+ }
254
+ function getGlobalDB() {
255
+ const context = import_Context.default.get();
256
+ if (!context || import_environment.default.MULTI_TENANCY && !context.tenantId) {
257
+ throw new Error("Global DB not found");
258
+ }
259
+ return (0, import_db.getDB)(baseGlobalDBName(context?.tenantId));
260
+ }
261
+ function getAuditLogsDB() {
262
+ if (!getTenantId()) {
263
+ throw new Error("No tenant ID found - cannot open audit log DB");
264
+ }
265
+ return (0, import_db.getDB)(getAuditLogDBName());
266
+ }
267
+ function getAppDB(opts) {
268
+ const appId = getAppId();
269
+ return (0, import_db.getDB)(appId, opts);
270
+ }
271
+ function getProdAppDB(opts) {
272
+ const appId = getAppId();
273
+ if (!appId) {
274
+ throw new Error("Unable to retrieve prod DB - no app ID.");
275
+ }
276
+ return (0, import_db.getDB)(conversions.getProdAppID(appId), opts);
277
+ }
278
+ function getDevAppDB(opts) {
279
+ const appId = getAppId();
280
+ if (!appId) {
281
+ throw new Error("Unable to retrieve dev DB - no app ID.");
282
+ }
283
+ return (0, import_db.getDB)(conversions.getDevelopmentAppID(appId), opts);
284
+ }
285
+ function isScim() {
286
+ const context = import_Context.default.get();
287
+ const scimCall = context?.isScim;
288
+ return !!scimCall;
289
+ }
290
+ // Annotate the CommonJS export names for ESM import in node:
291
+ 0 && (module.exports = {
292
+ baseGlobalDBName,
293
+ doInAppContext,
294
+ doInAutomationContext,
295
+ doInContext,
296
+ doInEnvironmentContext,
297
+ doInIdentityContext,
298
+ doInScimContext,
299
+ doInTenant,
300
+ getAppDB,
301
+ getAppId,
302
+ getAuditLogDBName,
303
+ getAuditLogsDB,
304
+ getAutomationId,
305
+ getDevAppDB,
306
+ getEnvironmentVariables,
307
+ getGlobalDB,
308
+ getGlobalDBName,
309
+ getIdentity,
310
+ getPlatformURL,
311
+ getProdAppDB,
312
+ getProdAppId,
313
+ getTenantIDFromAppID,
314
+ getTenantId,
315
+ isMultiTenant,
316
+ isScim,
317
+ isTenancyEnabled,
318
+ isTenantIdSet
319
+ });
320
+ //# sourceMappingURL=mainContext.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/context/mainContext.ts"],
4
+ "sourcesContent": ["// some test cases call functions directly, need to\n// store an app ID to pretend there is a context\nimport env from \"../environment\"\nimport Context from \"./Context\"\nimport * as conversions from \"../docIds/conversions\"\nimport { getDB } from \"../db/db\"\nimport {\n DocumentType,\n SEPARATOR,\n StaticDatabases,\n DEFAULT_TENANT_ID,\n} from \"../constants\"\nimport { Database, IdentityContext } from \"@budibase/types\"\nimport { ContextMap } from \"./types\"\n\nlet TEST_APP_ID: string | null = null\n\nexport function getGlobalDBName(tenantId?: string) {\n // tenant ID can be set externally, for example user API where\n // new tenants are being created, this may be the case\n if (!tenantId) {\n tenantId = getTenantId()\n }\n return baseGlobalDBName(tenantId)\n}\n\nexport function getAuditLogDBName(tenantId?: string) {\n if (!tenantId) {\n tenantId = getTenantId()\n }\n if (tenantId === DEFAULT_TENANT_ID) {\n return StaticDatabases.AUDIT_LOGS.name\n } else {\n return `${tenantId}${SEPARATOR}${StaticDatabases.AUDIT_LOGS.name}`\n }\n}\n\nexport function baseGlobalDBName(tenantId: string | undefined | null) {\n if (!tenantId || tenantId === DEFAULT_TENANT_ID) {\n return StaticDatabases.GLOBAL.name\n } else {\n return `${tenantId}${SEPARATOR}${StaticDatabases.GLOBAL.name}`\n }\n}\n\nexport function getPlatformURL() {\n return env.PLATFORM_URL\n}\n\nexport function isMultiTenant() {\n return !!env.MULTI_TENANCY\n}\n\nexport function isTenantIdSet() {\n const context = Context.get()\n return !!context?.tenantId\n}\n\nexport function isTenancyEnabled() {\n return env.MULTI_TENANCY\n}\n\n/**\n * Given an app ID this will attempt to retrieve the tenant ID from it.\n * @return {null|string} The tenant ID found within the app ID.\n */\nexport function getTenantIDFromAppID(appId: string) {\n if (!appId) {\n return undefined\n }\n if (!isMultiTenant()) {\n return DEFAULT_TENANT_ID\n }\n const split = appId.split(SEPARATOR)\n const hasDev = split[1] === DocumentType.DEV\n if ((hasDev && split.length === 3) || (!hasDev && split.length === 2)) {\n return undefined\n }\n if (hasDev) {\n return split[2]\n } else {\n return split[1]\n }\n}\n\nfunction updateContext(updates: ContextMap): ContextMap {\n let context: ContextMap\n try {\n context = Context.get()\n } catch (err) {\n // no context, start empty\n context = {}\n }\n context = {\n ...context,\n ...updates,\n }\n return context\n}\n\nasync function newContext(updates: ContextMap, task: any) {\n // see if there already is a context setup\n let context: ContextMap = updateContext(updates)\n return Context.run(context, task)\n}\n\nexport async function doInAutomationContext(params: {\n appId: string\n automationId: string\n task: any\n}): Promise<any> {\n const tenantId = getTenantIDFromAppID(params.appId)\n return newContext(\n {\n tenantId,\n appId: params.appId,\n automationId: params.automationId,\n },\n params.task\n )\n}\n\nexport async function doInContext(appId: string, task: any): Promise<any> {\n const tenantId = getTenantIDFromAppID(appId)\n return newContext(\n {\n tenantId,\n appId,\n },\n task\n )\n}\n\nexport async function doInTenant<T>(\n tenantId: string | null,\n task: () => T\n): Promise<T> {\n // make sure default always selected in single tenancy\n if (!env.MULTI_TENANCY) {\n tenantId = tenantId || DEFAULT_TENANT_ID\n }\n\n const updates = tenantId ? { tenantId } : {}\n return newContext(updates, task)\n}\n\nexport async function doInAppContext(\n appId: string | null,\n task: any\n): Promise<any> {\n if (!appId && !env.isTest()) {\n throw new Error(\"appId is required\")\n }\n\n let updates: ContextMap\n if (!appId) {\n updates = { appId: \"\" }\n } else {\n const tenantId = getTenantIDFromAppID(appId)\n updates = { appId }\n if (tenantId) {\n updates.tenantId = tenantId\n }\n }\n return newContext(updates, task)\n}\n\nexport async function doInIdentityContext(\n identity: IdentityContext,\n task: any\n): Promise<any> {\n if (!identity) {\n throw new Error(\"identity is required\")\n }\n\n const context: ContextMap = {\n identity,\n }\n if (identity.tenantId) {\n context.tenantId = identity.tenantId\n }\n return newContext(context, task)\n}\n\nexport function getIdentity(): IdentityContext | undefined {\n try {\n const context = Context.get()\n return context?.identity\n } catch (e) {\n // do nothing - identity is not in context\n }\n}\n\nexport function getTenantId(): string {\n if (!isMultiTenant()) {\n return DEFAULT_TENANT_ID\n }\n const context = Context.get()\n const tenantId = context?.tenantId\n if (!tenantId) {\n throw new Error(\"Tenant id not found\")\n }\n return tenantId\n}\n\nexport function getAutomationId(): string | undefined {\n const context = Context.get()\n return context?.automationId\n}\n\nexport function getAppId(): string | undefined {\n const context = Context.get()\n const foundId = context?.appId\n if (!foundId && env.isTest() && TEST_APP_ID) {\n return TEST_APP_ID\n } else {\n return foundId\n }\n}\n\nexport const getProdAppId = () => {\n const appId = getAppId()\n if (!appId) {\n throw new Error(\"Could not get appId\")\n }\n return conversions.getProdAppID(appId)\n}\n\nexport function doInEnvironmentContext(\n values: Record<string, string>,\n task: any\n) {\n if (!values) {\n throw new Error(\"Must supply environment variables.\")\n }\n const updates = {\n environmentVariables: values,\n }\n return newContext(updates, task)\n}\n\nexport function doInScimContext(task: any) {\n const updates: ContextMap = {\n isScim: true,\n }\n return newContext(updates, task)\n}\n\nexport function getEnvironmentVariables() {\n const context = Context.get()\n if (!context.environmentVariables) {\n return null\n } else {\n return context.environmentVariables\n }\n}\n\nexport function getGlobalDB(): Database {\n const context = Context.get()\n if (!context || (env.MULTI_TENANCY && !context.tenantId)) {\n throw new Error(\"Global DB not found\")\n }\n return getDB(baseGlobalDBName(context?.tenantId))\n}\n\nexport function getAuditLogsDB(): Database {\n if (!getTenantId()) {\n throw new Error(\"No tenant ID found - cannot open audit log DB\")\n }\n return getDB(getAuditLogDBName())\n}\n\n/**\n * Gets the app database based on whatever the request\n * contained, dev or prod.\n */\nexport function getAppDB(opts?: any): Database {\n const appId = getAppId()\n return getDB(appId, opts)\n}\n\n/**\n * This specifically gets the prod app ID, if the request\n * contained a development app ID, this will get the prod one.\n */\nexport function getProdAppDB(opts?: any): Database {\n const appId = getAppId()\n if (!appId) {\n throw new Error(\"Unable to retrieve prod DB - no app ID.\")\n }\n return getDB(conversions.getProdAppID(appId), opts)\n}\n\n/**\n * This specifically gets the dev app ID, if the request\n * contained a prod app ID, this will get the dev one.\n */\nexport function getDevAppDB(opts?: any): Database {\n const appId = getAppId()\n if (!appId) {\n throw new Error(\"Unable to retrieve dev DB - no app ID.\")\n }\n return getDB(conversions.getDevelopmentAppID(appId), opts)\n}\n\nexport function isScim(): boolean {\n const context = Context.get()\n const scimCall = context?.isScim\n return !!scimCall\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["env", "Context"]
7
+ }
@@ -0,0 +1,147 @@
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 __copyProps = (to, from, except, desc) => {
9
+ if (from && typeof from === "object" || typeof from === "function") {
10
+ for (let key of __getOwnPropNames(from))
11
+ if (!__hasOwnProp.call(to, key) && key !== except)
12
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
13
+ }
14
+ return to;
15
+ };
16
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
17
+ // If the importer is in node compatibility mode or this is not an ESM
18
+ // file that has been converted to a CommonJS file using a Babel-
19
+ // compatible transform (i.e. "__esModule" has not been set), then set
20
+ // "default" to the CommonJS "module.exports" for node compatibility.
21
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
22
+ mod
23
+ ));
24
+ var import_extra = require("../../../tests/extra");
25
+ var context = __toESM(require("../"));
26
+ var import_constants = require("../../constants");
27
+ describe("context", () => {
28
+ describe("doInTenant", () => {
29
+ describe("single-tenancy", () => {
30
+ beforeAll(() => {
31
+ import_extra.testEnv.singleTenant();
32
+ });
33
+ it("defaults to the default tenant", () => {
34
+ const tenantId = context.getTenantId();
35
+ expect(tenantId).toBe(import_constants.DEFAULT_TENANT_ID);
36
+ });
37
+ it("defaults to the default tenant db", async () => {
38
+ await context.doInTenant(import_constants.DEFAULT_TENANT_ID, () => {
39
+ const db = context.getGlobalDB();
40
+ expect(db.name).toBe("global-db");
41
+ });
42
+ });
43
+ });
44
+ describe("multi-tenancy", () => {
45
+ beforeAll(() => {
46
+ import_extra.testEnv.multiTenant();
47
+ });
48
+ it("fails when no tenant id is set", () => {
49
+ const test = () => {
50
+ let error;
51
+ try {
52
+ context.getTenantId();
53
+ } catch (e) {
54
+ error = e;
55
+ }
56
+ expect(error.message).toBe("Tenant id not found");
57
+ };
58
+ test();
59
+ context.doInTenant("test", () => {
60
+ });
61
+ test();
62
+ });
63
+ it("fails when no tenant db is set", () => {
64
+ const test = () => {
65
+ let error;
66
+ try {
67
+ context.getGlobalDB();
68
+ } catch (e) {
69
+ error = e;
70
+ }
71
+ expect(error.message).toBe("Global DB not found");
72
+ };
73
+ test();
74
+ context.doInTenant("test", () => {
75
+ });
76
+ test();
77
+ });
78
+ it("sets tenant id", () => {
79
+ context.doInTenant("test", () => {
80
+ const tenantId = context.getTenantId();
81
+ expect(tenantId).toBe("test");
82
+ });
83
+ });
84
+ it("initialises the tenant db", async () => {
85
+ await context.doInTenant("test", () => {
86
+ const db = context.getGlobalDB();
87
+ expect(db.name).toBe("test_global-db");
88
+ });
89
+ });
90
+ it("sets the tenant id when nested with same tenant id", async () => {
91
+ await context.doInTenant("test", async () => {
92
+ const tenantId = context.getTenantId();
93
+ expect(tenantId).toBe("test");
94
+ await context.doInTenant("test", async () => {
95
+ const tenantId2 = context.getTenantId();
96
+ expect(tenantId2).toBe("test");
97
+ await context.doInTenant("test", () => {
98
+ const tenantId3 = context.getTenantId();
99
+ expect(tenantId3).toBe("test");
100
+ });
101
+ });
102
+ });
103
+ });
104
+ it("initialises the tenant db when nested with same tenant id", async () => {
105
+ await context.doInTenant("test", async () => {
106
+ const db = context.getGlobalDB();
107
+ expect(db.name).toBe("test_global-db");
108
+ await context.doInTenant("test", async () => {
109
+ const db2 = context.getGlobalDB();
110
+ expect(db2.name).toBe("test_global-db");
111
+ await context.doInTenant("test", () => {
112
+ const db3 = context.getGlobalDB();
113
+ expect(db3.name).toBe("test_global-db");
114
+ });
115
+ });
116
+ });
117
+ });
118
+ it("sets different tenant id inside another context", () => {
119
+ context.doInTenant("test", () => {
120
+ const tenantId = context.getTenantId();
121
+ expect(tenantId).toBe("test");
122
+ context.doInTenant("nested", () => {
123
+ const tenantId2 = context.getTenantId();
124
+ expect(tenantId2).toBe("nested");
125
+ context.doInTenant("double-nested", () => {
126
+ const tenantId3 = context.getTenantId();
127
+ expect(tenantId3).toBe("double-nested");
128
+ });
129
+ });
130
+ });
131
+ });
132
+ });
133
+ });
134
+ describe("doInScimContext", () => {
135
+ it("returns true when set", () => {
136
+ context.doInScimContext(() => {
137
+ const isScim = context.isScim();
138
+ expect(isScim).toBe(true);
139
+ });
140
+ });
141
+ it("returns false when not set", () => {
142
+ const isScim = context.isScim();
143
+ expect(isScim).toBe(false);
144
+ });
145
+ });
146
+ });
147
+ //# sourceMappingURL=index.spec.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/context/tests/index.spec.ts"],
4
+ "sourcesContent": ["import { testEnv } from \"../../../tests/extra\"\nimport * as context from \"../\"\nimport { DEFAULT_TENANT_ID } from \"../../constants\"\n\ndescribe(\"context\", () => {\n describe(\"doInTenant\", () => {\n describe(\"single-tenancy\", () => {\n beforeAll(() => {\n testEnv.singleTenant()\n })\n\n it(\"defaults to the default tenant\", () => {\n const tenantId = context.getTenantId()\n expect(tenantId).toBe(DEFAULT_TENANT_ID)\n })\n\n it(\"defaults to the default tenant db\", async () => {\n await context.doInTenant(DEFAULT_TENANT_ID, () => {\n const db = context.getGlobalDB()\n expect(db.name).toBe(\"global-db\")\n })\n })\n })\n\n describe(\"multi-tenancy\", () => {\n beforeAll(() => {\n testEnv.multiTenant()\n })\n\n it(\"fails when no tenant id is set\", () => {\n const test = () => {\n let error: any\n try {\n context.getTenantId()\n } catch (e) {\n error = e\n }\n expect(error.message).toBe(\"Tenant id not found\")\n }\n\n // test under no tenancy\n test()\n\n // test after tenancy has been accessed to ensure cleanup\n context.doInTenant(\"test\", () => {})\n test()\n })\n\n it(\"fails when no tenant db is set\", () => {\n const test = () => {\n let error: any\n try {\n context.getGlobalDB()\n } catch (e) {\n error = e\n }\n expect(error.message).toBe(\"Global DB not found\")\n }\n\n // test under no tenancy\n test()\n\n // test after tenancy has been accessed to ensure cleanup\n context.doInTenant(\"test\", () => {})\n test()\n })\n\n it(\"sets tenant id\", () => {\n context.doInTenant(\"test\", () => {\n const tenantId = context.getTenantId()\n expect(tenantId).toBe(\"test\")\n })\n })\n\n it(\"initialises the tenant db\", async () => {\n await context.doInTenant(\"test\", () => {\n const db = context.getGlobalDB()\n expect(db.name).toBe(\"test_global-db\")\n })\n })\n\n it(\"sets the tenant id when nested with same tenant id\", async () => {\n await context.doInTenant(\"test\", async () => {\n const tenantId = context.getTenantId()\n expect(tenantId).toBe(\"test\")\n\n await context.doInTenant(\"test\", async () => {\n const tenantId = context.getTenantId()\n expect(tenantId).toBe(\"test\")\n\n await context.doInTenant(\"test\", () => {\n const tenantId = context.getTenantId()\n expect(tenantId).toBe(\"test\")\n })\n })\n })\n })\n\n it(\"initialises the tenant db when nested with same tenant id\", async () => {\n await context.doInTenant(\"test\", async () => {\n const db = context.getGlobalDB()\n expect(db.name).toBe(\"test_global-db\")\n\n await context.doInTenant(\"test\", async () => {\n const db = context.getGlobalDB()\n expect(db.name).toBe(\"test_global-db\")\n\n await context.doInTenant(\"test\", () => {\n const db = context.getGlobalDB()\n expect(db.name).toBe(\"test_global-db\")\n })\n })\n })\n })\n\n it(\"sets different tenant id inside another context\", () => {\n context.doInTenant(\"test\", () => {\n const tenantId = context.getTenantId()\n expect(tenantId).toBe(\"test\")\n\n context.doInTenant(\"nested\", () => {\n const tenantId = context.getTenantId()\n expect(tenantId).toBe(\"nested\")\n\n context.doInTenant(\"double-nested\", () => {\n const tenantId = context.getTenantId()\n expect(tenantId).toBe(\"double-nested\")\n })\n })\n })\n })\n })\n })\n\n describe(\"doInScimContext\", () => {\n it(\"returns true when set\", () => {\n context.doInScimContext(() => {\n const isScim = context.isScim()\n expect(isScim).toBe(true)\n })\n })\n it(\"returns false when not set\", () => {\n const isScim = context.isScim()\n expect(isScim).toBe(false)\n })\n })\n})\n"],
5
+ "mappings": "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",
6
+ "names": ["tenantId", "db"]
7
+ }
@@ -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
+ }