@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,45 @@
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 __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
21
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
22
+ // If the importer is in node compatibility mode or this is not an ESM
23
+ // file that has been converted to a CommonJS file using a Babel-
24
+ // compatible transform (i.e. "__esModule" has not been set), then set
25
+ // "default" to the CommonJS "module.exports" for node compatibility.
26
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
27
+ mod
28
+ ));
29
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
30
+ var platform_exports = {};
31
+ __export(platform_exports, {
32
+ tenants: () => tenants,
33
+ users: () => users
34
+ });
35
+ module.exports = __toCommonJS(platform_exports);
36
+ var users = __toESM(require("./users"));
37
+ var tenants = __toESM(require("./tenants"));
38
+ __reExport(platform_exports, require("./platformDb"), module.exports);
39
+ // Annotate the CommonJS export names for ESM import in node:
40
+ 0 && (module.exports = {
41
+ tenants,
42
+ users,
43
+ ...require("./platformDb")
44
+ });
45
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/platform/index.ts"],
4
+ "sourcesContent": ["export * as users from \"./users\"\nexport * as tenants from \"./tenants\"\nexport * from \"./platformDb\"\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAAuB;AACvB,cAAyB;AACzB,6BAAc,yBAFd;",
6
+ "names": []
7
+ }
@@ -0,0 +1,33 @@
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 platformDb_exports = {};
20
+ __export(platformDb_exports, {
21
+ getPlatformDB: () => getPlatformDB
22
+ });
23
+ module.exports = __toCommonJS(platformDb_exports);
24
+ var import_constants = require("../constants");
25
+ var import_db = require("../db/db");
26
+ function getPlatformDB() {
27
+ return (0, import_db.getDB)(import_constants.StaticDatabases.PLATFORM_INFO.name);
28
+ }
29
+ // Annotate the CommonJS export names for ESM import in node:
30
+ 0 && (module.exports = {
31
+ getPlatformDB
32
+ });
33
+ //# sourceMappingURL=platformDb.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/platform/platformDb.ts"],
4
+ "sourcesContent": ["import { StaticDatabases } from \"../constants\"\nimport { getDB } from \"../db/db\"\n\nexport function getPlatformDB() {\n return getDB(StaticDatabases.PLATFORM_INFO.name)\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAAgC;AAChC,gBAAsB;AAEf,SAAS,gBAAgB;AAC9B,aAAO,iBAAM,iCAAgB,cAAc,IAAI;AACjD;",
6
+ "names": []
7
+ }
@@ -0,0 +1,123 @@
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 tenants_exports = {};
30
+ __export(tenants_exports, {
31
+ addTenant: () => addTenant,
32
+ exists: () => exists,
33
+ getTenantIds: () => getTenantIds,
34
+ removeTenant: () => removeTenant,
35
+ tenacyLockOptions: () => tenacyLockOptions
36
+ });
37
+ module.exports = __toCommonJS(tenants_exports);
38
+ var import_constants = require("../constants");
39
+ var import_platformDb = require("./platformDb");
40
+ var import_types = require("@budibase/types");
41
+ var locks = __toESM(require("../redis/redlockImpl"));
42
+ const TENANT_DOC = import_constants.StaticDatabases.PLATFORM_INFO.docs.tenants;
43
+ const tenacyLockOptions = {
44
+ type: import_types.LockType.DEFAULT,
45
+ name: import_types.LockName.UPDATE_TENANTS_DOC,
46
+ ttl: 10 * 1e3,
47
+ // auto expire after 10 seconds
48
+ systemLock: true
49
+ };
50
+ async function getTenantIds() {
51
+ const tenants = await getTenants();
52
+ return tenants.tenantIds;
53
+ }
54
+ async function getTenants() {
55
+ const db = (0, import_platformDb.getPlatformDB)();
56
+ let tenants;
57
+ try {
58
+ tenants = await db.get(TENANT_DOC);
59
+ } catch (e) {
60
+ if (e.status === 404) {
61
+ tenants = await createTenantsDoc();
62
+ } else {
63
+ throw e;
64
+ }
65
+ }
66
+ return tenants;
67
+ }
68
+ async function exists(tenantId) {
69
+ const tenants = await getTenants();
70
+ return tenants.tenantIds.indexOf(tenantId) !== -1;
71
+ }
72
+ function newTenantsDoc() {
73
+ return {
74
+ _id: TENANT_DOC,
75
+ tenantIds: []
76
+ };
77
+ }
78
+ async function createTenantsDoc() {
79
+ const db = (0, import_platformDb.getPlatformDB)();
80
+ let tenants = newTenantsDoc();
81
+ try {
82
+ const response = await db.put(tenants);
83
+ tenants._rev = response.rev;
84
+ } catch (e) {
85
+ if (e.status === 409) {
86
+ return db.get(TENANT_DOC);
87
+ }
88
+ throw e;
89
+ }
90
+ return tenants;
91
+ }
92
+ async function addTenant(tenantId) {
93
+ const db = (0, import_platformDb.getPlatformDB)();
94
+ await locks.doWithLock(tenacyLockOptions, async () => {
95
+ const tenants = await getTenants();
96
+ if (tenants.tenantIds.indexOf(tenantId) === -1) {
97
+ tenants.tenantIds.push(tenantId);
98
+ await db.put(tenants);
99
+ }
100
+ });
101
+ }
102
+ async function removeTenant(tenantId) {
103
+ try {
104
+ await locks.doWithLock(tenacyLockOptions, async () => {
105
+ const db = (0, import_platformDb.getPlatformDB)();
106
+ const tenants = await getTenants();
107
+ tenants.tenantIds = tenants.tenantIds.filter((id) => id !== tenantId);
108
+ await db.put(tenants);
109
+ });
110
+ } catch (err) {
111
+ console.error(`Error removing tenant ${tenantId} from info db`, err);
112
+ throw err;
113
+ }
114
+ }
115
+ // Annotate the CommonJS export names for ESM import in node:
116
+ 0 && (module.exports = {
117
+ addTenant,
118
+ exists,
119
+ getTenantIds,
120
+ removeTenant,
121
+ tenacyLockOptions
122
+ });
123
+ //# sourceMappingURL=tenants.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/platform/tenants.ts"],
4
+ "sourcesContent": ["import { StaticDatabases } from \"../constants\"\nimport { getPlatformDB } from \"./platformDb\"\nimport { LockName, LockOptions, LockType, Tenants } from \"@budibase/types\"\nimport * as locks from \"../redis/redlockImpl\"\n\nconst TENANT_DOC = StaticDatabases.PLATFORM_INFO.docs.tenants\n\nexport const tenacyLockOptions: LockOptions = {\n type: LockType.DEFAULT,\n name: LockName.UPDATE_TENANTS_DOC,\n ttl: 10 * 1000, // auto expire after 10 seconds\n systemLock: true,\n}\n\n// READ\n\nexport async function getTenantIds(): Promise<string[]> {\n const tenants = await getTenants()\n return tenants.tenantIds\n}\n\nasync function getTenants(): Promise<Tenants> {\n const db = getPlatformDB()\n let tenants: Tenants\n\n try {\n tenants = await db.get(TENANT_DOC)\n } catch (e: any) {\n // doesn't exist yet - create\n if (e.status === 404) {\n tenants = await createTenantsDoc()\n } else {\n throw e\n }\n }\n\n return tenants\n}\n\nexport async function exists(tenantId: string) {\n const tenants = await getTenants()\n return tenants.tenantIds.indexOf(tenantId) !== -1\n}\n\n// CREATE / UPDATE\n\nfunction newTenantsDoc(): Tenants {\n return {\n _id: TENANT_DOC,\n tenantIds: [],\n }\n}\n\nasync function createTenantsDoc(): Promise<Tenants> {\n const db = getPlatformDB()\n let tenants = newTenantsDoc()\n\n try {\n const response = await db.put(tenants)\n tenants._rev = response.rev\n } catch (e: any) {\n // don't throw 409 is doc has already been created\n if (e.status === 409) {\n return db.get(TENANT_DOC)\n }\n throw e\n }\n\n return tenants\n}\n\nexport async function addTenant(tenantId: string) {\n const db = getPlatformDB()\n\n // use a lock as tenant creation is conflict prone\n await locks.doWithLock(tenacyLockOptions, async () => {\n const tenants = await getTenants()\n\n // write the new tenant if it doesn't already exist\n if (tenants.tenantIds.indexOf(tenantId) === -1) {\n tenants.tenantIds.push(tenantId)\n await db.put(tenants)\n }\n })\n}\n\n// DELETE\n\nexport async function removeTenant(tenantId: string) {\n try {\n await locks.doWithLock(tenacyLockOptions, async () => {\n const db = getPlatformDB()\n const tenants = await getTenants()\n tenants.tenantIds = tenants.tenantIds.filter(id => id !== tenantId)\n await db.put(tenants)\n })\n } catch (err) {\n console.error(`Error removing tenant ${tenantId} from info db`, err)\n throw err\n }\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAAgC;AAChC,wBAA8B;AAC9B,mBAAyD;AACzD,YAAuB;AAEvB,MAAM,aAAa,iCAAgB,cAAc,KAAK;AAE/C,MAAM,oBAAiC;AAAA,EAC5C,MAAM,sBAAS;AAAA,EACf,MAAM,sBAAS;AAAA,EACf,KAAK,KAAK;AAAA;AAAA,EACV,YAAY;AACd;AAIA,eAAsB,eAAkC;AACtD,QAAM,UAAU,MAAM,WAAW;AACjC,SAAO,QAAQ;AACjB;AAEA,eAAe,aAA+B;AAC5C,QAAM,SAAK,iCAAc;AACzB,MAAI;AAEJ,MAAI;AACF,cAAU,MAAM,GAAG,IAAI,UAAU;AAAA,EACnC,SAAS,GAAQ;AAEf,QAAI,EAAE,WAAW,KAAK;AACpB,gBAAU,MAAM,iBAAiB;AAAA,IACnC,OAAO;AACL,YAAM;AAAA,IACR;AAAA,EACF;AAEA,SAAO;AACT;AAEA,eAAsB,OAAO,UAAkB;AAC7C,QAAM,UAAU,MAAM,WAAW;AACjC,SAAO,QAAQ,UAAU,QAAQ,QAAQ,MAAM;AACjD;AAIA,SAAS,gBAAyB;AAChC,SAAO;AAAA,IACL,KAAK;AAAA,IACL,WAAW,CAAC;AAAA,EACd;AACF;AAEA,eAAe,mBAAqC;AAClD,QAAM,SAAK,iCAAc;AACzB,MAAI,UAAU,cAAc;AAE5B,MAAI;AACF,UAAM,WAAW,MAAM,GAAG,IAAI,OAAO;AACrC,YAAQ,OAAO,SAAS;AAAA,EAC1B,SAAS,GAAQ;AAEf,QAAI,EAAE,WAAW,KAAK;AACpB,aAAO,GAAG,IAAI,UAAU;AAAA,IAC1B;AACA,UAAM;AAAA,EACR;AAEA,SAAO;AACT;AAEA,eAAsB,UAAU,UAAkB;AAChD,QAAM,SAAK,iCAAc;AAGzB,QAAM,MAAM,WAAW,mBAAmB,YAAY;AACpD,UAAM,UAAU,MAAM,WAAW;AAGjC,QAAI,QAAQ,UAAU,QAAQ,QAAQ,MAAM,IAAI;AAC9C,cAAQ,UAAU,KAAK,QAAQ;AAC/B,YAAM,GAAG,IAAI,OAAO;AAAA,IACtB;AAAA,EACF,CAAC;AACH;AAIA,eAAsB,aAAa,UAAkB;AACnD,MAAI;AACF,UAAM,MAAM,WAAW,mBAAmB,YAAY;AACpD,YAAM,SAAK,iCAAc;AACzB,YAAM,UAAU,MAAM,WAAW;AACjC,cAAQ,YAAY,QAAQ,UAAU,OAAO,QAAM,OAAO,QAAQ;AAClE,YAAM,GAAG,IAAI,OAAO;AAAA,IACtB,CAAC;AAAA,EACH,SAAS,KAAK;AACZ,YAAQ,MAAM,yBAAyB,QAAQ,iBAAiB,GAAG;AACnE,UAAM;AAAA,EACR;AACF;",
6
+ "names": []
7
+ }
@@ -0,0 +1,46 @@
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_tests = require("../../../tests");
25
+ var import_extra = require("../../../tests/extra");
26
+ var tenants = __toESM(require("../tenants"));
27
+ describe("tenants", () => {
28
+ const config = new import_extra.DBTestConfiguration();
29
+ describe("addTenant", () => {
30
+ it("concurrently adds multiple tenants safely", async () => {
31
+ const tenant1 = import_tests.structures.tenant.id();
32
+ const tenant2 = import_tests.structures.tenant.id();
33
+ const tenant3 = import_tests.structures.tenant.id();
34
+ await Promise.all([
35
+ tenants.addTenant(tenant1),
36
+ tenants.addTenant(tenant2),
37
+ tenants.addTenant(tenant3)
38
+ ]);
39
+ const tenantIds = await tenants.getTenantIds();
40
+ expect(tenantIds.includes(tenant1)).toBe(true);
41
+ expect(tenantIds.includes(tenant2)).toBe(true);
42
+ expect(tenantIds.includes(tenant3)).toBe(true);
43
+ });
44
+ });
45
+ });
46
+ //# sourceMappingURL=tenants.spec.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/platform/tests/tenants.spec.ts"],
4
+ "sourcesContent": ["import { structures } from \"../../../tests\"\nimport { DBTestConfiguration } from \"../../../tests/extra\"\nimport * as tenants from \"../tenants\"\n\ndescribe(\"tenants\", () => {\n const config = new DBTestConfiguration()\n\n describe(\"addTenant\", () => {\n it(\"concurrently adds multiple tenants safely\", async () => {\n const tenant1 = structures.tenant.id()\n const tenant2 = structures.tenant.id()\n const tenant3 = structures.tenant.id()\n\n await Promise.all([\n tenants.addTenant(tenant1),\n tenants.addTenant(tenant2),\n tenants.addTenant(tenant3),\n ])\n\n const tenantIds = await tenants.getTenantIds()\n expect(tenantIds.includes(tenant1)).toBe(true)\n expect(tenantIds.includes(tenant2)).toBe(true)\n expect(tenantIds.includes(tenant3)).toBe(true)\n })\n })\n})\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;AAAA,mBAA2B;AAC3B,mBAAoC;AACpC,cAAyB;AAEzB,SAAS,WAAW,MAAM;AACxB,QAAM,SAAS,IAAI,iCAAoB;AAEvC,WAAS,aAAa,MAAM;AAC1B,OAAG,6CAA6C,YAAY;AAC1D,YAAM,UAAU,wBAAW,OAAO,GAAG;AACrC,YAAM,UAAU,wBAAW,OAAO,GAAG;AACrC,YAAM,UAAU,wBAAW,OAAO,GAAG;AAErC,YAAM,QAAQ,IAAI;AAAA,QAChB,QAAQ,UAAU,OAAO;AAAA,QACzB,QAAQ,UAAU,OAAO;AAAA,QACzB,QAAQ,UAAU,OAAO;AAAA,MAC3B,CAAC;AAED,YAAM,YAAY,MAAM,QAAQ,aAAa;AAC7C,aAAO,UAAU,SAAS,OAAO,CAAC,EAAE,KAAK,IAAI;AAC7C,aAAO,UAAU,SAAS,OAAO,CAAC,EAAE,KAAK,IAAI;AAC7C,aAAO,UAAU,SAAS,OAAO,CAAC,EAAE,KAAK,IAAI;AAAA,IAC/C,CAAC;AAAA,EACH,CAAC;AACH,CAAC;",
6
+ "names": []
7
+ }
@@ -0,0 +1,104 @@
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 users_exports = {};
30
+ __export(users_exports, {
31
+ addUser: () => addUser,
32
+ lookupTenantId: () => lookupTenantId,
33
+ removeUser: () => removeUser
34
+ });
35
+ module.exports = __toCommonJS(users_exports);
36
+ var import_platformDb = require("./platformDb");
37
+ var import_constants = require("../constants");
38
+ var import_environment = __toESM(require("../environment"));
39
+ async function lookupTenantId(userId) {
40
+ if (!import_environment.default.MULTI_TENANCY) {
41
+ return import_constants.DEFAULT_TENANT_ID;
42
+ }
43
+ const user = await getUserDoc(userId);
44
+ return user.tenantId;
45
+ }
46
+ async function getUserDoc(emailOrId) {
47
+ const db = (0, import_platformDb.getPlatformDB)();
48
+ return db.get(emailOrId);
49
+ }
50
+ function newUserIdDoc(id, tenantId) {
51
+ return {
52
+ _id: id,
53
+ tenantId
54
+ };
55
+ }
56
+ function newUserEmailDoc(userId, email, tenantId) {
57
+ return {
58
+ _id: email,
59
+ userId,
60
+ tenantId
61
+ };
62
+ }
63
+ async function addUserDoc(emailOrId, newDocFn) {
64
+ const db = (0, import_platformDb.getPlatformDB)();
65
+ let user;
66
+ try {
67
+ await db.get(emailOrId);
68
+ } catch (e) {
69
+ if (e.status === 404) {
70
+ user = newDocFn();
71
+ await db.put(user);
72
+ } else {
73
+ throw e;
74
+ }
75
+ }
76
+ }
77
+ async function addUser(tenantId, userId, email) {
78
+ await Promise.all([
79
+ addUserDoc(userId, () => newUserIdDoc(userId, tenantId)),
80
+ addUserDoc(email, () => newUserEmailDoc(userId, email, tenantId))
81
+ ]);
82
+ }
83
+ async function removeUser(user) {
84
+ const db = (0, import_platformDb.getPlatformDB)();
85
+ const keys = [user._id, user.email];
86
+ const userDocs = await db.allDocs({
87
+ keys,
88
+ include_docs: true
89
+ });
90
+ const toDelete = userDocs.rows.map((row) => {
91
+ return {
92
+ ...row.doc,
93
+ _deleted: true
94
+ };
95
+ });
96
+ await db.bulkDocs(toDelete);
97
+ }
98
+ // Annotate the CommonJS export names for ESM import in node:
99
+ 0 && (module.exports = {
100
+ addUser,
101
+ lookupTenantId,
102
+ removeUser
103
+ });
104
+ //# sourceMappingURL=users.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/platform/users.ts"],
4
+ "sourcesContent": ["import { getPlatformDB } from \"./platformDb\"\nimport { DEFAULT_TENANT_ID } from \"../constants\"\nimport env from \"../environment\"\nimport {\n PlatformUser,\n PlatformUserByEmail,\n PlatformUserById,\n User,\n} from \"@budibase/types\"\n\n// READ\n\nexport async function lookupTenantId(userId: string) {\n if (!env.MULTI_TENANCY) {\n return DEFAULT_TENANT_ID\n }\n\n const user = await getUserDoc(userId)\n return user.tenantId\n}\n\nasync function getUserDoc(emailOrId: string): Promise<PlatformUser> {\n const db = getPlatformDB()\n return db.get(emailOrId)\n}\n\n// CREATE\n\nfunction newUserIdDoc(id: string, tenantId: string): PlatformUserById {\n return {\n _id: id,\n tenantId,\n }\n}\n\nfunction newUserEmailDoc(\n userId: string,\n email: string,\n tenantId: string\n): PlatformUserByEmail {\n return {\n _id: email,\n userId,\n tenantId,\n }\n}\n\n/**\n * Add a new user id or email doc if it doesn't exist.\n */\nasync function addUserDoc(emailOrId: string, newDocFn: () => PlatformUser) {\n const db = getPlatformDB()\n let user: PlatformUser\n\n try {\n await db.get(emailOrId)\n } catch (e: any) {\n if (e.status === 404) {\n user = newDocFn()\n await db.put(user)\n } else {\n throw e\n }\n }\n}\n\nexport async function addUser(tenantId: string, userId: string, email: string) {\n await Promise.all([\n addUserDoc(userId, () => newUserIdDoc(userId, tenantId)),\n addUserDoc(email, () => newUserEmailDoc(userId, email, tenantId)),\n ])\n}\n\n// DELETE\n\nexport async function removeUser(user: User) {\n const db = getPlatformDB()\n const keys = [user._id!, user.email]\n const userDocs = await db.allDocs({\n keys,\n include_docs: true,\n })\n const toDelete = userDocs.rows.map((row: any) => {\n return {\n ...row.doc,\n _deleted: true,\n }\n })\n await db.bulkDocs(toDelete)\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAA8B;AAC9B,uBAAkC;AAClC,yBAAgB;AAUhB,eAAsB,eAAe,QAAgB;AACnD,MAAI,CAAC,mBAAAA,QAAI,eAAe;AACtB,WAAO;AAAA,EACT;AAEA,QAAM,OAAO,MAAM,WAAW,MAAM;AACpC,SAAO,KAAK;AACd;AAEA,eAAe,WAAW,WAA0C;AAClE,QAAM,SAAK,iCAAc;AACzB,SAAO,GAAG,IAAI,SAAS;AACzB;AAIA,SAAS,aAAa,IAAY,UAAoC;AACpE,SAAO;AAAA,IACL,KAAK;AAAA,IACL;AAAA,EACF;AACF;AAEA,SAAS,gBACP,QACA,OACA,UACqB;AACrB,SAAO;AAAA,IACL,KAAK;AAAA,IACL;AAAA,IACA;AAAA,EACF;AACF;AAKA,eAAe,WAAW,WAAmB,UAA8B;AACzE,QAAM,SAAK,iCAAc;AACzB,MAAI;AAEJ,MAAI;AACF,UAAM,GAAG,IAAI,SAAS;AAAA,EACxB,SAAS,GAAQ;AACf,QAAI,EAAE,WAAW,KAAK;AACpB,aAAO,SAAS;AAChB,YAAM,GAAG,IAAI,IAAI;AAAA,IACnB,OAAO;AACL,YAAM;AAAA,IACR;AAAA,EACF;AACF;AAEA,eAAsB,QAAQ,UAAkB,QAAgB,OAAe;AAC7E,QAAM,QAAQ,IAAI;AAAA,IAChB,WAAW,QAAQ,MAAM,aAAa,QAAQ,QAAQ,CAAC;AAAA,IACvD,WAAW,OAAO,MAAM,gBAAgB,QAAQ,OAAO,QAAQ,CAAC;AAAA,EAClE,CAAC;AACH;AAIA,eAAsB,WAAW,MAAY;AAC3C,QAAM,SAAK,iCAAc;AACzB,QAAM,OAAO,CAAC,KAAK,KAAM,KAAK,KAAK;AACnC,QAAM,WAAW,MAAM,GAAG,QAAQ;AAAA,IAChC;AAAA,IACA,cAAc;AAAA,EAChB,CAAC;AACD,QAAM,WAAW,SAAS,KAAK,IAAI,CAAC,QAAa;AAC/C,WAAO;AAAA,MACL,GAAG,IAAI;AAAA,MACP,UAAU;AAAA,IACZ;AAAA,EACF,CAAC;AACD,QAAM,GAAG,SAAS,QAAQ;AAC5B;",
6
+ "names": ["env"]
7
+ }
@@ -0,0 +1,23 @@
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 __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
15
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
16
+ var plugin_exports = {};
17
+ module.exports = __toCommonJS(plugin_exports);
18
+ __reExport(plugin_exports, require("./utils"), module.exports);
19
+ // Annotate the CommonJS export names for ESM import in node:
20
+ 0 && (module.exports = {
21
+ ...require("./utils")
22
+ });
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/plugin/index.ts"],
4
+ "sourcesContent": ["export * from \"./utils\"\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;AAAA;AAAA;AAAA,2BAAc,oBAAd;",
6
+ "names": []
7
+ }
@@ -0,0 +1,97 @@
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_utils = require("../utils");
25
+ var import_node_fetch = __toESM(require("node-fetch"));
26
+ var import_types = require("@budibase/types");
27
+ const repoUrl = "https://raw.githubusercontent.com/Budibase/budibase-skeleton/master";
28
+ const automationLink = `${repoUrl}/automation/schema.json.hbs`;
29
+ const componentLink = `${repoUrl}/component/schema.json.hbs`;
30
+ const datasourceLink = `${repoUrl}/datasource/schema.json.hbs`;
31
+ async function getSchema(link) {
32
+ const response = await (0, import_node_fetch.default)(link);
33
+ if (response.status > 300) {
34
+ return;
35
+ }
36
+ const text = await response.text();
37
+ return JSON.parse(text);
38
+ }
39
+ async function runTest(opts) {
40
+ let error;
41
+ try {
42
+ let schema = opts.schema;
43
+ if (opts.link) {
44
+ schema = await getSchema(opts.link);
45
+ }
46
+ (0, import_utils.validate)(schema);
47
+ } catch (err) {
48
+ error = err;
49
+ }
50
+ return error;
51
+ }
52
+ describe("it should be able to validate an automation schema", () => {
53
+ it("should return automation skeleton schema is valid", async () => {
54
+ const error = await runTest({ link: automationLink });
55
+ expect(error).toBeUndefined();
56
+ });
57
+ it("should fail given invalid automation schema", async () => {
58
+ const error = await runTest({
59
+ schema: {
60
+ type: import_types.PluginType.AUTOMATION,
61
+ schema: {}
62
+ }
63
+ });
64
+ expect(error).toBeDefined();
65
+ });
66
+ });
67
+ describe("it should be able to validate a component schema", () => {
68
+ it("should return component skeleton schema is valid", async () => {
69
+ const error = await runTest({ link: componentLink });
70
+ expect(error).toBeUndefined();
71
+ });
72
+ it("should fail given invalid component schema", async () => {
73
+ const error = await runTest({
74
+ schema: {
75
+ type: import_types.PluginType.COMPONENT,
76
+ schema: {}
77
+ }
78
+ });
79
+ expect(error).toBeDefined();
80
+ });
81
+ });
82
+ describe("it should be able to validate a datasource schema", () => {
83
+ it("should return datasource skeleton schema is valid", async () => {
84
+ const error = await runTest({ link: datasourceLink });
85
+ expect(error).toBeUndefined();
86
+ });
87
+ it("should fail given invalid datasource schema", async () => {
88
+ const error = await runTest({
89
+ schema: {
90
+ type: import_types.PluginType.DATASOURCE,
91
+ schema: {}
92
+ }
93
+ });
94
+ expect(error).toBeDefined();
95
+ });
96
+ });
97
+ //# sourceMappingURL=validation.spec.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/plugin/tests/validation.spec.ts"],
4
+ "sourcesContent": ["import { validate } from \"../utils\"\nimport fetch from \"node-fetch\"\nimport { PluginType } from \"@budibase/types\"\n\nconst repoUrl =\n \"https://raw.githubusercontent.com/Budibase/budibase-skeleton/master\"\nconst automationLink = `${repoUrl}/automation/schema.json.hbs`\nconst componentLink = `${repoUrl}/component/schema.json.hbs`\nconst datasourceLink = `${repoUrl}/datasource/schema.json.hbs`\n\nasync function getSchema(link: string) {\n const response = await fetch(link)\n if (response.status > 300) {\n return\n }\n const text = await response.text()\n return JSON.parse(text)\n}\n\nasync function runTest(opts: { link?: string; schema?: any }) {\n let error\n try {\n let schema = opts.schema\n if (opts.link) {\n schema = await getSchema(opts.link)\n }\n validate(schema)\n } catch (err) {\n error = err\n }\n return error\n}\n\ndescribe(\"it should be able to validate an automation schema\", () => {\n it(\"should return automation skeleton schema is valid\", async () => {\n const error = await runTest({ link: automationLink })\n expect(error).toBeUndefined()\n })\n\n it(\"should fail given invalid automation schema\", async () => {\n const error = await runTest({\n schema: {\n type: PluginType.AUTOMATION,\n schema: {},\n },\n })\n expect(error).toBeDefined()\n })\n})\n\ndescribe(\"it should be able to validate a component schema\", () => {\n it(\"should return component skeleton schema is valid\", async () => {\n const error = await runTest({ link: componentLink })\n expect(error).toBeUndefined()\n })\n\n it(\"should fail given invalid component schema\", async () => {\n const error = await runTest({\n schema: {\n type: PluginType.COMPONENT,\n schema: {},\n },\n })\n expect(error).toBeDefined()\n })\n})\n\ndescribe(\"it should be able to validate a datasource schema\", () => {\n it(\"should return datasource skeleton schema is valid\", async () => {\n const error = await runTest({ link: datasourceLink })\n expect(error).toBeUndefined()\n })\n\n it(\"should fail given invalid datasource schema\", async () => {\n const error = await runTest({\n schema: {\n type: PluginType.DATASOURCE,\n schema: {},\n },\n })\n expect(error).toBeDefined()\n })\n})\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;AAAA,mBAAyB;AACzB,wBAAkB;AAClB,mBAA2B;AAE3B,MAAM,UACJ;AACF,MAAM,iBAAiB,GAAG,OAAO;AACjC,MAAM,gBAAgB,GAAG,OAAO;AAChC,MAAM,iBAAiB,GAAG,OAAO;AAEjC,eAAe,UAAU,MAAc;AACrC,QAAM,WAAW,UAAM,kBAAAA,SAAM,IAAI;AACjC,MAAI,SAAS,SAAS,KAAK;AACzB;AAAA,EACF;AACA,QAAM,OAAO,MAAM,SAAS,KAAK;AACjC,SAAO,KAAK,MAAM,IAAI;AACxB;AAEA,eAAe,QAAQ,MAAuC;AAC5D,MAAI;AACJ,MAAI;AACF,QAAI,SAAS,KAAK;AAClB,QAAI,KAAK,MAAM;AACb,eAAS,MAAM,UAAU,KAAK,IAAI;AAAA,IACpC;AACA,+BAAS,MAAM;AAAA,EACjB,SAAS,KAAK;AACZ,YAAQ;AAAA,EACV;AACA,SAAO;AACT;AAEA,SAAS,sDAAsD,MAAM;AACnE,KAAG,qDAAqD,YAAY;AAClE,UAAM,QAAQ,MAAM,QAAQ,EAAE,MAAM,eAAe,CAAC;AACpD,WAAO,KAAK,EAAE,cAAc;AAAA,EAC9B,CAAC;AAED,KAAG,+CAA+C,YAAY;AAC5D,UAAM,QAAQ,MAAM,QAAQ;AAAA,MAC1B,QAAQ;AAAA,QACN,MAAM,wBAAW;AAAA,QACjB,QAAQ,CAAC;AAAA,MACX;AAAA,IACF,CAAC;AACD,WAAO,KAAK,EAAE,YAAY;AAAA,EAC5B,CAAC;AACH,CAAC;AAED,SAAS,oDAAoD,MAAM;AACjE,KAAG,oDAAoD,YAAY;AACjE,UAAM,QAAQ,MAAM,QAAQ,EAAE,MAAM,cAAc,CAAC;AACnD,WAAO,KAAK,EAAE,cAAc;AAAA,EAC9B,CAAC;AAED,KAAG,8CAA8C,YAAY;AAC3D,UAAM,QAAQ,MAAM,QAAQ;AAAA,MAC1B,QAAQ;AAAA,QACN,MAAM,wBAAW;AAAA,QACjB,QAAQ,CAAC;AAAA,MACX;AAAA,IACF,CAAC;AACD,WAAO,KAAK,EAAE,YAAY;AAAA,EAC5B,CAAC;AACH,CAAC;AAED,SAAS,qDAAqD,MAAM;AAClE,KAAG,qDAAqD,YAAY;AAClE,UAAM,QAAQ,MAAM,QAAQ,EAAE,MAAM,eAAe,CAAC;AACpD,WAAO,KAAK,EAAE,cAAc;AAAA,EAC9B,CAAC;AAED,KAAG,+CAA+C,YAAY;AAC5D,UAAM,QAAQ,MAAM,QAAQ;AAAA,MAC1B,QAAQ;AAAA,QACN,MAAM,wBAAW;AAAA,QACjB,QAAQ,CAAC;AAAA,MACX;AAAA,IACF,CAAC;AACD,WAAO,KAAK,EAAE,YAAY;AAAA,EAC5B,CAAC;AACH,CAAC;",
6
+ "names": ["fetch"]
7
+ }