@warlock.js/core 4.0.48 → 4.0.59

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 (723) hide show
  1. package/esm/application.d.ts +27 -0
  2. package/esm/application.d.ts.map +1 -0
  3. package/esm/bootstrap/setup.d.ts +2 -0
  4. package/esm/bootstrap/setup.d.ts.map +1 -0
  5. package/esm/bootstrap/setup.js +14 -0
  6. package/esm/bootstrap/setup.js.map +1 -0
  7. package/esm/bootstrap.d.ts +2 -0
  8. package/esm/bootstrap.d.ts.map +1 -0
  9. package/esm/bootstrap.js +5 -0
  10. package/esm/bootstrap.js.map +1 -0
  11. package/esm/cache/database-cache-driver.d.ts +56 -0
  12. package/esm/cache/database-cache-driver.d.ts.map +1 -0
  13. package/esm/cache/database-cache-driver.js +112 -0
  14. package/esm/cache/database-cache-driver.js.map +1 -0
  15. package/esm/cache/index.d.ts +3 -0
  16. package/esm/cache/index.d.ts.map +1 -0
  17. package/esm/cache/index.js +1 -0
  18. package/esm/cache/index.js.map +1 -0
  19. package/esm/cli/cli-command.d.ts +115 -0
  20. package/esm/cli/cli-command.d.ts.map +1 -0
  21. package/esm/cli/cli-command.js +227 -0
  22. package/esm/cli/cli-command.js.map +1 -0
  23. package/esm/cli/cli-commands.manager.d.ts +71 -0
  24. package/esm/cli/cli-commands.manager.d.ts.map +1 -0
  25. package/esm/cli/cli-commands.manager.js +348 -0
  26. package/esm/cli/cli-commands.manager.js.map +1 -0
  27. package/esm/cli/cli-commands.utils.d.ts +73 -0
  28. package/esm/cli/cli-commands.utils.d.ts.map +1 -0
  29. package/esm/cli/cli-commands.utils.js +195 -0
  30. package/esm/cli/cli-commands.utils.js.map +1 -0
  31. package/esm/cli/commands/add.command.d.ts +2 -0
  32. package/esm/cli/commands/add.command.d.ts.map +1 -0
  33. package/esm/cli/commands/add.command.js +15 -0
  34. package/esm/cli/commands/add.command.js.map +1 -0
  35. package/esm/cli/commands/build.command.d.ts +2 -0
  36. package/esm/cli/commands/build.command.d.ts.map +1 -0
  37. package/esm/cli/commands/build.command.js +8 -0
  38. package/esm/cli/commands/build.command.js.map +1 -0
  39. package/esm/cli/commands/dev-server.command.d.ts +2 -0
  40. package/esm/cli/commands/dev-server.command.d.ts.map +1 -0
  41. package/esm/cli/commands/dev-server.command.js +16 -0
  42. package/esm/cli/commands/dev-server.command.js.map +1 -0
  43. package/esm/cli/commands/migrate.command.d.ts +2 -0
  44. package/esm/cli/commands/migrate.command.d.ts.map +1 -0
  45. package/esm/cli/commands/migrate.command.js +37 -0
  46. package/esm/cli/commands/migrate.command.js.map +1 -0
  47. package/esm/cli/commands/seed.command.d.ts +2 -0
  48. package/esm/cli/commands/seed.command.d.ts.map +1 -0
  49. package/esm/cli/commands/seed.command.js +17 -0
  50. package/esm/cli/commands/seed.command.js.map +1 -0
  51. package/esm/cli/commands/start-production.command.d.ts +2 -0
  52. package/esm/cli/commands/start-production.command.d.ts.map +1 -0
  53. package/esm/cli/commands/start-production.command.js +65 -0
  54. package/esm/cli/commands/start-production.command.js.map +1 -0
  55. package/esm/cli/commands/typings-generator.command.d.ts +2 -0
  56. package/esm/cli/commands/typings-generator.command.d.ts.map +1 -0
  57. package/esm/cli/commands/typings-generator.command.js +37 -0
  58. package/esm/cli/commands/typings-generator.command.js.map +1 -0
  59. package/esm/cli/commands-loader.d.ts +18 -0
  60. package/esm/cli/commands-loader.d.ts.map +1 -0
  61. package/esm/cli/commands-loader.js +45 -0
  62. package/esm/cli/commands-loader.js.map +1 -0
  63. package/esm/cli/framework-cli-commands.d.ts +2 -0
  64. package/esm/cli/framework-cli-commands.d.ts.map +1 -0
  65. package/esm/cli/framework-cli-commands.js +11 -0
  66. package/esm/cli/framework-cli-commands.js.map +1 -0
  67. package/esm/cli/index.d.ts +3 -0
  68. package/esm/cli/index.d.ts.map +1 -0
  69. package/esm/cli/index.js +1 -4
  70. package/esm/cli/index.js.map +1 -1
  71. package/esm/cli/parse-cli-args.d.ts +18 -0
  72. package/esm/cli/parse-cli-args.d.ts.map +1 -0
  73. package/esm/cli/parse-cli-args.js +82 -0
  74. package/esm/cli/parse-cli-args.js.map +1 -0
  75. package/esm/cli/start.d.ts +2 -0
  76. package/esm/cli/start.d.ts.map +1 -0
  77. package/esm/cli/start.js +2 -6
  78. package/esm/cli/start.js.map +1 -1
  79. package/esm/cli/string-similarity.d.ts +44 -0
  80. package/esm/cli/string-similarity.d.ts.map +1 -0
  81. package/esm/cli/string-similarity.js +57 -0
  82. package/esm/cli/string-similarity.js.map +1 -0
  83. package/esm/cli/types.d.ts +206 -0
  84. package/esm/cli/types.d.ts.map +1 -0
  85. package/esm/config/config-getter.d.ts +35 -0
  86. package/esm/config/config-getter.d.ts.map +1 -0
  87. package/esm/config/config-getter.js +21 -0
  88. package/esm/config/config-getter.js.map +1 -0
  89. package/esm/config/config-handlers.d.ts +19 -0
  90. package/esm/config/config-handlers.d.ts.map +1 -0
  91. package/esm/config/config-handlers.js +47 -0
  92. package/esm/config/config-handlers.js.map +1 -0
  93. package/esm/config/config-loader.d.ts +37 -0
  94. package/esm/config/config-loader.d.ts.map +1 -0
  95. package/esm/config/config-loader.js +85 -0
  96. package/esm/config/config-loader.js.map +1 -0
  97. package/esm/config/config-manager.d.ts +22 -0
  98. package/esm/config/config-manager.d.ts.map +1 -0
  99. package/esm/config/config-manager.js +25 -0
  100. package/esm/config/config-manager.js.map +1 -0
  101. package/esm/config/config-special-handlers.d.ts +17 -0
  102. package/esm/config/config-special-handlers.d.ts.map +1 -0
  103. package/esm/config/config-special-handlers.js +23 -0
  104. package/esm/config/config-special-handlers.js.map +1 -0
  105. package/esm/config/index.d.ts +5 -0
  106. package/esm/config/index.d.ts.map +1 -0
  107. package/esm/config/load-config-files.d.ts +6 -0
  108. package/esm/config/load-config-files.d.ts.map +1 -0
  109. package/esm/config/load-config-files.js +19 -0
  110. package/esm/config/load-config-files.js.map +1 -0
  111. package/esm/config/types.d.ts +52 -0
  112. package/esm/config/types.d.ts.map +1 -0
  113. package/esm/database/index.d.ts +4 -0
  114. package/esm/database/index.d.ts.map +1 -0
  115. package/esm/database/migrate-action.d.ts +8 -0
  116. package/esm/database/migrate-action.d.ts.map +1 -0
  117. package/esm/database/migrate-action.js +95 -0
  118. package/esm/database/migrate-action.js.map +1 -0
  119. package/esm/database/models/database-log/database-log.d.ts +16 -0
  120. package/esm/database/models/database-log/database-log.d.ts.map +1 -0
  121. package/esm/database/models/database-log/database-log.js +17 -0
  122. package/esm/database/models/database-log/database-log.js.map +1 -0
  123. package/esm/database/models/database-log/index.d.ts +2 -0
  124. package/esm/database/models/database-log/index.d.ts.map +1 -0
  125. package/esm/database/seed-command-action.d.ts +3 -0
  126. package/esm/database/seed-command-action.d.ts.map +1 -0
  127. package/esm/database/seed-command-action.js +36 -0
  128. package/esm/database/seed-command-action.js.map +1 -0
  129. package/esm/database/seeds/index.d.ts +3 -0
  130. package/esm/database/seeds/index.d.ts.map +1 -0
  131. package/esm/database/seeds/seeder.d.ts +36 -0
  132. package/esm/database/seeds/seeder.d.ts.map +1 -0
  133. package/esm/database/seeds/seeder.js +6 -0
  134. package/esm/database/seeds/seeder.js.map +1 -0
  135. package/esm/database/seeds/seeders.manager.d.ts +47 -0
  136. package/esm/database/seeds/seeders.manager.d.ts.map +1 -0
  137. package/esm/database/seeds/seeders.manager.js +137 -0
  138. package/esm/database/seeds/seeders.manager.js.map +1 -0
  139. package/esm/database/seeds/seeds-table-migration.d.ts +8 -0
  140. package/esm/database/seeds/seeds-table-migration.d.ts.map +1 -0
  141. package/esm/database/seeds/seeds-table-migration.js +18 -0
  142. package/esm/database/seeds/seeds-table-migration.js.map +1 -0
  143. package/esm/database/seeds/types.d.ts +13 -0
  144. package/esm/database/seeds/types.d.ts.map +1 -0
  145. package/esm/database/seeds/utils.d.ts +2 -0
  146. package/esm/database/seeds/utils.d.ts.map +1 -0
  147. package/esm/database/seeds/utils.js +1 -0
  148. package/esm/database/seeds/utils.js.map +1 -0
  149. package/esm/database/utils.d.ts +18 -0
  150. package/esm/database/utils.d.ts.map +1 -0
  151. package/esm/database/utils.js +30 -0
  152. package/esm/database/utils.js.map +1 -0
  153. package/esm/dev2-server/connectors/base-connector.d.ts +49 -0
  154. package/esm/dev2-server/connectors/base-connector.d.ts.map +1 -0
  155. package/esm/dev2-server/connectors/base-connector.js +48 -0
  156. package/esm/dev2-server/connectors/base-connector.js.map +1 -0
  157. package/esm/dev2-server/connectors/cache-connector.d.ts +23 -0
  158. package/esm/dev2-server/connectors/cache-connector.d.ts.map +1 -0
  159. package/esm/dev2-server/connectors/cache-connector.js +35 -0
  160. package/esm/dev2-server/connectors/cache-connector.js.map +1 -0
  161. package/esm/dev2-server/connectors/connectors-manager.d.ts +38 -0
  162. package/esm/dev2-server/connectors/connectors-manager.d.ts.map +1 -0
  163. package/esm/dev2-server/connectors/connectors-manager.js +81 -0
  164. package/esm/dev2-server/connectors/connectors-manager.js.map +1 -0
  165. package/esm/dev2-server/connectors/database-connector.d.ts +23 -0
  166. package/esm/dev2-server/connectors/database-connector.d.ts.map +1 -0
  167. package/esm/dev2-server/connectors/database-connector.js +51 -0
  168. package/esm/dev2-server/connectors/database-connector.js.map +1 -0
  169. package/esm/dev2-server/connectors/http-connector.d.ts +29 -0
  170. package/esm/dev2-server/connectors/http-connector.d.ts.map +1 -0
  171. package/esm/dev2-server/connectors/http-connector.js +69 -0
  172. package/esm/dev2-server/connectors/http-connector.js.map +1 -0
  173. package/esm/dev2-server/connectors/index.d.ts +12 -0
  174. package/esm/dev2-server/connectors/index.d.ts.map +1 -0
  175. package/esm/dev2-server/connectors/storage.connector.d.ts +23 -0
  176. package/esm/dev2-server/connectors/storage.connector.d.ts.map +1 -0
  177. package/esm/dev2-server/connectors/storage.connector.js +29 -0
  178. package/esm/dev2-server/connectors/storage.connector.js.map +1 -0
  179. package/esm/dev2-server/connectors/types.d.ts +51 -0
  180. package/esm/dev2-server/connectors/types.d.ts.map +1 -0
  181. package/esm/dev2-server/connectors/types.js +10 -0
  182. package/esm/dev2-server/connectors/types.js.map +1 -0
  183. package/esm/dev2-server/create-worker.d.ts +34 -0
  184. package/esm/dev2-server/create-worker.d.ts.map +1 -0
  185. package/esm/dev2-server/create-worker.js +37 -0
  186. package/esm/dev2-server/create-worker.js.map +1 -0
  187. package/esm/dev2-server/dependency-graph.d.ts +93 -0
  188. package/esm/dev2-server/dependency-graph.d.ts.map +1 -0
  189. package/esm/dev2-server/dependency-graph.js +266 -0
  190. package/esm/dev2-server/dependency-graph.js.map +1 -0
  191. package/esm/dev2-server/dev-logger.d.ts +14 -0
  192. package/esm/dev2-server/dev-logger.d.ts.map +1 -0
  193. package/esm/dev2-server/dev-logger.js +130 -0
  194. package/esm/dev2-server/dev-logger.js.map +1 -0
  195. package/esm/dev2-server/development-server.d.ts +47 -0
  196. package/esm/dev2-server/development-server.d.ts.map +1 -0
  197. package/esm/dev2-server/development-server.js +149 -0
  198. package/esm/dev2-server/development-server.js.map +1 -0
  199. package/esm/dev2-server/events.d.ts +5 -0
  200. package/esm/dev2-server/events.d.ts.map +1 -0
  201. package/esm/dev2-server/events.js +4 -0
  202. package/esm/dev2-server/events.js.map +1 -0
  203. package/esm/dev2-server/export-analyzer.d.ts +84 -0
  204. package/esm/dev2-server/export-analyzer.d.ts.map +1 -0
  205. package/esm/dev2-server/export-analyzer.js +206 -0
  206. package/esm/dev2-server/export-analyzer.js.map +1 -0
  207. package/esm/dev2-server/file-event-handler.d.ts +156 -0
  208. package/esm/dev2-server/file-event-handler.d.ts.map +1 -0
  209. package/esm/dev2-server/file-event-handler.js +300 -0
  210. package/esm/dev2-server/file-event-handler.js.map +1 -0
  211. package/esm/dev2-server/file-manager.d.ts +385 -0
  212. package/esm/dev2-server/file-manager.d.ts.map +1 -0
  213. package/esm/dev2-server/file-manager.js +580 -0
  214. package/esm/dev2-server/file-manager.js.map +1 -0
  215. package/esm/dev2-server/file-operations.d.ts +203 -0
  216. package/esm/dev2-server/file-operations.d.ts.map +1 -0
  217. package/esm/dev2-server/file-operations.js +365 -0
  218. package/esm/dev2-server/file-operations.js.map +1 -0
  219. package/esm/dev2-server/files-orchestrator.d.ts +146 -0
  220. package/esm/dev2-server/files-orchestrator.d.ts.map +1 -0
  221. package/esm/dev2-server/files-orchestrator.js +314 -0
  222. package/esm/dev2-server/files-orchestrator.js.map +1 -0
  223. package/esm/dev2-server/files-watcher.d.ts +67 -0
  224. package/esm/dev2-server/files-watcher.d.ts.map +1 -0
  225. package/esm/dev2-server/files-watcher.js +95 -0
  226. package/esm/dev2-server/files-watcher.js.map +1 -0
  227. package/esm/dev2-server/flags.d.ts +10 -0
  228. package/esm/dev2-server/flags.d.ts.map +1 -0
  229. package/esm/dev2-server/flags.js +9 -0
  230. package/esm/dev2-server/flags.js.map +1 -0
  231. package/esm/dev2-server/health-checker/checkers/base-health-checker.d.ts +52 -0
  232. package/esm/dev2-server/health-checker/checkers/base-health-checker.d.ts.map +1 -0
  233. package/esm/dev2-server/health-checker/checkers/base-health-checker.js +71 -0
  234. package/esm/dev2-server/health-checker/checkers/base-health-checker.js.map +1 -0
  235. package/esm/dev2-server/health-checker/checkers/eslint-health-checker.d.ts +40 -0
  236. package/esm/dev2-server/health-checker/checkers/eslint-health-checker.d.ts.map +1 -0
  237. package/esm/dev2-server/health-checker/checkers/eslint-health-checker.js +217 -0
  238. package/esm/dev2-server/health-checker/checkers/eslint-health-checker.js.map +1 -0
  239. package/esm/dev2-server/health-checker/checkers/typescript-health-checker.d.ts +56 -0
  240. package/esm/dev2-server/health-checker/checkers/typescript-health-checker.d.ts.map +1 -0
  241. package/esm/dev2-server/health-checker/checkers/typescript-health-checker.js +279 -0
  242. package/esm/dev2-server/health-checker/checkers/typescript-health-checker.js.map +1 -0
  243. package/esm/dev2-server/health-checker/file-health-checker.contract.d.ts +59 -0
  244. package/esm/dev2-server/health-checker/file-health-checker.contract.d.ts.map +1 -0
  245. package/esm/dev2-server/health-checker/file-health-result.d.ts +68 -0
  246. package/esm/dev2-server/health-checker/file-health-result.d.ts.map +1 -0
  247. package/esm/dev2-server/health-checker/file-health-result.js +40 -0
  248. package/esm/dev2-server/health-checker/file-health-result.js.map +1 -0
  249. package/esm/dev2-server/health-checker/files-healthcare.manager.d.ts +115 -0
  250. package/esm/dev2-server/health-checker/files-healthcare.manager.d.ts.map +1 -0
  251. package/esm/dev2-server/health-checker/files-healthcare.manager.js +422 -0
  252. package/esm/dev2-server/health-checker/files-healthcare.manager.js.map +1 -0
  253. package/esm/dev2-server/health-checker/index.d.ts +6 -0
  254. package/esm/dev2-server/health-checker/index.d.ts.map +1 -0
  255. package/esm/dev2-server/health-checker/workers/eslint-health.worker.d.ts +2 -0
  256. package/esm/dev2-server/health-checker/workers/eslint-health.worker.d.ts.map +1 -0
  257. package/esm/dev2-server/health-checker/workers/eslint-health.worker.js +214 -0
  258. package/esm/dev2-server/health-checker/workers/eslint-health.worker.js.map +1 -0
  259. package/esm/dev2-server/health-checker/workers/ts-health.worker.d.ts +2 -0
  260. package/esm/dev2-server/health-checker/workers/ts-health.worker.d.ts.map +1 -0
  261. package/esm/dev2-server/health-checker/workers/ts-health.worker.js +261 -0
  262. package/esm/dev2-server/health-checker/workers/ts-health.worker.js.map +1 -0
  263. package/esm/dev2-server/import-transformer.d.ts +17 -0
  264. package/esm/dev2-server/import-transformer.d.ts.map +1 -0
  265. package/esm/dev2-server/import-transformer.js +280 -0
  266. package/esm/dev2-server/import-transformer.js.map +1 -0
  267. package/esm/dev2-server/index.d.ts +1 -0
  268. package/esm/dev2-server/index.d.ts.map +1 -0
  269. package/esm/dev2-server/layer-executor.d.ts +61 -0
  270. package/esm/dev2-server/layer-executor.d.ts.map +1 -0
  271. package/esm/dev2-server/layer-executor.js +314 -0
  272. package/esm/dev2-server/layer-executor.js.map +1 -0
  273. package/esm/dev2-server/manifest-manager.d.ts +80 -0
  274. package/esm/dev2-server/manifest-manager.d.ts.map +1 -0
  275. package/esm/dev2-server/manifest-manager.js +107 -0
  276. package/esm/dev2-server/manifest-manager.js.map +1 -0
  277. package/esm/dev2-server/module-loader.d.ts +108 -0
  278. package/esm/dev2-server/module-loader.d.ts.map +1 -0
  279. package/esm/dev2-server/module-loader.js +266 -0
  280. package/esm/dev2-server/module-loader.js.map +1 -0
  281. package/esm/dev2-server/package-json-manager.d.ts +16 -0
  282. package/esm/dev2-server/package-json-manager.d.ts.map +1 -0
  283. package/esm/dev2-server/package-json-manager.js +20 -0
  284. package/esm/dev2-server/package-json-manager.js.map +1 -0
  285. package/esm/dev2-server/parse-imports.d.ts +13 -0
  286. package/esm/dev2-server/parse-imports.d.ts.map +1 -0
  287. package/esm/dev2-server/parse-imports.js +329 -0
  288. package/esm/dev2-server/parse-imports.js.map +1 -0
  289. package/esm/dev2-server/path.d.ts +39 -0
  290. package/esm/dev2-server/path.d.ts.map +1 -0
  291. package/esm/dev2-server/path.js +56 -0
  292. package/esm/dev2-server/path.js.map +1 -0
  293. package/esm/dev2-server/runtime-import-helper.d.ts +8 -0
  294. package/esm/dev2-server/runtime-import-helper.d.ts.map +1 -0
  295. package/esm/dev2-server/runtime-import-helper.js +157 -0
  296. package/esm/dev2-server/runtime-import-helper.js.map +1 -0
  297. package/esm/dev2-server/special-files-collector.d.ts +114 -0
  298. package/esm/dev2-server/special-files-collector.d.ts.map +1 -0
  299. package/esm/dev2-server/special-files-collector.js +212 -0
  300. package/esm/dev2-server/special-files-collector.js.map +1 -0
  301. package/esm/dev2-server/start-development-server.d.ts +7 -0
  302. package/esm/dev2-server/start-development-server.d.ts.map +1 -0
  303. package/esm/dev2-server/start-development-server.js +21 -0
  304. package/esm/dev2-server/start-development-server.js.map +1 -0
  305. package/esm/dev2-server/transpile-file.d.ts +11 -0
  306. package/esm/dev2-server/transpile-file.d.ts.map +1 -0
  307. package/esm/dev2-server/transpile-file.js +21 -0
  308. package/esm/dev2-server/transpile-file.js.map +1 -0
  309. package/esm/dev2-server/tsconfig-manager.d.ts +45 -0
  310. package/esm/dev2-server/tsconfig-manager.d.ts.map +1 -0
  311. package/esm/dev2-server/tsconfig-manager.js +107 -0
  312. package/esm/dev2-server/tsconfig-manager.js.map +1 -0
  313. package/esm/dev2-server/type-generator.d.ts +115 -0
  314. package/esm/dev2-server/type-generator.d.ts.map +1 -0
  315. package/esm/dev2-server/type-generator.js +566 -0
  316. package/esm/dev2-server/type-generator.js.map +1 -0
  317. package/esm/dev2-server/types.d.ts +30 -0
  318. package/esm/dev2-server/types.d.ts.map +1 -0
  319. package/esm/dev2-server/utils.d.ts +15 -0
  320. package/esm/dev2-server/utils.d.ts.map +1 -0
  321. package/esm/dev2-server/utils.js +40 -0
  322. package/esm/dev2-server/utils.js.map +1 -0
  323. package/esm/generations/add-command.action.d.ts +3 -0
  324. package/esm/generations/add-command.action.d.ts.map +1 -0
  325. package/esm/generations/add-command.action.js +154 -0
  326. package/esm/generations/add-command.action.js.map +1 -0
  327. package/esm/http/config.d.ts +10 -0
  328. package/esm/http/config.d.ts.map +1 -0
  329. package/esm/http/config.js +22 -0
  330. package/esm/http/config.js.map +1 -0
  331. package/esm/http/context/request-context.d.ts +47 -0
  332. package/esm/http/context/request-context.d.ts.map +1 -0
  333. package/esm/http/context/request-context.js +52 -0
  334. package/esm/http/context/request-context.js.map +1 -0
  335. package/esm/http/createHttpApplication.d.ts +3 -0
  336. package/esm/http/createHttpApplication.d.ts.map +1 -0
  337. package/esm/http/createHttpApplication.js +28 -0
  338. package/esm/http/createHttpApplication.js.map +1 -0
  339. package/esm/http/database/RequestLog.d.ts +16 -0
  340. package/esm/http/database/RequestLog.d.ts.map +1 -0
  341. package/esm/http/database/RequestLog.js +26 -0
  342. package/esm/http/database/RequestLog.js.map +1 -0
  343. package/esm/http/errors/index.d.ts +2 -0
  344. package/esm/http/errors/index.d.ts.map +1 -0
  345. package/esm/http/errors/resource-not-found.error.d.ts +21 -0
  346. package/esm/http/errors/resource-not-found.error.d.ts.map +1 -0
  347. package/esm/http/errors/resource-not-found.error.js +40 -0
  348. package/esm/http/errors/resource-not-found.error.js.map +1 -0
  349. package/esm/http/events.d.ts +4 -0
  350. package/esm/http/events.d.ts.map +1 -0
  351. package/esm/http/events.js +26 -0
  352. package/esm/http/events.js.map +1 -0
  353. package/esm/http/index.d.ts +17 -0
  354. package/esm/http/index.d.ts.map +1 -0
  355. package/esm/http/middleware/cache-response-middleware.d.ts +34 -0
  356. package/esm/http/middleware/cache-response-middleware.d.ts.map +1 -0
  357. package/esm/http/middleware/cache-response-middleware.js +45 -0
  358. package/esm/http/middleware/cache-response-middleware.js.map +1 -0
  359. package/esm/http/middleware/index.d.ts +3 -0
  360. package/esm/http/middleware/index.d.ts.map +1 -0
  361. package/esm/http/middleware/inject-request-context.d.ts +21 -0
  362. package/esm/http/middleware/inject-request-context.d.ts.map +1 -0
  363. package/esm/http/middleware/inject-request-context.js +105 -0
  364. package/esm/http/middleware/inject-request-context.js.map +1 -0
  365. package/esm/http/plugins/index.d.ts +3 -0
  366. package/esm/http/plugins/index.d.ts.map +1 -0
  367. package/esm/http/plugins.d.ts +3 -0
  368. package/esm/http/plugins.d.ts.map +1 -0
  369. package/esm/http/plugins.js +31 -0
  370. package/esm/http/plugins.js.map +1 -0
  371. package/esm/http/request-controller.d.ts +11 -0
  372. package/esm/http/request-controller.d.ts.map +1 -0
  373. package/esm/http/request-controller.js +9 -0
  374. package/esm/http/request-controller.js.map +1 -0
  375. package/esm/http/request.d.ts +380 -0
  376. package/esm/http/request.d.ts.map +1 -0
  377. package/esm/http/request.js +733 -0
  378. package/esm/http/request.js.map +1 -0
  379. package/esm/http/response.js +914 -0
  380. package/esm/http/response.js.map +1 -0
  381. package/esm/http/server.d.ts +8 -0
  382. package/esm/http/server.d.ts.map +1 -0
  383. package/esm/http/server.js +15 -0
  384. package/esm/http/server.js.map +1 -0
  385. package/esm/http/types.d.ts +174 -0
  386. package/esm/http/types.d.ts.map +1 -0
  387. package/esm/http/uploaded-file.d.ts +459 -0
  388. package/esm/http/uploaded-file.d.ts.map +1 -0
  389. package/esm/http/uploaded-file.js +709 -0
  390. package/esm/http/uploaded-file.js.map +1 -0
  391. package/esm/http/uploads-config.d.ts +26 -0
  392. package/esm/http/uploads-config.d.ts.map +1 -0
  393. package/esm/http/uploads-config.js +35 -0
  394. package/esm/http/uploads-config.js.map +1 -0
  395. package/esm/http/uploads-types.d.ts +236 -0
  396. package/esm/http/uploads-types.d.ts.map +1 -0
  397. package/esm/image/image.d.ts +388 -0
  398. package/esm/image/image.d.ts.map +1 -0
  399. package/esm/image/image.js +602 -0
  400. package/esm/image/image.js.map +1 -0
  401. package/esm/image/index.d.ts +2 -0
  402. package/esm/image/index.d.ts.map +1 -0
  403. package/esm/index.d.ts +28 -0
  404. package/esm/index.d.ts.map +1 -0
  405. package/esm/index.js +1 -28
  406. package/esm/index.js.map +1 -1
  407. package/esm/logger/index.d.ts +3 -0
  408. package/esm/logger/index.d.ts.map +1 -0
  409. package/esm/logger/logger.d.ts +3 -0
  410. package/esm/logger/logger.d.ts.map +1 -0
  411. package/esm/logger/logger.js +16 -0
  412. package/esm/logger/logger.js.map +1 -0
  413. package/esm/logger/types.d.ts +39 -0
  414. package/esm/logger/types.d.ts.map +1 -0
  415. package/esm/mail/config.d.ts +83 -0
  416. package/esm/mail/config.d.ts.map +1 -0
  417. package/esm/mail/config.js +152 -0
  418. package/esm/mail/config.js.map +1 -0
  419. package/esm/mail/events.d.ts +96 -0
  420. package/esm/mail/events.d.ts.map +1 -0
  421. package/esm/mail/events.js +123 -0
  422. package/esm/mail/events.js.map +1 -0
  423. package/esm/mail/index.d.ts +10 -0
  424. package/esm/mail/index.d.ts.map +1 -0
  425. package/esm/mail/mail.d.ts +175 -0
  426. package/esm/mail/mail.d.ts.map +1 -0
  427. package/esm/mail/mail.js +286 -0
  428. package/esm/mail/mail.js.map +1 -0
  429. package/esm/mail/mailer-pool.d.ts +27 -0
  430. package/esm/mail/mailer-pool.d.ts.map +1 -0
  431. package/esm/mail/mailer-pool.js +143 -0
  432. package/esm/mail/mailer-pool.js.map +1 -0
  433. package/esm/mail/react-mail.d.ts +9 -0
  434. package/esm/mail/react-mail.d.ts.map +1 -0
  435. package/esm/mail/react-mail.js +28 -0
  436. package/esm/mail/react-mail.js.map +1 -0
  437. package/esm/mail/send-mail.d.ts +33 -0
  438. package/esm/mail/send-mail.d.ts.map +1 -0
  439. package/esm/mail/send-mail.js +309 -0
  440. package/esm/mail/send-mail.js.map +1 -0
  441. package/esm/mail/test-mailbox.d.ts +110 -0
  442. package/esm/mail/test-mailbox.d.ts.map +1 -0
  443. package/esm/mail/test-mailbox.js +143 -0
  444. package/esm/mail/test-mailbox.js.map +1 -0
  445. package/esm/mail/types.d.ts +245 -0
  446. package/esm/mail/types.d.ts.map +1 -0
  447. package/esm/mail/types.js +13 -0
  448. package/esm/mail/types.js.map +1 -0
  449. package/esm/manifest/manifest-manager.d.ts +74 -0
  450. package/esm/manifest/manifest-manager.d.ts.map +1 -0
  451. package/esm/manifest/manifest-manager.js +88 -0
  452. package/esm/manifest/manifest-manager.js.map +1 -0
  453. package/esm/production/build-app-production.d.ts +6 -0
  454. package/esm/production/build-app-production.d.ts.map +1 -0
  455. package/esm/production/build-app-production.js +8 -0
  456. package/esm/production/build-app-production.js.map +1 -0
  457. package/esm/production/esbuild-plugins.d.ts +5 -0
  458. package/esm/production/esbuild-plugins.d.ts.map +1 -0
  459. package/esm/production/esbuild-plugins.js +23 -0
  460. package/esm/production/esbuild-plugins.js.map +1 -0
  461. package/esm/production/production-builder.d.ts +76 -0
  462. package/esm/production/production-builder.d.ts.map +1 -0
  463. package/esm/production/production-builder.js +247 -0
  464. package/esm/production/production-builder.js.map +1 -0
  465. package/esm/react/index.d.ts +14 -0
  466. package/esm/react/index.d.ts.map +1 -0
  467. package/esm/react/index.js +65 -0
  468. package/esm/react/index.js.map +1 -0
  469. package/esm/repositories/adapters/cascade/cascade-adapter.d.ts +85 -0
  470. package/esm/repositories/adapters/cascade/cascade-adapter.d.ts.map +1 -0
  471. package/esm/repositories/adapters/cascade/cascade-adapter.js +179 -0
  472. package/esm/repositories/adapters/cascade/cascade-adapter.js.map +1 -0
  473. package/esm/repositories/adapters/cascade/cascade-query-builder.d.ts +124 -0
  474. package/esm/repositories/adapters/cascade/cascade-query-builder.d.ts.map +1 -0
  475. package/esm/repositories/adapters/cascade/cascade-query-builder.js +267 -0
  476. package/esm/repositories/adapters/cascade/cascade-query-builder.js.map +1 -0
  477. package/esm/repositories/adapters/cascade/filter-applicator.d.ts +62 -0
  478. package/esm/repositories/adapters/cascade/filter-applicator.d.ts.map +1 -0
  479. package/esm/repositories/adapters/cascade/filter-applicator.js +423 -0
  480. package/esm/repositories/adapters/cascade/filter-applicator.js.map +1 -0
  481. package/esm/repositories/adapters/cascade/index.d.ts +7 -0
  482. package/esm/repositories/adapters/cascade/index.d.ts.map +1 -0
  483. package/esm/repositories/contracts/index.d.ts +8 -0
  484. package/esm/repositories/contracts/index.d.ts.map +1 -0
  485. package/esm/repositories/contracts/query-builder.contract.d.ts +279 -0
  486. package/esm/repositories/contracts/query-builder.contract.d.ts.map +1 -0
  487. package/esm/repositories/contracts/repository-adapter.contract.d.ts +183 -0
  488. package/esm/repositories/contracts/repository-adapter.contract.d.ts.map +1 -0
  489. package/esm/repositories/contracts/types.d.ts +278 -0
  490. package/esm/repositories/contracts/types.d.ts.map +1 -0
  491. package/esm/repositories/index.d.ts +8 -0
  492. package/esm/repositories/index.d.ts.map +1 -0
  493. package/esm/repositories/repository.manager.d.ts +619 -0
  494. package/esm/repositories/repository.manager.d.ts.map +1 -0
  495. package/esm/repositories/repository.manager.js +978 -0
  496. package/esm/repositories/repository.manager.js.map +1 -0
  497. package/esm/resource/define-resource.js +58 -0
  498. package/esm/resource/define-resource.js.map +1 -0
  499. package/esm/resource/index.d.ts +5 -0
  500. package/esm/resource/index.d.ts.map +1 -0
  501. package/esm/resource/resource-field-builder.d.ts +83 -0
  502. package/esm/resource/resource-field-builder.d.ts.map +1 -0
  503. package/esm/resource/resource-field-builder.js +189 -0
  504. package/esm/resource/resource-field-builder.js.map +1 -0
  505. package/esm/resource/resource.d.ts +105 -0
  506. package/esm/resource/resource.d.ts.map +1 -0
  507. package/esm/resource/resource.js +231 -0
  508. package/esm/resource/resource.js.map +1 -0
  509. package/esm/resource/types.d.ts +40 -0
  510. package/esm/resource/types.d.ts.map +1 -0
  511. package/esm/restful/index.d.ts +2 -0
  512. package/esm/restful/index.d.ts.map +1 -0
  513. package/esm/restful/restful.d.ts +110 -0
  514. package/esm/restful/restful.d.ts.map +1 -0
  515. package/esm/restful/restful.js +317 -0
  516. package/esm/restful/restful.js.map +1 -0
  517. package/esm/router/index.d.ts +4 -0
  518. package/esm/router/index.d.ts.map +1 -0
  519. package/esm/router/route-registry.d.ts +30 -0
  520. package/esm/router/route-registry.d.ts.map +1 -0
  521. package/esm/router/route-registry.js +67 -0
  522. package/esm/router/route-registry.js.map +1 -0
  523. package/esm/router/route.d.ts +34 -0
  524. package/esm/router/route.d.ts.map +1 -0
  525. package/esm/router/router.d.ts +169 -0
  526. package/esm/router/router.d.ts.map +1 -0
  527. package/esm/router/router.js +578 -0
  528. package/esm/router/router.js.map +1 -0
  529. package/esm/router/types.d.ts +267 -0
  530. package/esm/router/types.d.ts.map +1 -0
  531. package/esm/router/utils.d.ts +5 -0
  532. package/esm/router/utils.d.ts.map +1 -0
  533. package/esm/router/utils.js +6 -0
  534. package/esm/router/utils.js.map +1 -0
  535. package/esm/storage/config.d.ts +15 -0
  536. package/esm/storage/config.d.ts.map +1 -0
  537. package/esm/storage/config.js +32 -0
  538. package/esm/storage/config.js.map +1 -0
  539. package/esm/storage/context/storage-driver-context.d.ts +69 -0
  540. package/esm/storage/context/storage-driver-context.d.ts.map +1 -0
  541. package/esm/storage/context/storage-driver-context.js +80 -0
  542. package/esm/storage/context/storage-driver-context.js.map +1 -0
  543. package/esm/storage/drivers/cloud-driver.d.ts +196 -0
  544. package/esm/storage/drivers/cloud-driver.d.ts.map +1 -0
  545. package/esm/storage/drivers/cloud-driver.js +697 -0
  546. package/esm/storage/drivers/cloud-driver.js.map +1 -0
  547. package/esm/storage/drivers/do-spaces-driver.d.ts +43 -0
  548. package/esm/storage/drivers/do-spaces-driver.d.ts.map +1 -0
  549. package/esm/storage/drivers/do-spaces-driver.js +50 -0
  550. package/esm/storage/drivers/do-spaces-driver.js.map +1 -0
  551. package/esm/storage/drivers/local-driver.d.ts +151 -0
  552. package/esm/storage/drivers/local-driver.d.ts.map +1 -0
  553. package/esm/storage/drivers/local-driver.js +448 -0
  554. package/esm/storage/drivers/local-driver.js.map +1 -0
  555. package/esm/storage/drivers/r2-driver.d.ts +47 -0
  556. package/esm/storage/drivers/r2-driver.d.ts.map +1 -0
  557. package/esm/storage/drivers/r2-driver.js +60 -0
  558. package/esm/storage/drivers/r2-driver.js.map +1 -0
  559. package/esm/storage/drivers/s3-driver.d.ts +32 -0
  560. package/esm/storage/drivers/s3-driver.d.ts.map +1 -0
  561. package/esm/storage/drivers/s3-driver.js +37 -0
  562. package/esm/storage/drivers/s3-driver.js.map +1 -0
  563. package/esm/storage/index.d.ts +13 -0
  564. package/esm/storage/index.d.ts.map +1 -0
  565. package/esm/storage/scoped-storage.d.ts +514 -0
  566. package/esm/storage/scoped-storage.d.ts.map +1 -0
  567. package/esm/storage/scoped-storage.js +656 -0
  568. package/esm/storage/scoped-storage.js.map +1 -0
  569. package/esm/storage/storage-file.d.ts +216 -0
  570. package/esm/storage/storage-file.d.ts.map +1 -0
  571. package/esm/storage/storage-file.js +358 -0
  572. package/esm/storage/storage-file.js.map +1 -0
  573. package/esm/storage/storage.d.ts +583 -0
  574. package/esm/storage/storage.d.ts.map +1 -0
  575. package/esm/storage/storage.js +945 -0
  576. package/esm/storage/storage.js.map +1 -0
  577. package/esm/storage/types.d.ts +909 -0
  578. package/esm/storage/types.d.ts.map +1 -0
  579. package/esm/storage/utils/mime.d.ts +33 -0
  580. package/esm/storage/utils/mime.d.ts.map +1 -0
  581. package/esm/storage/utils/mime.js +45 -0
  582. package/esm/storage/utils/mime.js.map +1 -0
  583. package/esm/store/index.d.ts +25 -0
  584. package/esm/store/index.d.ts.map +1 -0
  585. package/esm/store/index.js +52 -0
  586. package/esm/store/index.js.map +1 -0
  587. package/esm/utils/app-log.d.ts +8 -0
  588. package/esm/utils/app-log.d.ts.map +1 -0
  589. package/esm/utils/app-log.js +7 -0
  590. package/esm/utils/app-log.js.map +1 -0
  591. package/esm/utils/cleanup-temp-files.d.ts +5 -0
  592. package/esm/utils/cleanup-temp-files.d.ts.map +1 -0
  593. package/esm/utils/database-log.d.ts +25 -0
  594. package/esm/utils/database-log.d.ts.map +1 -0
  595. package/esm/utils/database-log.js +43 -0
  596. package/esm/utils/database-log.js.map +1 -0
  597. package/esm/utils/download-file.d.ts +3 -0
  598. package/esm/utils/download-file.d.ts.map +1 -0
  599. package/esm/utils/environment.d.ts +4 -0
  600. package/esm/utils/environment.d.ts.map +1 -0
  601. package/esm/utils/environment.js +6 -0
  602. package/esm/utils/environment.js.map +1 -0
  603. package/esm/utils/get-localized.d.ts +10 -0
  604. package/esm/utils/get-localized.d.ts.map +1 -0
  605. package/esm/utils/get-localized.js +15 -0
  606. package/esm/utils/get-localized.js.map +1 -0
  607. package/esm/utils/index.d.ts +12 -0
  608. package/esm/utils/index.d.ts.map +1 -0
  609. package/esm/utils/internal.d.ts +4 -0
  610. package/esm/utils/internal.d.ts.map +1 -0
  611. package/esm/utils/paths.d.ts +55 -0
  612. package/esm/utils/paths.d.ts.map +1 -0
  613. package/esm/utils/paths.js +89 -0
  614. package/esm/utils/paths.js.map +1 -0
  615. package/esm/utils/promise-all-object.d.ts +8 -0
  616. package/esm/utils/promise-all-object.d.ts.map +1 -0
  617. package/esm/utils/promise-all-object.js +12 -0
  618. package/esm/utils/promise-all-object.js.map +1 -0
  619. package/esm/utils/queue.d.ts +49 -0
  620. package/esm/utils/queue.d.ts.map +1 -0
  621. package/esm/utils/queue.js +89 -0
  622. package/esm/utils/queue.js.map +1 -0
  623. package/esm/utils/sleep.d.ts +2 -0
  624. package/esm/utils/sleep.d.ts.map +1 -0
  625. package/esm/utils/sleep.js +3 -0
  626. package/esm/utils/sleep.js.map +1 -0
  627. package/esm/utils/sluggable.d.ts +5 -0
  628. package/esm/utils/sluggable.d.ts.map +1 -0
  629. package/esm/utils/sluggable.js +15 -0
  630. package/esm/utils/sluggable.js.map +1 -0
  631. package/esm/utils/to-json.d.ts +2 -0
  632. package/esm/utils/to-json.d.ts.map +1 -0
  633. package/esm/utils/to-json.js +26 -0
  634. package/esm/utils/to-json.js.map +1 -0
  635. package/esm/utils/types.d.ts +22 -0
  636. package/esm/utils/types.d.ts.map +1 -0
  637. package/esm/utils/urls.d.ts +21 -0
  638. package/esm/utils/urls.d.ts.map +1 -0
  639. package/esm/utils/urls.js +31 -0
  640. package/esm/utils/urls.js.map +1 -0
  641. package/esm/validation/database/exists-except-current-id.d.ts +7 -0
  642. package/esm/validation/database/exists-except-current-id.d.ts.map +1 -0
  643. package/esm/validation/database/exists-except-current-id.js +23 -0
  644. package/esm/validation/database/exists-except-current-id.js.map +1 -0
  645. package/esm/validation/database/exists-except-current-user.d.ts +7 -0
  646. package/esm/validation/database/exists-except-current-user.d.ts.map +1 -0
  647. package/esm/validation/database/exists-except-current-user.js +25 -0
  648. package/esm/validation/database/exists-except-current-user.js.map +1 -0
  649. package/esm/validation/database/exists.d.ts +7 -0
  650. package/esm/validation/database/exists.d.ts.map +1 -0
  651. package/esm/validation/database/exists.js +21 -0
  652. package/esm/validation/database/exists.js.map +1 -0
  653. package/esm/validation/database/index.d.ts +12 -0
  654. package/esm/validation/database/index.d.ts.map +1 -0
  655. package/esm/validation/database/types.d.ts +68 -0
  656. package/esm/validation/database/types.d.ts.map +1 -0
  657. package/esm/validation/database/unique-except-current-id.d.ts +7 -0
  658. package/esm/validation/database/unique-except-current-id.d.ts.map +1 -0
  659. package/esm/validation/database/unique-except-current-id.js +23 -0
  660. package/esm/validation/database/unique-except-current-id.js.map +1 -0
  661. package/esm/validation/database/unique-except-current-user.d.ts +7 -0
  662. package/esm/validation/database/unique-except-current-user.d.ts.map +1 -0
  663. package/esm/validation/database/unique-except-current-user.js +25 -0
  664. package/esm/validation/database/unique-except-current-user.js.map +1 -0
  665. package/esm/validation/database/unique.d.ts +7 -0
  666. package/esm/validation/database/unique.d.ts.map +1 -0
  667. package/esm/validation/database/unique.js +30 -0
  668. package/esm/validation/database/unique.js.map +1 -0
  669. package/esm/validation/file/file.d.ts +22 -0
  670. package/esm/validation/file/file.d.ts.map +1 -0
  671. package/esm/validation/file/file.js +60 -0
  672. package/esm/validation/file/file.js.map +1 -0
  673. package/esm/validation/file/index.d.ts +6 -0
  674. package/esm/validation/file/index.d.ts.map +1 -0
  675. package/esm/validation/index.d.ts +16 -0
  676. package/esm/validation/index.d.ts.map +1 -0
  677. package/esm/validation/init.d.ts +7 -0
  678. package/esm/validation/init.d.ts.map +1 -0
  679. package/esm/validation/init.js +36 -0
  680. package/esm/validation/init.js.map +1 -0
  681. package/esm/validation/plugins/database-plugin.d.ts +14 -0
  682. package/esm/validation/plugins/database-plugin.d.ts.map +1 -0
  683. package/esm/validation/plugins/database-plugin.js +95 -0
  684. package/esm/validation/plugins/database-plugin.js.map +1 -0
  685. package/esm/validation/plugins/file-plugin.d.ts +11 -0
  686. package/esm/validation/plugins/file-plugin.d.ts.map +1 -0
  687. package/esm/validation/plugins/file-plugin.js +17 -0
  688. package/esm/validation/plugins/file-plugin.js.map +1 -0
  689. package/esm/validation/plugins/index.d.ts +9 -0
  690. package/esm/validation/plugins/index.d.ts.map +1 -0
  691. package/esm/validation/plugins/localized-plugin.d.ts +11 -0
  692. package/esm/validation/plugins/localized-plugin.d.ts.map +1 -0
  693. package/esm/validation/plugins/localized-plugin.js +19 -0
  694. package/esm/validation/plugins/localized-plugin.js.map +1 -0
  695. package/esm/validation/types.d.ts +87 -0
  696. package/esm/validation/types.d.ts.map +1 -0
  697. package/esm/validation/validateAll.d.ts +7 -0
  698. package/esm/validation/validateAll.d.ts.map +1 -0
  699. package/esm/validation/validateAll.js +60 -0
  700. package/esm/validation/validateAll.js.map +1 -0
  701. package/esm/validation/validators/file-validator.d.ts +46 -0
  702. package/esm/validation/validators/file-validator.d.ts.map +1 -0
  703. package/esm/validation/validators/file-validator.js +112 -0
  704. package/esm/validation/validators/file-validator.js.map +1 -0
  705. package/esm/validation/validators/index.d.ts +7 -0
  706. package/esm/validation/validators/index.d.ts.map +1 -0
  707. package/esm/warlock-config/default-configurations.d.ts +3 -0
  708. package/esm/warlock-config/default-configurations.d.ts.map +1 -0
  709. package/esm/warlock-config/default-configurations.js +8 -0
  710. package/esm/warlock-config/default-configurations.js.map +1 -0
  711. package/esm/warlock-config/define-config.d.ts +3 -0
  712. package/esm/warlock-config/define-config.d.ts.map +1 -0
  713. package/esm/warlock-config/define-config.js +3 -0
  714. package/esm/warlock-config/define-config.js.map +1 -0
  715. package/esm/warlock-config/index.d.ts +4 -0
  716. package/esm/warlock-config/index.d.ts.map +1 -0
  717. package/esm/warlock-config/types.d.ts +79 -0
  718. package/esm/warlock-config/types.d.ts.map +1 -0
  719. package/esm/warlock-config/warlock-config.manager.d.ts +83 -0
  720. package/esm/warlock-config/warlock-config.manager.d.ts.map +1 -0
  721. package/esm/warlock-config/warlock-config.manager.js +141 -0
  722. package/esm/warlock-config/warlock-config.manager.js.map +1 -0
  723. package/package.json +66 -71
