@budibase/backend-core 2.9.16 → 2.9.17

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 (435) hide show
  1. package/dist/index.js +12544 -0
  2. package/dist/index.js.map +7 -0
  3. package/dist/index.js.meta.json +1 -0
  4. package/dist/package.json +5 -5
  5. package/dist/plugins.js +288 -16
  6. package/dist/plugins.js.map +7 -1
  7. package/dist/plugins.js.meta.json +1 -0
  8. package/dist/tests.js +8476 -0
  9. package/dist/tests.js.map +7 -0
  10. package/dist/tests.js.meta.json +1 -0
  11. package/dist/tsconfig.build.tsbuildinfo +1 -1
  12. package/package.json +5 -5
  13. package/scripts/build.js +6 -0
  14. package/tsconfig.build.json +5 -1
  15. package/tsconfig.json +0 -8
  16. package/dist/jest.config.js +0 -25
  17. package/dist/jest.config.js.map +0 -1
  18. package/dist/plugins.d.ts +0 -1
  19. package/dist/src/accounts/accounts.js +0 -83
  20. package/dist/src/accounts/accounts.js.map +0 -1
  21. package/dist/src/accounts/api.js +0 -92
  22. package/dist/src/accounts/api.js.map +0 -1
  23. package/dist/src/accounts/index.js +0 -18
  24. package/dist/src/accounts/index.js.map +0 -1
  25. package/dist/src/auth/auth.js +0 -189
  26. package/dist/src/auth/auth.js.map +0 -1
  27. package/dist/src/auth/index.js +0 -18
  28. package/dist/src/auth/index.js.map +0 -1
  29. package/dist/src/blacklist/blacklist.js +0 -76
  30. package/dist/src/blacklist/blacklist.js.map +0 -1
  31. package/dist/src/blacklist/index.js +0 -18
  32. package/dist/src/blacklist/index.js.map +0 -1
  33. package/dist/src/cache/appMetadata.js +0 -96
  34. package/dist/src/cache/appMetadata.js.map +0 -1
  35. package/dist/src/cache/base/index.js +0 -120
  36. package/dist/src/cache/base/index.js.map +0 -1
  37. package/dist/src/cache/generic.js +0 -31
  38. package/dist/src/cache/generic.js.map +0 -1
  39. package/dist/src/cache/index.js +0 -35
  40. package/dist/src/cache/index.js.map +0 -1
  41. package/dist/src/cache/user.js +0 -108
  42. package/dist/src/cache/user.js.map +0 -1
  43. package/dist/src/cache/writethrough.js +0 -159
  44. package/dist/src/cache/writethrough.js.map +0 -1
  45. package/dist/src/configs/configs.js +0 -278
  46. package/dist/src/configs/configs.js.map +0 -1
  47. package/dist/src/configs/index.js +0 -18
  48. package/dist/src/configs/index.js.map +0 -1
  49. package/dist/src/constants/db.js +0 -67
  50. package/dist/src/constants/db.js.map +0 -1
  51. package/dist/src/constants/index.js +0 -19
  52. package/dist/src/constants/index.js.map +0 -1
  53. package/dist/src/constants/misc.js +0 -54
  54. package/dist/src/constants/misc.js.map +0 -1
  55. package/dist/src/context/Context.js +0 -14
  56. package/dist/src/context/Context.js.map +0 -1
  57. package/dist/src/context/identity.js +0 -72
  58. package/dist/src/context/identity.js.map +0 -1
  59. package/dist/src/context/index.js +0 -34
  60. package/dist/src/context/index.js.map +0 -1
  61. package/dist/src/context/mainContext.js +0 -331
  62. package/dist/src/context/mainContext.js.map +0 -1
  63. package/dist/src/context/types.js +0 -3
  64. package/dist/src/context/types.js.map +0 -1
  65. package/dist/src/db/Replication.js +0 -85
  66. package/dist/src/db/Replication.js.map +0 -1
  67. package/dist/src/db/constants.js +0 -13
  68. package/dist/src/db/constants.js.map +0 -1
  69. package/dist/src/db/couch/DatabaseImpl.js +0 -248
  70. package/dist/src/db/couch/DatabaseImpl.js.map +0 -1
  71. package/dist/src/db/couch/connections.js +0 -88
  72. package/dist/src/db/couch/connections.js.map +0 -1
  73. package/dist/src/db/couch/index.js +0 -27
  74. package/dist/src/db/couch/index.js.map +0 -1
  75. package/dist/src/db/couch/pouchDB.js +0 -108
  76. package/dist/src/db/couch/pouchDB.js.map +0 -1
  77. package/dist/src/db/couch/pouchDump.js +0 -2
  78. package/dist/src/db/couch/pouchDump.js.map +0 -1
  79. package/dist/src/db/couch/utils.js +0 -55
  80. package/dist/src/db/couch/utils.js.map +0 -1
  81. package/dist/src/db/db.js +0 -59
  82. package/dist/src/db/db.js.map +0 -1
  83. package/dist/src/db/errors.js +0 -22
  84. package/dist/src/db/errors.js.map +0 -1
  85. package/dist/src/db/index.js +0 -48
  86. package/dist/src/db/index.js.map +0 -1
  87. package/dist/src/db/lucene.js +0 -650
  88. package/dist/src/db/lucene.js.map +0 -1
  89. package/dist/src/db/searchIndexes/index.js +0 -18
  90. package/dist/src/db/searchIndexes/index.js.map +0 -1
  91. package/dist/src/db/searchIndexes/searchIndexes.js +0 -77
  92. package/dist/src/db/searchIndexes/searchIndexes.js.map +0 -1
  93. package/dist/src/db/utils.js +0 -213
  94. package/dist/src/db/utils.js.map +0 -1
  95. package/dist/src/db/views.js +0 -219
  96. package/dist/src/db/views.js.map +0 -1
  97. package/dist/src/docIds/conversions.js +0 -62
  98. package/dist/src/docIds/conversions.js.map +0 -1
  99. package/dist/src/docIds/ids.js +0 -112
  100. package/dist/src/docIds/ids.js.map +0 -1
  101. package/dist/src/docIds/index.js +0 -19
  102. package/dist/src/docIds/index.js.map +0 -1
  103. package/dist/src/docIds/newid.js +0 -9
  104. package/dist/src/docIds/newid.js.map +0 -1
  105. package/dist/src/docIds/params.js +0 -138
  106. package/dist/src/docIds/params.js.map +0 -1
  107. package/dist/src/docUpdates/index.js +0 -36
  108. package/dist/src/docUpdates/index.js.map +0 -1
  109. package/dist/src/environment.js +0 -110
  110. package/dist/src/environment.js.map +0 -1
  111. package/dist/src/errors/errors.js +0 -97
  112. package/dist/src/errors/errors.js.map +0 -1
  113. package/dist/src/errors/index.js +0 -18
  114. package/dist/src/errors/index.js.map +0 -1
  115. package/dist/src/events/analytics.js +0 -42
  116. package/dist/src/events/analytics.js.map +0 -1
  117. package/dist/src/events/asyncEvents/index.js +0 -19
  118. package/dist/src/events/asyncEvents/index.js.map +0 -1
  119. package/dist/src/events/asyncEvents/publisher.js +0 -27
  120. package/dist/src/events/asyncEvents/publisher.js.map +0 -1
  121. package/dist/src/events/asyncEvents/queue.js +0 -26
  122. package/dist/src/events/asyncEvents/queue.js.map +0 -1
  123. package/dist/src/events/backfill.js +0 -179
  124. package/dist/src/events/backfill.js.map +0 -1
  125. package/dist/src/events/documentId.js +0 -28
  126. package/dist/src/events/documentId.js.map +0 -1
  127. package/dist/src/events/events.js +0 -73
  128. package/dist/src/events/events.js.map +0 -1
  129. package/dist/src/events/identification.js +0 -300
  130. package/dist/src/events/identification.js.map +0 -1
  131. package/dist/src/events/index.js +0 -47
  132. package/dist/src/events/index.js.map +0 -1
  133. package/dist/src/events/processors/AnalyticsProcessor.js +0 -93
  134. package/dist/src/events/processors/AnalyticsProcessor.js.map +0 -1
  135. package/dist/src/events/processors/AuditLogsProcessor.js +0 -86
  136. package/dist/src/events/processors/AuditLogsProcessor.js.map +0 -1
  137. package/dist/src/events/processors/LoggingProcessor.js +0 -47
  138. package/dist/src/events/processors/LoggingProcessor.js.map +0 -1
  139. package/dist/src/events/processors/Processors.js +0 -52
  140. package/dist/src/events/processors/Processors.js.map +0 -1
  141. package/dist/src/events/processors/async/DocumentUpdateProcessor.js +0 -44
  142. package/dist/src/events/processors/async/DocumentUpdateProcessor.js.map +0 -1
  143. package/dist/src/events/processors/index.js +0 -23
  144. package/dist/src/events/processors/index.js.map +0 -1
  145. package/dist/src/events/processors/posthog/PosthogProcessor.js +0 -139
  146. package/dist/src/events/processors/posthog/PosthogProcessor.js.map +0 -1
  147. package/dist/src/events/processors/posthog/index.js +0 -8
  148. package/dist/src/events/processors/posthog/index.js.map +0 -1
  149. package/dist/src/events/processors/posthog/rateLimiting.js +0 -119
  150. package/dist/src/events/processors/posthog/rateLimiting.js.map +0 -1
  151. package/dist/src/events/processors/types.js +0 -3
  152. package/dist/src/events/processors/types.js.map +0 -1
  153. package/dist/src/events/publishers/account.js +0 -43
  154. package/dist/src/events/publishers/account.js.map +0 -1
  155. package/dist/src/events/publishers/app.js +0 -153
  156. package/dist/src/events/publishers/app.js.map +0 -1
  157. package/dist/src/events/publishers/auditLog.js +0 -34
  158. package/dist/src/events/publishers/auditLog.js.map +0 -1
  159. package/dist/src/events/publishers/auth.js +0 -80
  160. package/dist/src/events/publishers/auth.js.map +0 -1
  161. package/dist/src/events/publishers/automation.js +0 -117
  162. package/dist/src/events/publishers/automation.js.map +0 -1
  163. package/dist/src/events/publishers/backfill.js +0 -85
  164. package/dist/src/events/publishers/backfill.js.map +0 -1
  165. package/dist/src/events/publishers/backup.js +0 -41
  166. package/dist/src/events/publishers/backup.js.map +0 -1
  167. package/dist/src/events/publishers/datasource.js +0 -54
  168. package/dist/src/events/publishers/datasource.js.map +0 -1
  169. package/dist/src/events/publishers/email.js +0 -30
  170. package/dist/src/events/publishers/email.js.map +0 -1
  171. package/dist/src/events/publishers/environmentVariable.js +0 -44
  172. package/dist/src/events/publishers/environmentVariable.js.map +0 -1
  173. package/dist/src/events/publishers/group.js +0 -107
  174. package/dist/src/events/publishers/group.js.map +0 -1
  175. package/dist/src/events/publishers/index.js +0 -55
  176. package/dist/src/events/publishers/index.js.map +0 -1
  177. package/dist/src/events/publishers/installation.js +0 -52
  178. package/dist/src/events/publishers/installation.js.map +0 -1
  179. package/dist/src/events/publishers/layout.js +0 -34
  180. package/dist/src/events/publishers/layout.js.map +0 -1
  181. package/dist/src/events/publishers/license.js +0 -77
  182. package/dist/src/events/publishers/license.js.map +0 -1
  183. package/dist/src/events/publishers/org.js +0 -52
  184. package/dist/src/events/publishers/org.js.map +0 -1
  185. package/dist/src/events/publishers/plugin.js +0 -55
  186. package/dist/src/events/publishers/plugin.js.map +0 -1
  187. package/dist/src/events/publishers/query.js +0 -74
  188. package/dist/src/events/publishers/query.js.map +0 -1
  189. package/dist/src/events/publishers/role.js +0 -69
  190. package/dist/src/events/publishers/role.js.map +0 -1
  191. package/dist/src/events/publishers/rows.js +0 -32
  192. package/dist/src/events/publishers/rows.js.map +0 -1
  193. package/dist/src/events/publishers/screen.js +0 -46
  194. package/dist/src/events/publishers/screen.js.map +0 -1
  195. package/dist/src/events/publishers/serve.js +0 -47
  196. package/dist/src/events/publishers/serve.js.map +0 -1
  197. package/dist/src/events/publishers/table.js +0 -77
  198. package/dist/src/events/publishers/table.js.map +0 -1
  199. package/dist/src/events/publishers/user.js +0 -202
  200. package/dist/src/events/publishers/user.js.map +0 -1
  201. package/dist/src/events/publishers/view.js +0 -111
  202. package/dist/src/events/publishers/view.js.map +0 -1
  203. package/dist/src/featureFlags/index.js +0 -96
  204. package/dist/src/featureFlags/index.js.map +0 -1
  205. package/dist/src/helpers.js +0 -14
  206. package/dist/src/helpers.js.map +0 -1
  207. package/dist/src/index.js +0 -82
  208. package/dist/src/index.js.map +0 -1
  209. package/dist/src/installation.js +0 -138
  210. package/dist/src/installation.js.map +0 -1
  211. package/dist/src/logging/alerts.js +0 -24
  212. package/dist/src/logging/alerts.js.map +0 -1
  213. package/dist/src/logging/correlation/correlation.js +0 -17
  214. package/dist/src/logging/correlation/correlation.js.map +0 -1
  215. package/dist/src/logging/correlation/index.js +0 -18
  216. package/dist/src/logging/correlation/index.js.map +0 -1
  217. package/dist/src/logging/correlation/middleware.js +0 -17
  218. package/dist/src/logging/correlation/middleware.js.map +0 -1
  219. package/dist/src/logging/index.js +0 -35
  220. package/dist/src/logging/index.js.map +0 -1
  221. package/dist/src/logging/pino/logger.js +0 -218
  222. package/dist/src/logging/pino/logger.js.map +0 -1
  223. package/dist/src/logging/pino/middleware.js +0 -47
  224. package/dist/src/logging/pino/middleware.js.map +0 -1
  225. package/dist/src/logging/system.js +0 -101
  226. package/dist/src/logging/system.js.map +0 -1
  227. package/dist/src/middleware/adminOnly.js +0 -19
  228. package/dist/src/middleware/adminOnly.js.map +0 -1
  229. package/dist/src/middleware/auditLog.js +0 -16
  230. package/dist/src/middleware/auditLog.js.map +0 -1
  231. package/dist/src/middleware/authenticated.js +0 -204
  232. package/dist/src/middleware/authenticated.js.map +0 -1
  233. package/dist/src/middleware/builderOnly.js +0 -33
  234. package/dist/src/middleware/builderOnly.js.map +0 -1
  235. package/dist/src/middleware/builderOrAdmin.js +0 -33
  236. package/dist/src/middleware/builderOrAdmin.js.map +0 -1
  237. package/dist/src/middleware/csrf.js +0 -81
  238. package/dist/src/middleware/csrf.js.map +0 -1
  239. package/dist/src/middleware/errorHandling.js +0 -64
  240. package/dist/src/middleware/errorHandling.js.map +0 -1
  241. package/dist/src/middleware/index.js +0 -65
  242. package/dist/src/middleware/index.js.map +0 -1
  243. package/dist/src/middleware/internalApi.js +0 -30
  244. package/dist/src/middleware/internalApi.js.map +0 -1
  245. package/dist/src/middleware/joi-validator.js +0 -47
  246. package/dist/src/middleware/joi-validator.js.map +0 -1
  247. package/dist/src/middleware/matchers.js +0 -43
  248. package/dist/src/middleware/matchers.js.map +0 -1
  249. package/dist/src/middleware/passport/datasource/google.js +0 -95
  250. package/dist/src/middleware/passport/datasource/google.js.map +0 -1
  251. package/dist/src/middleware/passport/local.js +0 -81
  252. package/dist/src/middleware/passport/local.js.map +0 -1
  253. package/dist/src/middleware/passport/sso/google.js +0 -90
  254. package/dist/src/middleware/passport/sso/google.js.map +0 -1
  255. package/dist/src/middleware/passport/sso/oidc.js +0 -151
  256. package/dist/src/middleware/passport/sso/oidc.js.map +0 -1
  257. package/dist/src/middleware/passport/sso/sso.js +0 -165
  258. package/dist/src/middleware/passport/sso/sso.js.map +0 -1
  259. package/dist/src/middleware/passport/utils.js +0 -66
  260. package/dist/src/middleware/passport/utils.js.map +0 -1
  261. package/dist/src/middleware/querystringToBody.js +0 -29
  262. package/dist/src/middleware/querystringToBody.js.map +0 -1
  263. package/dist/src/middleware/tenancy.js +0 -37
  264. package/dist/src/middleware/tenancy.js.map +0 -1
  265. package/dist/src/migrations/definitions.js +0 -39
  266. package/dist/src/migrations/definitions.js.map +0 -1
  267. package/dist/src/migrations/index.js +0 -19
  268. package/dist/src/migrations/index.js.map +0 -1
  269. package/dist/src/migrations/migrations.js +0 -198
  270. package/dist/src/migrations/migrations.js.map +0 -1
  271. package/dist/src/objectStore/buckets/app.js +0 -73
  272. package/dist/src/objectStore/buckets/app.js.map +0 -1
  273. package/dist/src/objectStore/buckets/global.js +0 -58
  274. package/dist/src/objectStore/buckets/global.js.map +0 -1
  275. package/dist/src/objectStore/buckets/index.js +0 -20
  276. package/dist/src/objectStore/buckets/index.js.map +0 -1
  277. package/dist/src/objectStore/buckets/plugins.js +0 -95
  278. package/dist/src/objectStore/buckets/plugins.js.map +0 -1
  279. package/dist/src/objectStore/cloudfront.js +0 -40
  280. package/dist/src/objectStore/cloudfront.js.map +0 -1
  281. package/dist/src/objectStore/index.js +0 -20
  282. package/dist/src/objectStore/index.js.map +0 -1
  283. package/dist/src/objectStore/objectStore.js +0 -382
  284. package/dist/src/objectStore/objectStore.js.map +0 -1
  285. package/dist/src/objectStore/utils.js +0 -32
  286. package/dist/src/objectStore/utils.js.map +0 -1
  287. package/dist/src/platform/index.js +0 -33
  288. package/dist/src/platform/index.js.map +0 -1
  289. package/dist/src/platform/platformDb.js +0 -10
  290. package/dist/src/platform/platformDb.js.map +0 -1
  291. package/dist/src/platform/tenants.js +0 -139
  292. package/dist/src/platform/tenants.js.map +0 -1
  293. package/dist/src/platform/users.js +0 -96
  294. package/dist/src/platform/users.js.map +0 -1
  295. package/dist/src/plugin/index.js +0 -18
  296. package/dist/src/plugin/index.js.map +0 -1
  297. package/dist/src/plugin/utils.js +0 -145
  298. package/dist/src/plugin/utils.js.map +0 -1
  299. package/dist/src/queue/constants.js +0 -11
  300. package/dist/src/queue/constants.js.map +0 -1
  301. package/dist/src/queue/inMemoryQueue.js +0 -145
  302. package/dist/src/queue/inMemoryQueue.js.map +0 -1
  303. package/dist/src/queue/index.js +0 -19
  304. package/dist/src/queue/index.js.map +0 -1
  305. package/dist/src/queue/listeners.js +0 -186
  306. package/dist/src/queue/listeners.js.map +0 -1
  307. package/dist/src/queue/queue.js +0 -92
  308. package/dist/src/queue/queue.js.map +0 -1
  309. package/dist/src/redis/index.js +0 -37
  310. package/dist/src/redis/index.js.map +0 -1
  311. package/dist/src/redis/init.js +0 -138
  312. package/dist/src/redis/init.js.map +0 -1
  313. package/dist/src/redis/redis.js +0 -335
  314. package/dist/src/redis/redis.js.map +0 -1
  315. package/dist/src/redis/redlockImpl.js +0 -162
  316. package/dist/src/redis/redlockImpl.js.map +0 -1
  317. package/dist/src/redis/utils.js +0 -123
  318. package/dist/src/redis/utils.js.map +0 -1
  319. package/dist/src/security/encryption.js +0 -163
  320. package/dist/src/security/encryption.js.map +0 -1
  321. package/dist/src/security/permissions.js +0 -151
  322. package/dist/src/security/permissions.js.map +0 -1
  323. package/dist/src/security/roles.js +0 -388
  324. package/dist/src/security/roles.js.map +0 -1
  325. package/dist/src/security/sessions.js +0 -121
  326. package/dist/src/security/sessions.js.map +0 -1
  327. package/dist/src/tenancy/db.js +0 -10
  328. package/dist/src/tenancy/db.js.map +0 -1
  329. package/dist/src/tenancy/index.js +0 -19
  330. package/dist/src/tenancy/index.js.map +0 -1
  331. package/dist/src/tenancy/tenancy.js +0 -116
  332. package/dist/src/tenancy/tenancy.js.map +0 -1
  333. package/dist/src/timers/index.js +0 -18
  334. package/dist/src/timers/index.js.map +0 -1
  335. package/dist/src/timers/timers.js +0 -26
  336. package/dist/src/timers/timers.js.map +0 -1
  337. package/dist/src/users/db.js +0 -407
  338. package/dist/src/users/db.js.map +0 -1
  339. package/dist/src/users/events.js +0 -169
  340. package/dist/src/users/events.js.map +0 -1
  341. package/dist/src/users/index.js +0 -23
  342. package/dist/src/users/index.js.map +0 -1
  343. package/dist/src/users/lookup.js +0 -112
  344. package/dist/src/users/lookup.js.map +0 -1
  345. package/dist/src/users/users.js +0 -261
  346. package/dist/src/users/users.js.map +0 -1
  347. package/dist/src/users/utils.js +0 -92
  348. package/dist/src/users/utils.js.map +0 -1
  349. package/dist/src/utils/hashing.js +0 -47
  350. package/dist/src/utils/hashing.js.map +0 -1
  351. package/dist/src/utils/index.js +0 -20
  352. package/dist/src/utils/index.js.map +0 -1
  353. package/dist/src/utils/stringUtils.js +0 -9
  354. package/dist/src/utils/stringUtils.js.map +0 -1
  355. package/dist/src/utils/utils.js +0 -247
  356. package/dist/src/utils/utils.js.map +0 -1
  357. package/dist/tests/core/logging.js +0 -33
  358. package/dist/tests/core/logging.js.map +0 -1
  359. package/dist/tests/core/utilities/index.js +0 -37
  360. package/dist/tests/core/utilities/index.js.map +0 -1
  361. package/dist/tests/core/utilities/jestUtils.js +0 -21
  362. package/dist/tests/core/utilities/jestUtils.js.map +0 -1
  363. package/dist/tests/core/utilities/mocks/alerts.js +0 -30
  364. package/dist/tests/core/utilities/mocks/alerts.js.map +0 -1
  365. package/dist/tests/core/utilities/mocks/date.js +0 -6
  366. package/dist/tests/core/utilities/mocks/date.js.map +0 -1
  367. package/dist/tests/core/utilities/mocks/events.js +0 -143
  368. package/dist/tests/core/utilities/mocks/events.js.map +0 -1
  369. package/dist/tests/core/utilities/mocks/fetch.js +0 -15
  370. package/dist/tests/core/utilities/mocks/fetch.js.map +0 -1
  371. package/dist/tests/core/utilities/mocks/index.js +0 -43
  372. package/dist/tests/core/utilities/mocks/index.js.map +0 -1
  373. package/dist/tests/core/utilities/mocks/licenses.js +0 -97
  374. package/dist/tests/core/utilities/mocks/licenses.js.map +0 -1
  375. package/dist/tests/core/utilities/mocks/posthog.js +0 -9
  376. package/dist/tests/core/utilities/mocks/posthog.js.map +0 -1
  377. package/dist/tests/core/utilities/structures/Chance.js +0 -21
  378. package/dist/tests/core/utilities/structures/Chance.js.map +0 -1
  379. package/dist/tests/core/utilities/structures/accounts.js +0 -78
  380. package/dist/tests/core/utilities/structures/accounts.js.map +0 -1
  381. package/dist/tests/core/utilities/structures/apps.js +0 -24
  382. package/dist/tests/core/utilities/structures/apps.js.map +0 -1
  383. package/dist/tests/core/utilities/structures/common.js +0 -11
  384. package/dist/tests/core/utilities/structures/common.js.map +0 -1
  385. package/dist/tests/core/utilities/structures/db.js +0 -16
  386. package/dist/tests/core/utilities/structures/db.js.map +0 -1
  387. package/dist/tests/core/utilities/structures/documents/index.js +0 -18
  388. package/dist/tests/core/utilities/structures/documents/index.js.map +0 -1
  389. package/dist/tests/core/utilities/structures/documents/platform/index.js +0 -28
  390. package/dist/tests/core/utilities/structures/documents/platform/index.js.map +0 -1
  391. package/dist/tests/core/utilities/structures/documents/platform/installation.js +0 -38
  392. package/dist/tests/core/utilities/structures/documents/platform/installation.js.map +0 -1
  393. package/dist/tests/core/utilities/structures/generator.js +0 -9
  394. package/dist/tests/core/utilities/structures/generator.js.map +0 -1
  395. package/dist/tests/core/utilities/structures/index.js +0 -46
  396. package/dist/tests/core/utilities/structures/index.js.map +0 -1
  397. package/dist/tests/core/utilities/structures/koa.js +0 -10
  398. package/dist/tests/core/utilities/structures/koa.js.map +0 -1
  399. package/dist/tests/core/utilities/structures/licenses.js +0 -140
  400. package/dist/tests/core/utilities/structures/licenses.js.map +0 -1
  401. package/dist/tests/core/utilities/structures/plugins.js +0 -23
  402. package/dist/tests/core/utilities/structures/plugins.js.map +0 -1
  403. package/dist/tests/core/utilities/structures/quotas.js +0 -71
  404. package/dist/tests/core/utilities/structures/quotas.js.map +0 -1
  405. package/dist/tests/core/utilities/structures/scim.js +0 -63
  406. package/dist/tests/core/utilities/structures/scim.js.map +0 -1
  407. package/dist/tests/core/utilities/structures/shared.js +0 -14
  408. package/dist/tests/core/utilities/structures/shared.js.map +0 -1
  409. package/dist/tests/core/utilities/structures/sso.js +0 -132
  410. package/dist/tests/core/utilities/structures/sso.js.map +0 -1
  411. package/dist/tests/core/utilities/structures/tenants.js +0 -9
  412. package/dist/tests/core/utilities/structures/tenants.js.map +0 -1
  413. package/dist/tests/core/utilities/structures/userGroups.js +0 -13
  414. package/dist/tests/core/utilities/structures/userGroups.js.map +0 -1
  415. package/dist/tests/core/utilities/structures/users.js +0 -48
  416. package/dist/tests/core/utilities/structures/users.js.map +0 -1
  417. package/dist/tests/core/utilities/testContainerUtils.js +0 -84
  418. package/dist/tests/core/utilities/testContainerUtils.js.map +0 -1
  419. package/dist/tests/core/utilities/utils/index.js +0 -28
  420. package/dist/tests/core/utilities/utils/index.js.map +0 -1
  421. package/dist/tests/core/utilities/utils/time.js +0 -8
  422. package/dist/tests/core/utilities/utils/time.js.map +0 -1
  423. package/dist/tests/extra/DBTestConfiguration.js +0 -55
  424. package/dist/tests/extra/DBTestConfiguration.js.map +0 -1
  425. package/dist/tests/extra/index.js +0 -33
  426. package/dist/tests/extra/index.js.map +0 -1
  427. package/dist/tests/extra/testEnv.js +0 -127
  428. package/dist/tests/extra/testEnv.js.map +0 -1
  429. package/dist/tests/index.js +0 -18
  430. package/dist/tests/index.js.map +0 -1
  431. package/dist/tests/jestEnv.js +0 -8
  432. package/dist/tests/jestEnv.js.map +0 -1
  433. package/dist/tests/jestSetup.js +0 -28
  434. package/dist/tests/jestSetup.js.map +0 -1
  435. package/plugins.ts +0 -1
