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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (494) hide show
  1. package/dist/index.js +3027 -3025
  2. package/dist/index.js.map +4 -4
  3. package/dist/index.js.meta.json +1 -1
  4. package/dist/package.json +5 -5
  5. package/dist/plugins.js +1 -1
  6. package/dist/plugins.js.map +2 -2
  7. package/dist/plugins.js.meta.json +1 -1
  8. package/dist/src/accounts/accounts.js +100 -0
  9. package/dist/src/accounts/accounts.js.map +7 -0
  10. package/dist/src/accounts/api.js +78 -0
  11. package/dist/src/accounts/api.js.map +7 -0
  12. package/dist/src/accounts/index.js +23 -0
  13. package/dist/src/accounts/index.js.map +7 -0
  14. package/dist/src/auth/auth.js +208 -0
  15. package/dist/src/auth/auth.js.map +7 -0
  16. package/dist/src/auth/index.js +23 -0
  17. package/dist/src/auth/index.js.map +7 -0
  18. package/dist/src/auth/tests/auth.spec.js +37 -0
  19. package/dist/src/auth/tests/auth.spec.js.map +7 -0
  20. package/dist/src/blacklist/blacklist.js +88 -0
  21. package/dist/src/blacklist/blacklist.js.map +7 -0
  22. package/dist/src/blacklist/index.js +23 -0
  23. package/dist/src/blacklist/index.js.map +7 -0
  24. package/dist/src/blacklist/tests/blacklist.spec.js +61 -0
  25. package/dist/src/blacklist/tests/blacklist.spec.js.map +7 -0
  26. package/dist/src/cache/appMetadata.js +86 -0
  27. package/dist/src/cache/appMetadata.js.map +7 -0
  28. package/dist/src/cache/base/index.js +102 -0
  29. package/dist/src/cache/base/index.js.map +7 -0
  30. package/dist/src/cache/generic.js +69 -0
  31. package/dist/src/cache/generic.js.map +7 -0
  32. package/dist/src/cache/index.js +51 -0
  33. package/dist/src/cache/index.js.map +7 -0
  34. package/dist/src/cache/tests/writethrough.spec.js +132 -0
  35. package/dist/src/cache/tests/writethrough.spec.js.map +7 -0
  36. package/dist/src/cache/user.js +99 -0
  37. package/dist/src/cache/user.js.map +7 -0
  38. package/dist/src/cache/writethrough.js +144 -0
  39. package/dist/src/cache/writethrough.js.map +7 -0
  40. package/dist/src/configs/configs.js +228 -0
  41. package/dist/src/configs/configs.js.map +7 -0
  42. package/dist/src/configs/index.js +23 -0
  43. package/dist/src/configs/index.js.map +7 -0
  44. package/dist/src/configs/tests/configs.spec.js +182 -0
  45. package/dist/src/configs/tests/configs.spec.js.map +7 -0
  46. package/dist/src/constants/db.js +107 -0
  47. package/dist/src/constants/db.js.map +7 -0
  48. package/dist/src/constants/index.js +25 -0
  49. package/dist/src/constants/index.js.map +7 -0
  50. package/dist/src/constants/misc.js +92 -0
  51. package/dist/src/constants/misc.js.map +7 -0
  52. package/dist/src/context/Context.js +36 -0
  53. package/dist/src/context/Context.js.map +7 -0
  54. package/dist/src/context/identity.js +87 -0
  55. package/dist/src/context/identity.js.map +7 -0
  56. package/dist/src/context/index.js +45 -0
  57. package/dist/src/context/index.js.map +7 -0
  58. package/dist/src/context/mainContext.js +320 -0
  59. package/dist/src/context/mainContext.js.map +7 -0
  60. package/dist/src/context/tests/index.spec.js +147 -0
  61. package/dist/src/context/tests/index.spec.js.map +7 -0
  62. package/dist/src/context/types.js +17 -0
  63. package/dist/src/context/types.js.map +7 -0
  64. package/dist/src/db/Replication.js +89 -0
  65. package/dist/src/db/Replication.js.map +7 -0
  66. package/dist/src/db/constants.js +39 -0
  67. package/dist/src/db/constants.js.map +7 -0
  68. package/dist/src/db/couch/DatabaseImpl.js +224 -0
  69. package/dist/src/db/couch/DatabaseImpl.js.map +7 -0
  70. package/dist/src/db/couch/connections.js +103 -0
  71. package/dist/src/db/couch/connections.js.map +7 -0
  72. package/dist/src/db/couch/index.js +44 -0
  73. package/dist/src/db/couch/index.js.map +7 -0
  74. package/dist/src/db/couch/pouchDB.js +118 -0
  75. package/dist/src/db/couch/pouchDB.js.map +7 -0
  76. package/dist/src/db/couch/pouchDump.js +2 -0
  77. package/dist/src/db/couch/pouchDump.js.map +7 -0
  78. package/dist/src/db/couch/utils.js +76 -0
  79. package/dist/src/db/couch/utils.js.map +7 -0
  80. package/dist/src/db/db.d.ts +1 -1
  81. package/dist/src/db/db.js +73 -0
  82. package/dist/src/db/db.js.map +7 -0
  83. package/dist/src/db/errors.js +43 -0
  84. package/dist/src/db/errors.js.map +7 -0
  85. package/dist/src/db/index.js +64 -0
  86. package/dist/src/db/index.js.map +7 -0
  87. package/dist/src/db/lucene.d.ts +2 -1
  88. package/dist/src/db/lucene.js +595 -0
  89. package/dist/src/db/lucene.js.map +7 -0
  90. package/dist/src/db/searchIndexes/index.js +23 -0
  91. package/dist/src/db/searchIndexes/index.js.map +7 -0
  92. package/dist/src/db/searchIndexes/searchIndexes.js +82 -0
  93. package/dist/src/db/searchIndexes/searchIndexes.js.map +7 -0
  94. package/dist/src/db/tests/index.spec.js +24 -0
  95. package/dist/src/db/tests/index.spec.js.map +7 -0
  96. package/dist/src/db/tests/lucene.spec.js +312 -0
  97. package/dist/src/db/tests/lucene.spec.js.map +7 -0
  98. package/dist/src/db/tests/pouch.spec.js +63 -0
  99. package/dist/src/db/tests/pouch.spec.js.map +7 -0
  100. package/dist/src/db/tests/utils.spec.js +50 -0
  101. package/dist/src/db/tests/utils.spec.js.map +7 -0
  102. package/dist/src/db/utils.d.ts +1 -1
  103. package/dist/src/db/utils.js +198 -0
  104. package/dist/src/db/utils.js.map +7 -0
  105. package/dist/src/db/views.js +223 -0
  106. package/dist/src/db/views.js.map +7 -0
  107. package/dist/src/docIds/conversions.js +83 -0
  108. package/dist/src/docIds/conversions.js.map +7 -0
  109. package/dist/src/docIds/ids.js +101 -0
  110. package/dist/src/docIds/ids.js.map +7 -0
  111. package/dist/src/docIds/index.js +25 -0
  112. package/dist/src/docIds/index.js.map +7 -0
  113. package/dist/src/docIds/newid.js +32 -0
  114. package/dist/src/docIds/newid.js.map +7 -0
  115. package/dist/src/docIds/params.js +136 -0
  116. package/dist/src/docIds/params.js.map +7 -0
  117. package/dist/src/docUpdates/index.js +61 -0
  118. package/dist/src/docUpdates/index.js.map +7 -0
  119. package/dist/src/environment.js +181 -0
  120. package/dist/src/environment.js.map +7 -0
  121. package/dist/src/errors/errors.js +126 -0
  122. package/dist/src/errors/errors.js.map +7 -0
  123. package/dist/src/errors/index.js +23 -0
  124. package/dist/src/errors/index.js.map +7 -0
  125. package/dist/src/events/analytics.js +42 -0
  126. package/dist/src/events/analytics.js.map +7 -0
  127. package/dist/src/events/asyncEvents/index.js +25 -0
  128. package/dist/src/events/asyncEvents/index.js.map +7 -0
  129. package/dist/src/events/asyncEvents/publisher.js +39 -0
  130. package/dist/src/events/asyncEvents/publisher.js.map +7 -0
  131. package/dist/src/events/asyncEvents/queue.js +42 -0
  132. package/dist/src/events/asyncEvents/queue.js.map +7 -0
  133. package/dist/src/events/backfill.js +172 -0
  134. package/dist/src/events/backfill.js.map +7 -0
  135. package/dist/src/events/documentId.js +51 -0
  136. package/dist/src/events/documentId.js.map +7 -0
  137. package/dist/src/events/events.js +63 -0
  138. package/dist/src/events/events.js.map +7 -0
  139. package/dist/src/events/identification.js +275 -0
  140. package/dist/src/events/identification.js.map +7 -0
  141. package/dist/src/events/index.js +62 -0
  142. package/dist/src/events/index.js.map +7 -0
  143. package/dist/src/events/processors/AnalyticsProcessor.js +76 -0
  144. package/dist/src/events/processors/AnalyticsProcessor.js.map +7 -0
  145. package/dist/src/events/processors/AuditLogsProcessor.js +97 -0
  146. package/dist/src/events/processors/AuditLogsProcessor.js.map +7 -0
  147. package/dist/src/events/processors/LoggingProcessor.js +58 -0
  148. package/dist/src/events/processors/LoggingProcessor.js.map +7 -0
  149. package/dist/src/events/processors/Processors.js +57 -0
  150. package/dist/src/events/processors/Processors.js.map +7 -0
  151. package/dist/src/events/processors/async/DocumentUpdateProcessor.js +53 -0
  152. package/dist/src/events/processors/async/DocumentUpdateProcessor.js.map +7 -0
  153. package/dist/src/events/processors/index.js +57 -0
  154. package/dist/src/events/processors/index.js.map +7 -0
  155. package/dist/src/events/processors/posthog/PosthogProcessor.js +126 -0
  156. package/dist/src/events/processors/posthog/PosthogProcessor.js.map +7 -0
  157. package/dist/src/events/processors/posthog/index.js +36 -0
  158. package/dist/src/events/processors/posthog/index.js.map +7 -0
  159. package/dist/src/events/processors/posthog/rateLimiting.js +105 -0
  160. package/dist/src/events/processors/posthog/rateLimiting.js.map +7 -0
  161. package/dist/src/events/processors/posthog/tests/PosthogProcessor.spec.js +154 -0
  162. package/dist/src/events/processors/posthog/tests/PosthogProcessor.spec.js.map +7 -0
  163. package/dist/src/events/processors/types.js +29 -0
  164. package/dist/src/events/processors/types.js.map +7 -0
  165. package/dist/src/events/publishers/account.js +49 -0
  166. package/dist/src/events/publishers/account.js.map +7 -0
  167. package/dist/src/events/publishers/app.js +145 -0
  168. package/dist/src/events/publishers/app.js.map +7 -0
  169. package/dist/src/events/publishers/auditLog.js +42 -0
  170. package/dist/src/events/publishers/auditLog.js.map +7 -0
  171. package/dist/src/events/publishers/auth.js +80 -0
  172. package/dist/src/events/publishers/auth.js.map +7 -0
  173. package/dist/src/events/publishers/automation.js +111 -0
  174. package/dist/src/events/publishers/automation.js.map +7 -0
  175. package/dist/src/events/publishers/backfill.js +92 -0
  176. package/dist/src/events/publishers/backfill.js.map +7 -0
  177. package/dist/src/events/publishers/backup.js +49 -0
  178. package/dist/src/events/publishers/backup.js.map +7 -0
  179. package/dist/src/events/publishers/datasource.js +59 -0
  180. package/dist/src/events/publishers/datasource.js.map +7 -0
  181. package/dist/src/events/publishers/email.js +38 -0
  182. package/dist/src/events/publishers/email.js.map +7 -0
  183. package/dist/src/events/publishers/environmentVariable.js +53 -0
  184. package/dist/src/events/publishers/environmentVariable.js.map +7 -0
  185. package/dist/src/events/publishers/group.js +105 -0
  186. package/dist/src/events/publishers/group.js.map +7 -0
  187. package/dist/src/events/publishers/index.js +108 -0
  188. package/dist/src/events/publishers/index.js.map +7 -0
  189. package/dist/src/events/publishers/installation.js +56 -0
  190. package/dist/src/events/publishers/installation.js.map +7 -0
  191. package/dist/src/events/publishers/layout.js +42 -0
  192. package/dist/src/events/publishers/layout.js.map +7 -0
  193. package/dist/src/events/publishers/license.js +78 -0
  194. package/dist/src/events/publishers/license.js.map +7 -0
  195. package/dist/src/events/publishers/org.js +53 -0
  196. package/dist/src/events/publishers/org.js.map +7 -0
  197. package/dist/src/events/publishers/plugin.js +61 -0
  198. package/dist/src/events/publishers/plugin.js.map +7 -0
  199. package/dist/src/events/publishers/query.js +85 -0
  200. package/dist/src/events/publishers/query.js.map +7 -0
  201. package/dist/src/events/publishers/role.js +71 -0
  202. package/dist/src/events/publishers/role.js.map +7 -0
  203. package/dist/src/events/publishers/rows.js +43 -0
  204. package/dist/src/events/publishers/rows.js.map +7 -0
  205. package/dist/src/events/publishers/screen.js +52 -0
  206. package/dist/src/events/publishers/screen.js.map +7 -0
  207. package/dist/src/events/publishers/serve.js +53 -0
  208. package/dist/src/events/publishers/serve.js.map +7 -0
  209. package/dist/src/events/publishers/table.js +79 -0
  210. package/dist/src/events/publishers/table.js.map +7 -0
  211. package/dist/src/events/publishers/user.js +191 -0
  212. package/dist/src/events/publishers/user.js.map +7 -0
  213. package/dist/src/events/publishers/view.js +102 -0
  214. package/dist/src/events/publishers/view.js.map +7 -0
  215. package/dist/src/{featureFlags → features}/index.d.ts +1 -0
  216. package/dist/src/features/index.js +105 -0
  217. package/dist/src/features/index.js.map +7 -0
  218. package/dist/src/features/installation.d.ts +1 -0
  219. package/dist/src/features/installation.js +42 -0
  220. package/dist/src/features/installation.js.map +7 -0
  221. package/dist/src/features/tests/featureFlags.spec.js +86 -0
  222. package/dist/src/features/tests/featureFlags.spec.js.map +7 -0
  223. package/dist/src/helpers.js +31 -0
  224. package/dist/src/helpers.js.map +7 -0
  225. package/dist/src/index.d.ts +2 -1
  226. package/dist/src/index.js +154 -0
  227. package/dist/src/index.js.map +7 -0
  228. package/dist/src/installation.js +139 -0
  229. package/dist/src/installation.js.map +7 -0
  230. package/dist/src/logging/alerts.js +49 -0
  231. package/dist/src/logging/alerts.js.map +7 -0
  232. package/dist/src/logging/correlation/correlation.js +41 -0
  233. package/dist/src/logging/correlation/correlation.js.map +7 -0
  234. package/dist/src/logging/correlation/index.js +23 -0
  235. package/dist/src/logging/correlation/index.js.map +7 -0
  236. package/dist/src/logging/correlation/middleware.js +37 -0
  237. package/dist/src/logging/correlation/middleware.js.map +7 -0
  238. package/dist/src/logging/index.js +48 -0
  239. package/dist/src/logging/index.js.map +7 -0
  240. package/dist/src/logging/pino/logger.js +197 -0
  241. package/dist/src/logging/pino/logger.js.map +7 -0
  242. package/dist/src/logging/pino/middleware.js +77 -0
  243. package/dist/src/logging/pino/middleware.js.map +7 -0
  244. package/dist/src/logging/system.js +110 -0
  245. package/dist/src/logging/system.js.map +7 -0
  246. package/dist/src/logging/tests/system.spec.js +59 -0
  247. package/dist/src/logging/tests/system.spec.js.map +7 -0
  248. package/dist/src/middleware/adminOnly.js +31 -0
  249. package/dist/src/middleware/adminOnly.js.map +7 -0
  250. package/dist/src/middleware/auditLog.js +27 -0
  251. package/dist/src/middleware/auditLog.js.map +7 -0
  252. package/dist/src/middleware/authenticated.js +178 -0
  253. package/dist/src/middleware/authenticated.js.map +7 -0
  254. package/dist/src/middleware/builderOnly.js +48 -0
  255. package/dist/src/middleware/builderOnly.js.map +7 -0
  256. package/dist/src/middleware/builderOrAdmin.js +48 -0
  257. package/dist/src/middleware/builderOrAdmin.js.map +7 -0
  258. package/dist/src/middleware/csrf.js +60 -0
  259. package/dist/src/middleware/csrf.js.map +7 -0
  260. package/dist/src/middleware/errorHandling.js +62 -0
  261. package/dist/src/middleware/errorHandling.js.map +7 -0
  262. package/dist/src/middleware/index.js +95 -0
  263. package/dist/src/middleware/index.js.map +7 -0
  264. package/dist/src/middleware/internalApi.js +39 -0
  265. package/dist/src/middleware/internalApi.js.map +7 -0
  266. package/dist/src/middleware/joi-validator.js +73 -0
  267. package/dist/src/middleware/joi-validator.js.map +7 -0
  268. package/dist/src/middleware/matchers.js +62 -0
  269. package/dist/src/middleware/matchers.js.map +7 -0
  270. package/dist/src/middleware/passport/datasource/google.js +103 -0
  271. package/dist/src/middleware/passport/datasource/google.js.map +7 -0
  272. package/dist/src/middleware/passport/local.js +73 -0
  273. package/dist/src/middleware/passport/local.js.map +7 -0
  274. package/dist/src/middleware/passport/sso/google.js +93 -0
  275. package/dist/src/middleware/passport/sso/google.js.map +7 -0
  276. package/dist/src/middleware/passport/sso/oidc.js +135 -0
  277. package/dist/src/middleware/passport/sso/oidc.js.map +7 -0
  278. package/dist/src/middleware/passport/sso/sso.js +149 -0
  279. package/dist/src/middleware/passport/sso/sso.js.map +7 -0
  280. package/dist/src/middleware/passport/sso/tests/google.spec.js +77 -0
  281. package/dist/src/middleware/passport/sso/tests/google.spec.js.map +7 -0
  282. package/dist/src/middleware/passport/sso/tests/oidc.spec.js +143 -0
  283. package/dist/src/middleware/passport/sso/tests/oidc.spec.js.map +7 -0
  284. package/dist/src/middleware/passport/sso/tests/sso.spec.js +167 -0
  285. package/dist/src/middleware/passport/sso/tests/sso.spec.js.map +7 -0
  286. package/dist/src/middleware/passport/utils.js +62 -0
  287. package/dist/src/middleware/passport/utils.js.map +7 -0
  288. package/dist/src/middleware/querystringToBody.js +45 -0
  289. package/dist/src/middleware/querystringToBody.js.map +7 -0
  290. package/dist/src/middleware/tenancy.js +46 -0
  291. package/dist/src/middleware/tenancy.js.map +7 -0
  292. package/dist/src/middleware/tests/builder.spec.js +169 -0
  293. package/dist/src/middleware/tests/builder.spec.js.map +7 -0
  294. package/dist/src/middleware/tests/matchers.spec.js +120 -0
  295. package/dist/src/middleware/tests/matchers.spec.js.map +7 -0
  296. package/dist/src/migrations/definitions.js +63 -0
  297. package/dist/src/migrations/definitions.js.map +7 -0
  298. package/dist/src/migrations/index.js +25 -0
  299. package/dist/src/migrations/index.js.map +7 -0
  300. package/dist/src/migrations/migrations.js +178 -0
  301. package/dist/src/migrations/migrations.js.map +7 -0
  302. package/dist/src/migrations/tests/migrations.spec.js +78 -0
  303. package/dist/src/migrations/tests/migrations.spec.js.map +7 -0
  304. package/dist/src/objectStore/buckets/app.js +65 -0
  305. package/dist/src/objectStore/buckets/app.js.map +7 -0
  306. package/dist/src/objectStore/buckets/global.js +63 -0
  307. package/dist/src/objectStore/buckets/global.js.map +7 -0
  308. package/dist/src/objectStore/buckets/index.js +27 -0
  309. package/dist/src/objectStore/buckets/index.js.map +7 -0
  310. package/dist/src/objectStore/buckets/plugins.js +101 -0
  311. package/dist/src/objectStore/buckets/plugins.js.map +7 -0
  312. package/dist/src/objectStore/buckets/tests/app.spec.js +171 -0
  313. package/dist/src/objectStore/buckets/tests/app.spec.js.map +7 -0
  314. package/dist/src/objectStore/buckets/tests/global.spec.js +87 -0
  315. package/dist/src/objectStore/buckets/tests/global.spec.js.map +7 -0
  316. package/dist/src/objectStore/buckets/tests/plugins.spec.js +123 -0
  317. package/dist/src/objectStore/buckets/tests/plugins.spec.js.map +7 -0
  318. package/dist/src/objectStore/cloudfront.js +74 -0
  319. package/dist/src/objectStore/cloudfront.js.map +7 -0
  320. package/dist/src/objectStore/index.js +27 -0
  321. package/dist/src/objectStore/index.js.map +7 -0
  322. package/dist/src/objectStore/objectStore.js +372 -0
  323. package/dist/src/objectStore/objectStore.js.map +7 -0
  324. package/dist/src/objectStore/utils.js +58 -0
  325. package/dist/src/objectStore/utils.js.map +7 -0
  326. package/dist/src/platform/index.js +45 -0
  327. package/dist/src/platform/index.js.map +7 -0
  328. package/dist/src/platform/platformDb.js +33 -0
  329. package/dist/src/platform/platformDb.js.map +7 -0
  330. package/dist/src/platform/tenants.js +123 -0
  331. package/dist/src/platform/tenants.js.map +7 -0
  332. package/dist/src/platform/tests/tenants.spec.js +46 -0
  333. package/dist/src/platform/tests/tenants.spec.js.map +7 -0
  334. package/dist/src/platform/users.js +104 -0
  335. package/dist/src/platform/users.js.map +7 -0
  336. package/dist/src/plugin/index.js +23 -0
  337. package/dist/src/plugin/index.js.map +7 -0
  338. package/dist/src/plugin/tests/validation.spec.js +97 -0
  339. package/dist/src/plugin/tests/validation.spec.js.map +7 -0
  340. package/dist/src/plugin/utils.js +153 -0
  341. package/dist/src/plugin/utils.js.map +7 -0
  342. package/dist/src/queue/constants.js +35 -0
  343. package/dist/src/queue/constants.js.map +7 -0
  344. package/dist/src/queue/inMemoryQueue.js +139 -0
  345. package/dist/src/queue/inMemoryQueue.js.map +7 -0
  346. package/dist/src/queue/index.js +25 -0
  347. package/dist/src/queue/index.js.map +7 -0
  348. package/dist/src/queue/listeners.js +177 -0
  349. package/dist/src/queue/listeners.js.map +7 -0
  350. package/dist/src/queue/queue.js +85 -0
  351. package/dist/src/queue/queue.js.map +7 -0
  352. package/dist/src/redis/index.js +48 -0
  353. package/dist/src/redis/index.js.map +7 -0
  354. package/dist/src/redis/init.js +128 -0
  355. package/dist/src/redis/init.js.map +7 -0
  356. package/dist/src/redis/redis.js +277 -0
  357. package/dist/src/redis/redis.js.map +7 -0
  358. package/dist/src/redis/redlockImpl.js +145 -0
  359. package/dist/src/redis/redlockImpl.js.map +7 -0
  360. package/dist/src/redis/utils.js +136 -0
  361. package/dist/src/redis/utils.js.map +7 -0
  362. package/dist/src/security/encryption.js +184 -0
  363. package/dist/src/security/encryption.js.map +7 -0
  364. package/dist/src/security/permissions.js +188 -0
  365. package/dist/src/security/permissions.js.map +7 -0
  366. package/dist/src/security/roles.d.ts +1 -12
  367. package/dist/src/security/roles.js +337 -0
  368. package/dist/src/security/roles.js.map +7 -0
  369. package/dist/src/security/sessions.js +135 -0
  370. package/dist/src/security/sessions.js.map +7 -0
  371. package/dist/src/security/tests/encryption.spec.js +51 -0
  372. package/dist/src/security/tests/encryption.spec.js.map +7 -0
  373. package/dist/src/security/tests/permissions.spec.js +154 -0
  374. package/dist/src/security/tests/permissions.spec.js.map +7 -0
  375. package/dist/src/security/tests/sessions.spec.js +33 -0
  376. package/dist/src/security/tests/sessions.spec.js.map +7 -0
  377. package/dist/src/tenancy/db.js +33 -0
  378. package/dist/src/tenancy/db.js.map +7 -0
  379. package/dist/src/tenancy/index.js +25 -0
  380. package/dist/src/tenancy/index.js.map +7 -0
  381. package/dist/src/tenancy/tenancy.js +129 -0
  382. package/dist/src/tenancy/tenancy.js.map +7 -0
  383. package/dist/src/tenancy/tests/tenancy.spec.js +154 -0
  384. package/dist/src/tenancy/tests/tenancy.spec.js.map +7 -0
  385. package/dist/src/timers/index.js +23 -0
  386. package/dist/src/timers/index.js.map +7 -0
  387. package/dist/src/timers/timers.js +51 -0
  388. package/dist/src/timers/timers.js.map +7 -0
  389. package/dist/src/users/db.d.ts +9 -1
  390. package/dist/src/users/db.js +381 -0
  391. package/dist/src/users/db.js.map +7 -0
  392. package/dist/src/users/events.js +152 -0
  393. package/dist/src/users/events.js.map +7 -0
  394. package/dist/src/users/index.js +36 -0
  395. package/dist/src/users/index.js.map +7 -0
  396. package/dist/src/users/lookup.js +110 -0
  397. package/dist/src/users/lookup.js.map +7 -0
  398. package/dist/src/users/users.js +257 -0
  399. package/dist/src/users/users.js.map +7 -0
  400. package/dist/src/users/utils.js +95 -0
  401. package/dist/src/users/utils.js.map +7 -0
  402. package/dist/src/utils/hashing.js +53 -0
  403. package/dist/src/utils/hashing.js.map +7 -0
  404. package/dist/src/utils/index.js +27 -0
  405. package/dist/src/utils/index.js.map +7 -0
  406. package/dist/src/utils/stringUtils.js +33 -0
  407. package/dist/src/utils/stringUtils.js.map +7 -0
  408. package/dist/src/utils/tests/utils.spec.js +165 -0
  409. package/dist/src/utils/tests/utils.spec.js.map +7 -0
  410. package/dist/src/utils/utils.js +207 -0
  411. package/dist/src/utils/utils.js.map +7 -0
  412. package/dist/tests/core/logging.js +57 -0
  413. package/dist/tests/core/logging.js.map +7 -0
  414. package/dist/tests/core/utilities/index.js +54 -0
  415. package/dist/tests/core/utilities/index.js.map +7 -0
  416. package/dist/tests/core/utilities/jestUtils.js +50 -0
  417. package/dist/tests/core/utilities/jestUtils.js.map +7 -0
  418. package/dist/tests/core/utilities/mocks/alerts.js +41 -0
  419. package/dist/tests/core/utilities/mocks/alerts.js.map +7 -0
  420. package/dist/tests/core/utilities/mocks/date.js +32 -0
  421. package/dist/tests/core/utilities/mocks/date.js.map +7 -0
  422. package/dist/tests/core/utilities/mocks/events.js +133 -0
  423. package/dist/tests/core/utilities/mocks/events.js.map +7 -0
  424. package/dist/tests/core/utilities/mocks/fetch.js +39 -0
  425. package/dist/tests/core/utilities/mocks/fetch.js.map +7 -0
  426. package/dist/tests/core/utilities/mocks/index.js +55 -0
  427. package/dist/tests/core/utilities/mocks/index.js.map +7 -0
  428. package/dist/tests/core/utilities/mocks/licenses.d.ts +2 -0
  429. package/dist/tests/core/utilities/mocks/licenses.js +145 -0
  430. package/dist/tests/core/utilities/mocks/licenses.js.map +7 -0
  431. package/dist/tests/core/utilities/mocks/posthog.js +9 -0
  432. package/dist/tests/core/utilities/mocks/posthog.js.map +7 -0
  433. package/dist/tests/core/utilities/structures/Chance.js +48 -0
  434. package/dist/tests/core/utilities/structures/Chance.js.map +7 -0
  435. package/dist/tests/core/utilities/structures/accounts.js +148 -0
  436. package/dist/tests/core/utilities/structures/accounts.js.map +7 -0
  437. package/dist/tests/core/utilities/structures/apps.js +47 -0
  438. package/dist/tests/core/utilities/structures/apps.js.map +7 -0
  439. package/dist/tests/core/utilities/structures/common.js +35 -0
  440. package/dist/tests/core/utilities/structures/common.js.map +7 -0
  441. package/dist/tests/core/utilities/structures/db.js +40 -0
  442. package/dist/tests/core/utilities/structures/db.js.map +7 -0
  443. package/dist/tests/core/utilities/structures/documents/index.js +23 -0
  444. package/dist/tests/core/utilities/structures/documents/index.js.map +7 -0
  445. package/dist/tests/core/utilities/structures/documents/platform/index.js +39 -0
  446. package/dist/tests/core/utilities/structures/documents/platform/index.js.map +7 -0
  447. package/dist/tests/core/utilities/structures/documents/platform/installation.js +48 -0
  448. package/dist/tests/core/utilities/structures/documents/platform/installation.js.map +7 -0
  449. package/dist/tests/core/utilities/structures/generator.js +40 -0
  450. package/dist/tests/core/utilities/structures/generator.js.map +7 -0
  451. package/dist/tests/core/utilities/structures/index.js +81 -0
  452. package/dist/tests/core/utilities/structures/index.js.map +7 -0
  453. package/dist/tests/core/utilities/structures/koa.js +42 -0
  454. package/dist/tests/core/utilities/structures/koa.js.map +7 -0
  455. package/dist/tests/core/utilities/structures/licenses.js +175 -0
  456. package/dist/tests/core/utilities/structures/licenses.js.map +7 -0
  457. package/dist/tests/core/utilities/structures/plugins.js +46 -0
  458. package/dist/tests/core/utilities/structures/plugins.js.map +7 -0
  459. package/dist/tests/core/utilities/structures/quotas.js +94 -0
  460. package/dist/tests/core/utilities/structures/quotas.js.map +7 -0
  461. package/dist/tests/core/utilities/structures/scim.js +90 -0
  462. package/dist/tests/core/utilities/structures/scim.js.map +7 -0
  463. package/dist/tests/core/utilities/structures/shared.js +46 -0
  464. package/dist/tests/core/utilities/structures/shared.js.map +7 -0
  465. package/dist/tests/core/utilities/structures/sso.js +144 -0
  466. package/dist/tests/core/utilities/structures/sso.js.map +7 -0
  467. package/dist/tests/core/utilities/structures/tenants.js +32 -0
  468. package/dist/tests/core/utilities/structures/tenants.js.map +7 -0
  469. package/dist/tests/core/utilities/structures/userGroups.js +36 -0
  470. package/dist/tests/core/utilities/structures/userGroups.js.map +7 -0
  471. package/dist/tests/core/utilities/structures/users.js +96 -0
  472. package/dist/tests/core/utilities/structures/users.js.map +7 -0
  473. package/dist/tests/core/utilities/testContainerUtils.js +100 -0
  474. package/dist/tests/core/utilities/testContainerUtils.js.map +7 -0
  475. package/dist/tests/core/utilities/utils/index.js +39 -0
  476. package/dist/tests/core/utilities/utils/index.js.map +7 -0
  477. package/dist/tests/core/utilities/utils/time.js +31 -0
  478. package/dist/tests/core/utilities/utils/time.js.map +7 -0
  479. package/dist/tests/extra/DBTestConfiguration.js +61 -0
  480. package/dist/tests/extra/DBTestConfiguration.js.map +7 -0
  481. package/dist/tests/extra/index.js +42 -0
  482. package/dist/tests/extra/index.js.map +7 -0
  483. package/dist/tests/extra/testEnv.js +106 -0
  484. package/dist/tests/extra/testEnv.js.map +7 -0
  485. package/dist/tests/index.js +23 -0
  486. package/dist/tests/index.js.map +7 -0
  487. package/dist/tests/jestEnv.js +8 -0
  488. package/dist/tests/jestEnv.js.map +7 -0
  489. package/dist/tests/jestSetup.js +41 -0
  490. package/dist/tests/jestSetup.js.map +7 -0
  491. package/package.json +5 -5
  492. package/dist/tests.js +0 -8476
  493. package/dist/tests.js.map +0 -7
  494. package/dist/tests.js.meta.json +0 -1
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/objectStore/buckets/tests/plugins.spec.ts"],
4
+ "sourcesContent": ["import * as plugins from \"../plugins\"\nimport { structures } from \"../../../../tests\"\nimport { testEnv } from \"../../../../tests/extra\"\n\ndescribe(\"plugins\", () => {\n describe(\"enrichPluginURLs\", () => {\n const plugin = structures.plugins.plugin()\n\n function getEnrichedPluginUrls() {\n const enriched = plugins.enrichPluginURLs([plugin])[0]\n return {\n jsUrl: enriched.jsUrl!,\n iconUrl: enriched.iconUrl!,\n }\n }\n\n describe(\"single tenant\", () => {\n beforeAll(() => {\n testEnv.singleTenant()\n })\n\n it(\"gets url with embedded minio\", () => {\n testEnv.withMinio()\n const urls = getEnrichedPluginUrls()\n expect(urls.jsUrl).toBe(\n `/files/signed/plugins/${plugin.name}/plugin.min.js`\n )\n expect(urls.iconUrl).toBe(\n `/files/signed/plugins/${plugin.name}/icon.svg`\n )\n })\n\n it(\"gets url with custom S3\", () => {\n testEnv.withS3()\n const urls = getEnrichedPluginUrls()\n expect(urls.jsUrl).toBe(\n `http://s3.example.com/plugins/${plugin.name}/plugin.min.js`\n )\n expect(urls.iconUrl).toBe(\n `http://s3.example.com/plugins/${plugin.name}/icon.svg`\n )\n })\n\n it(\"gets url with cloudfront + s3\", () => {\n testEnv.withCloudfront()\n const urls = getEnrichedPluginUrls()\n // omit rest of signed params\n expect(\n urls.jsUrl.includes(\n `http://cf.example.com/plugins/${plugin.name}/plugin.min.js?`\n )\n ).toBe(true)\n expect(\n urls.iconUrl.includes(\n `http://cf.example.com/plugins/${plugin.name}/icon.svg?`\n )\n ).toBe(true)\n })\n })\n\n describe(\"multi tenant\", () => {\n beforeAll(() => {\n testEnv.multiTenant()\n })\n\n it(\"gets url with embedded minio\", async () => {\n testEnv.withMinio()\n await testEnv.withTenant(tenantId => {\n const urls = getEnrichedPluginUrls()\n expect(urls.jsUrl).toBe(\n `/files/signed/plugins/${tenantId}/${plugin.name}/plugin.min.js`\n )\n expect(urls.iconUrl).toBe(\n `/files/signed/plugins/${tenantId}/${plugin.name}/icon.svg`\n )\n })\n })\n\n it(\"gets url with custom S3\", async () => {\n testEnv.withS3()\n await testEnv.withTenant(tenantId => {\n const urls = getEnrichedPluginUrls()\n expect(urls.jsUrl).toBe(\n `http://s3.example.com/plugins/${tenantId}/${plugin.name}/plugin.min.js`\n )\n expect(urls.iconUrl).toBe(\n `http://s3.example.com/plugins/${tenantId}/${plugin.name}/icon.svg`\n )\n })\n })\n\n it(\"gets url with cloudfront + s3\", async () => {\n testEnv.withCloudfront()\n await testEnv.withTenant(tenantId => {\n const urls = getEnrichedPluginUrls()\n // omit rest of signed params\n expect(\n urls.jsUrl.includes(\n `http://cf.example.com/plugins/${tenantId}/${plugin.name}/plugin.min.js?`\n )\n ).toBe(true)\n expect(\n urls.iconUrl.includes(\n `http://cf.example.com/plugins/${tenantId}/${plugin.name}/icon.svg?`\n )\n ).toBe(true)\n })\n })\n })\n })\n})\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;AAAA,cAAyB;AACzB,mBAA2B;AAC3B,mBAAwB;AAExB,SAAS,WAAW,MAAM;AACxB,WAAS,oBAAoB,MAAM;AACjC,UAAM,SAAS,wBAAW,QAAQ,OAAO;AAEzC,aAAS,wBAAwB;AAC/B,YAAM,WAAW,QAAQ,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC;AACrD,aAAO;AAAA,QACL,OAAO,SAAS;AAAA,QAChB,SAAS,SAAS;AAAA,MACpB;AAAA,IACF;AAEA,aAAS,iBAAiB,MAAM;AAC9B,gBAAU,MAAM;AACd,6BAAQ,aAAa;AAAA,MACvB,CAAC;AAED,SAAG,gCAAgC,MAAM;AACvC,6BAAQ,UAAU;AAClB,cAAM,OAAO,sBAAsB;AACnC,eAAO,KAAK,KAAK,EAAE;AAAA,UACjB,yBAAyB,OAAO,IAAI;AAAA,QACtC;AACA,eAAO,KAAK,OAAO,EAAE;AAAA,UACnB,yBAAyB,OAAO,IAAI;AAAA,QACtC;AAAA,MACF,CAAC;AAED,SAAG,2BAA2B,MAAM;AAClC,6BAAQ,OAAO;AACf,cAAM,OAAO,sBAAsB;AACnC,eAAO,KAAK,KAAK,EAAE;AAAA,UACjB,iCAAiC,OAAO,IAAI;AAAA,QAC9C;AACA,eAAO,KAAK,OAAO,EAAE;AAAA,UACnB,iCAAiC,OAAO,IAAI;AAAA,QAC9C;AAAA,MACF,CAAC;AAED,SAAG,iCAAiC,MAAM;AACxC,6BAAQ,eAAe;AACvB,cAAM,OAAO,sBAAsB;AAEnC;AAAA,UACE,KAAK,MAAM;AAAA,YACT,iCAAiC,OAAO,IAAI;AAAA,UAC9C;AAAA,QACF,EAAE,KAAK,IAAI;AACX;AAAA,UACE,KAAK,QAAQ;AAAA,YACX,iCAAiC,OAAO,IAAI;AAAA,UAC9C;AAAA,QACF,EAAE,KAAK,IAAI;AAAA,MACb,CAAC;AAAA,IACH,CAAC;AAED,aAAS,gBAAgB,MAAM;AAC7B,gBAAU,MAAM;AACd,6BAAQ,YAAY;AAAA,MACtB,CAAC;AAED,SAAG,gCAAgC,YAAY;AAC7C,6BAAQ,UAAU;AAClB,cAAM,qBAAQ,WAAW,cAAY;AACnC,gBAAM,OAAO,sBAAsB;AACnC,iBAAO,KAAK,KAAK,EAAE;AAAA,YACjB,yBAAyB,QAAQ,IAAI,OAAO,IAAI;AAAA,UAClD;AACA,iBAAO,KAAK,OAAO,EAAE;AAAA,YACnB,yBAAyB,QAAQ,IAAI,OAAO,IAAI;AAAA,UAClD;AAAA,QACF,CAAC;AAAA,MACH,CAAC;AAED,SAAG,2BAA2B,YAAY;AACxC,6BAAQ,OAAO;AACf,cAAM,qBAAQ,WAAW,cAAY;AACnC,gBAAM,OAAO,sBAAsB;AACnC,iBAAO,KAAK,KAAK,EAAE;AAAA,YACjB,iCAAiC,QAAQ,IAAI,OAAO,IAAI;AAAA,UAC1D;AACA,iBAAO,KAAK,OAAO,EAAE;AAAA,YACnB,iCAAiC,QAAQ,IAAI,OAAO,IAAI;AAAA,UAC1D;AAAA,QACF,CAAC;AAAA,MACH,CAAC;AAED,SAAG,iCAAiC,YAAY;AAC9C,6BAAQ,eAAe;AACvB,cAAM,qBAAQ,WAAW,cAAY;AACnC,gBAAM,OAAO,sBAAsB;AAEnC;AAAA,YACE,KAAK,MAAM;AAAA,cACT,iCAAiC,QAAQ,IAAI,OAAO,IAAI;AAAA,YAC1D;AAAA,UACF,EAAE,KAAK,IAAI;AACX;AAAA,YACE,KAAK,QAAQ;AAAA,cACX,iCAAiC,QAAQ,IAAI,OAAO,IAAI;AAAA,YAC1D;AAAA,UACF,EAAE,KAAK,IAAI;AAAA,QACb,CAAC;AAAA,MACH,CAAC;AAAA,IACH,CAAC;AAAA,EACH,CAAC;AACH,CAAC;",
6
+ "names": []
7
+ }
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var cloudfront_exports = {};
30
+ __export(cloudfront_exports, {
31
+ getPresignedUrl: () => getPresignedUrl,
32
+ getUrl: () => getUrl
33
+ });
34
+ module.exports = __toCommonJS(cloudfront_exports);
35
+ var import_environment = __toESM(require("../environment"));
36
+ const cfsign = require("aws-cloudfront-sign");
37
+ let PRIVATE_KEY;
38
+ function getPrivateKey() {
39
+ if (!import_environment.default.CLOUDFRONT_PRIVATE_KEY_64) {
40
+ throw new Error("CLOUDFRONT_PRIVATE_KEY_64 is not set");
41
+ }
42
+ if (PRIVATE_KEY) {
43
+ return PRIVATE_KEY;
44
+ }
45
+ PRIVATE_KEY = Buffer.from(import_environment.default.CLOUDFRONT_PRIVATE_KEY_64, "base64").toString(
46
+ "utf-8"
47
+ );
48
+ return PRIVATE_KEY;
49
+ }
50
+ const getCloudfrontSignParams = () => {
51
+ return {
52
+ keypairId: import_environment.default.CLOUDFRONT_PUBLIC_KEY_ID,
53
+ privateKeyString: getPrivateKey(),
54
+ expireTime: (/* @__PURE__ */ new Date()).getTime() + 1e3 * 60 * 60
55
+ // 1 hour
56
+ };
57
+ };
58
+ const getPresignedUrl = (s3Key) => {
59
+ const url = getUrl(s3Key);
60
+ return cfsign.getSignedUrl(url, getCloudfrontSignParams());
61
+ };
62
+ const getUrl = (s3Key) => {
63
+ let prefix = "/";
64
+ if (s3Key.startsWith("/")) {
65
+ prefix = "";
66
+ }
67
+ return `${import_environment.default.CLOUDFRONT_CDN}${prefix}${s3Key}`;
68
+ };
69
+ // Annotate the CommonJS export names for ESM import in node:
70
+ 0 && (module.exports = {
71
+ getPresignedUrl,
72
+ getUrl
73
+ });
74
+ //# sourceMappingURL=cloudfront.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/objectStore/cloudfront.ts"],
4
+ "sourcesContent": ["import env from \"../environment\"\nconst cfsign = require(\"aws-cloudfront-sign\")\n\nlet PRIVATE_KEY: string | undefined\n\nfunction getPrivateKey() {\n if (!env.CLOUDFRONT_PRIVATE_KEY_64) {\n throw new Error(\"CLOUDFRONT_PRIVATE_KEY_64 is not set\")\n }\n\n if (PRIVATE_KEY) {\n return PRIVATE_KEY\n }\n\n PRIVATE_KEY = Buffer.from(env.CLOUDFRONT_PRIVATE_KEY_64, \"base64\").toString(\n \"utf-8\"\n )\n\n return PRIVATE_KEY\n}\n\nconst getCloudfrontSignParams = () => {\n return {\n keypairId: env.CLOUDFRONT_PUBLIC_KEY_ID,\n privateKeyString: getPrivateKey(),\n expireTime: new Date().getTime() + 1000 * 60 * 60, // 1 hour\n }\n}\n\nexport const getPresignedUrl = (s3Key: string) => {\n const url = getUrl(s3Key)\n return cfsign.getSignedUrl(url, getCloudfrontSignParams())\n}\n\nexport const getUrl = (s3Key: string) => {\n let prefix = \"/\"\n if (s3Key.startsWith(\"/\")) {\n prefix = \"\"\n }\n return `${env.CLOUDFRONT_CDN}${prefix}${s3Key}`\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,yBAAgB;AAChB,MAAM,SAAS,QAAQ,qBAAqB;AAE5C,IAAI;AAEJ,SAAS,gBAAgB;AACvB,MAAI,CAAC,mBAAAA,QAAI,2BAA2B;AAClC,UAAM,IAAI,MAAM,sCAAsC;AAAA,EACxD;AAEA,MAAI,aAAa;AACf,WAAO;AAAA,EACT;AAEA,gBAAc,OAAO,KAAK,mBAAAA,QAAI,2BAA2B,QAAQ,EAAE;AAAA,IACjE;AAAA,EACF;AAEA,SAAO;AACT;AAEA,MAAM,0BAA0B,MAAM;AACpC,SAAO;AAAA,IACL,WAAW,mBAAAA,QAAI;AAAA,IACf,kBAAkB,cAAc;AAAA,IAChC,aAAY,oBAAI,KAAK,GAAE,QAAQ,IAAI,MAAO,KAAK;AAAA;AAAA,EACjD;AACF;AAEO,MAAM,kBAAkB,CAAC,UAAkB;AAChD,QAAM,MAAM,OAAO,KAAK;AACxB,SAAO,OAAO,aAAa,KAAK,wBAAwB,CAAC;AAC3D;AAEO,MAAM,SAAS,CAAC,UAAkB;AACvC,MAAI,SAAS;AACb,MAAI,MAAM,WAAW,GAAG,GAAG;AACzB,aAAS;AAAA,EACX;AACA,SAAO,GAAG,mBAAAA,QAAI,cAAc,GAAG,MAAM,GAAG,KAAK;AAC/C;",
6
+ "names": ["env"]
7
+ }
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __copyProps = (to, from, except, desc) => {
7
+ if (from && typeof from === "object" || typeof from === "function") {
8
+ for (let key of __getOwnPropNames(from))
9
+ if (!__hasOwnProp.call(to, key) && key !== except)
10
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
11
+ }
12
+ return to;
13
+ };
14
+ var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
15
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
16
+ var objectStore_exports = {};
17
+ module.exports = __toCommonJS(objectStore_exports);
18
+ __reExport(objectStore_exports, require("./objectStore"), module.exports);
19
+ __reExport(objectStore_exports, require("./utils"), module.exports);
20
+ __reExport(objectStore_exports, require("./buckets"), module.exports);
21
+ // Annotate the CommonJS export names for ESM import in node:
22
+ 0 && (module.exports = {
23
+ ...require("./objectStore"),
24
+ ...require("./utils"),
25
+ ...require("./buckets")
26
+ });
27
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/objectStore/index.ts"],
4
+ "sourcesContent": ["export * from \"./objectStore\"\nexport * from \"./utils\"\nexport * from \"./buckets\"\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;AAAA;AAAA;AAAA,gCAAc,0BAAd;AACA,gCAAc,oBADd;AAEA,gCAAc,sBAFd;",
6
+ "names": []
7
+ }
@@ -0,0 +1,372 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var objectStore_exports = {};
30
+ __export(objectStore_exports, {
31
+ ObjectStore: () => ObjectStore,
32
+ deleteFile: () => deleteFile,
33
+ deleteFiles: () => deleteFiles,
34
+ deleteFolder: () => deleteFolder,
35
+ downloadTarball: () => downloadTarball,
36
+ downloadTarballDirect: () => downloadTarballDirect,
37
+ getPresignedUrl: () => getPresignedUrl,
38
+ listAllObjects: () => listAllObjects,
39
+ makeSureBucketExists: () => makeSureBucketExists,
40
+ retrieve: () => retrieve,
41
+ retrieveDirectory: () => retrieveDirectory,
42
+ retrieveToTmp: () => retrieveToTmp,
43
+ sanitizeBucket: () => sanitizeBucket,
44
+ sanitizeKey: () => sanitizeKey,
45
+ streamUpload: () => streamUpload,
46
+ upload: () => upload,
47
+ uploadDirectory: () => uploadDirectory
48
+ });
49
+ module.exports = __toCommonJS(objectStore_exports);
50
+ var import_aws_sdk = __toESM(require("aws-sdk"));
51
+ var import_stream = __toESM(require("stream"));
52
+ var import_node_fetch = __toESM(require("node-fetch"));
53
+ var import_tar_fs = __toESM(require("tar-fs"));
54
+ var import_zlib = __toESM(require("zlib"));
55
+ var import_util = require("util");
56
+ var import_path = require("path");
57
+ var import_fs = __toESM(require("fs"));
58
+ var import_environment = __toESM(require("../environment"));
59
+ var import_utils = require("./utils");
60
+ var import_uuid = require("uuid");
61
+ var import_db = require("../db");
62
+ const sanitize = require("sanitize-s3-objectkey");
63
+ const streamPipeline = (0, import_util.promisify)(import_stream.default.pipeline);
64
+ const STATE = {
65
+ bucketCreationPromises: {}
66
+ };
67
+ const CONTENT_TYPE_MAP = {
68
+ txt: "text/plain",
69
+ html: "text/html",
70
+ css: "text/css",
71
+ js: "application/javascript",
72
+ json: "application/json",
73
+ gz: "application/gzip"
74
+ };
75
+ const STRING_CONTENT_TYPES = [
76
+ CONTENT_TYPE_MAP.html,
77
+ CONTENT_TYPE_MAP.css,
78
+ CONTENT_TYPE_MAP.js,
79
+ CONTENT_TYPE_MAP.json
80
+ ];
81
+ function sanitizeKey(input) {
82
+ return sanitize(sanitizeBucket(input)).replace(/\\/g, "/");
83
+ }
84
+ function sanitizeBucket(input) {
85
+ return input.replace(new RegExp(import_db.APP_DEV_PREFIX, "g"), import_db.APP_PREFIX);
86
+ }
87
+ const ObjectStore = (bucket, opts = { presigning: false }) => {
88
+ const config = {
89
+ s3ForcePathStyle: true,
90
+ signatureVersion: "v4",
91
+ apiVersion: "2006-03-01",
92
+ accessKeyId: import_environment.default.MINIO_ACCESS_KEY,
93
+ secretAccessKey: import_environment.default.MINIO_SECRET_KEY,
94
+ region: import_environment.default.AWS_REGION
95
+ };
96
+ if (bucket) {
97
+ config.params = {
98
+ Bucket: sanitizeBucket(bucket)
99
+ };
100
+ }
101
+ if (import_environment.default.MINIO_URL) {
102
+ if (opts.presigning && import_environment.default.MINIO_ENABLED) {
103
+ config.endpoint = "minio-service";
104
+ } else {
105
+ config.endpoint = import_environment.default.MINIO_URL;
106
+ }
107
+ }
108
+ return new import_aws_sdk.default.S3(config);
109
+ };
110
+ const makeSureBucketExists = async (client, bucketName) => {
111
+ bucketName = sanitizeBucket(bucketName);
112
+ try {
113
+ await client.headBucket({
114
+ Bucket: bucketName
115
+ }).promise();
116
+ } catch (err) {
117
+ const promises = STATE.bucketCreationPromises;
118
+ const doesntExist = err.statusCode === 404, noAccess = err.statusCode === 403;
119
+ if (promises[bucketName]) {
120
+ await promises[bucketName];
121
+ } else if (doesntExist || noAccess) {
122
+ if (doesntExist) {
123
+ promises[bucketName] = client.createBucket({
124
+ Bucket: bucketName
125
+ }).promise();
126
+ await promises[bucketName];
127
+ delete promises[bucketName];
128
+ }
129
+ } else {
130
+ throw new Error("Unable to write to object store bucket.");
131
+ }
132
+ }
133
+ };
134
+ const upload = async ({
135
+ bucket: bucketName,
136
+ filename,
137
+ path,
138
+ type,
139
+ metadata
140
+ }) => {
141
+ const extension = filename.split(".").pop();
142
+ const fileBytes = import_fs.default.readFileSync(path);
143
+ const objectStore = ObjectStore(bucketName);
144
+ await makeSureBucketExists(objectStore, bucketName);
145
+ let contentType = type;
146
+ if (!contentType) {
147
+ contentType = extension ? CONTENT_TYPE_MAP[extension.toLowerCase()] : CONTENT_TYPE_MAP.txt;
148
+ }
149
+ const config = {
150
+ // windows file paths need to be converted to forward slashes for s3
151
+ Key: sanitizeKey(filename),
152
+ Body: fileBytes,
153
+ ContentType: contentType
154
+ };
155
+ if (metadata && typeof metadata === "object") {
156
+ for (let key of Object.keys(metadata)) {
157
+ if (!metadata[key] || typeof metadata[key] !== "string") {
158
+ delete metadata[key];
159
+ }
160
+ }
161
+ config.Metadata = metadata;
162
+ }
163
+ return objectStore.upload(config).promise();
164
+ };
165
+ const streamUpload = async (bucketName, filename, stream2, extra = {}) => {
166
+ const objectStore = ObjectStore(bucketName);
167
+ await makeSureBucketExists(objectStore, bucketName);
168
+ if (filename?.endsWith(".js")) {
169
+ extra = {
170
+ ...extra,
171
+ ContentType: "application/javascript"
172
+ };
173
+ } else if (filename?.endsWith(".svg")) {
174
+ extra = {
175
+ ...extra,
176
+ ContentType: "image"
177
+ };
178
+ }
179
+ const params = {
180
+ Bucket: sanitizeBucket(bucketName),
181
+ Key: sanitizeKey(filename),
182
+ Body: stream2,
183
+ ...extra
184
+ };
185
+ return objectStore.upload(params).promise();
186
+ };
187
+ const retrieve = async (bucketName, filepath) => {
188
+ const objectStore = ObjectStore(bucketName);
189
+ const params = {
190
+ Bucket: sanitizeBucket(bucketName),
191
+ Key: sanitizeKey(filepath)
192
+ };
193
+ const response = await objectStore.getObject(params).promise();
194
+ if (STRING_CONTENT_TYPES.includes(response.ContentType)) {
195
+ return response.Body.toString("utf8");
196
+ } else {
197
+ return response.Body;
198
+ }
199
+ };
200
+ const listAllObjects = async (bucketName, path) => {
201
+ const objectStore = ObjectStore(bucketName);
202
+ const list = (params = {}) => {
203
+ return objectStore.listObjectsV2({
204
+ ...params,
205
+ Bucket: sanitizeBucket(bucketName),
206
+ Prefix: sanitizeKey(path)
207
+ }).promise();
208
+ };
209
+ let isTruncated = false, token, objects = [];
210
+ do {
211
+ let params = {};
212
+ if (token) {
213
+ params.ContinuationToken = token;
214
+ }
215
+ const response = await list(params);
216
+ if (response.Contents) {
217
+ objects = objects.concat(response.Contents);
218
+ }
219
+ isTruncated = !!response.IsTruncated;
220
+ } while (isTruncated);
221
+ return objects;
222
+ };
223
+ const getPresignedUrl = (bucketName, key, durationSeconds = 3600) => {
224
+ const objectStore = ObjectStore(bucketName, { presigning: true });
225
+ const params = {
226
+ Bucket: sanitizeBucket(bucketName),
227
+ Key: sanitizeKey(key),
228
+ Expires: durationSeconds
229
+ };
230
+ const url = objectStore.getSignedUrl("getObject", params);
231
+ if (!import_environment.default.MINIO_ENABLED) {
232
+ return url;
233
+ } else {
234
+ const signedUrl = new URL(url);
235
+ const path = signedUrl.pathname;
236
+ const query = signedUrl.search;
237
+ return `/files/signed${path}${query}`;
238
+ }
239
+ };
240
+ const retrieveToTmp = async (bucketName, filepath) => {
241
+ bucketName = sanitizeBucket(bucketName);
242
+ filepath = sanitizeKey(filepath);
243
+ const data = await retrieve(bucketName, filepath);
244
+ const outputPath = (0, import_path.join)((0, import_utils.budibaseTempDir)(), (0, import_uuid.v4)());
245
+ import_fs.default.writeFileSync(outputPath, data);
246
+ return outputPath;
247
+ };
248
+ const retrieveDirectory = async (bucketName, path) => {
249
+ let writePath = (0, import_path.join)((0, import_utils.budibaseTempDir)(), (0, import_uuid.v4)());
250
+ import_fs.default.mkdirSync(writePath);
251
+ const objects = await listAllObjects(bucketName, path);
252
+ let fullObjects = await Promise.all(
253
+ objects.map((obj) => retrieve(bucketName, obj.Key))
254
+ );
255
+ let count = 0;
256
+ for (let obj of objects) {
257
+ const filename = obj.Key;
258
+ const data = fullObjects[count++];
259
+ const possiblePath = filename.split("/");
260
+ if (possiblePath.length > 1) {
261
+ const dirs = possiblePath.slice(0, possiblePath.length - 1);
262
+ import_fs.default.mkdirSync((0, import_path.join)(writePath, ...dirs), { recursive: true });
263
+ }
264
+ import_fs.default.writeFileSync((0, import_path.join)(writePath, ...possiblePath), data);
265
+ }
266
+ return writePath;
267
+ };
268
+ const deleteFile = async (bucketName, filepath) => {
269
+ const objectStore = ObjectStore(bucketName);
270
+ await makeSureBucketExists(objectStore, bucketName);
271
+ const params = {
272
+ Bucket: bucketName,
273
+ Key: sanitizeKey(filepath)
274
+ };
275
+ return objectStore.deleteObject(params).promise();
276
+ };
277
+ const deleteFiles = async (bucketName, filepaths) => {
278
+ const objectStore = ObjectStore(bucketName);
279
+ await makeSureBucketExists(objectStore, bucketName);
280
+ const params = {
281
+ Bucket: bucketName,
282
+ Delete: {
283
+ Objects: filepaths.map((path) => ({ Key: sanitizeKey(path) }))
284
+ }
285
+ };
286
+ return objectStore.deleteObjects(params).promise();
287
+ };
288
+ const deleteFolder = async (bucketName, folder) => {
289
+ bucketName = sanitizeBucket(bucketName);
290
+ folder = sanitizeKey(folder);
291
+ const client = ObjectStore(bucketName);
292
+ const listParams = {
293
+ Bucket: bucketName,
294
+ Prefix: folder
295
+ };
296
+ const existingObjectsResponse = await client.listObjects(listParams).promise();
297
+ if (existingObjectsResponse.Contents?.length === 0) {
298
+ return;
299
+ }
300
+ const deleteParams = {
301
+ Bucket: bucketName,
302
+ Delete: {
303
+ Objects: []
304
+ }
305
+ };
306
+ existingObjectsResponse.Contents?.forEach((content) => {
307
+ deleteParams.Delete.Objects.push({ Key: content.Key });
308
+ });
309
+ const deleteResponse = await client.deleteObjects(deleteParams).promise();
310
+ if (deleteResponse.Deleted?.length === 1e3) {
311
+ return deleteFolder(bucketName, folder);
312
+ }
313
+ };
314
+ const uploadDirectory = async (bucketName, localPath, bucketPath) => {
315
+ bucketName = sanitizeBucket(bucketName);
316
+ let uploads = [];
317
+ const files = import_fs.default.readdirSync(localPath, { withFileTypes: true });
318
+ for (let file of files) {
319
+ const path = sanitizeKey((0, import_path.join)(bucketPath, file.name));
320
+ const local = (0, import_path.join)(localPath, file.name);
321
+ if (file.isDirectory()) {
322
+ uploads.push(uploadDirectory(bucketName, local, path));
323
+ } else {
324
+ uploads.push(streamUpload(bucketName, path, import_fs.default.createReadStream(local)));
325
+ }
326
+ }
327
+ await Promise.all(uploads);
328
+ return files;
329
+ };
330
+ const downloadTarballDirect = async (url, path, headers = {}) => {
331
+ path = sanitizeKey(path);
332
+ const response = await (0, import_node_fetch.default)(url, { headers });
333
+ if (!response.ok) {
334
+ throw new Error(`unexpected response ${response.statusText}`);
335
+ }
336
+ await streamPipeline(response.body, import_zlib.default.createUnzip(), import_tar_fs.default.extract(path));
337
+ };
338
+ const downloadTarball = async (url, bucketName, path) => {
339
+ bucketName = sanitizeBucket(bucketName);
340
+ path = sanitizeKey(path);
341
+ const response = await (0, import_node_fetch.default)(url);
342
+ if (!response.ok) {
343
+ throw new Error(`unexpected response ${response.statusText}`);
344
+ }
345
+ const tmpPath = (0, import_path.join)((0, import_utils.budibaseTempDir)(), path);
346
+ await streamPipeline(response.body, import_zlib.default.createUnzip(), import_tar_fs.default.extract(tmpPath));
347
+ if (!import_environment.default.isTest() && import_environment.default.SELF_HOSTED) {
348
+ await uploadDirectory(bucketName, tmpPath, path);
349
+ }
350
+ return tmpPath;
351
+ };
352
+ // Annotate the CommonJS export names for ESM import in node:
353
+ 0 && (module.exports = {
354
+ ObjectStore,
355
+ deleteFile,
356
+ deleteFiles,
357
+ deleteFolder,
358
+ downloadTarball,
359
+ downloadTarballDirect,
360
+ getPresignedUrl,
361
+ listAllObjects,
362
+ makeSureBucketExists,
363
+ retrieve,
364
+ retrieveDirectory,
365
+ retrieveToTmp,
366
+ sanitizeBucket,
367
+ sanitizeKey,
368
+ streamUpload,
369
+ upload,
370
+ uploadDirectory
371
+ });
372
+ //# sourceMappingURL=objectStore.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/objectStore/objectStore.ts"],
4
+ "sourcesContent": ["const sanitize = require(\"sanitize-s3-objectkey\")\nimport AWS from \"aws-sdk\"\nimport stream from \"stream\"\nimport fetch from \"node-fetch\"\nimport tar from \"tar-fs\"\nimport zlib from \"zlib\"\nimport { promisify } from \"util\"\nimport { join } from \"path\"\nimport fs from \"fs\"\nimport env from \"../environment\"\nimport { budibaseTempDir } from \"./utils\"\nimport { v4 } from \"uuid\"\nimport { APP_PREFIX, APP_DEV_PREFIX } from \"../db\"\n\nconst streamPipeline = promisify(stream.pipeline)\n// use this as a temporary store of buckets that are being created\nconst STATE = {\n bucketCreationPromises: {},\n}\n\ntype ListParams = {\n ContinuationToken?: string\n}\n\ntype UploadParams = {\n bucket: string\n filename: string\n path: string\n type?: string | null\n // can be undefined, we will remove it\n metadata?: {\n [key: string]: string | undefined\n }\n}\n\nconst CONTENT_TYPE_MAP: any = {\n txt: \"text/plain\",\n html: \"text/html\",\n css: \"text/css\",\n js: \"application/javascript\",\n json: \"application/json\",\n gz: \"application/gzip\",\n}\n\nconst STRING_CONTENT_TYPES = [\n CONTENT_TYPE_MAP.html,\n CONTENT_TYPE_MAP.css,\n CONTENT_TYPE_MAP.js,\n CONTENT_TYPE_MAP.json,\n]\n\n// does normal sanitization and then swaps dev apps to apps\nexport function sanitizeKey(input: string) {\n return sanitize(sanitizeBucket(input)).replace(/\\\\/g, \"/\")\n}\n\n// simply handles the dev app to app conversion\nexport function sanitizeBucket(input: string) {\n return input.replace(new RegExp(APP_DEV_PREFIX, \"g\"), APP_PREFIX)\n}\n\n/**\n * Gets a connection to the object store using the S3 SDK.\n * @param {string} bucket the name of the bucket which blobs will be uploaded/retrieved from.\n * @param {object} opts configuration for the object store.\n * @return {Object} an S3 object store object, check S3 Nodejs SDK for usage.\n * @constructor\n */\nexport const ObjectStore = (\n bucket: string,\n opts: { presigning: boolean } = { presigning: false }\n) => {\n const config: any = {\n s3ForcePathStyle: true,\n signatureVersion: \"v4\",\n apiVersion: \"2006-03-01\",\n accessKeyId: env.MINIO_ACCESS_KEY,\n secretAccessKey: env.MINIO_SECRET_KEY,\n region: env.AWS_REGION,\n }\n if (bucket) {\n config.params = {\n Bucket: sanitizeBucket(bucket),\n }\n }\n\n // custom S3 is in use i.e. minio\n if (env.MINIO_URL) {\n if (opts.presigning && env.MINIO_ENABLED) {\n // IMPORTANT: Signed urls will inspect the host header of the request.\n // Normally a signed url will need to be generated with a specified host in mind.\n // To support dynamic hosts, e.g. some unknown self-hosted installation url,\n // use a predefined host. The host 'minio-service' is also forwarded to minio requests via nginx\n config.endpoint = \"minio-service\"\n } else {\n config.endpoint = env.MINIO_URL\n }\n }\n\n return new AWS.S3(config)\n}\n\n/**\n * Given an object store and a bucket name this will make sure the bucket exists,\n * if it does not exist then it will create it.\n */\nexport const makeSureBucketExists = async (client: any, bucketName: string) => {\n bucketName = sanitizeBucket(bucketName)\n try {\n await client\n .headBucket({\n Bucket: bucketName,\n })\n .promise()\n } catch (err: any) {\n const promises: any = STATE.bucketCreationPromises\n const doesntExist = err.statusCode === 404,\n noAccess = err.statusCode === 403\n if (promises[bucketName]) {\n await promises[bucketName]\n } else if (doesntExist || noAccess) {\n if (doesntExist) {\n // bucket doesn't exist create it\n promises[bucketName] = client\n .createBucket({\n Bucket: bucketName,\n })\n .promise()\n await promises[bucketName]\n delete promises[bucketName]\n }\n } else {\n throw new Error(\"Unable to write to object store bucket.\")\n }\n }\n}\n\n/**\n * Uploads the contents of a file given the required parameters, useful when\n * temp files in use (for example file uploaded as an attachment).\n */\nexport const upload = async ({\n bucket: bucketName,\n filename,\n path,\n type,\n metadata,\n}: UploadParams) => {\n const extension = filename.split(\".\").pop()\n const fileBytes = fs.readFileSync(path)\n\n const objectStore = ObjectStore(bucketName)\n await makeSureBucketExists(objectStore, bucketName)\n\n let contentType = type\n if (!contentType) {\n contentType = extension\n ? CONTENT_TYPE_MAP[extension.toLowerCase()]\n : CONTENT_TYPE_MAP.txt\n }\n const config: any = {\n // windows file paths need to be converted to forward slashes for s3\n Key: sanitizeKey(filename),\n Body: fileBytes,\n ContentType: contentType,\n }\n if (metadata && typeof metadata === \"object\") {\n // remove any nullish keys from the metadata object, as these may be considered invalid\n for (let key of Object.keys(metadata)) {\n if (!metadata[key] || typeof metadata[key] !== \"string\") {\n delete metadata[key]\n }\n }\n config.Metadata = metadata\n }\n return objectStore.upload(config).promise()\n}\n\n/**\n * Similar to the upload function but can be used to send a file stream\n * through to the object store.\n */\nexport const streamUpload = async (\n bucketName: string,\n filename: string,\n stream: any,\n extra = {}\n) => {\n const objectStore = ObjectStore(bucketName)\n await makeSureBucketExists(objectStore, bucketName)\n\n // Set content type for certain known extensions\n if (filename?.endsWith(\".js\")) {\n extra = {\n ...extra,\n ContentType: \"application/javascript\",\n }\n } else if (filename?.endsWith(\".svg\")) {\n extra = {\n ...extra,\n ContentType: \"image\",\n }\n }\n\n const params = {\n Bucket: sanitizeBucket(bucketName),\n Key: sanitizeKey(filename),\n Body: stream,\n ...extra,\n }\n return objectStore.upload(params).promise()\n}\n\n/**\n * retrieves the contents of a file from the object store, if it is a known content type it\n * will be converted, otherwise it will be returned as a buffer stream.\n */\nexport const retrieve = async (bucketName: string, filepath: string) => {\n const objectStore = ObjectStore(bucketName)\n const params = {\n Bucket: sanitizeBucket(bucketName),\n Key: sanitizeKey(filepath),\n }\n const response: any = await objectStore.getObject(params).promise()\n // currently these are all strings\n if (STRING_CONTENT_TYPES.includes(response.ContentType)) {\n return response.Body.toString(\"utf8\")\n } else {\n return response.Body\n }\n}\n\nexport const listAllObjects = async (bucketName: string, path: string) => {\n const objectStore = ObjectStore(bucketName)\n const list = (params: ListParams = {}) => {\n return objectStore\n .listObjectsV2({\n ...params,\n Bucket: sanitizeBucket(bucketName),\n Prefix: sanitizeKey(path),\n })\n .promise()\n }\n let isTruncated = false,\n token,\n objects: AWS.S3.Types.Object[] = []\n do {\n let params: ListParams = {}\n if (token) {\n params.ContinuationToken = token\n }\n const response = await list(params)\n if (response.Contents) {\n objects = objects.concat(response.Contents)\n }\n isTruncated = !!response.IsTruncated\n } while (isTruncated)\n return objects\n}\n\n/**\n * Generate a presigned url with a default TTL of 1 hour\n */\nexport const getPresignedUrl = (\n bucketName: string,\n key: string,\n durationSeconds: number = 3600\n) => {\n const objectStore = ObjectStore(bucketName, { presigning: true })\n const params = {\n Bucket: sanitizeBucket(bucketName),\n Key: sanitizeKey(key),\n Expires: durationSeconds,\n }\n const url = objectStore.getSignedUrl(\"getObject\", params)\n\n if (!env.MINIO_ENABLED) {\n // return the full URL to the client\n return url\n } else {\n // return the path only to the client\n // use the presigned url route to ensure the static\n // hostname will be used in the request\n const signedUrl = new URL(url)\n const path = signedUrl.pathname\n const query = signedUrl.search\n return `/files/signed${path}${query}`\n }\n}\n\n/**\n * Same as retrieval function but puts to a temporary file.\n */\nexport const retrieveToTmp = async (bucketName: string, filepath: string) => {\n bucketName = sanitizeBucket(bucketName)\n filepath = sanitizeKey(filepath)\n const data = await retrieve(bucketName, filepath)\n const outputPath = join(budibaseTempDir(), v4())\n fs.writeFileSync(outputPath, data)\n return outputPath\n}\n\nexport const retrieveDirectory = async (bucketName: string, path: string) => {\n let writePath = join(budibaseTempDir(), v4())\n fs.mkdirSync(writePath)\n const objects = await listAllObjects(bucketName, path)\n let fullObjects = await Promise.all(\n objects.map(obj => retrieve(bucketName, obj.Key!))\n )\n let count = 0\n for (let obj of objects) {\n const filename = obj.Key!\n const data = fullObjects[count++]\n const possiblePath = filename.split(\"/\")\n if (possiblePath.length > 1) {\n const dirs = possiblePath.slice(0, possiblePath.length - 1)\n fs.mkdirSync(join(writePath, ...dirs), { recursive: true })\n }\n fs.writeFileSync(join(writePath, ...possiblePath), data)\n }\n return writePath\n}\n\n/**\n * Delete a single file.\n */\nexport const deleteFile = async (bucketName: string, filepath: string) => {\n const objectStore = ObjectStore(bucketName)\n await makeSureBucketExists(objectStore, bucketName)\n const params = {\n Bucket: bucketName,\n Key: sanitizeKey(filepath),\n }\n return objectStore.deleteObject(params).promise()\n}\n\nexport const deleteFiles = async (bucketName: string, filepaths: string[]) => {\n const objectStore = ObjectStore(bucketName)\n await makeSureBucketExists(objectStore, bucketName)\n const params = {\n Bucket: bucketName,\n Delete: {\n Objects: filepaths.map((path: any) => ({ Key: sanitizeKey(path) })),\n },\n }\n return objectStore.deleteObjects(params).promise()\n}\n\n/**\n * Delete a path, including everything within.\n */\nexport const deleteFolder = async (\n bucketName: string,\n folder: string\n): Promise<any> => {\n bucketName = sanitizeBucket(bucketName)\n folder = sanitizeKey(folder)\n const client = ObjectStore(bucketName)\n const listParams = {\n Bucket: bucketName,\n Prefix: folder,\n }\n\n const existingObjectsResponse = await client.listObjects(listParams).promise()\n if (existingObjectsResponse.Contents?.length === 0) {\n return\n }\n const deleteParams: any = {\n Bucket: bucketName,\n Delete: {\n Objects: [],\n },\n }\n\n existingObjectsResponse.Contents?.forEach((content: any) => {\n deleteParams.Delete.Objects.push({ Key: content.Key })\n })\n\n const deleteResponse = await client.deleteObjects(deleteParams).promise()\n // can only empty 1000 items at once\n if (deleteResponse.Deleted?.length === 1000) {\n return deleteFolder(bucketName, folder)\n }\n}\n\nexport const uploadDirectory = async (\n bucketName: string,\n localPath: string,\n bucketPath: string\n) => {\n bucketName = sanitizeBucket(bucketName)\n let uploads = []\n const files = fs.readdirSync(localPath, { withFileTypes: true })\n for (let file of files) {\n const path = sanitizeKey(join(bucketPath, file.name))\n const local = join(localPath, file.name)\n if (file.isDirectory()) {\n uploads.push(uploadDirectory(bucketName, local, path))\n } else {\n uploads.push(streamUpload(bucketName, path, fs.createReadStream(local)))\n }\n }\n await Promise.all(uploads)\n return files\n}\n\nexport const downloadTarballDirect = async (\n url: string,\n path: string,\n headers = {}\n) => {\n path = sanitizeKey(path)\n const response = await fetch(url, { headers })\n if (!response.ok) {\n throw new Error(`unexpected response ${response.statusText}`)\n }\n\n await streamPipeline(response.body, zlib.createUnzip(), tar.extract(path))\n}\n\nexport const downloadTarball = async (\n url: string,\n bucketName: string,\n path: string\n) => {\n bucketName = sanitizeBucket(bucketName)\n path = sanitizeKey(path)\n const response = await fetch(url)\n if (!response.ok) {\n throw new Error(`unexpected response ${response.statusText}`)\n }\n\n const tmpPath = join(budibaseTempDir(), path)\n await streamPipeline(response.body, zlib.createUnzip(), tar.extract(tmpPath))\n if (!env.isTest() && env.SELF_HOSTED) {\n await uploadDirectory(bucketName, tmpPath, path)\n }\n // return the temporary path incase there is a use for it\n return tmpPath\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["stream", "env", "AWS", "fs", "fetch", "zlib", "tar"]
7
+ }
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var utils_exports = {};
30
+ __export(utils_exports, {
31
+ ObjectStoreBuckets: () => ObjectStoreBuckets,
32
+ budibaseTempDir: () => budibaseTempDir
33
+ });
34
+ module.exports = __toCommonJS(utils_exports);
35
+ var import_path = require("path");
36
+ var import_os = require("os");
37
+ var import_fs = __toESM(require("fs"));
38
+ var import_environment = __toESM(require("../environment"));
39
+ const ObjectStoreBuckets = {
40
+ BACKUPS: import_environment.default.BACKUPS_BUCKET_NAME,
41
+ APPS: import_environment.default.APPS_BUCKET_NAME,
42
+ TEMPLATES: import_environment.default.TEMPLATES_BUCKET_NAME,
43
+ GLOBAL: import_environment.default.GLOBAL_BUCKET_NAME,
44
+ PLUGINS: import_environment.default.PLUGIN_BUCKET_NAME
45
+ };
46
+ const bbTmp = (0, import_path.join)((0, import_os.tmpdir)(), ".budibase");
47
+ if (!import_fs.default.existsSync(bbTmp)) {
48
+ import_fs.default.mkdirSync(bbTmp);
49
+ }
50
+ function budibaseTempDir() {
51
+ return bbTmp;
52
+ }
53
+ // Annotate the CommonJS export names for ESM import in node:
54
+ 0 && (module.exports = {
55
+ ObjectStoreBuckets,
56
+ budibaseTempDir
57
+ });
58
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/objectStore/utils.ts"],
4
+ "sourcesContent": ["import { join } from \"path\"\nimport { tmpdir } from \"os\"\nimport fs from \"fs\"\nimport env from \"../environment\"\n\n/****************************************************\n * NOTE: When adding a new bucket - name *\n * sure that S3 usages (like budibase-infra) *\n * have been updated to have a unique bucket name. *\n ****************************************************/\n// can't be an enum - only numbers can be used for computed types\nexport const ObjectStoreBuckets = {\n BACKUPS: env.BACKUPS_BUCKET_NAME,\n APPS: env.APPS_BUCKET_NAME,\n TEMPLATES: env.TEMPLATES_BUCKET_NAME,\n GLOBAL: env.GLOBAL_BUCKET_NAME,\n PLUGINS: env.PLUGIN_BUCKET_NAME,\n}\n\nconst bbTmp = join(tmpdir(), \".budibase\")\nif (!fs.existsSync(bbTmp)) {\n fs.mkdirSync(bbTmp)\n}\n\nexport function budibaseTempDir() {\n return bbTmp\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAAqB;AACrB,gBAAuB;AACvB,gBAAe;AACf,yBAAgB;AAQT,MAAM,qBAAqB;AAAA,EAChC,SAAS,mBAAAA,QAAI;AAAA,EACb,MAAM,mBAAAA,QAAI;AAAA,EACV,WAAW,mBAAAA,QAAI;AAAA,EACf,QAAQ,mBAAAA,QAAI;AAAA,EACZ,SAAS,mBAAAA,QAAI;AACf;AAEA,MAAM,YAAQ,sBAAK,kBAAO,GAAG,WAAW;AACxC,IAAI,CAAC,UAAAC,QAAG,WAAW,KAAK,GAAG;AACzB,YAAAA,QAAG,UAAU,KAAK;AACpB;AAEO,SAAS,kBAAkB;AAChC,SAAO;AACT;",
6
+ "names": ["env", "fs"]
7
+ }