@@ -0,0 +1,697 @@
1
+ import crypto from'crypto';import {storageDriverContext}from'../context/storage-driver-context.js';import {getMimeType}from'../utils/mime.js';// ============================================================
2
+ // Lazy-loaded S3 SDK Types
3
+ // ============================================================
4
+ /**
5
+ * Cached S3 SDK modules (loaded once, reused)
6
+ */
7
+ let S3Client;
8
+ let S3Storage;
9
+ let S3Presigner;
10
+ let isModuleExists = null;
11
+ /**
12
+ * Installation instructions for S3 SDK packages
13
+ */
14
+ const S3_INSTALL_INSTRUCTIONS = `
15
+ Cloud storage requires the AWS S3 SDK packages.
16
+ Install them with:
17
+
18
+ npm install @aws-sdk/client-s3 @aws-sdk/lib-storage @aws-sdk/s3-request-presigner
19
+
20
+ Or with your preferred package manager:
21
+
22
+ pnpm add @aws-sdk/client-s3 @aws-sdk/lib-storage @aws-sdk/s3-request-presigner
23
+ yarn add @aws-sdk/client-s3 @aws-sdk/lib-storage @aws-sdk/s3-request-presigner
24
+ `.trim();
25
+ /**
26
+ */
27
+ async function loadS3() {
28
+ try {
29
+ // load @aws-sdk/client-s3
30
+ S3Client = await import('@aws-sdk/client-s3');
31
+ // load @aws-sdk/lib-storage
32
+ S3Storage = await import('@aws-sdk/lib-storage');
33
+ // load @aws-sdk/s3-request-presigner
34
+ S3Presigner = await import('@aws-sdk/s3-request-presigner');
35
+ isModuleExists = true;
36
+ }
37
+ catch {
38
+ isModuleExists = false;
39
+ }
40
+ }
41
+ loadS3();
42
+ // ============================================================
43
+ // CloudDriver Base Class
44
+ // ============================================================
45
+ /**
46
+ * Base abstract class for all S3-compatible cloud storage drivers
47
+ *
48
+ * This class contains all shared logic for S3-compatible storage services
49
+ * including AWS S3, Cloudflare R2, DigitalOcean Spaces, and others.
50
+ *
51
+ * **Important:** S3 SDK packages are lazy-loaded on first use.
52
+ * Users must install them separately:
53
+ * ```
54
+ * npm install @aws-sdk/client-s3 @aws-sdk/lib-storage @aws-sdk/s3-request-presigner
55
+ * ```
56
+ *
57
+ * Subclasses must implement:
58
+ * - `name`: Driver identifier (e.g., "s3", "r2", "spaces")
59
+ * - `url()`: Returns the public URL for a file (provider-specific format)
60
+ */
61
+ class CloudDriver {
62
+ options;
63
+ /**
64
+ * S3-compatible client (lazy-loaded)
65
+ */
66
+ client;
67
+ /**
68
+ * Retry configuration
69
+ */
70
+ retryConfig;
71
+ constructor(options) {
72
+ this.options = options;
73
+ if (!isModuleExists) {
74
+ throw new Error(S3_INSTALL_INSTRUCTIONS);
75
+ }
76
+ this.client = new S3Client.S3Client({
77
+ region: this.options.region,
78
+ credentials: {
79
+ accessKeyId: this.options.accessKeyId,
80
+ secretAccessKey: this.options.secretAccessKey,
81
+ },
82
+ ...(this.getEndpoint() && { endpoint: this.getEndpoint() }),
83
+ });
84
+ // Initialize retry configuration
85
+ this.retryConfig = {
86
+ maxRetries: this.options.retry?.maxRetries ?? 3,
87
+ initialDelayMs: this.options.retry?.initialDelayMs ?? 1000,
88
+ maxDelayMs: this.options.retry?.maxDelayMs ?? 10000,
89
+ backoffMultiplier: this.options.retry?.backoffMultiplier ?? 2,
90
+ };
91
+ }
92
+ /**
93
+ * Get endpoint URL
94
+ * Can be overridden by subclasses for provider-specific endpoints
95
+ */
96
+ getEndpoint() {
97
+ return this.options.endpoint;
98
+ }
99
+ // ============================================================
100
+ // Helper Methods
101
+ // ============================================================
102
+ /**
103
+ * Apply prefix to location path
104
+ *
105
+ * Priority: context prefix > driver options prefix > no prefix
106
+ * This allows multi-tenant scenarios where context overrides driver config.
107
+ *
108
+ * @param location - Original location path
109
+ * @returns Location with prefix applied if one exists
110
+ */
111
+ applyPrefix(location) {
112
+ // Check context prefix first (highest priority)
113
+ const contextPrefix = storageDriverContext.getPrefix();
114
+ const prefix = contextPrefix || this.options.prefix;
115
+ if (!prefix) {
116
+ return location;
117
+ }
118
+ const cleanPrefix = prefix.replace(/\/+$/, "");
119
+ const cleanLocation = location.replace(/^\/+/, "");
120
+ // Avoid double-prefixing
121
+ if (cleanLocation.startsWith(cleanPrefix + "/") || cleanLocation === cleanPrefix) {
122
+ return cleanLocation;
123
+ }
124
+ return `${cleanPrefix}/${cleanLocation}`;
125
+ }
126
+ /**
127
+ * Normalize storage path (remove double slashes, sanitize)
128
+ * @internal
129
+ */
130
+ normalizePath(path) {
131
+ return path
132
+ .replace(/\/+/g, "/") // Remove multiple slashes
133
+ .replace(/^\//, "") // Remove leading slash
134
+ .trim();
135
+ }
136
+ /**
137
+ * Execute an operation with retry logic
138
+ *
139
+ * Retries on transient errors with exponential backoff.
140
+ *
141
+ * @param operation - Async operation to execute
142
+ * @param operationName - Name for logging
143
+ * @returns Result of the operation
144
+ * @internal
145
+ */
146
+ async withRetry(operation, operationName = "operation") {
147
+ const { maxRetries, initialDelayMs, backoffMultiplier, maxDelayMs } = this.retryConfig;
148
+ let lastError;
149
+ for (let attempt = 0; attempt < maxRetries; attempt++) {
150
+ try {
151
+ return await operation();
152
+ }
153
+ catch (error) {
154
+ lastError = error;
155
+ // Don't retry on the last attempt
156
+ if (attempt === maxRetries - 1) {
157
+ break;
158
+ }
159
+ // Check if error is retryable
160
+ if (!this.isRetryableError(error)) {
161
+ throw error; // Non-retryable error, fail immediately
162
+ }
163
+ // Calculate delay with exponential backoff
164
+ const delayMs = Math.min(initialDelayMs * Math.pow(backoffMultiplier, attempt), maxDelayMs);
165
+ // Wait before retrying
166
+ await new Promise((resolve) => setTimeout(resolve, delayMs));
167
+ }
168
+ }
169
+ throw new Error(`${operationName} failed after ${maxRetries} attempts: ${lastError?.message}`);
170
+ }
171
+ /**
172
+ * Check if an error is retryable
173
+ *
174
+ * Retries on:
175
+ * - Network errors
176
+ * - 5xx server errors
177
+ * - Rate limiting (429)
178
+ * - Timeout errors
179
+ *
180
+ * Does NOT retry on:
181
+ * - 4xx client errors (except 429)
182
+ * - Authentication errors
183
+ * - Not found errors
184
+ *
185
+ * @param error - Error to check
186
+ * @returns true if error is retryable
187
+ * @internal
188
+ */
189
+ isRetryableError(error) {
190
+ // Network errors
191
+ if (error.code === "ECONNRESET" || error.code === "ETIMEDOUT" || error.code === "ENOTFOUND") {
192
+ return true;
193
+ }
194
+ // S3 SDK errors
195
+ if (error.name === "NetworkingError" || error.name === "TimeoutError") {
196
+ return true;
197
+ }
198
+ // HTTP status codes
199
+ const statusCode = error.$metadata?.httpStatusCode || error.statusCode;
200
+ if (statusCode) {
201
+ // 5xx server errors are retryable
202
+ if (statusCode >= 500 && statusCode < 600) {
203
+ return true;
204
+ }
205
+ // 429 Too Many Requests is retryable
206
+ if (statusCode === 429) {
207
+ return true;
208
+ }
209
+ }
210
+ return false;
211
+ }
212
+ // ============================================================
213
+ // Core File Operations
214
+ // ============================================================
215
+ /**
216
+ * Put file to cloud storage
217
+ */
218
+ async put(file, location, options) {
219
+ return this.withRetry(async () => {
220
+ const { PutObjectCommand } = S3Client;
221
+ // Apply storage prefix
222
+ location = this.applyPrefix(location);
223
+ const hash = this.calculateHash(file);
224
+ const mimeType = options?.mimeType || this.guessMimeType(location);
225
+ const command = new PutObjectCommand({
226
+ Bucket: this.options.bucket,
227
+ Key: location,
228
+ Body: file,
229
+ ContentType: mimeType,
230
+ CacheControl: options?.cacheControl,
231
+ ContentDisposition: options?.contentDisposition,
232
+ Metadata: options?.metadata,
233
+ ACL: options?.visibility === "public" ? "public-read" : undefined,
234
+ });
235
+ const result = await this.client.send(command);
236
+ return {
237
+ path: location,
238
+ url: this.url(location),
239
+ size: file.length,
240
+ hash,
241
+ mimeType,
242
+ driver: this.name,
243
+ bucket: this.options.bucket,
244
+ region: this.options.region,
245
+ etag: result.ETag,
246
+ versionId: result.VersionId,
247
+ };
248
+ }, "put");
249
+ }
250
+ /**
251
+ * Put file from a readable stream (for large files)
252
+ * Uses S3 multipart upload for efficient streaming
253
+ */
254
+ async putStream(stream, location, options) {
255
+ return this.withRetry(async () => {
256
+ const { Upload } = S3Storage;
257
+ // Apply storage prefix
258
+ location = this.applyPrefix(location);
259
+ const mimeType = options?.mimeType || this.guessMimeType(location);
260
+ const upload = new Upload({
261
+ client: this.client,
262
+ params: {
263
+ Bucket: this.options.bucket,
264
+ Key: location,
265
+ Body: stream,
266
+ ContentType: mimeType,
267
+ CacheControl: options?.cacheControl,
268
+ ContentDisposition: options?.contentDisposition,
269
+ Metadata: options?.metadata,
270
+ ACL: options?.visibility === "public" ? "public-read" : undefined,
271
+ },
272
+ });
273
+ const result = await upload.done();
274
+ // Get file info for size and hash
275
+ const info = await this.getInfo(location);
276
+ return {
277
+ path: location,
278
+ url: this.url(location),
279
+ size: info.size,
280
+ hash: info.etag?.replace(/"/g, "") || "",
281
+ mimeType,
282
+ driver: this.name,
283
+ bucket: this.options.bucket,
284
+ region: this.options.region,
285
+ etag: result.ETag,
286
+ versionId: result.VersionId,
287
+ };
288
+ }, "putStream");
289
+ }
290
+ /**
291
+ * Get file contents as Buffer
292
+ */
293
+ async get(location) {
294
+ return this.withRetry(async () => {
295
+ const { GetObjectCommand } = S3Client;
296
+ // Apply storage prefix
297
+ location = this.applyPrefix(location);
298
+ const command = new GetObjectCommand({
299
+ Bucket: this.options.bucket,
300
+ Key: location,
301
+ });
302
+ const result = await this.client.send(command);
303
+ if (!result.Body) {
304
+ throw new Error(`File not found: ${location}`);
305
+ }
306
+ return Buffer.from(await result.Body.transformToByteArray());
307
+ }, "get");
308
+ }
309
+ /**
310
+ * Get file as a readable stream (for large files)
311
+ */
312
+ async getStream(location) {
313
+ return this.withRetry(async () => {
314
+ const { GetObjectCommand } = S3Client;
315
+ // Apply storage prefix
316
+ location = this.applyPrefix(location);
317
+ const command = new GetObjectCommand({
318
+ Bucket: this.options.bucket,
319
+ Key: location,
320
+ });
321
+ const result = await this.client.send(command);
322
+ if (!result.Body) {
323
+ throw new Error(`File not found: ${location}`);
324
+ }
325
+ return result.Body;
326
+ }, "getStream");
327
+ }
328
+ /**
329
+ * Delete a file
330
+ */
331
+ async delete(location) {
332
+ return this.withRetry(async () => {
333
+ const { DeleteObjectCommand } = S3Client;
334
+ // Apply storage prefix
335
+ location = this.applyPrefix(location);
336
+ const command = new DeleteObjectCommand({
337
+ Bucket: this.options.bucket,
338
+ Key: location,
339
+ });
340
+ await this.client.send(command);
341
+ return true;
342
+ }, "delete");
343
+ }
344
+ /**
345
+ * Delete multiple files at once (uses batch delete for efficiency)
346
+ */
347
+ async deleteMany(locations) {
348
+ if (locations.length === 0) {
349
+ return [];
350
+ }
351
+ return this.withRetry(async () => {
352
+ const { DeleteObjectsCommand } = S3Client;
353
+ // Apply storage prefix to all locations
354
+ const prefixedLocations = locations.map((loc) => this.applyPrefix(loc));
355
+ const command = new DeleteObjectsCommand({
356
+ Bucket: this.options.bucket,
357
+ Delete: {
358
+ Objects: prefixedLocations.map((Key) => ({ Key })),
359
+ Quiet: false,
360
+ },
361
+ });
362
+ const result = await this.client.send(command);
363
+ const results = [];
364
+ // Process successful deletes
365
+ for (const deleted of result.Deleted || []) {
366
+ if (deleted.Key) {
367
+ results.push({ location: deleted.Key, deleted: true });
368
+ }
369
+ }
370
+ // Process errors
371
+ for (const error of result.Errors || []) {
372
+ if (error.Key) {
373
+ results.push({
374
+ location: error.Key,
375
+ deleted: false,
376
+ error: error.Message || "Unknown error",
377
+ });
378
+ }
379
+ }
380
+ return results;
381
+ }, "deleteMany");
382
+ }
383
+ /**
384
+ * Delete directory (recursively deletes all objects with matching prefix)
385
+ *
386
+ * S3/R2 doesn't have true directories - only key prefixes.
387
+ * This method lists all objects with the prefix and deletes them in batches.
388
+ *
389
+ * @param directoryPath - Directory prefix to delete
390
+ * @returns true when all objects are deleted
391
+ */
392
+ async deleteDirectory(directoryPath) {
393
+ // Apply storage prefix
394
+ directoryPath = this.applyPrefix(directoryPath);
395
+ // Ensure directory path ends with / for proper prefix matching
396
+ const prefix = directoryPath.endsWith("/") ? directoryPath : `${directoryPath}/`;
397
+ let hasMore = true;
398
+ while (hasMore) {
399
+ // List up to 1000 objects (S3/R2 max per request)
400
+ const objects = await this.list(prefix, {
401
+ limit: 1000,
402
+ recursive: true,
403
+ });
404
+ if (objects.length === 0) {
405
+ break;
406
+ }
407
+ // Filter out directories (we only delete files)
408
+ const filePaths = objects.filter((obj) => !obj.isDirectory).map((obj) => obj.path);
409
+ if (filePaths.length === 0) {
410
+ break;
411
+ }
412
+ // Delete batch (deleteMany already has prefix applied, so paths already have it)
413
+ // Note: We pass the paths as-is since they already include the prefix from list()
414
+ await this.deleteMany(filePaths);
415
+ // Continue if we got full batch (might be more)
416
+ hasMore = objects.length >= 1000;
417
+ }
418
+ return true;
419
+ }
420
+ /**
421
+ * Check if file exists
422
+ */
423
+ async exists(location) {
424
+ // No retry for exists - it should be fast and failure means non-existent
425
+ try {
426
+ const { HeadObjectCommand } = S3Client;
427
+ // Apply storage prefix
428
+ location = this.applyPrefix(location);
429
+ const command = new HeadObjectCommand({
430
+ Bucket: this.options.bucket,
431
+ Key: location,
432
+ });
433
+ await this.client.send(command);
434
+ return true;
435
+ }
436
+ catch {
437
+ return false;
438
+ }
439
+ }
440
+ // ============================================================
441
+ // URL Operations
442
+ // ============================================================
443
+ /**
444
+ * Get a temporary presigned URL (alias for getPresignedUrl)
445
+ */
446
+ async temporaryUrl(location, expiresIn = 3600) {
447
+ return this.getPresignedUrl(location, { expiresIn });
448
+ }
449
+ /**
450
+ * Get presigned URL for downloading
451
+ */
452
+ async getPresignedUrl(location, options) {
453
+ return this.withRetry(async () => {
454
+ const { GetObjectCommand } = S3Client;
455
+ const { getSignedUrl } = S3Presigner;
456
+ // Apply storage prefix
457
+ location = this.applyPrefix(location);
458
+ const command = new GetObjectCommand({
459
+ Bucket: this.options.bucket,
460
+ Key: location,
461
+ });
462
+ return getSignedUrl(this.client, command, {
463
+ expiresIn: options?.expiresIn || 3600,
464
+ });
465
+ }, "getPresignedUrl");
466
+ }
467
+ /**
468
+ * Get presigned URL for uploading
469
+ */
470
+ async getPresignedUploadUrl(location, options) {
471
+ return this.withRetry(async () => {
472
+ const { PutObjectCommand } = S3Client;
473
+ const { getSignedUrl } = S3Presigner;
474
+ // Apply storage prefix
475
+ location = this.applyPrefix(location);
476
+ const command = new PutObjectCommand({
477
+ Bucket: this.options.bucket,
478
+ Key: location,
479
+ ContentType: options?.contentType,
480
+ Metadata: options?.metadata,
481
+ });
482
+ return getSignedUrl(this.client, command, {
483
+ expiresIn: options?.expiresIn || 3600,
484
+ });
485
+ }, "getPresignedUploadUrl");
486
+ }
487
+ // ============================================================
488
+ // Metadata Operations
489
+ // ============================================================
490
+ /**
491
+ * Get file info/metadata without downloading
492
+ */
493
+ async getInfo(location) {
494
+ return this.withRetry(async () => {
495
+ const { HeadObjectCommand } = S3Client;
496
+ // Apply storage prefix
497
+ location = this.applyPrefix(location);
498
+ const command = new HeadObjectCommand({
499
+ Bucket: this.options.bucket,
500
+ Key: location,
501
+ });
502
+ const result = await this.client.send(command);
503
+ const name = location.split("/").pop() || "";
504
+ return {
505
+ path: location,
506
+ name,
507
+ size: result.ContentLength || 0,
508
+ isDirectory: false,
509
+ lastModified: result.LastModified,
510
+ mimeType: result.ContentType || this.guessMimeType(location),
511
+ etag: result.ETag,
512
+ storageClass: result.StorageClass,
513
+ };
514
+ }, "getInfo");
515
+ }
516
+ /**
517
+ * Get file size in bytes (shortcut for getInfo().size)
518
+ */
519
+ async size(location) {
520
+ const info = await this.getInfo(location);
521
+ return info.size;
522
+ }
523
+ // ============================================================
524
+ // File Operations
525
+ // ============================================================
526
+ /**
527
+ * Copy file to a new location
528
+ */
529
+ async copy(from, to) {
530
+ return this.withRetry(async () => {
531
+ const { CopyObjectCommand, HeadObjectCommand } = S3Client;
532
+ // Apply storage prefix to both paths
533
+ from = this.applyPrefix(from);
534
+ to = this.applyPrefix(to);
535
+ const command = new CopyObjectCommand({
536
+ Bucket: this.options.bucket,
537
+ CopySource: `${this.options.bucket}/${from}`,
538
+ Key: to,
539
+ });
540
+ const result = await this.client.send(command);
541
+ // Get file metadata
542
+ const headCommand = new HeadObjectCommand({
543
+ Bucket: this.options.bucket,
544
+ Key: to,
545
+ });
546
+ const headResult = await this.client.send(headCommand);
547
+ return {
548
+ path: to,
549
+ url: this.url(to),
550
+ size: headResult.ContentLength || 0,
551
+ hash: headResult.ETag?.replace(/"/g, "") || "",
552
+ mimeType: headResult.ContentType || this.guessMimeType(to),
553
+ driver: this.name,
554
+ bucket: this.options.bucket,
555
+ region: this.options.region,
556
+ etag: result.CopyObjectResult?.ETag,
557
+ versionId: result.VersionId,
558
+ };
559
+ }, "copy");
560
+ }
561
+ /**
562
+ * Move file to a new location
563
+ */
564
+ async move(from, to) {
565
+ const file = await this.copy(from, to);
566
+ await this.delete(from);
567
+ return file;
568
+ }
569
+ /**
570
+ * List files in a directory
571
+ */
572
+ async list(directory, options) {
573
+ return this.withRetry(async () => {
574
+ const { ListObjectsV2Command } = S3Client;
575
+ // Apply storage prefix
576
+ directory = this.applyPrefix(directory);
577
+ const command = new ListObjectsV2Command({
578
+ Bucket: this.options.bucket,
579
+ Prefix: directory,
580
+ MaxKeys: options?.limit,
581
+ ContinuationToken: options?.cursor,
582
+ Delimiter: options?.recursive ? undefined : "/",
583
+ });
584
+ const result = await this.client.send(command);
585
+ const files = [];
586
+ // Add files
587
+ for (const object of result.Contents || []) {
588
+ if (!object.Key)
589
+ continue;
590
+ files.push({
591
+ path: object.Key,
592
+ name: object.Key.split("/").pop() || "",
593
+ size: object.Size || 0,
594
+ isDirectory: false,
595
+ lastModified: object.LastModified,
596
+ etag: object.ETag,
597
+ storageClass: object.StorageClass,
598
+ });
599
+ }
600
+ // Add directories
601
+ for (const prefix of result.CommonPrefixes || []) {
602
+ if (!prefix.Prefix)
603
+ continue;
604
+ files.push({
605
+ path: prefix.Prefix,
606
+ name: prefix.Prefix.split("/").filter(Boolean).pop() || "",
607
+ size: 0,
608
+ isDirectory: true,
609
+ });
610
+ }
611
+ return files;
612
+ }, "list");
613
+ }
614
+ // ============================================================
615
+ // Cloud-Specific Operations
616
+ // ============================================================
617
+ /**
618
+ * Get bucket name
619
+ */
620
+ getBucket() {
621
+ return this.options.bucket;
622
+ }
623
+ /**
624
+ * Get region
625
+ */
626
+ getRegion() {
627
+ return this.options.region;
628
+ }
629
+ /**
630
+ * Set storage class (e.g., STANDARD, GLACIER, etc.)
631
+ */
632
+ async setStorageClass(location, storageClass) {
633
+ return this.withRetry(async () => {
634
+ const { CopyObjectCommand } = S3Client;
635
+ // Apply storage prefix
636
+ location = this.applyPrefix(location);
637
+ const command = new CopyObjectCommand({
638
+ Bucket: this.options.bucket,
639
+ CopySource: `${this.options.bucket}/${location}`,
640
+ Key: location,
641
+ StorageClass: storageClass,
642
+ MetadataDirective: "COPY",
643
+ });
644
+ await this.client.send(command);
645
+ }, "setStorageClass");
646
+ }
647
+ /**
648
+ * Set file visibility (public or private)
649
+ */
650
+ async setVisibility(location, visibility) {
651
+ return this.withRetry(async () => {
652
+ const { PutObjectAclCommand } = S3Client;
653
+ // Apply storage prefix
654
+ location = this.applyPrefix(location);
655
+ const command = new PutObjectAclCommand({
656
+ Bucket: this.options.bucket,
657
+ Key: location,
658
+ ACL: visibility === "public" ? "public-read" : "private",
659
+ });
660
+ await this.client.send(command);
661
+ }, "setVisibility");
662
+ }
663
+ /**
664
+ * Get file visibility
665
+ */
666
+ async getVisibility(location) {
667
+ return this.withRetry(async () => {
668
+ const { GetObjectAclCommand } = S3Client;
669
+ // Apply storage prefix
670
+ location = this.applyPrefix(location);
671
+ const command = new GetObjectAclCommand({
672
+ Bucket: this.options.bucket,
673
+ Key: location,
674
+ });
675
+ const result = await this.client.send(command);
676
+ // Check if any grant allows public read
677
+ const hasPublicRead = result.Grants?.some((grant) => grant.Grantee?.URI === "http://acs.amazonaws.com/groups/global/AllUsers" &&
678
+ grant.Permission === "READ");
679
+ return hasPublicRead ? "public" : "private";
680
+ }, "getVisibility");
681
+ }
682
+ // ============================================================
683
+ // Utilities
684
+ // ============================================================
685
+ /**
686
+ * Calculate SHA-256 hash
687
+ */
688
+ calculateHash(buffer) {
689
+ return crypto.createHash("sha256").update(new Uint8Array(buffer)).digest("hex");
690
+ }
691
+ /**
692
+ * Guess MIME type from file extension
693
+ */
694
+ guessMimeType(location) {
695
+ return getMimeType(location);
696
+ }
697
+ }export{CloudDriver};//# sourceMappingURL=cloud-driver.js.map