@budibase/backend-core 3.2.41 → 3.2.43

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (358) hide show
  1. package/dist/package.json +3 -3
  2. package/dist/src/accounts/accounts.js +83 -0
  3. package/dist/src/accounts/accounts.js.map +1 -0
  4. package/dist/src/accounts/api.js +102 -0
  5. package/dist/src/accounts/api.js.map +1 -0
  6. package/dist/src/accounts/index.js +18 -0
  7. package/dist/src/accounts/index.js.map +1 -0
  8. package/dist/src/cache/appMetadata.js +96 -0
  9. package/dist/src/cache/appMetadata.js.map +1 -0
  10. package/dist/src/cache/base/index.js +189 -0
  11. package/dist/src/cache/base/index.js.map +1 -0
  12. package/dist/src/cache/docWritethrough.js +123 -0
  13. package/dist/src/cache/docWritethrough.js.map +1 -0
  14. package/dist/src/cache/generic.js +37 -0
  15. package/dist/src/cache/generic.js.map +1 -0
  16. package/dist/src/cache/index.js +48 -0
  17. package/dist/src/cache/index.js.map +1 -0
  18. package/dist/src/cache/invite.js +128 -0
  19. package/dist/src/cache/invite.js.map +1 -0
  20. package/dist/src/cache/passwordReset.js +92 -0
  21. package/dist/src/cache/passwordReset.js.map +1 -0
  22. package/dist/src/cache/user.js +183 -0
  23. package/dist/src/cache/user.js.map +1 -0
  24. package/dist/src/cache/writethrough.js +170 -0
  25. package/dist/src/cache/writethrough.js.map +1 -0
  26. package/dist/src/configs/configs.js +294 -0
  27. package/dist/src/configs/configs.js.map +1 -0
  28. package/dist/src/configs/index.js +18 -0
  29. package/dist/src/configs/index.js.map +1 -0
  30. package/dist/src/constants/db.js +75 -0
  31. package/dist/src/constants/db.js.map +1 -0
  32. package/dist/src/constants/index.js +19 -0
  33. package/dist/src/constants/index.js.map +1 -0
  34. package/dist/src/constants/misc.js +40 -0
  35. package/dist/src/constants/misc.js.map +1 -0
  36. package/dist/src/context/Context.js +14 -0
  37. package/dist/src/context/Context.js.map +1 -0
  38. package/dist/src/context/identity.js +81 -0
  39. package/dist/src/context/identity.js.map +1 -0
  40. package/dist/src/context/index.js +44 -0
  41. package/dist/src/context/index.js.map +1 -0
  42. package/dist/src/context/mainContext.js +446 -0
  43. package/dist/src/context/mainContext.js.map +1 -0
  44. package/dist/src/context/types.js +3 -0
  45. package/dist/src/context/types.js.map +1 -0
  46. package/dist/src/db/Replication.js +90 -0
  47. package/dist/src/db/Replication.js.map +1 -0
  48. package/dist/src/db/couch/DatabaseImpl.js +475 -0
  49. package/dist/src/db/couch/DatabaseImpl.js.map +1 -0
  50. package/dist/src/db/couch/connections.js +101 -0
  51. package/dist/src/db/couch/connections.js.map +1 -0
  52. package/dist/src/db/couch/index.js +26 -0
  53. package/dist/src/db/couch/index.js.map +1 -0
  54. package/dist/src/db/couch/pouchDB.js +108 -0
  55. package/dist/src/db/couch/pouchDB.js.map +1 -0
  56. package/dist/src/db/couch/utils.js +60 -0
  57. package/dist/src/db/couch/utils.js.map +1 -0
  58. package/dist/src/db/db.js +47 -0
  59. package/dist/src/db/db.js.map +1 -0
  60. package/dist/src/db/errors.js +21 -0
  61. package/dist/src/db/errors.js.map +1 -0
  62. package/dist/src/db/index.js +58 -0
  63. package/dist/src/db/index.js.map +1 -0
  64. package/dist/src/db/instrumentation.js +202 -0
  65. package/dist/src/db/instrumentation.js.map +1 -0
  66. package/dist/src/db/lucene.js +638 -0
  67. package/dist/src/db/lucene.js.map +1 -0
  68. package/dist/src/db/searchIndexes/index.js +18 -0
  69. package/dist/src/db/searchIndexes/index.js.map +1 -0
  70. package/dist/src/db/searchIndexes/searchIndexes.js +76 -0
  71. package/dist/src/db/searchIndexes/searchIndexes.js.map +1 -0
  72. package/dist/src/db/utils.js +212 -0
  73. package/dist/src/db/utils.js.map +1 -0
  74. package/dist/src/db/views.js +224 -0
  75. package/dist/src/db/views.js.map +1 -0
  76. package/dist/src/docIds/conversions.js +62 -0
  77. package/dist/src/docIds/conversions.js.map +1 -0
  78. package/dist/src/docIds/ids.js +125 -0
  79. package/dist/src/docIds/ids.js.map +1 -0
  80. package/dist/src/docIds/index.js +19 -0
  81. package/dist/src/docIds/index.js.map +1 -0
  82. package/dist/src/docIds/newid.js +8 -0
  83. package/dist/src/docIds/newid.js.map +1 -0
  84. package/dist/src/docIds/params.js +141 -0
  85. package/dist/src/docIds/params.js.map +1 -0
  86. package/dist/src/environment.js +182 -0
  87. package/dist/src/environment.js.map +1 -0
  88. package/dist/src/errors/errors.js +97 -0
  89. package/dist/src/errors/errors.js.map +1 -0
  90. package/dist/src/errors/index.js +18 -0
  91. package/dist/src/errors/index.js.map +1 -0
  92. package/dist/src/events/analytics.js +52 -0
  93. package/dist/src/events/analytics.js.map +1 -0
  94. package/dist/src/events/asyncEvents/index.js +19 -0
  95. package/dist/src/events/asyncEvents/index.js.map +1 -0
  96. package/dist/src/events/asyncEvents/publisher.js +26 -0
  97. package/dist/src/events/asyncEvents/publisher.js.map +1 -0
  98. package/dist/src/events/asyncEvents/queue.js +26 -0
  99. package/dist/src/events/asyncEvents/queue.js.map +1 -0
  100. package/dist/src/events/backfill.js +189 -0
  101. package/dist/src/events/backfill.js.map +1 -0
  102. package/dist/src/events/events.js +87 -0
  103. package/dist/src/events/events.js.map +1 -0
  104. package/dist/src/events/identification.js +299 -0
  105. package/dist/src/events/identification.js.map +1 -0
  106. package/dist/src/events/index.js +59 -0
  107. package/dist/src/events/index.js.map +1 -0
  108. package/dist/src/events/processors/AnalyticsProcessor.js +103 -0
  109. package/dist/src/events/processors/AnalyticsProcessor.js.map +1 -0
  110. package/dist/src/events/processors/AuditLogsProcessor.js +86 -0
  111. package/dist/src/events/processors/AuditLogsProcessor.js.map +1 -0
  112. package/dist/src/events/processors/LoggingProcessor.js +47 -0
  113. package/dist/src/events/processors/LoggingProcessor.js.map +1 -0
  114. package/dist/src/events/processors/Processors.js +52 -0
  115. package/dist/src/events/processors/Processors.js.map +1 -0
  116. package/dist/src/events/processors/index.js +23 -0
  117. package/dist/src/events/processors/index.js.map +1 -0
  118. package/dist/src/events/processors/posthog/PosthogProcessor.js +147 -0
  119. package/dist/src/events/processors/posthog/PosthogProcessor.js.map +1 -0
  120. package/dist/src/events/processors/posthog/index.js +8 -0
  121. package/dist/src/events/processors/posthog/index.js.map +1 -0
  122. package/dist/src/events/processors/posthog/rateLimiting.js +129 -0
  123. package/dist/src/events/processors/posthog/rateLimiting.js.map +1 -0
  124. package/dist/src/events/processors/types.js +3 -0
  125. package/dist/src/events/processors/types.js.map +1 -0
  126. package/dist/src/events/publishers/account.js +43 -0
  127. package/dist/src/events/publishers/account.js.map +1 -0
  128. package/dist/src/events/publishers/ai.js +30 -0
  129. package/dist/src/events/publishers/ai.js.map +1 -0
  130. package/dist/src/events/publishers/app.js +166 -0
  131. package/dist/src/events/publishers/app.js.map +1 -0
  132. package/dist/src/events/publishers/auditLog.js +34 -0
  133. package/dist/src/events/publishers/auditLog.js.map +1 -0
  134. package/dist/src/events/publishers/auth.js +80 -0
  135. package/dist/src/events/publishers/auth.js.map +1 -0
  136. package/dist/src/events/publishers/automation.js +117 -0
  137. package/dist/src/events/publishers/automation.js.map +1 -0
  138. package/dist/src/events/publishers/backfill.js +85 -0
  139. package/dist/src/events/publishers/backfill.js.map +1 -0
  140. package/dist/src/events/publishers/backup.js +41 -0
  141. package/dist/src/events/publishers/backup.js.map +1 -0
  142. package/dist/src/events/publishers/datasource.js +54 -0
  143. package/dist/src/events/publishers/datasource.js.map +1 -0
  144. package/dist/src/events/publishers/email.js +30 -0
  145. package/dist/src/events/publishers/email.js.map +1 -0
  146. package/dist/src/events/publishers/environmentVariable.js +44 -0
  147. package/dist/src/events/publishers/environmentVariable.js.map +1 -0
  148. package/dist/src/events/publishers/group.js +107 -0
  149. package/dist/src/events/publishers/group.js.map +1 -0
  150. package/dist/src/events/publishers/index.js +59 -0
  151. package/dist/src/events/publishers/index.js.map +1 -0
  152. package/dist/src/events/publishers/installation.js +52 -0
  153. package/dist/src/events/publishers/installation.js.map +1 -0
  154. package/dist/src/events/publishers/layout.js +34 -0
  155. package/dist/src/events/publishers/layout.js.map +1 -0
  156. package/dist/src/events/publishers/license.js +77 -0
  157. package/dist/src/events/publishers/license.js.map +1 -0
  158. package/dist/src/events/publishers/org.js +52 -0
  159. package/dist/src/events/publishers/org.js.map +1 -0
  160. package/dist/src/events/publishers/plugin.js +55 -0
  161. package/dist/src/events/publishers/plugin.js.map +1 -0
  162. package/dist/src/events/publishers/query.js +73 -0
  163. package/dist/src/events/publishers/query.js.map +1 -0
  164. package/dist/src/events/publishers/role.js +69 -0
  165. package/dist/src/events/publishers/role.js.map +1 -0
  166. package/dist/src/events/publishers/rowAction.js +22 -0
  167. package/dist/src/events/publishers/rowAction.js.map +1 -0
  168. package/dist/src/events/publishers/rows.js +31 -0
  169. package/dist/src/events/publishers/rows.js.map +1 -0
  170. package/dist/src/events/publishers/screen.js +46 -0
  171. package/dist/src/events/publishers/screen.js.map +1 -0
  172. package/dist/src/events/publishers/serve.js +47 -0
  173. package/dist/src/events/publishers/serve.js.map +1 -0
  174. package/dist/src/events/publishers/table.js +95 -0
  175. package/dist/src/events/publishers/table.js.map +1 -0
  176. package/dist/src/events/publishers/user.js +201 -0
  177. package/dist/src/events/publishers/user.js.map +1 -0
  178. package/dist/src/events/publishers/view.js +123 -0
  179. package/dist/src/events/publishers/view.js.map +1 -0
  180. package/dist/src/helpers.js +13 -0
  181. package/dist/src/helpers.js.map +1 -0
  182. package/dist/src/installation.js +159 -0
  183. package/dist/src/installation.js.map +1 -0
  184. package/dist/src/logging/alerts.js +23 -0
  185. package/dist/src/logging/alerts.js.map +1 -0
  186. package/dist/src/logging/correlation/correlation.js +18 -0
  187. package/dist/src/logging/correlation/correlation.js.map +1 -0
  188. package/dist/src/logging/correlation/index.js +18 -0
  189. package/dist/src/logging/correlation/index.js.map +1 -0
  190. package/dist/src/logging/index.js +45 -0
  191. package/dist/src/logging/index.js.map +1 -0
  192. package/dist/src/logging/pino/logger.js +234 -0
  193. package/dist/src/logging/pino/logger.js.map +1 -0
  194. package/dist/src/logging/system.js +110 -0
  195. package/dist/src/logging/system.js.map +1 -0
  196. package/dist/src/objectStore/buckets/app.js +95 -0
  197. package/dist/src/objectStore/buckets/app.js.map +1 -0
  198. package/dist/src/objectStore/buckets/global.js +68 -0
  199. package/dist/src/objectStore/buckets/global.js.map +1 -0
  200. package/dist/src/objectStore/buckets/index.js +20 -0
  201. package/dist/src/objectStore/buckets/index.js.map +1 -0
  202. package/dist/src/objectStore/buckets/plugins.js +104 -0
  203. package/dist/src/objectStore/buckets/plugins.js.map +1 -0
  204. package/dist/src/objectStore/cloudfront.js +73 -0
  205. package/dist/src/objectStore/cloudfront.js.map +1 -0
  206. package/dist/src/objectStore/index.js +20 -0
  207. package/dist/src/objectStore/index.js.map +1 -0
  208. package/dist/src/objectStore/objectStore.js +509 -0
  209. package/dist/src/objectStore/objectStore.js.map +1 -0
  210. package/dist/src/objectStore/utils.js +148 -0
  211. package/dist/src/objectStore/utils.js.map +1 -0
  212. package/dist/src/platform/index.js +43 -0
  213. package/dist/src/platform/index.js.map +1 -0
  214. package/dist/src/platform/platformDb.js +9 -0
  215. package/dist/src/platform/platformDb.js.map +1 -0
  216. package/dist/src/platform/tenants.js +149 -0
  217. package/dist/src/platform/tenants.js.map +1 -0
  218. package/dist/src/platform/users.js +118 -0
  219. package/dist/src/platform/users.js.map +1 -0
  220. package/dist/src/queue/constants.js +13 -0
  221. package/dist/src/queue/constants.js.map +1 -0
  222. package/dist/src/queue/inMemoryQueue.js +192 -0
  223. package/dist/src/queue/inMemoryQueue.js.map +1 -0
  224. package/dist/src/queue/index.js +19 -0
  225. package/dist/src/queue/index.js.map +1 -0
  226. package/dist/src/queue/listeners.js +199 -0
  227. package/dist/src/queue/listeners.js.map +1 -0
  228. package/dist/src/queue/queue.js +124 -0
  229. package/dist/src/queue/queue.js.map +1 -0
  230. package/dist/src/redis/index.js +47 -0
  231. package/dist/src/redis/index.js.map +1 -0
  232. package/dist/src/redis/init.js +184 -0
  233. package/dist/src/redis/init.js.map +1 -0
  234. package/dist/src/redis/redis.js +396 -0
  235. package/dist/src/redis/redis.js.map +1 -0
  236. package/dist/src/redis/redlockImpl.js +181 -0
  237. package/dist/src/redis/redlockImpl.js.map +1 -0
  238. package/dist/src/redis/utils.js +131 -0
  239. package/dist/src/redis/utils.js.map +1 -0
  240. package/dist/src/security/auth.js +26 -0
  241. package/dist/src/security/auth.js.map +1 -0
  242. package/dist/src/security/index.js +18 -0
  243. package/dist/src/security/index.js.map +1 -0
  244. package/dist/src/security/roles.js +566 -0
  245. package/dist/src/security/roles.js.map +1 -0
  246. package/dist/src/security/sessions.js +156 -0
  247. package/dist/src/security/sessions.js.map +1 -0
  248. package/dist/src/sql/utils.js +180 -0
  249. package/dist/src/sql/utils.js.map +1 -0
  250. package/dist/src/tenancy/db.js +9 -0
  251. package/dist/src/tenancy/db.js.map +1 -0
  252. package/dist/src/tenancy/index.js +19 -0
  253. package/dist/src/tenancy/index.js.map +1 -0
  254. package/dist/src/tenancy/tenancy.js +125 -0
  255. package/dist/src/tenancy/tenancy.js.map +1 -0
  256. package/dist/src/timers/index.js +18 -0
  257. package/dist/src/timers/index.js.map +1 -0
  258. package/dist/src/timers/timers.js +25 -0
  259. package/dist/src/timers/timers.js.map +1 -0
  260. package/dist/src/users/db.js +489 -0
  261. package/dist/src/users/db.js.map +1 -0
  262. package/dist/src/users/events.js +179 -0
  263. package/dist/src/users/events.js.map +1 -0
  264. package/dist/src/users/index.js +23 -0
  265. package/dist/src/users/index.js.map +1 -0
  266. package/dist/src/users/lookup.js +126 -0
  267. package/dist/src/users/lookup.js.map +1 -0
  268. package/dist/src/users/users.js +376 -0
  269. package/dist/src/users/users.js.map +1 -0
  270. package/dist/src/users/utils.js +127 -0
  271. package/dist/src/users/utils.js.map +1 -0
  272. package/dist/src/utils/Duration.js +54 -0
  273. package/dist/src/utils/Duration.js.map +1 -0
  274. package/dist/src/utils/hashing.js +46 -0
  275. package/dist/src/utils/hashing.js.map +1 -0
  276. package/dist/src/utils/index.js +21 -0
  277. package/dist/src/utils/index.js.map +1 -0
  278. package/dist/src/utils/stringUtils.js +8 -0
  279. package/dist/src/utils/stringUtils.js.map +1 -0
  280. package/dist/src/utils/utils.js +267 -0
  281. package/dist/src/utils/utils.js.map +1 -0
  282. package/dist/tests/core/logging.js +33 -0
  283. package/dist/tests/core/logging.js.map +1 -0
  284. package/dist/tests/core/utilities/index.js +48 -0
  285. package/dist/tests/core/utilities/index.js.map +1 -0
  286. package/dist/tests/core/utilities/jestUtils.js +21 -0
  287. package/dist/tests/core/utilities/jestUtils.js.map +1 -0
  288. package/dist/tests/core/utilities/mocks/alerts.js +40 -0
  289. package/dist/tests/core/utilities/mocks/alerts.js.map +1 -0
  290. package/dist/tests/core/utilities/mocks/date.js +6 -0
  291. package/dist/tests/core/utilities/mocks/date.js.map +1 -0
  292. package/dist/tests/core/utilities/mocks/events.js +155 -0
  293. package/dist/tests/core/utilities/mocks/events.js.map +1 -0
  294. package/dist/tests/core/utilities/mocks/index.js +47 -0
  295. package/dist/tests/core/utilities/mocks/index.js.map +1 -0
  296. package/dist/tests/core/utilities/mocks/licenses.js +109 -0
  297. package/dist/tests/core/utilities/mocks/licenses.js.map +1 -0
  298. package/dist/tests/core/utilities/queue.js +21 -0
  299. package/dist/tests/core/utilities/queue.js.map +1 -0
  300. package/dist/tests/core/utilities/structures/Chance.js +21 -0
  301. package/dist/tests/core/utilities/structures/Chance.js.map +1 -0
  302. package/dist/tests/core/utilities/structures/accounts.js +43 -0
  303. package/dist/tests/core/utilities/structures/accounts.js.map +1 -0
  304. package/dist/tests/core/utilities/structures/apps.js +23 -0
  305. package/dist/tests/core/utilities/structures/apps.js.map +1 -0
  306. package/dist/tests/core/utilities/structures/common.js +11 -0
  307. package/dist/tests/core/utilities/structures/common.js.map +1 -0
  308. package/dist/tests/core/utilities/structures/db.js +15 -0
  309. package/dist/tests/core/utilities/structures/db.js.map +1 -0
  310. package/dist/tests/core/utilities/structures/documents/index.js +18 -0
  311. package/dist/tests/core/utilities/structures/documents/index.js.map +1 -0
  312. package/dist/tests/core/utilities/structures/documents/platform/index.js +38 -0
  313. package/dist/tests/core/utilities/structures/documents/platform/index.js.map +1 -0
  314. package/dist/tests/core/utilities/structures/documents/platform/installation.js +47 -0
  315. package/dist/tests/core/utilities/structures/documents/platform/installation.js.map +1 -0
  316. package/dist/tests/core/utilities/structures/generator.js +9 -0
  317. package/dist/tests/core/utilities/structures/generator.js.map +1 -0
  318. package/dist/tests/core/utilities/structures/index.js +56 -0
  319. package/dist/tests/core/utilities/structures/index.js.map +1 -0
  320. package/dist/tests/core/utilities/structures/koa.js +10 -0
  321. package/dist/tests/core/utilities/structures/koa.js.map +1 -0
  322. package/dist/tests/core/utilities/structures/licenses.js +157 -0
  323. package/dist/tests/core/utilities/structures/licenses.js.map +1 -0
  324. package/dist/tests/core/utilities/structures/plugins.js +22 -0
  325. package/dist/tests/core/utilities/structures/plugins.js.map +1 -0
  326. package/dist/tests/core/utilities/structures/quotas.js +73 -0
  327. package/dist/tests/core/utilities/structures/quotas.js.map +1 -0
  328. package/dist/tests/core/utilities/structures/scim.js +62 -0
  329. package/dist/tests/core/utilities/structures/scim.js.map +1 -0
  330. package/dist/tests/core/utilities/structures/sso.js +140 -0
  331. package/dist/tests/core/utilities/structures/sso.js.map +1 -0
  332. package/dist/tests/core/utilities/structures/tenants.js +8 -0
  333. package/dist/tests/core/utilities/structures/tenants.js.map +1 -0
  334. package/dist/tests/core/utilities/structures/userGroups.js +12 -0
  335. package/dist/tests/core/utilities/structures/userGroups.js.map +1 -0
  336. package/dist/tests/core/utilities/structures/users.js +53 -0
  337. package/dist/tests/core/utilities/structures/users.js.map +1 -0
  338. package/dist/tests/core/utilities/testContainerUtils.js +161 -0
  339. package/dist/tests/core/utilities/testContainerUtils.js.map +1 -0
  340. package/dist/tests/core/utilities/utils/index.js +39 -0
  341. package/dist/tests/core/utilities/utils/index.js.map +1 -0
  342. package/dist/tests/core/utilities/utils/queue.js +37 -0
  343. package/dist/tests/core/utilities/utils/queue.js.map +1 -0
  344. package/dist/tests/core/utilities/utils/time.js +7 -0
  345. package/dist/tests/core/utilities/utils/time.js.map +1 -0
  346. package/dist/tests/extra/DBTestConfiguration.js +65 -0
  347. package/dist/tests/extra/DBTestConfiguration.js.map +1 -0
  348. package/dist/tests/extra/index.js +43 -0
  349. package/dist/tests/extra/index.js.map +1 -0
  350. package/dist/tests/extra/testEnv.js +136 -0
  351. package/dist/tests/extra/testEnv.js.map +1 -0
  352. package/dist/tests/index.js +19 -0
  353. package/dist/tests/index.js.map +1 -0
  354. package/dist/tests/jestEnv.js +12 -0
  355. package/dist/tests/jestEnv.js.map +1 -0
  356. package/dist/tests/jestSetup.js +33 -0
  357. package/dist/tests/jestSetup.js.map +1 -0
  358. package/package.json +3 -3