@@ -1,162 +0,0 @@
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 (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
26
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27
- return new (P || (P = Promise))(function (resolve, reject) {
28
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
29
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
30
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
31
- step((generator = generator.apply(thisArg, _arguments || [])).next());
32
- });
33
- };
34
- var __importDefault = (this && this.__importDefault) || function (mod) {
35
- return (mod && mod.__esModule) ? mod : { "default": mod };
36
- };
37
- Object.defineProperty(exports, "__esModule", { value: true });
38
- exports.doWithLock = exports.newRedlock = void 0;
39
- const redlock_1 = __importDefault(require("redlock"));
40
- const init_1 = require("./init");
41
- const types_1 = require("@budibase/types");
42
- const context = __importStar(require("../context"));
43
- const environment_1 = __importDefault(require("../environment"));
44
- function getClient(type, opts) {
45
- return __awaiter(this, void 0, void 0, function* () {
46
- if (type === types_1.LockType.CUSTOM) {
47
- return newRedlock(opts);
48
- }
49
- if (environment_1.default.isTest() && type !== types_1.LockType.TRY_ONCE) {
50
- return newRedlock(OPTIONS.TEST);
51
- }
52
- switch (type) {
53
- case types_1.LockType.TRY_ONCE: {
54
- return newRedlock(OPTIONS.TRY_ONCE);
55
- }
56
- case types_1.LockType.TRY_TWICE: {
57
- return newRedlock(OPTIONS.TRY_TWICE);
58
- }
59
- case types_1.LockType.DEFAULT: {
60
- return newRedlock(OPTIONS.DEFAULT);
61
- }
62
- case types_1.LockType.DELAY_500: {
63
- return newRedlock(OPTIONS.DELAY_500);
64
- }
65
- default: {
66
- throw new Error(`Could not get redlock client: ${type}`);
67
- }
68
- }
69
- });
70
- }
71
- const OPTIONS = {
72
- TRY_ONCE: {
73
- // immediately throws an error if the lock is already held
74
- retryCount: 0,
75
- },
76
- TRY_TWICE: {
77
- retryCount: 1,
78
- },
79
- TEST: {
80
- // higher retry count in unit tests
81
- // due to high contention.
82
- retryCount: 100,
83
- },
84
- DEFAULT: {
85
- // the expected clock drift; for more details
86
- // see http://redis.io/topics/distlock
87
- driftFactor: 0.01,
88
- // the max number of times Redlock will attempt
89
- // to lock a resource before erroring
90
- retryCount: 10,
91
- // the time in ms between attempts
92
- retryDelay: 200,
93
- // the max time in ms randomly added to retries
94
- // to improve performance under high contention
95
- // see https://www.awsarchitectureblog.com/2015/03/backoff.html
96
- retryJitter: 100, // time in ms
97
- },
98
- DELAY_500: {
99
- retryDelay: 500,
100
- },
101
- };
102
- function newRedlock(opts = {}) {
103
- return __awaiter(this, void 0, void 0, function* () {
104
- let options = Object.assign(Object.assign({}, OPTIONS.DEFAULT), opts);
105
- const redisWrapper = yield (0, init_1.getLockClient)();
106
- const client = redisWrapper.getClient();
107
- return new redlock_1.default([client], options);
108
- });
109
- }
110
- exports.newRedlock = newRedlock;
111
- function getLockName(opts) {
112
- // determine lock name
113
- // by default use the tenantId for uniqueness, unless using a system lock
114
- const prefix = opts.systemLock ? "system" : context.getTenantId();
115
- let name = `lock:${prefix}_${opts.name}`;
116
- // add additional unique name if required
117
- if (opts.resource) {
118
- name = name + `_${opts.resource}`;
119
- }
120
- return name;
121
- }
122
- function doWithLock(opts, task) {
123
- return __awaiter(this, void 0, void 0, function* () {
124
- const redlock = yield getClient(opts.type, opts.customOptions);
125
- let lock;
126
- try {
127
- const name = getLockName(opts);
128
- // create the lock
129
- lock = yield redlock.lock(name, opts.ttl);
130
- // perform locked task
131
- // need to await to ensure completion before unlocking
132
- const result = yield task();
133
- return { executed: true, result };
134
- }
135
- catch (e) {
136
- console.warn("lock error");
137
- // lock limit exceeded
138
- if (e.name === "LockError") {
139
- if (opts.type === types_1.LockType.TRY_ONCE) {
140
- // don't throw for try-once locks, they will always error
141
- // due to retry count (0) exceeded
142
- return { executed: false };
143
- }
144
- else {
145
- console.error(e);
146
- throw e;
147
- }
148
- }
149
- else {
150
- console.error(e);
151
- throw e;
152
- }
153
- }
154
- finally {
155
- if (lock) {
156
- yield lock.unlock();
157
- }
158
- }
159
- });
160
- }
161
- exports.doWithLock = doWithLock;
162
- //# sourceMappingURL=redlockImpl.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"redlockImpl.js","sourceRoot":"","sources":["../../../src/redis/redlockImpl.ts"],"names":[],"mappings":"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"}
@@ -1,123 +0,0 @@
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.removeDbPrefix = exports.addDbPrefix = exports.getRedisOptions = exports.SelectableDatabase = exports.Databases = exports.SEPARATOR = void 0;
7
- const environment_1 = __importDefault(require("../environment"));
8
- const SLOT_REFRESH_MS = 2000;
9
- const CONNECT_TIMEOUT_MS = 10000;
10
- exports.SEPARATOR = "-";
11
- /**
12
- * These Redis databases help us to segment up a Redis keyspace by prepending the
13
- * specified database name onto the cache key. This means that a single real Redis database
14
- * can be split up a bit; allowing us to use scans on small databases to find some particular
15
- * keys within.
16
- * If writing a very large volume of keys is expected (say 10K+) then it is better to keep these out
17
- * of the default keyspace and use a separate one - the SelectableDatabase can be used for this.
18
- */
19
- var Databases;
20
- (function (Databases) {
21
- Databases["PW_RESETS"] = "pwReset";
22
- Databases["VERIFICATIONS"] = "verification";
23
- Databases["INVITATIONS"] = "invitation";
24
- Databases["DEV_LOCKS"] = "devLocks";
25
- Databases["DEBOUNCE"] = "debounce";
26
- Databases["SESSIONS"] = "session";
27
- Databases["USER_CACHE"] = "users";
28
- Databases["FLAGS"] = "flags";
29
- Databases["APP_METADATA"] = "appMetadata";
30
- Databases["QUERY_VARS"] = "queryVars";
31
- Databases["LICENSES"] = "license";
32
- Databases["GENERIC_CACHE"] = "data_cache";
33
- Databases["WRITE_THROUGH"] = "writeThrough";
34
- Databases["LOCKS"] = "locks";
35
- Databases["SOCKET_IO"] = "socket_io";
36
- })(Databases = exports.Databases || (exports.Databases = {}));
37
- /**
38
- * These define the numeric Redis databases that can be access with the SELECT command -
39
- * (https://redis.io/commands/select/). By default a Redis server/cluster will have 16 selectable
40
- * databases, increasing this count increases the amount of CPU/memory required to run the server.
41
- * Ideally new Redis keyspaces should be used sparingly, only when absolutely necessary for performance
42
- * to be maintained. Generally a keyspace can grow to be very large is scans are not needed or desired,
43
- * but if you need to walk through all values in a database periodically then a separate selectable
44
- * keyspace should be used.
45
- */
46
- var SelectableDatabase;
47
- (function (SelectableDatabase) {
48
- SelectableDatabase[SelectableDatabase["DEFAULT"] = 0] = "DEFAULT";
49
- SelectableDatabase[SelectableDatabase["SOCKET_IO"] = 1] = "SOCKET_IO";
50
- SelectableDatabase[SelectableDatabase["UNUSED_1"] = 2] = "UNUSED_1";
51
- SelectableDatabase[SelectableDatabase["UNUSED_2"] = 3] = "UNUSED_2";
52
- SelectableDatabase[SelectableDatabase["UNUSED_3"] = 4] = "UNUSED_3";
53
- SelectableDatabase[SelectableDatabase["UNUSED_4"] = 5] = "UNUSED_4";
54
- SelectableDatabase[SelectableDatabase["UNUSED_5"] = 6] = "UNUSED_5";
55
- SelectableDatabase[SelectableDatabase["UNUSED_6"] = 7] = "UNUSED_6";
56
- SelectableDatabase[SelectableDatabase["UNUSED_7"] = 8] = "UNUSED_7";
57
- SelectableDatabase[SelectableDatabase["UNUSED_8"] = 9] = "UNUSED_8";
58
- SelectableDatabase[SelectableDatabase["UNUSED_9"] = 10] = "UNUSED_9";
59
- SelectableDatabase[SelectableDatabase["UNUSED_10"] = 11] = "UNUSED_10";
60
- SelectableDatabase[SelectableDatabase["UNUSED_11"] = 12] = "UNUSED_11";
61
- SelectableDatabase[SelectableDatabase["UNUSED_12"] = 13] = "UNUSED_12";
62
- SelectableDatabase[SelectableDatabase["UNUSED_13"] = 14] = "UNUSED_13";
63
- SelectableDatabase[SelectableDatabase["UNUSED_14"] = 15] = "UNUSED_14";
64
- })(SelectableDatabase = exports.SelectableDatabase || (exports.SelectableDatabase = {}));
65
- function getRedisOptions() {
66
- let password = environment_1.default.REDIS_PASSWORD;
67
- let url = environment_1.default.REDIS_URL.split("//");
68
- // get rid of the protocol
69
- url = url.length > 1 ? url[1] : url[0];
70
- // check for a password etc
71
- url = url.split("@");
72
- if (url.length > 1) {
73
- // get the password
74
- password = url[0].split(":")[1];
75
- url = url[1];
76
- }
77
- else {
78
- url = url[0];
79
- }
80
- const [host, port] = url.split(":");
81
- let redisProtocolUrl;
82
- // fully qualified redis URL
83
- if (/rediss?:\/\//.test(environment_1.default.REDIS_URL)) {
84
- redisProtocolUrl = environment_1.default.REDIS_URL;
85
- }
86
- const opts = {
87
- connectTimeout: CONNECT_TIMEOUT_MS,
88
- };
89
- if (environment_1.default.REDIS_CLUSTERED) {
90
- opts.redisOptions = {};
91
- opts.redisOptions.tls = {};
92
- opts.redisOptions.password = password;
93
- opts.slotsRefreshTimeout = SLOT_REFRESH_MS;
94
- opts.dnsLookup = (address, callback) => callback(null, address);
95
- }
96
- else {
97
- opts.host = host;
98
- opts.port = port;
99
- opts.password = password;
100
- }
101
- return { opts, host, port: parseInt(port), redisProtocolUrl };
102
- }
103
- exports.getRedisOptions = getRedisOptions;
104
- function addDbPrefix(db, key) {
105
- if (key.includes(db)) {
106
- return key;
107
- }
108
- return `${db}${exports.SEPARATOR}${key}`;
109
- }
110
- exports.addDbPrefix = addDbPrefix;
111
- function removeDbPrefix(key) {
112
- let parts = key.split(exports.SEPARATOR);
113
- if (parts.length >= 2) {
114
- parts.shift();
115
- return parts.join(exports.SEPARATOR);
116
- }
117
- else {
118
- // return the only part
119
- return parts[0];
120
- }
121
- }
122
- exports.removeDbPrefix = removeDbPrefix;
123
- //# sourceMappingURL=utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/redis/utils.ts"],"names":[],"mappings":"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"}
@@ -1,163 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.decryptFile = exports.encryptFile = exports.decrypt = exports.encrypt = exports.getSecret = exports.SecretOption = void 0;
16
- const crypto_1 = __importDefault(require("crypto"));
17
- const fs_1 = __importDefault(require("fs"));
18
- const zlib_1 = __importDefault(require("zlib"));
19
- const environment_1 = __importDefault(require("../environment"));
20
- const path_1 = require("path");
21
- const ALGO = "aes-256-ctr";
22
- const SEPARATOR = "-";
23
- const ITERATIONS = 10000;
24
- const STRETCH_LENGTH = 32;
25
- const SALT_LENGTH = 16;
26
- const IV_LENGTH = 16;
27
- var SecretOption;
28
- (function (SecretOption) {
29
- SecretOption["API"] = "api";
30
- SecretOption["ENCRYPTION"] = "encryption";
31
- })(SecretOption = exports.SecretOption || (exports.SecretOption = {}));
32
- function getSecret(secretOption) {
33
- let secret, secretName;
34
- switch (secretOption) {
35
- case SecretOption.ENCRYPTION:
36
- secret = environment_1.default.ENCRYPTION_KEY;
37
- secretName = "ENCRYPTION_KEY";
38
- break;
39
- case SecretOption.API:
40
- default:
41
- secret = environment_1.default.API_ENCRYPTION_KEY;
42
- secretName = "API_ENCRYPTION_KEY";
43
- break;
44
- }
45
- if (!secret) {
46
- throw new Error(`Secret "${secretName}" has not been set in environment.`);
47
- }
48
- return secret;
49
- }
50
- exports.getSecret = getSecret;
51
- function stretchString(secret, salt) {
52
- return crypto_1.default.pbkdf2Sync(secret, salt, ITERATIONS, STRETCH_LENGTH, "sha512");
53
- }
54
- function encrypt(input, secretOption = SecretOption.API) {
55
- const salt = crypto_1.default.randomBytes(SALT_LENGTH);
56
- const stretched = stretchString(getSecret(secretOption), salt);
57
- const cipher = crypto_1.default.createCipheriv(ALGO, stretched, salt);
58
- const base = cipher.update(input);
59
- const final = cipher.final();
60
- const encrypted = Buffer.concat([base, final]).toString("hex");
61
- return `${salt.toString("hex")}${SEPARATOR}${encrypted}`;
62
- }
63
- exports.encrypt = encrypt;
64
- function decrypt(input, secretOption = SecretOption.API) {
65
- const [salt, encrypted] = input.split(SEPARATOR);
66
- const saltBuffer = Buffer.from(salt, "hex");
67
- const stretched = stretchString(getSecret(secretOption), saltBuffer);
68
- const decipher = crypto_1.default.createDecipheriv(ALGO, stretched, saltBuffer);
69
- const base = decipher.update(Buffer.from(encrypted, "hex"));
70
- const final = decipher.final();
71
- return Buffer.concat([base, final]).toString();
72
- }
73
- exports.decrypt = decrypt;
74
- function encryptFile({ dir, filename }, secret) {
75
- return __awaiter(this, void 0, void 0, function* () {
76
- const outputFileName = `${filename}.enc`;
77
- const filePath = (0, path_1.join)(dir, filename);
78
- const inputFile = fs_1.default.createReadStream(filePath);
79
- const outputFile = fs_1.default.createWriteStream((0, path_1.join)(dir, outputFileName));
80
- const salt = crypto_1.default.randomBytes(SALT_LENGTH);
81
- const iv = crypto_1.default.randomBytes(IV_LENGTH);
82
- const stretched = stretchString(secret, salt);
83
- const cipher = crypto_1.default.createCipheriv(ALGO, stretched, iv);
84
- outputFile.write(salt);
85
- outputFile.write(iv);
86
- inputFile.pipe(zlib_1.default.createGzip()).pipe(cipher).pipe(outputFile);
87
- return new Promise(r => {
88
- outputFile.on("finish", () => {
89
- r({
90
- filename: outputFileName,
91
- dir,
92
- });
93
- });
94
- });
95
- });
96
- }
97
- exports.encryptFile = encryptFile;
98
- function getSaltAndIV(path) {
99
- return __awaiter(this, void 0, void 0, function* () {
100
- const fileStream = fs_1.default.createReadStream(path);
101
- const salt = yield readBytes(fileStream, SALT_LENGTH);
102
- const iv = yield readBytes(fileStream, IV_LENGTH);
103
- fileStream.close();
104
- return { salt, iv };
105
- });
106
- }
107
- function decryptFile(inputPath, outputPath, secret) {
108
- return __awaiter(this, void 0, void 0, function* () {
109
- const { salt, iv } = yield getSaltAndIV(inputPath);
110
- const inputFile = fs_1.default.createReadStream(inputPath, {
111
- start: SALT_LENGTH + IV_LENGTH,
112
- });
113
- const outputFile = fs_1.default.createWriteStream(outputPath);
114
- const stretched = stretchString(secret, salt);
115
- const decipher = crypto_1.default.createDecipheriv(ALGO, stretched, iv);
116
- const unzip = zlib_1.default.createGunzip();
117
- inputFile.pipe(decipher).pipe(unzip).pipe(outputFile);
118
- return new Promise((res, rej) => {
119
- outputFile.on("finish", () => {
120
- outputFile.close();
121
- res();
122
- });
123
- inputFile.on("error", e => {
124
- outputFile.close();
125
- rej(e);
126
- });
127
- decipher.on("error", e => {
128
- outputFile.close();
129
- rej(e);
130
- });
131
- unzip.on("error", e => {
132
- outputFile.close();
133
- rej(e);
134
- });
135
- outputFile.on("error", e => {
136
- outputFile.close();
137
- rej(e);
138
- });
139
- });
140
- });
141
- }
142
- exports.decryptFile = decryptFile;
143
- function readBytes(stream, length) {
144
- return new Promise((resolve, reject) => {
145
- let bytesRead = 0;
146
- const data = [];
147
- stream.on("readable", () => {
148
- let chunk;
149
- while ((chunk = stream.read(length - bytesRead)) !== null) {
150
- data.push(chunk);
151
- bytesRead += chunk.length;
152
- }
153
- resolve(Buffer.concat(data));
154
- });
155
- stream.on("end", () => {
156
- reject(new Error("Insufficient data in the stream."));
157
- });
158
- stream.on("error", error => {
159
- reject(error);
160
- });
161
- });
162
- }
163
- //# sourceMappingURL=encryption.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"encryption.js","sourceRoot":"","sources":["../../../src/security/encryption.ts"],"names":[],"mappings":"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"}
@@ -1,151 +0,0 @@
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.GLOBAL_BUILDER = exports.BUILDER = exports.isPermissionLevelHigherThanRead = exports.doesHaveBasePermission = exports.getBuiltinPermissionByID = exports.getBuiltinPermissions = exports.BUILTIN_PERMISSIONS = exports.BuiltinPermissionID = exports.getAllowedLevels = exports.levelToNumber = exports.Permission = exports.PermissionLevel = exports.PermissionType = void 0;
7
- const types_1 = require("@budibase/types");
8
- var types_2 = require("@budibase/types");
9
- Object.defineProperty(exports, "PermissionType", { enumerable: true, get: function () { return types_2.PermissionType; } });
10
- Object.defineProperty(exports, "PermissionLevel", { enumerable: true, get: function () { return types_2.PermissionLevel; } });
11
- const flatten_1 = __importDefault(require("lodash/flatten"));
12
- const cloneDeep_1 = __importDefault(require("lodash/fp/cloneDeep"));
13
- class Permission {
14
- constructor(type, level) {
15
- this.type = type;
16
- this.level = level;
17
- }
18
- }
19
- exports.Permission = Permission;
20
- function levelToNumber(perm) {
21
- switch (perm) {
22
- // not everything has execute privileges
23
- case types_1.PermissionLevel.EXECUTE:
24
- return 0;
25
- case types_1.PermissionLevel.READ:
26
- return 1;
27
- case types_1.PermissionLevel.WRITE:
28
- return 2;
29
- case types_1.PermissionLevel.ADMIN:
30
- return 3;
31
- default:
32
- return -1;
33
- }
34
- }
35
- exports.levelToNumber = levelToNumber;
36
- /**
37
- * Given the specified permission level for the user return the levels they are allowed to carry out.
38
- * @param {string} userPermLevel The permission level of the user.
39
- * @return {string[]} All the permission levels this user is allowed to carry out.
40
- */
41
- function getAllowedLevels(userPermLevel) {
42
- switch (userPermLevel) {
43
- case types_1.PermissionLevel.EXECUTE:
44
- return [types_1.PermissionLevel.EXECUTE];
45
- case types_1.PermissionLevel.READ:
46
- return [types_1.PermissionLevel.EXECUTE, types_1.PermissionLevel.READ];
47
- case types_1.PermissionLevel.WRITE:
48
- case types_1.PermissionLevel.ADMIN:
49
- return [
50
- types_1.PermissionLevel.EXECUTE,
51
- types_1.PermissionLevel.READ,
52
- types_1.PermissionLevel.WRITE,
53
- ];
54
- default:
55
- return [];
56
- }
57
- }
58
- exports.getAllowedLevels = getAllowedLevels;
59
- var BuiltinPermissionID;
60
- (function (BuiltinPermissionID) {
61
- BuiltinPermissionID["PUBLIC"] = "public";
62
- BuiltinPermissionID["READ_ONLY"] = "read_only";
63
- BuiltinPermissionID["WRITE"] = "write";
64
- BuiltinPermissionID["ADMIN"] = "admin";
65
- BuiltinPermissionID["POWER"] = "power";
66
- })(BuiltinPermissionID = exports.BuiltinPermissionID || (exports.BuiltinPermissionID = {}));
67
- exports.BUILTIN_PERMISSIONS = {
68
- PUBLIC: {
69
- _id: BuiltinPermissionID.PUBLIC,
70
- name: "Public",
71
- permissions: [
72
- new Permission(types_1.PermissionType.WEBHOOK, types_1.PermissionLevel.EXECUTE),
73
- ],
74
- },
75
- READ_ONLY: {
76
- _id: BuiltinPermissionID.READ_ONLY,
77
- name: "Read only",
78
- permissions: [
79
- new Permission(types_1.PermissionType.QUERY, types_1.PermissionLevel.READ),
80
- new Permission(types_1.PermissionType.TABLE, types_1.PermissionLevel.READ),
81
- new Permission(types_1.PermissionType.VIEW, types_1.PermissionLevel.READ),
82
- ],
83
- },
84
- WRITE: {
85
- _id: BuiltinPermissionID.WRITE,
86
- name: "Read/Write",
87
- permissions: [
88
- new Permission(types_1.PermissionType.QUERY, types_1.PermissionLevel.WRITE),
89
- new Permission(types_1.PermissionType.TABLE, types_1.PermissionLevel.WRITE),
90
- new Permission(types_1.PermissionType.VIEW, types_1.PermissionLevel.READ),
91
- new Permission(types_1.PermissionType.AUTOMATION, types_1.PermissionLevel.EXECUTE),
92
- ],
93
- },
94
- POWER: {
95
- _id: BuiltinPermissionID.POWER,
96
- name: "Power",
97
- permissions: [
98
- new Permission(types_1.PermissionType.TABLE, types_1.PermissionLevel.WRITE),
99
- new Permission(types_1.PermissionType.USER, types_1.PermissionLevel.READ),
100
- new Permission(types_1.PermissionType.AUTOMATION, types_1.PermissionLevel.EXECUTE),
101
- new Permission(types_1.PermissionType.VIEW, types_1.PermissionLevel.READ),
102
- new Permission(types_1.PermissionType.WEBHOOK, types_1.PermissionLevel.READ),
103
- ],
104
- },
105
- ADMIN: {
106
- _id: BuiltinPermissionID.ADMIN,
107
- name: "Admin",
108
- permissions: [
109
- new Permission(types_1.PermissionType.TABLE, types_1.PermissionLevel.ADMIN),
110
- new Permission(types_1.PermissionType.USER, types_1.PermissionLevel.ADMIN),
111
- new Permission(types_1.PermissionType.AUTOMATION, types_1.PermissionLevel.ADMIN),
112
- new Permission(types_1.PermissionType.VIEW, types_1.PermissionLevel.ADMIN),
113
- new Permission(types_1.PermissionType.WEBHOOK, types_1.PermissionLevel.READ),
114
- new Permission(types_1.PermissionType.QUERY, types_1.PermissionLevel.ADMIN),
115
- ],
116
- },
117
- };
118
- function getBuiltinPermissions() {
119
- return (0, cloneDeep_1.default)(exports.BUILTIN_PERMISSIONS);
120
- }
121
- exports.getBuiltinPermissions = getBuiltinPermissions;
122
- function getBuiltinPermissionByID(id) {
123
- const perms = Object.values(exports.BUILTIN_PERMISSIONS);
124
- return perms.find(perm => perm._id === id);
125
- }
126
- exports.getBuiltinPermissionByID = getBuiltinPermissionByID;
127
- function doesHaveBasePermission(permType, permLevel, rolesHierarchy) {
128
- const basePermissions = [
129
- ...new Set(rolesHierarchy.map(role => role.permissionId)),
130
- ];
131
- const builtins = Object.values(exports.BUILTIN_PERMISSIONS);
132
- let permissions = (0, flatten_1.default)(builtins
133
- .filter(builtin => basePermissions.indexOf(builtin._id) !== -1)
134
- .map(builtin => builtin.permissions));
135
- for (let permission of permissions) {
136
- if (permission.type === permType &&
137
- getAllowedLevels(permission.level).indexOf(permLevel) !== -1) {
138
- return true;
139
- }
140
- }
141
- return false;
142
- }
143
- exports.doesHaveBasePermission = doesHaveBasePermission;
144
- function isPermissionLevelHigherThanRead(level) {
145
- return levelToNumber(level) > 1;
146
- }
147
- exports.isPermissionLevelHigherThanRead = isPermissionLevelHigherThanRead;
148
- // utility as a lot of things need simply the builder permission
149
- exports.BUILDER = types_1.PermissionType.BUILDER;
150
- exports.GLOBAL_BUILDER = types_1.PermissionType.GLOBAL_BUILDER;
151
- //# sourceMappingURL=permissions.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"permissions.js","sourceRoot":"","sources":["../../../src/security/permissions.ts"],"names":[],"mappings":"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"}