@@ -0,0 +1,156 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
36
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
37
+ return new (P || (P = Promise))(function (resolve, reject) {
38
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
39
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
40
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
41
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
42
+ });
43
+ };
44
+ var __importDefault = (this && this.__importDefault) || function (mod) {
45
+ return (mod && mod.__esModule) ? mod : { "default": mod };
46
+ };
47
+ Object.defineProperty(exports, "__esModule", { value: true });
48
+ exports.getSessionsForUser = getSessionsForUser;
49
+ exports.invalidateSessions = invalidateSessions;
50
+ exports.createASession = createASession;
51
+ exports.updateSessionTTL = updateSessionTTL;
52
+ exports.endSession = endSession;
53
+ exports.getSession = getSession;
54
+ const redis = __importStar(require("../redis/init"));
55
+ const uuid_1 = require("uuid");
56
+ const logging_1 = require("../logging");
57
+ const environment_1 = __importDefault(require("../environment"));
58
+ const utils_1 = require("../utils");
59
+ // a week expiry is the default
60
+ const EXPIRY_SECONDS = environment_1.default.SESSION_EXPIRY_SECONDS
61
+ ? parseInt(environment_1.default.SESSION_EXPIRY_SECONDS)
62
+ : utils_1.Duration.fromDays(7).toSeconds();
63
+ function makeSessionID(userId, sessionId) {
64
+ return `${userId}/${sessionId}`;
65
+ }
66
+ function getSessionsForUser(userId) {
67
+ return __awaiter(this, void 0, void 0, function* () {
68
+ if (!userId) {
69
+ console.trace("Cannot get sessions for undefined userId");
70
+ return [];
71
+ }
72
+ const client = yield redis.getSessionClient();
73
+ const sessions = yield client.scan(userId);
74
+ return sessions.map(session => session.value);
75
+ });
76
+ }
77
+ function invalidateSessions(userId_1) {
78
+ return __awaiter(this, arguments, void 0, function* (userId, opts = {}) {
79
+ try {
80
+ const reason = (opts === null || opts === void 0 ? void 0 : opts.reason) || "unknown";
81
+ let sessionIds = opts.sessionIds || [];
82
+ let sessionKeys;
83
+ // If no sessionIds, get all the sessions for the user
84
+ if (sessionIds.length === 0) {
85
+ const sessions = yield getSessionsForUser(userId);
86
+ sessionKeys = sessions.map(session => ({
87
+ key: makeSessionID(session.userId, session.sessionId),
88
+ }));
89
+ }
90
+ else {
91
+ // use the passed array of sessionIds
92
+ sessionIds = Array.isArray(sessionIds) ? sessionIds : [sessionIds];
93
+ sessionKeys = sessionIds.map(sessionId => ({
94
+ key: makeSessionID(userId, sessionId),
95
+ }));
96
+ }
97
+ if (sessionKeys && sessionKeys.length > 0) {
98
+ const client = yield redis.getSessionClient();
99
+ const promises = [];
100
+ for (let sessionKey of sessionKeys) {
101
+ promises.push(client.delete(sessionKey.key));
102
+ }
103
+ if (!environment_1.default.isTest()) {
104
+ (0, logging_1.logWarn)(`Invalidating sessions for ${userId} (reason: ${reason}) - ${sessionKeys
105
+ .map(sessionKey => sessionKey.key)
106
+ .join(", ")}`);
107
+ }
108
+ yield Promise.all(promises);
109
+ }
110
+ }
111
+ catch (err) {
112
+ console.error(`Error invalidating sessions: ${err}`);
113
+ }
114
+ });
115
+ }
116
+ function createASession(userId, createSession) {
117
+ return __awaiter(this, void 0, void 0, function* () {
118
+ // invalidate all other sessions
119
+ yield invalidateSessions(userId, { reason: "creation" });
120
+ const client = yield redis.getSessionClient();
121
+ const sessionId = createSession.sessionId;
122
+ const csrfToken = createSession.csrfToken ? createSession.csrfToken : (0, uuid_1.v4)();
123
+ const key = makeSessionID(userId, sessionId);
124
+ const session = Object.assign(Object.assign({}, createSession), { csrfToken, createdAt: new Date().toISOString(), lastAccessedAt: new Date().toISOString(), userId });
125
+ yield client.store(key, session, EXPIRY_SECONDS);
126
+ return session;
127
+ });
128
+ }
129
+ function updateSessionTTL(session) {
130
+ return __awaiter(this, void 0, void 0, function* () {
131
+ const client = yield redis.getSessionClient();
132
+ const key = makeSessionID(session.userId, session.sessionId);
133
+ session.lastAccessedAt = new Date().toISOString();
134
+ yield client.store(key, session, EXPIRY_SECONDS);
135
+ });
136
+ }
137
+ function endSession(userId, sessionId) {
138
+ return __awaiter(this, void 0, void 0, function* () {
139
+ const client = yield redis.getSessionClient();
140
+ yield client.delete(makeSessionID(userId, sessionId));
141
+ });
142
+ }
143
+ function getSession(userId, sessionId) {
144
+ return __awaiter(this, void 0, void 0, function* () {
145
+ if (!userId || !sessionId) {
146
+ throw new Error(`Invalid session details - ${userId} - ${sessionId}`);
147
+ }
148
+ const client = yield redis.getSessionClient();
149
+ const session = yield client.get(makeSessionID(userId, sessionId));
150
+ if (!session) {
151
+ throw new Error(`Session not found - ${userId} - ${sessionId}`);
152
+ }
153
+ return session;
154
+ });
155
+ }
156
+ //# sourceMappingURL=sessions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessions.js","sourceRoot":"","sources":["../../../src/security/sessions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,180 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.isExternalTableID = isExternalTableID;
7
+ exports.isInternalTableID = isInternalTableID;
8
+ exports.getNativeSql = getNativeSql;
9
+ exports.isExternalTable = isExternalTable;
10
+ exports.buildExternalTableId = buildExternalTableId;
11
+ exports.encodeTableId = encodeTableId;
12
+ exports.encodeViewId = encodeViewId;
13
+ exports.breakExternalTableId = breakExternalTableId;
14
+ exports.generateRowIdField = generateRowIdField;
15
+ exports.isRowId = isRowId;
16
+ exports.convertRowId = convertRowId;
17
+ exports.breakRowIdField = breakRowIdField;
18
+ exports.isInvalidISODateString = isInvalidISODateString;
19
+ exports.isValidISODateString = isValidISODateString;
20
+ exports.isValidFilter = isValidFilter;
21
+ exports.isValidTime = isValidTime;
22
+ exports.sqlLog = sqlLog;
23
+ exports.validateManyToMany = validateManyToMany;
24
+ const types_1 = require("@budibase/types");
25
+ const constants_1 = require("../constants");
26
+ const db_1 = require("../db");
27
+ const environment_1 = __importDefault(require("../environment"));
28
+ const DOUBLE_SEPARATOR = `${db_1.SEPARATOR}${db_1.SEPARATOR}`;
29
+ const ROW_ID_REGEX = /^\[.*]$/g;
30
+ const ENCODED_SPACE = encodeURIComponent(" ");
31
+ const ISO_DATE_REGEX = /^\d{4}-\d{2}-\d{2}(?:T\d{2}:\d{2}:\d{2}.\d{3}Z)?$/;
32
+ const TIME_REGEX = /^(?:\d{2}:)?(?:\d{2}:)(?:\d{2})$/;
33
+ function isExternalTableID(tableId) {
34
+ return tableId.startsWith(types_1.DocumentType.DATASOURCE + db_1.SEPARATOR);
35
+ }
36
+ function isInternalTableID(tableId) {
37
+ return !isExternalTableID(tableId);
38
+ }
39
+ function getNativeSql(query) {
40
+ let sql = query.toSQL();
41
+ if (Array.isArray(sql)) {
42
+ return sql;
43
+ }
44
+ let native;
45
+ if (sql.toNative) {
46
+ native = sql.toNative();
47
+ }
48
+ return {
49
+ sql: (native === null || native === void 0 ? void 0 : native.sql) || sql.sql,
50
+ bindings: (native === null || native === void 0 ? void 0 : native.bindings) || sql.bindings,
51
+ };
52
+ }
53
+ function isExternalTable(table) {
54
+ if ((table === null || table === void 0 ? void 0 : table.sourceId) &&
55
+ table.sourceId.includes(types_1.DocumentType.DATASOURCE + db_1.SEPARATOR) &&
56
+ (table === null || table === void 0 ? void 0 : table.sourceId) !== constants_1.DEFAULT_BB_DATASOURCE_ID) {
57
+ return true;
58
+ }
59
+ else if ((table === null || table === void 0 ? void 0 : table.sourceType) === types_1.TableSourceType.EXTERNAL) {
60
+ return true;
61
+ }
62
+ else if ((table === null || table === void 0 ? void 0 : table._id) && isExternalTableID(table._id)) {
63
+ return true;
64
+ }
65
+ return false;
66
+ }
67
+ function buildExternalTableId(datasourceId, tableName) {
68
+ return `${datasourceId}${DOUBLE_SEPARATOR}${encodeURIComponent(tableName)}`;
69
+ }
70
+ function encodeTableId(tableId) {
71
+ if (isExternalTableID(tableId)) {
72
+ return encodeURIComponent(tableId);
73
+ }
74
+ else {
75
+ return tableId;
76
+ }
77
+ }
78
+ function encodeViewId(viewId) {
79
+ return encodeURIComponent(viewId);
80
+ }
81
+ function breakExternalTableId(tableId) {
82
+ const parts = tableId.split(DOUBLE_SEPARATOR);
83
+ let datasourceId = parts.shift();
84
+ // if they need joined
85
+ let tableName = parts.join(DOUBLE_SEPARATOR);
86
+ // if contains encoded spaces, decode it
87
+ if (tableName.includes(ENCODED_SPACE)) {
88
+ tableName = decodeURIComponent(tableName);
89
+ }
90
+ if (!datasourceId || !tableName) {
91
+ throw new Error("Unable to get datasource/table name from table ID");
92
+ }
93
+ return { datasourceId, tableName };
94
+ }
95
+ function generateRowIdField(keyProps = []) {
96
+ if (!Array.isArray(keyProps)) {
97
+ keyProps = [keyProps];
98
+ }
99
+ for (let index in keyProps) {
100
+ if (keyProps[index] instanceof Buffer) {
101
+ keyProps[index] = keyProps[index].toString();
102
+ }
103
+ }
104
+ // this conserves order and types
105
+ // we have to swap the double quotes to single quotes for use in HBS statements
106
+ // when using the literal helper the double quotes can break things
107
+ return encodeURIComponent(JSON.stringify(keyProps).replace(/"/g, "'"));
108
+ }
109
+ function isRowId(field) {
110
+ return (Array.isArray(field) ||
111
+ (typeof field === "string" && field.match(ROW_ID_REGEX) != null));
112
+ }
113
+ function convertRowId(field) {
114
+ if (Array.isArray(field)) {
115
+ return field[0];
116
+ }
117
+ if (typeof field === "string" && field.match(ROW_ID_REGEX) != null) {
118
+ return field.substring(1, field.length - 1);
119
+ }
120
+ return field;
121
+ }
122
+ // should always return an array
123
+ function breakRowIdField(_id) {
124
+ if (!_id) {
125
+ return [];
126
+ }
127
+ // have to replace on the way back as we swapped out the double quotes
128
+ // when encoding, but JSON can't handle the single quotes
129
+ const id = typeof _id === "string" ? _id : _id._id;
130
+ const decoded = decodeURIComponent(id).replace(/'/g, '"');
131
+ try {
132
+ const parsed = JSON.parse(decoded);
133
+ return Array.isArray(parsed) ? parsed : [parsed];
134
+ }
135
+ catch (err) {
136
+ // wasn't json - likely was handlebars for a many to many
137
+ return [_id];
138
+ }
139
+ }
140
+ function isInvalidISODateString(str) {
141
+ const trimmedValue = str.trim();
142
+ if (!ISO_DATE_REGEX.test(trimmedValue)) {
143
+ return false;
144
+ }
145
+ let d = new Date(trimmedValue);
146
+ return isNaN(d.getTime());
147
+ }
148
+ function isValidISODateString(str) {
149
+ return ISO_DATE_REGEX.test(str.trim());
150
+ }
151
+ function isValidFilter(value) {
152
+ return value != null && value !== "";
153
+ }
154
+ function isValidTime(value) {
155
+ return TIME_REGEX.test(value);
156
+ }
157
+ function sqlLog(client, query, values) {
158
+ if (!environment_1.default.SQL_LOGGING_ENABLE) {
159
+ return;
160
+ }
161
+ let string = `[SQL] [${client.toUpperCase()}] query="${query}"`;
162
+ if (values) {
163
+ string += ` values="${values.join(", ")}"`;
164
+ }
165
+ console.log(string);
166
+ }
167
+ function isValidManyToManyRelationship(relationship) {
168
+ return (!!relationship.through &&
169
+ !!relationship.fromPrimary &&
170
+ !!relationship.from &&
171
+ !!relationship.toPrimary &&
172
+ !!relationship.to);
173
+ }
174
+ function validateManyToMany(relationship) {
175
+ if (isValidManyToManyRelationship(relationship)) {
176
+ return relationship;
177
+ }
178
+ return undefined;
179
+ }
180
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/sql/utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getTenantDB = getTenantDB;
4
+ const db_1 = require("../db/db");
5
+ const context_1 = require("../context");
6
+ function getTenantDB(tenantId) {
7
+ return (0, db_1.getDB)((0, context_1.getGlobalDBName)(tenantId));
8
+ }
9
+ //# sourceMappingURL=db.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"db.js","sourceRoot":"","sources":["../../../src/tenancy/db.ts"],"names":[],"mappings":";;AAGA,kCAEC;AALD,iCAAgC;AAChC,wCAA4C;AAE5C,SAAgB,WAAW,CAAC,QAAgB;IAC1C,OAAO,IAAA,UAAK,EAAC,IAAA,yBAAe,EAAC,QAAQ,CAAC,CAAC,CAAA;AACzC,CAAC"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./db"), exports);
18
+ __exportStar(require("./tenancy"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tenancy/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,uCAAoB;AACpB,4CAAyB"}
@@ -0,0 +1,125 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getTenantIDFromCtx = exports.isUserInAppTenant = void 0;
4
+ exports.addTenantToUrl = addTenantToUrl;
5
+ const context_1 = require("../context");
6
+ const types_1 = require("@budibase/types");
7
+ const constants_1 = require("../constants");
8
+ function addTenantToUrl(url) {
9
+ const tenantId = (0, context_1.getTenantId)();
10
+ if ((0, context_1.isMultiTenant)()) {
11
+ const char = url.indexOf("?") === -1 ? "?" : "&";
12
+ url += `${char}tenantId=${tenantId}`;
13
+ }
14
+ return url;
15
+ }
16
+ const isUserInAppTenant = (appId, user) => {
17
+ let userTenantId;
18
+ if (user) {
19
+ userTenantId = user.tenantId || context_1.DEFAULT_TENANT_ID;
20
+ }
21
+ else {
22
+ userTenantId = (0, context_1.getTenantId)();
23
+ }
24
+ const tenantId = (0, context_1.getTenantIDFromAppID)(appId) || context_1.DEFAULT_TENANT_ID;
25
+ return tenantId === userTenantId;
26
+ };
27
+ exports.isUserInAppTenant = isUserInAppTenant;
28
+ const ALL_STRATEGIES = Object.values(types_1.TenantResolutionStrategy);
29
+ const getTenantIDFromCtx = (ctx, opts) => {
30
+ var _a;
31
+ // exit early if not multi-tenant
32
+ if (!(0, context_1.isMultiTenant)()) {
33
+ return context_1.DEFAULT_TENANT_ID;
34
+ }
35
+ // opt defaults
36
+ if (opts.allowNoTenant === undefined) {
37
+ opts.allowNoTenant = false;
38
+ }
39
+ if (!opts.includeStrategies) {
40
+ opts.includeStrategies = ALL_STRATEGIES;
41
+ }
42
+ if (!opts.excludeStrategies) {
43
+ opts.excludeStrategies = [];
44
+ }
45
+ const isAllowed = (strategy) => {
46
+ var _a, _b;
47
+ // excluded takes precedence
48
+ if ((_a = opts.excludeStrategies) === null || _a === void 0 ? void 0 : _a.includes(strategy)) {
49
+ return false;
50
+ }
51
+ if ((_b = opts.includeStrategies) === null || _b === void 0 ? void 0 : _b.includes(strategy)) {
52
+ return true;
53
+ }
54
+ };
55
+ // always use user first
56
+ if (isAllowed(types_1.TenantResolutionStrategy.USER)) {
57
+ const userTenantId = (_a = ctx.user) === null || _a === void 0 ? void 0 : _a.tenantId;
58
+ if (userTenantId) {
59
+ return userTenantId;
60
+ }
61
+ }
62
+ // header
63
+ if (isAllowed(types_1.TenantResolutionStrategy.HEADER)) {
64
+ const headerTenantId = ctx.request.headers[constants_1.Header.TENANT_ID];
65
+ if (headerTenantId) {
66
+ return headerTenantId;
67
+ }
68
+ }
69
+ // query param
70
+ if (isAllowed(types_1.TenantResolutionStrategy.QUERY)) {
71
+ const queryTenantId = ctx.request.query.tenantId;
72
+ if (queryTenantId) {
73
+ return queryTenantId;
74
+ }
75
+ }
76
+ // subdomain
77
+ if (isAllowed(types_1.TenantResolutionStrategy.SUBDOMAIN)) {
78
+ // e.g. budibase.app or local.com:10000
79
+ let platformHost;
80
+ try {
81
+ platformHost = new URL((0, context_1.getPlatformURL)()).host.split(":")[0];
82
+ }
83
+ catch (err) {
84
+ // if invalid URL, just don't try to process subdomain
85
+ if (err.code !== "ERR_INVALID_URL") {
86
+ throw err;
87
+ }
88
+ }
89
+ // e.g. tenant.budibase.app or tenant.local.com
90
+ const requestHost = ctx.host;
91
+ // parse the tenant id from the difference
92
+ if (platformHost && requestHost.includes(platformHost)) {
93
+ const tenantId = requestHost.substring(0, requestHost.indexOf(`.${platformHost}`));
94
+ if (tenantId) {
95
+ return tenantId;
96
+ }
97
+ }
98
+ }
99
+ // path
100
+ if (isAllowed(types_1.TenantResolutionStrategy.PATH)) {
101
+ // params - have to parse manually due to koa-router not run yet
102
+ const match = ctx.matched.find((m) => !!m.paramNames.find((p) => p.name === "tenantId"));
103
+ // get the raw path url - without any query params
104
+ const ctxUrl = ctx.originalUrl;
105
+ let url;
106
+ if (ctxUrl.includes("?")) {
107
+ url = ctxUrl.split("?")[0];
108
+ }
109
+ else {
110
+ url = ctxUrl;
111
+ }
112
+ if (match) {
113
+ const params = match.params(url, match.captures(url), {});
114
+ if (params.tenantId) {
115
+ return params.tenantId;
116
+ }
117
+ }
118
+ }
119
+ if (!opts.allowNoTenant) {
120
+ ctx.throw(403, "Tenant id not set");
121
+ }
122
+ return undefined;
123
+ };
124
+ exports.getTenantIDFromCtx = getTenantIDFromCtx;
125
+ //# sourceMappingURL=tenancy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tenancy.js","sourceRoot":"","sources":["../../../src/tenancy/tenancy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./timers"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/timers/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAwB"}
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.set = set;
4
+ exports.clear = clear;
5
+ exports.cleanup = cleanup;
6
+ let intervals = [];
7
+ function set(callback, period) {
8
+ const interval = setInterval(callback, period);
9
+ intervals.push(interval);
10
+ return interval;
11
+ }
12
+ function clear(interval) {
13
+ const idx = intervals.indexOf(interval);
14
+ if (idx !== -1) {
15
+ intervals.splice(idx, 1);
16
+ }
17
+ clearInterval(interval);
18
+ }
19
+ function cleanup() {
20
+ for (let interval of intervals) {
21
+ clearInterval(interval);
22
+ }
23
+ intervals = [];
24
+ }
25
+ //# sourceMappingURL=timers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timers.js","sourceRoot":"","sources":["../../../src/timers/timers.ts"],"names":[],"mappings":";;AAEA,kBAIC;AAED,sBAMC;AAED,0BAKC;AArBD,IAAI,SAAS,GAAqB,EAAE,CAAA;AAEpC,SAAgB,GAAG,CAAC,QAAmB,EAAE,MAAc;IACrD,MAAM,QAAQ,GAAG,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;IAC9C,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IACxB,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED,SAAgB,KAAK,CAAC,QAAwB;IAC5C,MAAM,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;IACvC,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC;QACf,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;IAC1B,CAAC;IACD,aAAa,CAAC,QAAQ,CAAC,CAAA;AACzB,CAAC;AAED,SAAgB,OAAO;IACrB,KAAK,IAAI,QAAQ,IAAI,SAAS,EAAE,CAAC;QAC/B,aAAa,CAAC,QAAQ,CAAC,CAAA;IACzB,CAAC;IACD,SAAS,GAAG,EAAE,CAAA;AAChB,CAAC"}