@trokky/trokky 2.0.3

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 (639) hide show
  1. package/dist/adapters/filesystem/filesystem-adapter.d.ts +80 -0
  2. package/dist/adapters/filesystem/filesystem-adapter.d.ts.map +1 -0
  3. package/dist/adapters/filesystem/filesystem-adapter.js +1370 -0
  4. package/dist/adapters/filesystem/filesystem-adapter.js.map +1 -0
  5. package/dist/adapters/filesystem/index.d.ts +29 -0
  6. package/dist/adapters/filesystem/index.d.ts.map +1 -0
  7. package/dist/adapters/filesystem/index.js +31 -0
  8. package/dist/adapters/filesystem/index.js.map +1 -0
  9. package/dist/adapters/filesystem/types.d.ts +111 -0
  10. package/dist/adapters/filesystem/types.d.ts.map +1 -0
  11. package/dist/adapters/filesystem/types.js +2 -0
  12. package/dist/adapters/filesystem/types.js.map +1 -0
  13. package/dist/adapters/filesystem-data/filesystem-data-adapter.d.ts +111 -0
  14. package/dist/adapters/filesystem-data/filesystem-data-adapter.d.ts.map +1 -0
  15. package/dist/adapters/filesystem-data/filesystem-data-adapter.js +1363 -0
  16. package/dist/adapters/filesystem-data/filesystem-data-adapter.js.map +1 -0
  17. package/dist/adapters/filesystem-data/index.d.ts +3 -0
  18. package/dist/adapters/filesystem-data/index.d.ts.map +1 -0
  19. package/dist/adapters/filesystem-data/index.js +13 -0
  20. package/dist/adapters/filesystem-data/index.js.map +1 -0
  21. package/dist/adapters/filesystem-data/types.d.ts +147 -0
  22. package/dist/adapters/filesystem-data/types.d.ts.map +1 -0
  23. package/dist/adapters/filesystem-data/types.js +2 -0
  24. package/dist/adapters/filesystem-data/types.js.map +1 -0
  25. package/dist/adapters/filesystem-media/filesystem-media-adapter.d.ts +32 -0
  26. package/dist/adapters/filesystem-media/filesystem-media-adapter.d.ts.map +1 -0
  27. package/dist/adapters/filesystem-media/filesystem-media-adapter.js +639 -0
  28. package/dist/adapters/filesystem-media/filesystem-media-adapter.js.map +1 -0
  29. package/dist/adapters/filesystem-media/index.d.ts +3 -0
  30. package/dist/adapters/filesystem-media/index.d.ts.map +1 -0
  31. package/dist/adapters/filesystem-media/index.js +13 -0
  32. package/dist/adapters/filesystem-media/index.js.map +1 -0
  33. package/dist/adapters/filesystem-media/types.d.ts +76 -0
  34. package/dist/adapters/filesystem-media/types.d.ts.map +1 -0
  35. package/dist/adapters/filesystem-media/types.js +2 -0
  36. package/dist/adapters/filesystem-media/types.js.map +1 -0
  37. package/dist/adapters/postgres-data/index.d.ts +3 -0
  38. package/dist/adapters/postgres-data/index.d.ts.map +1 -0
  39. package/dist/adapters/postgres-data/index.js +13 -0
  40. package/dist/adapters/postgres-data/index.js.map +1 -0
  41. package/dist/adapters/postgres-data/postgres-data-adapter.d.ts +154 -0
  42. package/dist/adapters/postgres-data/postgres-data-adapter.d.ts.map +1 -0
  43. package/dist/adapters/postgres-data/postgres-data-adapter.js +1432 -0
  44. package/dist/adapters/postgres-data/postgres-data-adapter.js.map +1 -0
  45. package/dist/adapters/postgres-data/types.d.ts +139 -0
  46. package/dist/adapters/postgres-data/types.d.ts.map +1 -0
  47. package/dist/adapters/postgres-data/types.js +2 -0
  48. package/dist/adapters/postgres-data/types.js.map +1 -0
  49. package/dist/core/adapters/registry.d.ts +79 -0
  50. package/dist/core/adapters/registry.d.ts.map +1 -0
  51. package/dist/core/adapters/registry.js +149 -0
  52. package/dist/core/adapters/registry.js.map +1 -0
  53. package/dist/core/core/engine.d.ts +551 -0
  54. package/dist/core/core/engine.d.ts.map +1 -0
  55. package/dist/core/core/engine.js +1074 -0
  56. package/dist/core/core/engine.js.map +1 -0
  57. package/dist/core/crypto/adapter.d.ts +63 -0
  58. package/dist/core/crypto/adapter.d.ts.map +1 -0
  59. package/dist/core/crypto/adapter.js +63 -0
  60. package/dist/core/crypto/adapter.js.map +1 -0
  61. package/dist/core/crypto/fallback-adapter.d.ts +23 -0
  62. package/dist/core/crypto/fallback-adapter.d.ts.map +1 -0
  63. package/dist/core/crypto/fallback-adapter.js +195 -0
  64. package/dist/core/crypto/fallback-adapter.js.map +1 -0
  65. package/dist/core/crypto/node-adapter.d.ts +20 -0
  66. package/dist/core/crypto/node-adapter.d.ts.map +1 -0
  67. package/dist/core/crypto/node-adapter.js +85 -0
  68. package/dist/core/crypto/node-adapter.js.map +1 -0
  69. package/dist/core/crypto/password-hash.d.ts +73 -0
  70. package/dist/core/crypto/password-hash.d.ts.map +1 -0
  71. package/dist/core/crypto/password-hash.js +244 -0
  72. package/dist/core/crypto/password-hash.js.map +1 -0
  73. package/dist/core/crypto/webcrypto-adapter.d.ts +24 -0
  74. package/dist/core/crypto/webcrypto-adapter.d.ts.map +1 -0
  75. package/dist/core/crypto/webcrypto-adapter.js +158 -0
  76. package/dist/core/crypto/webcrypto-adapter.js.map +1 -0
  77. package/dist/core/errors/index.d.ts +30 -0
  78. package/dist/core/errors/index.d.ts.map +1 -0
  79. package/dist/core/errors/index.js +61 -0
  80. package/dist/core/errors/index.js.map +1 -0
  81. package/dist/core/events/event-bus.d.ts +121 -0
  82. package/dist/core/events/event-bus.d.ts.map +1 -0
  83. package/dist/core/events/event-bus.js +631 -0
  84. package/dist/core/events/event-bus.js.map +1 -0
  85. package/dist/core/events/index.d.ts +17 -0
  86. package/dist/core/events/index.d.ts.map +1 -0
  87. package/dist/core/events/index.js +22 -0
  88. package/dist/core/events/index.js.map +1 -0
  89. package/dist/core/events/memory-storage.d.ts +57 -0
  90. package/dist/core/events/memory-storage.d.ts.map +1 -0
  91. package/dist/core/events/memory-storage.js +175 -0
  92. package/dist/core/events/memory-storage.js.map +1 -0
  93. package/dist/core/events/types.d.ts +434 -0
  94. package/dist/core/events/types.d.ts.map +1 -0
  95. package/dist/core/events/types.js +9 -0
  96. package/dist/core/events/types.js.map +1 -0
  97. package/dist/core/events/utils.d.ts +134 -0
  98. package/dist/core/events/utils.d.ts.map +1 -0
  99. package/dist/core/events/utils.js +333 -0
  100. package/dist/core/events/utils.js.map +1 -0
  101. package/dist/core/fields/conditional.d.ts +115 -0
  102. package/dist/core/fields/conditional.d.ts.map +1 -0
  103. package/dist/core/fields/conditional.js +296 -0
  104. package/dist/core/fields/conditional.js.map +1 -0
  105. package/dist/core/fields/field-type.d.ts +218 -0
  106. package/dist/core/fields/field-type.d.ts.map +1 -0
  107. package/dist/core/fields/field-type.js +17 -0
  108. package/dist/core/fields/field-type.js.map +1 -0
  109. package/dist/core/fields/helpers.d.ts +86 -0
  110. package/dist/core/fields/helpers.d.ts.map +1 -0
  111. package/dist/core/fields/helpers.js +260 -0
  112. package/dist/core/fields/helpers.js.map +1 -0
  113. package/dist/core/fields/index.d.ts +5 -0
  114. package/dist/core/fields/index.d.ts.map +1 -0
  115. package/dist/core/fields/index.js +6 -0
  116. package/dist/core/fields/index.js.map +1 -0
  117. package/dist/core/fields/registry.d.ts +78 -0
  118. package/dist/core/fields/registry.d.ts.map +1 -0
  119. package/dist/core/fields/registry.js +185 -0
  120. package/dist/core/fields/registry.js.map +1 -0
  121. package/dist/core/index.d.ts +39 -0
  122. package/dist/core/index.d.ts.map +1 -0
  123. package/dist/core/index.js +57 -0
  124. package/dist/core/index.js.map +1 -0
  125. package/dist/core/media/image-processor.d.ts +24 -0
  126. package/dist/core/media/image-processor.d.ts.map +1 -0
  127. package/dist/core/media/image-processor.js +69 -0
  128. package/dist/core/media/image-processor.js.map +1 -0
  129. package/dist/core/media/processors/cloudflare-images.d.ts +83 -0
  130. package/dist/core/media/processors/cloudflare-images.d.ts.map +1 -0
  131. package/dist/core/media/processors/cloudflare-images.js +241 -0
  132. package/dist/core/media/processors/cloudflare-images.js.map +1 -0
  133. package/dist/core/media/processors/cloudflare-transform-store.d.ts +127 -0
  134. package/dist/core/media/processors/cloudflare-transform-store.d.ts.map +1 -0
  135. package/dist/core/media/processors/cloudflare-transform-store.js +237 -0
  136. package/dist/core/media/processors/cloudflare-transform-store.js.map +1 -0
  137. package/dist/core/media/processors/cloudflare-transformations.d.ts +81 -0
  138. package/dist/core/media/processors/cloudflare-transformations.d.ts.map +1 -0
  139. package/dist/core/media/processors/cloudflare-transformations.js +144 -0
  140. package/dist/core/media/processors/cloudflare-transformations.js.map +1 -0
  141. package/dist/core/media/processors/index.d.ts +9 -0
  142. package/dist/core/media/processors/index.d.ts.map +1 -0
  143. package/dist/core/media/processors/index.js +13 -0
  144. package/dist/core/media/processors/index.js.map +1 -0
  145. package/dist/core/media/processors/noop.d.ts +22 -0
  146. package/dist/core/media/processors/noop.d.ts.map +1 -0
  147. package/dist/core/media/processors/noop.js +38 -0
  148. package/dist/core/media/processors/noop.js.map +1 -0
  149. package/dist/core/media/processors/sharp.d.ts +30 -0
  150. package/dist/core/media/processors/sharp.d.ts.map +1 -0
  151. package/dist/core/media/processors/sharp.js +126 -0
  152. package/dist/core/media/processors/sharp.js.map +1 -0
  153. package/dist/core/media/processors/types.d.ts +67 -0
  154. package/dist/core/media/processors/types.d.ts.map +1 -0
  155. package/dist/core/media/processors/types.js +42 -0
  156. package/dist/core/media/processors/types.js.map +1 -0
  157. package/dist/core/media/processors/workers-images.d.ts +112 -0
  158. package/dist/core/media/processors/workers-images.d.ts.map +1 -0
  159. package/dist/core/media/processors/workers-images.js +257 -0
  160. package/dist/core/media/processors/workers-images.js.map +1 -0
  161. package/dist/core/schema/registry.d.ts +41 -0
  162. package/dist/core/schema/registry.d.ts.map +1 -0
  163. package/dist/core/schema/registry.js +248 -0
  164. package/dist/core/schema/registry.js.map +1 -0
  165. package/dist/core/schema/singleton.d.ts +107 -0
  166. package/dist/core/schema/singleton.d.ts.map +1 -0
  167. package/dist/core/schema/singleton.js +180 -0
  168. package/dist/core/schema/singleton.js.map +1 -0
  169. package/dist/core/security/auth.d.ts +120 -0
  170. package/dist/core/security/auth.d.ts.map +1 -0
  171. package/dist/core/security/auth.js +274 -0
  172. package/dist/core/security/auth.js.map +1 -0
  173. package/dist/core/security/captcha/index.d.ts +21 -0
  174. package/dist/core/security/captcha/index.d.ts.map +1 -0
  175. package/dist/core/security/captcha/index.js +34 -0
  176. package/dist/core/security/captcha/index.js.map +1 -0
  177. package/dist/core/security/captcha/recaptcha.d.ts +41 -0
  178. package/dist/core/security/captcha/recaptcha.d.ts.map +1 -0
  179. package/dist/core/security/captcha/recaptcha.js +89 -0
  180. package/dist/core/security/captcha/recaptcha.js.map +1 -0
  181. package/dist/core/security/captcha/turnstile.d.ts +41 -0
  182. package/dist/core/security/captcha/turnstile.d.ts.map +1 -0
  183. package/dist/core/security/captcha/turnstile.js +90 -0
  184. package/dist/core/security/captcha/turnstile.js.map +1 -0
  185. package/dist/core/security/captcha/types.d.ts +66 -0
  186. package/dist/core/security/captcha/types.d.ts.map +1 -0
  187. package/dist/core/security/captcha/types.js +7 -0
  188. package/dist/core/security/captcha/types.js.map +1 -0
  189. package/dist/core/security/mfa/email-otp.d.ts +91 -0
  190. package/dist/core/security/mfa/email-otp.d.ts.map +1 -0
  191. package/dist/core/security/mfa/email-otp.js +264 -0
  192. package/dist/core/security/mfa/email-otp.js.map +1 -0
  193. package/dist/core/security/mfa/index.d.ts +8 -0
  194. package/dist/core/security/mfa/index.d.ts.map +1 -0
  195. package/dist/core/security/mfa/index.js +8 -0
  196. package/dist/core/security/mfa/index.js.map +1 -0
  197. package/dist/core/security/mfa/totp.d.ts +87 -0
  198. package/dist/core/security/mfa/totp.d.ts.map +1 -0
  199. package/dist/core/security/mfa/totp.js +293 -0
  200. package/dist/core/security/mfa/totp.js.map +1 -0
  201. package/dist/core/security/middleware.d.ts +102 -0
  202. package/dist/core/security/middleware.d.ts.map +1 -0
  203. package/dist/core/security/middleware.js +261 -0
  204. package/dist/core/security/middleware.js.map +1 -0
  205. package/dist/core/security/oauth/google.d.ts +76 -0
  206. package/dist/core/security/oauth/google.d.ts.map +1 -0
  207. package/dist/core/security/oauth/google.js +154 -0
  208. package/dist/core/security/oauth/google.js.map +1 -0
  209. package/dist/core/security/oauth/index.d.ts +8 -0
  210. package/dist/core/security/oauth/index.d.ts.map +1 -0
  211. package/dist/core/security/oauth/index.js +7 -0
  212. package/dist/core/security/oauth/index.js.map +1 -0
  213. package/dist/core/security/oauth2/authorization-server.d.ts +195 -0
  214. package/dist/core/security/oauth2/authorization-server.d.ts.map +1 -0
  215. package/dist/core/security/oauth2/authorization-server.js +569 -0
  216. package/dist/core/security/oauth2/authorization-server.js.map +1 -0
  217. package/dist/core/security/oauth2/index.d.ts +9 -0
  218. package/dist/core/security/oauth2/index.d.ts.map +1 -0
  219. package/dist/core/security/oauth2/index.js +9 -0
  220. package/dist/core/security/oauth2/index.js.map +1 -0
  221. package/dist/core/security/rate-limiter.d.ts +15 -0
  222. package/dist/core/security/rate-limiter.d.ts.map +1 -0
  223. package/dist/core/security/rate-limiter.js +48 -0
  224. package/dist/core/security/rate-limiter.js.map +1 -0
  225. package/dist/core/security/validation.d.ts +20 -0
  226. package/dist/core/security/validation.d.ts.map +1 -0
  227. package/dist/core/security/validation.js +273 -0
  228. package/dist/core/security/validation.js.map +1 -0
  229. package/dist/core/services/auth-service.d.ts +128 -0
  230. package/dist/core/services/auth-service.d.ts.map +1 -0
  231. package/dist/core/services/auth-service.js +530 -0
  232. package/dist/core/services/auth-service.js.map +1 -0
  233. package/dist/core/services/captcha-service.d.ts +44 -0
  234. package/dist/core/services/captcha-service.d.ts.map +1 -0
  235. package/dist/core/services/captcha-service.js +82 -0
  236. package/dist/core/services/captcha-service.js.map +1 -0
  237. package/dist/core/services/document-service.d.ts +59 -0
  238. package/dist/core/services/document-service.d.ts.map +1 -0
  239. package/dist/core/services/document-service.js +269 -0
  240. package/dist/core/services/document-service.js.map +1 -0
  241. package/dist/core/services/media-service.d.ts +40 -0
  242. package/dist/core/services/media-service.d.ts.map +1 -0
  243. package/dist/core/services/media-service.js +396 -0
  244. package/dist/core/services/media-service.js.map +1 -0
  245. package/dist/core/services/mfa-service.d.ts +123 -0
  246. package/dist/core/services/mfa-service.d.ts.map +1 -0
  247. package/dist/core/services/mfa-service.js +606 -0
  248. package/dist/core/services/mfa-service.js.map +1 -0
  249. package/dist/core/services/oauth-service.d.ts +58 -0
  250. package/dist/core/services/oauth-service.d.ts.map +1 -0
  251. package/dist/core/services/oauth-service.js +253 -0
  252. package/dist/core/services/oauth-service.js.map +1 -0
  253. package/dist/core/services/oauth2-server-service.d.ts +61 -0
  254. package/dist/core/services/oauth2-server-service.d.ts.map +1 -0
  255. package/dist/core/services/oauth2-server-service.js +259 -0
  256. package/dist/core/services/oauth2-server-service.js.map +1 -0
  257. package/dist/core/services/passkey-service.d.ts +59 -0
  258. package/dist/core/services/passkey-service.d.ts.map +1 -0
  259. package/dist/core/services/passkey-service.js +238 -0
  260. package/dist/core/services/passkey-service.js.map +1 -0
  261. package/dist/core/services/token-service.d.ts +31 -0
  262. package/dist/core/services/token-service.d.ts.map +1 -0
  263. package/dist/core/services/token-service.js +132 -0
  264. package/dist/core/services/token-service.js.map +1 -0
  265. package/dist/core/services/trusted-device-service.d.ts +39 -0
  266. package/dist/core/services/trusted-device-service.d.ts.map +1 -0
  267. package/dist/core/services/trusted-device-service.js +123 -0
  268. package/dist/core/services/trusted-device-service.js.map +1 -0
  269. package/dist/core/services/user-service.d.ts +38 -0
  270. package/dist/core/services/user-service.d.ts.map +1 -0
  271. package/dist/core/services/user-service.js +265 -0
  272. package/dist/core/services/user-service.js.map +1 -0
  273. package/dist/core/studio/integration.d.ts +54 -0
  274. package/dist/core/studio/integration.d.ts.map +1 -0
  275. package/dist/core/studio/integration.js +326 -0
  276. package/dist/core/studio/integration.js.map +1 -0
  277. package/dist/core/types/index.d.ts +282 -0
  278. package/dist/core/types/index.d.ts.map +1 -0
  279. package/dist/core/types/index.js +83 -0
  280. package/dist/core/types/index.js.map +1 -0
  281. package/dist/core/types/mail.d.ts +90 -0
  282. package/dist/core/types/mail.d.ts.map +1 -0
  283. package/dist/core/types/mail.js +7 -0
  284. package/dist/core/types/mail.js.map +1 -0
  285. package/dist/core/types/oauth2.d.ts +9 -0
  286. package/dist/core/types/oauth2.d.ts.map +1 -0
  287. package/dist/core/types/oauth2.js +7 -0
  288. package/dist/core/types/oauth2.js.map +1 -0
  289. package/dist/core/types/storage-adapters.d.ts +611 -0
  290. package/dist/core/types/storage-adapters.d.ts.map +1 -0
  291. package/dist/core/types/storage-adapters.js +14 -0
  292. package/dist/core/types/storage-adapters.js.map +1 -0
  293. package/dist/core/types/user.d.ts +10 -0
  294. package/dist/core/types/user.d.ts.map +1 -0
  295. package/dist/core/types/user.js +45 -0
  296. package/dist/core/types/user.js.map +1 -0
  297. package/dist/core/utils/id-generator.d.ts +16 -0
  298. package/dist/core/utils/id-generator.d.ts.map +1 -0
  299. package/dist/core/utils/id-generator.js +61 -0
  300. package/dist/core/utils/id-generator.js.map +1 -0
  301. package/dist/core/utils/logger.d.ts +100 -0
  302. package/dist/core/utils/logger.d.ts.map +1 -0
  303. package/dist/core/utils/logger.js +212 -0
  304. package/dist/core/utils/logger.js.map +1 -0
  305. package/dist/core/utils/reference-expander.d.ts +57 -0
  306. package/dist/core/utils/reference-expander.d.ts.map +1 -0
  307. package/dist/core/utils/reference-expander.js +192 -0
  308. package/dist/core/utils/reference-expander.js.map +1 -0
  309. package/dist/core/utils/universal-crypto.d.ts +46 -0
  310. package/dist/core/utils/universal-crypto.d.ts.map +1 -0
  311. package/dist/core/utils/universal-crypto.js +171 -0
  312. package/dist/core/utils/universal-crypto.js.map +1 -0
  313. package/dist/core/validation/validator.d.ts +11 -0
  314. package/dist/core/validation/validator.d.ts.map +1 -0
  315. package/dist/core/validation/validator.js +164 -0
  316. package/dist/core/validation/validator.js.map +1 -0
  317. package/dist/i18n/config.d.ts +4077 -0
  318. package/dist/i18n/config.d.ts.map +1 -0
  319. package/dist/i18n/config.js +116 -0
  320. package/dist/i18n/config.js.map +1 -0
  321. package/dist/i18n/hooks.d.ts +86 -0
  322. package/dist/i18n/hooks.d.ts.map +1 -0
  323. package/dist/i18n/hooks.js +122 -0
  324. package/dist/i18n/hooks.js.map +1 -0
  325. package/dist/i18n/index.d.ts +39 -0
  326. package/dist/i18n/index.d.ts.map +1 -0
  327. package/dist/i18n/index.js +40 -0
  328. package/dist/i18n/index.js.map +1 -0
  329. package/dist/i18n/locales/en/auth.json +108 -0
  330. package/dist/i18n/locales/en/common.json +100 -0
  331. package/dist/i18n/locales/en/errors.json +55 -0
  332. package/dist/i18n/locales/en/fields.json +456 -0
  333. package/dist/i18n/locales/en/studio.json +1329 -0
  334. package/dist/i18n/locales/fr/auth.json +108 -0
  335. package/dist/i18n/locales/fr/common.json +100 -0
  336. package/dist/i18n/locales/fr/errors.json +55 -0
  337. package/dist/i18n/locales/fr/fields.json +456 -0
  338. package/dist/i18n/locales/fr/studio.json +1274 -0
  339. package/dist/i18n/provider.d.ts +45 -0
  340. package/dist/i18n/provider.d.ts.map +1 -0
  341. package/dist/i18n/provider.js +49 -0
  342. package/dist/i18n/provider.js.map +1 -0
  343. package/dist/i18n/types.d.ts +8 -0
  344. package/dist/i18n/types.d.ts.map +1 -0
  345. package/dist/i18n/types.js +7 -0
  346. package/dist/i18n/types.js.map +1 -0
  347. package/dist/index.d.ts +15 -0
  348. package/dist/index.d.ts.map +1 -0
  349. package/dist/index.js +16 -0
  350. package/dist/index.js.map +1 -0
  351. package/dist/integrations/express/adapter.d.ts +33 -0
  352. package/dist/integrations/express/adapter.d.ts.map +1 -0
  353. package/dist/integrations/express/adapter.js +203 -0
  354. package/dist/integrations/express/adapter.js.map +1 -0
  355. package/dist/integrations/express/config.d.ts +599 -0
  356. package/dist/integrations/express/config.d.ts.map +1 -0
  357. package/dist/integrations/express/config.js +166 -0
  358. package/dist/integrations/express/config.js.map +1 -0
  359. package/dist/integrations/express/index.d.ts +10 -0
  360. package/dist/integrations/express/index.d.ts.map +1 -0
  361. package/dist/integrations/express/index.js +9 -0
  362. package/dist/integrations/express/index.js.map +1 -0
  363. package/dist/integrations/express/integration.d.ts +111 -0
  364. package/dist/integrations/express/integration.d.ts.map +1 -0
  365. package/dist/integrations/express/integration.js +730 -0
  366. package/dist/integrations/express/integration.js.map +1 -0
  367. package/dist/integrations/express/media-rewrite-middleware.d.ts +78 -0
  368. package/dist/integrations/express/media-rewrite-middleware.d.ts.map +1 -0
  369. package/dist/integrations/express/media-rewrite-middleware.js +211 -0
  370. package/dist/integrations/express/media-rewrite-middleware.js.map +1 -0
  371. package/dist/integrations/express/media-url-generator.d.ts +52 -0
  372. package/dist/integrations/express/media-url-generator.d.ts.map +1 -0
  373. package/dist/integrations/express/media-url-generator.js +107 -0
  374. package/dist/integrations/express/media-url-generator.js.map +1 -0
  375. package/dist/integrations/express/middleware.d.ts +25 -0
  376. package/dist/integrations/express/middleware.d.ts.map +1 -0
  377. package/dist/integrations/express/middleware.js +130 -0
  378. package/dist/integrations/express/middleware.js.map +1 -0
  379. package/dist/integrations/express/server.d.ts +99 -0
  380. package/dist/integrations/express/server.d.ts.map +1 -0
  381. package/dist/integrations/express/server.js +597 -0
  382. package/dist/integrations/express/server.js.map +1 -0
  383. package/dist/integrations/express/types.d.ts +106 -0
  384. package/dist/integrations/express/types.d.ts.map +1 -0
  385. package/dist/integrations/express/types.js +2 -0
  386. package/dist/integrations/express/types.js.map +1 -0
  387. package/dist/mail/adapters/console.d.ts +30 -0
  388. package/dist/mail/adapters/console.d.ts.map +1 -0
  389. package/dist/mail/adapters/console.js +169 -0
  390. package/dist/mail/adapters/console.js.map +1 -0
  391. package/dist/mail/adapters/resend.d.ts +18 -0
  392. package/dist/mail/adapters/resend.d.ts.map +1 -0
  393. package/dist/mail/adapters/resend.js +148 -0
  394. package/dist/mail/adapters/resend.js.map +1 -0
  395. package/dist/mail/adapters/smtp.d.ts +22 -0
  396. package/dist/mail/adapters/smtp.d.ts.map +1 -0
  397. package/dist/mail/adapters/smtp.js +180 -0
  398. package/dist/mail/adapters/smtp.js.map +1 -0
  399. package/dist/mail/index.d.ts +15 -0
  400. package/dist/mail/index.d.ts.map +1 -0
  401. package/dist/mail/index.js +13 -0
  402. package/dist/mail/index.js.map +1 -0
  403. package/dist/mail/mail-service.d.ts +180 -0
  404. package/dist/mail/mail-service.d.ts.map +1 -0
  405. package/dist/mail/mail-service.js +370 -0
  406. package/dist/mail/mail-service.js.map +1 -0
  407. package/dist/mail/notification-service.d.ts +82 -0
  408. package/dist/mail/notification-service.d.ts.map +1 -0
  409. package/dist/mail/notification-service.js +262 -0
  410. package/dist/mail/notification-service.js.map +1 -0
  411. package/dist/mail/templates/built-in-templates.d.ts +47 -0
  412. package/dist/mail/templates/built-in-templates.d.ts.map +1 -0
  413. package/dist/mail/templates/built-in-templates.js +416 -0
  414. package/dist/mail/templates/built-in-templates.js.map +1 -0
  415. package/dist/mail/templates/custom-template-renderer.d.ts +115 -0
  416. package/dist/mail/templates/custom-template-renderer.d.ts.map +1 -0
  417. package/dist/mail/templates/custom-template-renderer.js +225 -0
  418. package/dist/mail/templates/custom-template-renderer.js.map +1 -0
  419. package/dist/mail/types.d.ts +7 -0
  420. package/dist/mail/types.d.ts.map +1 -0
  421. package/dist/mail/types.js +7 -0
  422. package/dist/mail/types.js.map +1 -0
  423. package/dist/routes/auth/captcha.d.ts +33 -0
  424. package/dist/routes/auth/captcha.d.ts.map +1 -0
  425. package/dist/routes/auth/captcha.js +102 -0
  426. package/dist/routes/auth/captcha.js.map +1 -0
  427. package/dist/routes/auth/change-password.d.ts +17 -0
  428. package/dist/routes/auth/change-password.d.ts.map +1 -0
  429. package/dist/routes/auth/change-password.js +121 -0
  430. package/dist/routes/auth/change-password.js.map +1 -0
  431. package/dist/routes/auth/index.d.ts +13 -0
  432. package/dist/routes/auth/index.d.ts.map +1 -0
  433. package/dist/routes/auth/index.js +35 -0
  434. package/dist/routes/auth/index.js.map +1 -0
  435. package/dist/routes/auth/mfa.d.ts +121 -0
  436. package/dist/routes/auth/mfa.d.ts.map +1 -0
  437. package/dist/routes/auth/mfa.js +1143 -0
  438. package/dist/routes/auth/mfa.js.map +1 -0
  439. package/dist/routes/auth/oauth.d.ts +37 -0
  440. package/dist/routes/auth/oauth.d.ts.map +1 -0
  441. package/dist/routes/auth/oauth.js +420 -0
  442. package/dist/routes/auth/oauth.js.map +1 -0
  443. package/dist/routes/auth/oauth2-server.d.ts +70 -0
  444. package/dist/routes/auth/oauth2-server.d.ts.map +1 -0
  445. package/dist/routes/auth/oauth2-server.js +775 -0
  446. package/dist/routes/auth/oauth2-server.js.map +1 -0
  447. package/dist/routes/auth/passkey.d.ts +65 -0
  448. package/dist/routes/auth/passkey.d.ts.map +1 -0
  449. package/dist/routes/auth/passkey.js +910 -0
  450. package/dist/routes/auth/passkey.js.map +1 -0
  451. package/dist/routes/auth/password-reset.d.ts +23 -0
  452. package/dist/routes/auth/password-reset.d.ts.map +1 -0
  453. package/dist/routes/auth/password-reset.js +336 -0
  454. package/dist/routes/auth/password-reset.js.map +1 -0
  455. package/dist/routes/handlers/audit.d.ts +21 -0
  456. package/dist/routes/handlers/audit.d.ts.map +1 -0
  457. package/dist/routes/handlers/audit.js +124 -0
  458. package/dist/routes/handlers/audit.js.map +1 -0
  459. package/dist/routes/handlers/auth.d.ts +150 -0
  460. package/dist/routes/handlers/auth.d.ts.map +1 -0
  461. package/dist/routes/handlers/auth.js +512 -0
  462. package/dist/routes/handlers/auth.js.map +1 -0
  463. package/dist/routes/handlers/base.d.ts +34 -0
  464. package/dist/routes/handlers/base.d.ts.map +1 -0
  465. package/dist/routes/handlers/base.js +366 -0
  466. package/dist/routes/handlers/base.js.map +1 -0
  467. package/dist/routes/handlers/config.d.ts +31 -0
  468. package/dist/routes/handlers/config.d.ts.map +1 -0
  469. package/dist/routes/handlers/config.js +483 -0
  470. package/dist/routes/handlers/config.js.map +1 -0
  471. package/dist/routes/handlers/documents.d.ts +50 -0
  472. package/dist/routes/handlers/documents.d.ts.map +1 -0
  473. package/dist/routes/handlers/documents.js +708 -0
  474. package/dist/routes/handlers/documents.js.map +1 -0
  475. package/dist/routes/handlers/index.d.ts +12 -0
  476. package/dist/routes/handlers/index.d.ts.map +1 -0
  477. package/dist/routes/handlers/index.js +11 -0
  478. package/dist/routes/handlers/index.js.map +1 -0
  479. package/dist/routes/handlers/media.d.ts +24 -0
  480. package/dist/routes/handlers/media.d.ts.map +1 -0
  481. package/dist/routes/handlers/media.js +432 -0
  482. package/dist/routes/handlers/media.js.map +1 -0
  483. package/dist/routes/handlers/search.d.ts +10 -0
  484. package/dist/routes/handlers/search.d.ts.map +1 -0
  485. package/dist/routes/handlers/search.js +153 -0
  486. package/dist/routes/handlers/search.js.map +1 -0
  487. package/dist/routes/handlers/tokens.d.ts +14 -0
  488. package/dist/routes/handlers/tokens.d.ts.map +1 -0
  489. package/dist/routes/handlers/tokens.js +109 -0
  490. package/dist/routes/handlers/tokens.js.map +1 -0
  491. package/dist/routes/handlers/types.d.ts +13 -0
  492. package/dist/routes/handlers/types.d.ts.map +1 -0
  493. package/dist/routes/handlers/types.js +5 -0
  494. package/dist/routes/handlers/types.js.map +1 -0
  495. package/dist/routes/handlers/users.d.ts +16 -0
  496. package/dist/routes/handlers/users.d.ts.map +1 -0
  497. package/dist/routes/handlers/users.js +198 -0
  498. package/dist/routes/handlers/users.js.map +1 -0
  499. package/dist/routes/handlers/webhooks.d.ts +37 -0
  500. package/dist/routes/handlers/webhooks.d.ts.map +1 -0
  501. package/dist/routes/handlers/webhooks.js +343 -0
  502. package/dist/routes/handlers/webhooks.js.map +1 -0
  503. package/dist/routes/index.d.ts +5 -0
  504. package/dist/routes/index.d.ts.map +1 -0
  505. package/dist/routes/index.js +5 -0
  506. package/dist/routes/index.js.map +1 -0
  507. package/dist/routes/routes.d.ts +29 -0
  508. package/dist/routes/routes.d.ts.map +1 -0
  509. package/dist/routes/routes.js +531 -0
  510. package/dist/routes/routes.js.map +1 -0
  511. package/dist/routes/slug-processor.d.ts +32 -0
  512. package/dist/routes/slug-processor.d.ts.map +1 -0
  513. package/dist/routes/slug-processor.js +328 -0
  514. package/dist/routes/slug-processor.js.map +1 -0
  515. package/dist/routes/types.d.ts +31 -0
  516. package/dist/routes/types.d.ts.map +1 -0
  517. package/dist/routes/types.js +7 -0
  518. package/dist/routes/types.js.map +1 -0
  519. package/dist/routes/users/index.d.ts +7 -0
  520. package/dist/routes/users/index.d.ts.map +1 -0
  521. package/dist/routes/users/index.js +7 -0
  522. package/dist/routes/users/index.js.map +1 -0
  523. package/dist/structure/builder/StructureBuilder.d.ts +209 -0
  524. package/dist/structure/builder/StructureBuilder.d.ts.map +1 -0
  525. package/dist/structure/builder/StructureBuilder.js +425 -0
  526. package/dist/structure/builder/StructureBuilder.js.map +1 -0
  527. package/dist/structure/builder/index.d.ts +8 -0
  528. package/dist/structure/builder/index.d.ts.map +1 -0
  529. package/dist/structure/builder/index.js +6 -0
  530. package/dist/structure/builder/index.js.map +1 -0
  531. package/dist/structure/builder/navigation-tree-builder.d.ts +33 -0
  532. package/dist/structure/builder/navigation-tree-builder.d.ts.map +1 -0
  533. package/dist/structure/builder/navigation-tree-builder.js +284 -0
  534. package/dist/structure/builder/navigation-tree-builder.js.map +1 -0
  535. package/dist/structure/errors/index.d.ts +72 -0
  536. package/dist/structure/errors/index.d.ts.map +1 -0
  537. package/dist/structure/errors/index.js +136 -0
  538. package/dist/structure/errors/index.js.map +1 -0
  539. package/dist/structure/index.d.ts +14 -0
  540. package/dist/structure/index.d.ts.map +1 -0
  541. package/dist/structure/index.js +16 -0
  542. package/dist/structure/index.js.map +1 -0
  543. package/dist/structure/types/filters.d.ts +167 -0
  544. package/dist/structure/types/filters.d.ts.map +1 -0
  545. package/dist/structure/types/filters.js +38 -0
  546. package/dist/structure/types/filters.js.map +1 -0
  547. package/dist/structure/types/index.d.ts +11 -0
  548. package/dist/structure/types/index.d.ts.map +1 -0
  549. package/dist/structure/types/index.js +7 -0
  550. package/dist/structure/types/index.js.map +1 -0
  551. package/dist/structure/types/permissions.d.ts +159 -0
  552. package/dist/structure/types/permissions.d.ts.map +1 -0
  553. package/dist/structure/types/permissions.js +49 -0
  554. package/dist/structure/types/permissions.js.map +1 -0
  555. package/dist/structure/types/structure.d.ts +342 -0
  556. package/dist/structure/types/structure.d.ts.map +1 -0
  557. package/dist/structure/types/structure.js +6 -0
  558. package/dist/structure/types/structure.js.map +1 -0
  559. package/dist/structure/types/views.d.ts +278 -0
  560. package/dist/structure/types/views.d.ts.map +1 -0
  561. package/dist/structure/types/views.js +6 -0
  562. package/dist/structure/types/views.js.map +1 -0
  563. package/dist/structure/utils/hash.d.ts +61 -0
  564. package/dist/structure/utils/hash.d.ts.map +1 -0
  565. package/dist/structure/utils/hash.js +118 -0
  566. package/dist/structure/utils/hash.js.map +1 -0
  567. package/dist/structure/utils/index.d.ts +10 -0
  568. package/dist/structure/utils/index.d.ts.map +1 -0
  569. package/dist/structure/utils/index.js +7 -0
  570. package/dist/structure/utils/index.js.map +1 -0
  571. package/dist/structure/utils/permission-checker.d.ts +57 -0
  572. package/dist/structure/utils/permission-checker.d.ts.map +1 -0
  573. package/dist/structure/utils/permission-checker.js +286 -0
  574. package/dist/structure/utils/permission-checker.js.map +1 -0
  575. package/dist/structure/utils/query-builder.d.ts +82 -0
  576. package/dist/structure/utils/query-builder.d.ts.map +1 -0
  577. package/dist/structure/utils/query-builder.js +489 -0
  578. package/dist/structure/utils/query-builder.js.map +1 -0
  579. package/dist/structure/utils/structure-merger.d.ts +91 -0
  580. package/dist/structure/utils/structure-merger.d.ts.map +1 -0
  581. package/dist/structure/utils/structure-merger.js +445 -0
  582. package/dist/structure/utils/structure-merger.js.map +1 -0
  583. package/dist/structure/validation/schemas.d.ts +3107 -0
  584. package/dist/structure/validation/schemas.d.ts.map +1 -0
  585. package/dist/structure/validation/schemas.js +436 -0
  586. package/dist/structure/validation/schemas.js.map +1 -0
  587. package/dist/types/api-requests.d.ts +334 -0
  588. package/dist/types/api-requests.d.ts.map +1 -0
  589. package/dist/types/api-requests.js +8 -0
  590. package/dist/types/api-requests.js.map +1 -0
  591. package/dist/types/auth.d.ts +394 -0
  592. package/dist/types/auth.d.ts.map +1 -0
  593. package/dist/types/auth.js +8 -0
  594. package/dist/types/auth.js.map +1 -0
  595. package/dist/types/document.d.ts +49 -0
  596. package/dist/types/document.d.ts.map +1 -0
  597. package/dist/types/document.js +6 -0
  598. package/dist/types/document.js.map +1 -0
  599. package/dist/types/field-system.d.ts +197 -0
  600. package/dist/types/field-system.d.ts.map +1 -0
  601. package/dist/types/field-system.js +8 -0
  602. package/dist/types/field-system.js.map +1 -0
  603. package/dist/types/fields.d.ts +17 -0
  604. package/dist/types/fields.d.ts.map +1 -0
  605. package/dist/types/fields.js +21 -0
  606. package/dist/types/fields.js.map +1 -0
  607. package/dist/types/http.d.ts +162 -0
  608. package/dist/types/http.d.ts.map +1 -0
  609. package/dist/types/http.js +8 -0
  610. package/dist/types/http.js.map +1 -0
  611. package/dist/types/i18n.d.ts +56 -0
  612. package/dist/types/i18n.d.ts.map +1 -0
  613. package/dist/types/i18n.js +25 -0
  614. package/dist/types/i18n.js.map +1 -0
  615. package/dist/types/index.d.ts +22 -0
  616. package/dist/types/index.d.ts.map +1 -0
  617. package/dist/types/index.js +10 -0
  618. package/dist/types/index.js.map +1 -0
  619. package/dist/types/mail.d.ts +224 -0
  620. package/dist/types/mail.d.ts.map +1 -0
  621. package/dist/types/mail.js +8 -0
  622. package/dist/types/mail.js.map +1 -0
  623. package/dist/types/media.d.ts +56 -0
  624. package/dist/types/media.d.ts.map +1 -0
  625. package/dist/types/media.js +6 -0
  626. package/dist/types/media.js.map +1 -0
  627. package/dist/types/oauth2.d.ts +287 -0
  628. package/dist/types/oauth2.d.ts.map +1 -0
  629. package/dist/types/oauth2.js +43 -0
  630. package/dist/types/oauth2.js.map +1 -0
  631. package/dist/types/passkey.d.ts +217 -0
  632. package/dist/types/passkey.d.ts.map +1 -0
  633. package/dist/types/passkey.js +8 -0
  634. package/dist/types/passkey.js.map +1 -0
  635. package/dist/types/slug.d.ts +99 -0
  636. package/dist/types/slug.d.ts.map +1 -0
  637. package/dist/types/slug.js +8 -0
  638. package/dist/types/slug.js.map +1 -0
  639. package/package.json +183 -0
@@ -0,0 +1,237 @@
1
+ /**
2
+ * Cloudflare Transform & Store Processor
3
+ *
4
+ * Uses Cloudflare's Image Transformations API to transform images and stores
5
+ * the transformed variants back in R2. This gives you full control over serving
6
+ * while leveraging Cloudflare's transformation capabilities.
7
+ *
8
+ * Unlike the cloudflare-transformations processor which only generates URLs,
9
+ * this processor actually creates and stores the transformed images.
10
+ *
11
+ * Process:
12
+ * 1. Upload original to R2
13
+ * 2. Request transformation via Cloudflare API
14
+ * 3. Store transformed variant in R2
15
+ * 4. Generate R2 URLs for all variants
16
+ *
17
+ * Benefits:
18
+ * - Full control over image serving
19
+ * - Works in development without domain proxy
20
+ * - Transformed images are physically stored
21
+ * - Can serve directly from R2 or your own domain
22
+ */
23
+ import { ImageProcessor } from './types.js';
24
+ import { createLogger } from '../../utils/logger.js';
25
+ const logger = createLogger('media', 'CloudflareTransformStore');
26
+ /**
27
+ * Cloudflare Transform & Store processor
28
+ *
29
+ * This processor transforms images using Cloudflare and stores them in R2
30
+ */
31
+ export class CloudflareTransformStoreProcessor extends ImageProcessor {
32
+ accountId;
33
+ apiToken;
34
+ transformUrl;
35
+ r2Bucket;
36
+ mediaPath;
37
+ flatStructure;
38
+ defaultFormat;
39
+ defaultQuality;
40
+ env;
41
+ constructor(config) {
42
+ super(config);
43
+ const { accountId, apiToken, transformUrl, r2Bucket, mediaPath, flatStructure, defaultFormat, defaultQuality } = config.options;
44
+ this.accountId = accountId;
45
+ this.apiToken = apiToken;
46
+ this.transformUrl = transformUrl.replace(/\/$/, ''); // Remove trailing slash
47
+ this.r2Bucket = r2Bucket;
48
+ this.mediaPath = mediaPath || '/media';
49
+ this.flatStructure = flatStructure !== false; // Default to true
50
+ this.defaultFormat = defaultFormat || 'webp';
51
+ this.defaultQuality = defaultQuality || 85;
52
+ }
53
+ /**
54
+ * Set the R2 bucket from Worker environment
55
+ */
56
+ setEnv(env) {
57
+ this.env = env;
58
+ if (env?.R2) {
59
+ this.r2Bucket = env.R2;
60
+ }
61
+ }
62
+ async processImage(file, metadata) {
63
+ const buffer = await file.arrayBuffer();
64
+ const variants = {};
65
+ // Store original
66
+ const original = {
67
+ url: `${this.mediaPath}/${metadata.id}`,
68
+ width: 0, // Will be determined by first transformation request
69
+ height: 0,
70
+ format: file.type.split('/')[1] || 'jpeg',
71
+ size: file.size,
72
+ buffer: Buffer.from(buffer)
73
+ };
74
+ // Process and store each variant
75
+ for (const variant of this.config.variants || []) {
76
+ try {
77
+ const transformedData = await this.transformAndFetch(metadata.id, buffer, variant);
78
+ // Store the transformed variant in R2
79
+ const variantKey = this.getVariantKey(metadata.id, variant.name);
80
+ await this.storeVariant(variantKey, transformedData.buffer);
81
+ variants[variant.name] = {
82
+ url: `${this.mediaPath}/${variantKey}`,
83
+ width: variant.width || 0,
84
+ height: variant.height || 0,
85
+ format: variant.format || this.defaultFormat,
86
+ size: transformedData.buffer.byteLength,
87
+ buffer: transformedData.buffer
88
+ };
89
+ }
90
+ catch (error) {
91
+ logger.error('Failed to transform variant', { variantName: variant.name, error });
92
+ // Continue with other variants even if one fails
93
+ }
94
+ }
95
+ return { original, variants };
96
+ }
97
+ /**
98
+ * Transform image using Cloudflare and fetch the result
99
+ */
100
+ async transformAndFetch(imageId, imageBuffer, variant) {
101
+ // First, we need the original image to be accessible via a URL
102
+ // In development, this is tricky - we'll use the transformation URL directly
103
+ // Build transformation parameters
104
+ const params = this.buildTransformParams(variant);
105
+ const transformEndpoint = `${this.transformUrl}${this.mediaPath}/${imageId}?${params}`;
106
+ try {
107
+ // Fetch the transformed image from Cloudflare's CDN
108
+ // This assumes the original is already uploaded and accessible
109
+ const response = await fetch(transformEndpoint);
110
+ if (!response.ok) {
111
+ throw new Error(`Transformation failed: ${response.status} ${response.statusText}`);
112
+ }
113
+ const arrayBuffer = await response.arrayBuffer();
114
+ return { buffer: Buffer.from(arrayBuffer) };
115
+ }
116
+ catch (error) {
117
+ // Fallback: If we can't fetch from CDN, return original with a warning
118
+ logger.warn('Could not fetch transformation from CDN, using original', error);
119
+ return { buffer: Buffer.from(imageBuffer) };
120
+ }
121
+ }
122
+ /**
123
+ * Build URL parameters for Cloudflare transformation
124
+ */
125
+ buildTransformParams(variant) {
126
+ const params = new URLSearchParams();
127
+ // Dimensions
128
+ if (variant.width) {
129
+ params.set('width', variant.width.toString());
130
+ }
131
+ if (variant.height) {
132
+ params.set('height', variant.height.toString());
133
+ }
134
+ // Fit mode
135
+ if (variant.fit) {
136
+ const fitMap = {
137
+ 'cover': 'crop',
138
+ 'contain': 'scale-down',
139
+ 'fill': 'crop',
140
+ 'inside': 'scale-down',
141
+ 'outside': 'crop'
142
+ };
143
+ params.set('fit', fitMap[variant.fit] || variant.fit);
144
+ }
145
+ // Format
146
+ const format = variant.format || this.defaultFormat;
147
+ if (format !== 'jpeg') {
148
+ params.set('format', format);
149
+ }
150
+ // Quality
151
+ const quality = variant.quality || this.defaultQuality;
152
+ if (quality !== 85) {
153
+ params.set('quality', quality.toString());
154
+ }
155
+ return params.toString();
156
+ }
157
+ /**
158
+ * Get the storage key for a variant
159
+ */
160
+ getVariantKey(imageId, variantName) {
161
+ if (this.flatStructure) {
162
+ return `${imageId}-${variantName}`;
163
+ }
164
+ else {
165
+ return `${imageId}/${variantName}`;
166
+ }
167
+ }
168
+ /**
169
+ * Store a variant in R2
170
+ */
171
+ async storeVariant(key, buffer) {
172
+ if (!this.r2Bucket) {
173
+ logger.warn('R2 bucket not available, cannot store variant', { key });
174
+ return;
175
+ }
176
+ try {
177
+ // Store in R2 using the bucket binding
178
+ await this.r2Bucket.put(key, buffer, {
179
+ httpMetadata: {
180
+ contentType: this.getContentType(key)
181
+ }
182
+ });
183
+ }
184
+ catch (error) {
185
+ logger.error('Failed to store variant in R2', error);
186
+ throw error;
187
+ }
188
+ }
189
+ /**
190
+ * Get content type from file extension
191
+ */
192
+ getContentType(filename) {
193
+ const ext = filename.split('.').pop()?.toLowerCase();
194
+ const types = {
195
+ 'jpg': 'image/jpeg',
196
+ 'jpeg': 'image/jpeg',
197
+ 'png': 'image/png',
198
+ 'webp': 'image/webp',
199
+ 'avif': 'image/avif',
200
+ 'gif': 'image/gif',
201
+ 'svg': 'image/svg+xml'
202
+ };
203
+ return types[ext || ''] || 'application/octet-stream';
204
+ }
205
+ /**
206
+ * Get the URL for a specific variant
207
+ */
208
+ getImageUrl(imageId, variantName) {
209
+ if (!variantName || variantName === 'original') {
210
+ return `${this.mediaPath}/${imageId}`;
211
+ }
212
+ const variantKey = this.getVariantKey(imageId, variantName);
213
+ return `${this.mediaPath}/${variantKey}`;
214
+ }
215
+ /**
216
+ * Delete image and all variants
217
+ */
218
+ async deleteImage(imageId) {
219
+ if (!this.r2Bucket) {
220
+ return;
221
+ }
222
+ // Delete original
223
+ await this.r2Bucket.delete(`${this.mediaPath}/${imageId}`);
224
+ // Delete all variants
225
+ for (const variant of this.config.variants || []) {
226
+ const variantKey = this.getVariantKey(imageId, variant.name);
227
+ await this.r2Bucket.delete(`${this.mediaPath}/${variantKey}`);
228
+ }
229
+ }
230
+ /**
231
+ * Health check
232
+ */
233
+ async healthCheck() {
234
+ return !!this.r2Bucket;
235
+ }
236
+ }
237
+ //# sourceMappingURL=cloudflare-transform-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloudflare-transform-store.js","sourceRoot":"","sources":["../../../../src/core/media/processors/cloudflare-transform-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,81 @@
1
+ /**
2
+ * Cloudflare Image Transformations Processor
3
+ *
4
+ * Uses Cloudflare's Image Transformations feature to transform images on-the-fly
5
+ * via URL parameters. Works with images stored in R2 and served through Cloudflare.
6
+ *
7
+ * Unlike Cloudflare Images, this doesn't require a separate service or storage.
8
+ * Images are stored in R2 and transformed when requested via URL parameters.
9
+ *
10
+ * Example URLs:
11
+ * - Original: https://example.com/media/image.jpg
12
+ * - Thumbnail: https://example.com/media/image.jpg?width=300&height=300&fit=crop&format=webp
13
+ * - Medium: https://example.com/media/image.jpg?width=800&height=600&fit=crop&format=webp
14
+ *
15
+ * Documentation: https://developers.cloudflare.com/images/image-resizing/
16
+ */
17
+ import { ImageProcessor } from './types.js';
18
+ import type { ImageProcessorConfig, ProcessedImage } from './types.js';
19
+ export interface CloudflareTransformationsConfig extends ImageProcessorConfig {
20
+ type: 'cloudflare-transformations';
21
+ options: {
22
+ /**
23
+ * Base URL for serving images (your domain with Cloudflare proxy)
24
+ * Example: 'https://trokky.dev' or 'https://cdn.example.com'
25
+ */
26
+ baseUrl: string;
27
+ /**
28
+ * Media path prefix (should match your R2 public URL structure)
29
+ * Example: '/media' if images are served at https://trokky.dev/media/filename.jpg
30
+ */
31
+ mediaPath?: string;
32
+ /**
33
+ * Default format for transformations
34
+ */
35
+ defaultFormat?: 'webp' | 'avif' | 'jpeg' | 'png';
36
+ /**
37
+ * Default quality (1-100)
38
+ */
39
+ defaultQuality?: number;
40
+ /**
41
+ * Whether to enable automatic format optimization based on browser support
42
+ */
43
+ autoFormat?: boolean;
44
+ };
45
+ }
46
+ /**
47
+ * Cloudflare Image Transformations processor
48
+ *
49
+ * This processor doesn't actually transform images - it generates URLs
50
+ * that will be transformed by Cloudflare when requested.
51
+ */
52
+ export declare class CloudflareTransformationsProcessor extends ImageProcessor {
53
+ private baseUrl;
54
+ private mediaPath;
55
+ private defaultFormat;
56
+ private defaultQuality;
57
+ private autoFormat;
58
+ constructor(config: CloudflareTransformationsConfig);
59
+ processImage(file: File, metadata: {
60
+ id: string;
61
+ filename: string;
62
+ path: string;
63
+ }): Promise<ProcessedImage>;
64
+ /**
65
+ * Build a Cloudflare Image Transformations URL
66
+ */
67
+ private buildTransformationUrl;
68
+ /**
69
+ * Get the URL for a specific variant
70
+ */
71
+ getImageUrl(imageId: string, variantName?: string): string;
72
+ /**
73
+ * Delete image - no-op since transformations don't store anything
74
+ */
75
+ deleteImage(imageId: string): Promise<void>;
76
+ /**
77
+ * Health check - verify base URL is accessible
78
+ */
79
+ healthCheck(): Promise<boolean>;
80
+ }
81
+ //# sourceMappingURL=cloudflare-transformations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloudflare-transformations.d.ts","sourceRoot":"","sources":["../../../../src/core/media/processors/cloudflare-transformations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAC3C,OAAO,KAAK,EAAE,oBAAoB,EAAgB,cAAc,EAAyB,MAAM,YAAY,CAAA;AAE3G,MAAM,WAAW,+BAAgC,SAAQ,oBAAoB;IAC3E,IAAI,EAAE,4BAA4B,CAAA;IAClC,OAAO,EAAE;QACP;;;WAGG;QACH,OAAO,EAAE,MAAM,CAAA;QAEf;;;WAGG;QACH,SAAS,CAAC,EAAE,MAAM,CAAA;QAElB;;WAEG;QACH,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAAA;QAEhD;;WAEG;QACH,cAAc,CAAC,EAAE,MAAM,CAAA;QAEvB;;WAEG;QACH,UAAU,CAAC,EAAE,OAAO,CAAA;KACrB,CAAA;CACF;AAED;;;;;GAKG;AACH,qBAAa,kCAAmC,SAAQ,cAAc;IACpE,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,aAAa,CAAQ;IAC7B,OAAO,CAAC,cAAc,CAAQ;IAC9B,OAAO,CAAC,UAAU,CAAS;gBAEf,MAAM,EAAE,+BAA+B;IAY7C,YAAY,CAChB,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GACvD,OAAO,CAAC,cAAc,CAAC;IAoC1B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IA6C9B;;OAEG;IACI,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM;IAgBjE;;OAEG;IACU,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKxD;;OAEG;IACU,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;CAQ7C"}
@@ -0,0 +1,144 @@
1
+ /**
2
+ * Cloudflare Image Transformations Processor
3
+ *
4
+ * Uses Cloudflare's Image Transformations feature to transform images on-the-fly
5
+ * via URL parameters. Works with images stored in R2 and served through Cloudflare.
6
+ *
7
+ * Unlike Cloudflare Images, this doesn't require a separate service or storage.
8
+ * Images are stored in R2 and transformed when requested via URL parameters.
9
+ *
10
+ * Example URLs:
11
+ * - Original: https://example.com/media/image.jpg
12
+ * - Thumbnail: https://example.com/media/image.jpg?width=300&height=300&fit=crop&format=webp
13
+ * - Medium: https://example.com/media/image.jpg?width=800&height=600&fit=crop&format=webp
14
+ *
15
+ * Documentation: https://developers.cloudflare.com/images/image-resizing/
16
+ */
17
+ import { ImageProcessor } from './types.js';
18
+ /**
19
+ * Cloudflare Image Transformations processor
20
+ *
21
+ * This processor doesn't actually transform images - it generates URLs
22
+ * that will be transformed by Cloudflare when requested.
23
+ */
24
+ export class CloudflareTransformationsProcessor extends ImageProcessor {
25
+ baseUrl;
26
+ mediaPath;
27
+ defaultFormat;
28
+ defaultQuality;
29
+ autoFormat;
30
+ constructor(config) {
31
+ super(config);
32
+ const { baseUrl, mediaPath, defaultFormat, defaultQuality, autoFormat } = config.options;
33
+ this.baseUrl = baseUrl.replace(/\/$/, ''); // Remove trailing slash
34
+ this.mediaPath = mediaPath || '/media';
35
+ this.defaultFormat = defaultFormat || 'webp';
36
+ this.defaultQuality = defaultQuality || 85;
37
+ this.autoFormat = autoFormat !== false; // Default to true
38
+ }
39
+ async processImage(file, metadata) {
40
+ // For transformations, we don't process the image physically
41
+ // We just generate URLs that will be transformed on-the-fly
42
+ const buffer = await file.arrayBuffer();
43
+ const baseImageUrl = `${this.baseUrl}${this.mediaPath}/${metadata.id}`;
44
+ // Original variant (no transformations)
45
+ const original = {
46
+ url: baseImageUrl,
47
+ width: 0, // Unknown until first request
48
+ height: 0,
49
+ format: file.type.split('/')[1] || 'jpeg',
50
+ size: file.size,
51
+ buffer: Buffer.from(buffer)
52
+ };
53
+ // Generate transformation URLs for each variant
54
+ const variants = {};
55
+ for (const variant of this.config.variants || []) {
56
+ const transformationUrl = this.buildTransformationUrl(baseImageUrl, variant);
57
+ variants[variant.name] = {
58
+ url: transformationUrl,
59
+ width: variant.width || 0,
60
+ height: variant.height || 0,
61
+ format: variant.format || this.defaultFormat,
62
+ size: 0, // Unknown until transformation
63
+ buffer: null // Transformations don't have buffers
64
+ };
65
+ }
66
+ return { original, variants };
67
+ }
68
+ /**
69
+ * Build a Cloudflare Image Transformations URL
70
+ */
71
+ buildTransformationUrl(baseUrl, variant) {
72
+ const params = new URLSearchParams();
73
+ // Dimensions
74
+ if (variant.width) {
75
+ params.set('width', variant.width.toString());
76
+ }
77
+ if (variant.height) {
78
+ params.set('height', variant.height.toString());
79
+ }
80
+ // Fit mode
81
+ if (variant.fit) {
82
+ // Map Trokky fit modes to Cloudflare fit modes
83
+ const fitMap = {
84
+ 'cover': 'crop',
85
+ 'contain': 'scale-down',
86
+ 'fill': 'crop',
87
+ 'inside': 'scale-down',
88
+ 'outside': 'crop'
89
+ };
90
+ params.set('fit', fitMap[variant.fit] || variant.fit);
91
+ }
92
+ // Format
93
+ const format = variant.format || this.defaultFormat;
94
+ if (format !== 'jpeg') { // JPEG is default, no need to specify
95
+ params.set('format', format);
96
+ }
97
+ // Quality
98
+ const quality = variant.quality || this.defaultQuality;
99
+ if (quality !== 85) { // 85 is Cloudflare's default
100
+ params.set('quality', quality.toString());
101
+ }
102
+ // Auto format optimization
103
+ if (this.autoFormat) {
104
+ params.set('anim', 'false'); // Disable animation for better compression
105
+ }
106
+ const queryString = params.toString();
107
+ return queryString ? `${baseUrl}?${queryString}` : baseUrl;
108
+ }
109
+ /**
110
+ * Get the URL for a specific variant
111
+ */
112
+ getImageUrl(imageId, variantName) {
113
+ const baseImageUrl = `${this.baseUrl}${this.mediaPath}/${imageId}`;
114
+ if (!variantName || variantName === 'original') {
115
+ return baseImageUrl;
116
+ }
117
+ // Find the variant configuration
118
+ const variant = this.config.variants?.find(v => v.name === variantName);
119
+ if (!variant) {
120
+ return baseImageUrl;
121
+ }
122
+ return this.buildTransformationUrl(baseImageUrl, variant);
123
+ }
124
+ /**
125
+ * Delete image - no-op since transformations don't store anything
126
+ */
127
+ async deleteImage(imageId) {
128
+ // No-op - transformations don't store images
129
+ // The original will be deleted from R2 by the media adapter
130
+ }
131
+ /**
132
+ * Health check - verify base URL is accessible
133
+ */
134
+ async healthCheck() {
135
+ try {
136
+ const response = await fetch(this.baseUrl, { method: 'HEAD' });
137
+ return response.ok;
138
+ }
139
+ catch {
140
+ return false;
141
+ }
142
+ }
143
+ }
144
+ //# sourceMappingURL=cloudflare-transformations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloudflare-transformations.js","sourceRoot":"","sources":["../../../../src/core/media/processors/cloudflare-transformations.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Image Processors Module
3
+ *
4
+ * Exports processor types and the NoOp processor.
5
+ * Other processors are loaded dynamically to avoid bundling issues.
6
+ */
7
+ export * from './types.js';
8
+ export { NoOpImageProcessor } from './noop.js';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/media/processors/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,cAAc,YAAY,CAAA;AAG1B,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAA"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Image Processors Module
3
+ *
4
+ * Exports processor types and the NoOp processor.
5
+ * Other processors are loaded dynamically to avoid bundling issues.
6
+ */
7
+ // Export types and base classes
8
+ export * from './types.js';
9
+ // Export NoOp processor (safe for all environments)
10
+ export { NoOpImageProcessor } from './noop.js';
11
+ // NOTE: Sharp and other processors are NOT exported here!
12
+ // They are loaded dynamically in the factory to prevent bundling issues.
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/media/processors/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,gCAAgC;AAChC,cAAc,YAAY,CAAA;AAE1B,oDAAoD;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAA;AAE9C,0DAA0D;AAC1D,yEAAyE"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * No-Operation Image Processor
3
+ *
4
+ * Stores only original images without any processing.
5
+ * Perfect for:
6
+ * - Edge deployments (Cloudflare Workers, Vercel Edge, etc.)
7
+ * - Simple use cases where processing isn't needed
8
+ * - Performance-critical applications
9
+ * - Development/testing
10
+ */
11
+ import { ImageProcessor, type ProcessedImage } from './types.js';
12
+ export declare class NoOpImageProcessor extends ImageProcessor {
13
+ processImage(file: File, metadata: {
14
+ id: string;
15
+ filename: string;
16
+ path: string;
17
+ }): Promise<ProcessedImage>;
18
+ getImageUrl(imageId: string, variantName?: string): string;
19
+ deleteImage(imageId: string): Promise<void>;
20
+ healthCheck(): Promise<boolean>;
21
+ }
22
+ //# sourceMappingURL=noop.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"noop.d.ts","sourceRoot":"","sources":["../../../../src/core/media/processors/noop.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EACL,cAAc,EAEd,KAAK,cAAc,EACpB,MAAM,YAAY,CAAA;AAEnB,qBAAa,kBAAmB,SAAQ,cAAc;IAC9C,YAAY,CAChB,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GACvD,OAAO,CAAC,cAAc,CAAC;IAc1B,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM;IAKpD,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK3C,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;CAGtC"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * No-Operation Image Processor
3
+ *
4
+ * Stores only original images without any processing.
5
+ * Perfect for:
6
+ * - Edge deployments (Cloudflare Workers, Vercel Edge, etc.)
7
+ * - Simple use cases where processing isn't needed
8
+ * - Performance-critical applications
9
+ * - Development/testing
10
+ */
11
+ import { ImageProcessor } from './types.js';
12
+ export class NoOpImageProcessor extends ImageProcessor {
13
+ async processImage(file, metadata) {
14
+ // Return only the original file, no variants generated
15
+ return {
16
+ original: {
17
+ url: this.getImageUrl(metadata.id, 'original'),
18
+ width: 0, // Dimensions not analyzed to save processing time
19
+ height: 0,
20
+ format: file.type,
21
+ size: file.size
22
+ },
23
+ variants: {} // No variants generated
24
+ };
25
+ }
26
+ getImageUrl(imageId, variantName) {
27
+ // Simple URL pattern - actual implementation depends on storage adapter
28
+ return `/media/${imageId}`;
29
+ }
30
+ async deleteImage(imageId) {
31
+ // No variants to delete, original handled by storage adapter
32
+ return;
33
+ }
34
+ async healthCheck() {
35
+ return true; // No-op processor is always healthy
36
+ }
37
+ }
38
+ //# sourceMappingURL=noop.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"noop.js","sourceRoot":"","sources":["../../../../src/core/media/processors/noop.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EACL,cAAc,EAGf,MAAM,YAAY,CAAA;AAEnB,MAAM,OAAO,kBAAmB,SAAQ,cAAc;IACpD,KAAK,CAAC,YAAY,CAChB,IAAU,EACV,QAAwD;QAExD,uDAAuD;QACvD,OAAO;YACL,QAAQ,EAAE;gBACR,GAAG,EAAE,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,EAAE,UAAU,CAAC;gBAC9C,KAAK,EAAE,CAAC,EAAE,kDAAkD;gBAC5D,MAAM,EAAE,CAAC;gBACT,MAAM,EAAE,IAAI,CAAC,IAAI;gBACjB,IAAI,EAAE,IAAI,CAAC,IAAI;aAChB;YACD,QAAQ,EAAE,EAAE,CAAC,wBAAwB;SACtC,CAAA;IACH,CAAC;IAED,WAAW,CAAC,OAAe,EAAE,WAAoB;QAC/C,wEAAwE;QACxE,OAAO,UAAU,OAAO,EAAE,CAAA;IAC5B,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,OAAe;QAC/B,6DAA6D;QAC7D,OAAM;IACR,CAAC;IAED,KAAK,CAAC,WAAW;QACf,OAAO,IAAI,CAAA,CAAC,oCAAoC;IAClD,CAAC;CACF"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Sharp Image Processor - Completely Isolated Module
3
+ *
4
+ * This file is NEVER imported statically. Only loaded dynamically
5
+ * when 'sharp' processor is explicitly requested.
6
+ *
7
+ * Perfect for:
8
+ * - Node.js server environments
9
+ * - Self-hosted deployments
10
+ * - Development with immediate processing
11
+ */
12
+ import { ImageProcessor, type ImageProcessorConfig, type ProcessedImage } from './types.js';
13
+ /**
14
+ * Sharp processor for local image processing
15
+ */
16
+ export declare class SharpImageProcessor extends ImageProcessor {
17
+ private sharp;
18
+ private logger;
19
+ constructor(config: ImageProcessorConfig);
20
+ private ensureSharpInitialized;
21
+ processImage(file: File, metadata: {
22
+ id: string;
23
+ filename: string;
24
+ path: string;
25
+ }): Promise<ProcessedImage>;
26
+ getImageUrl(imageId: string, variantName?: string): string;
27
+ deleteImage(imageId: string): Promise<void>;
28
+ healthCheck(): Promise<boolean>;
29
+ }
30
+ //# sourceMappingURL=sharp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sharp.d.ts","sourceRoot":"","sources":["../../../../src/core/media/processors/sharp.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EACL,cAAc,EACd,KAAK,oBAAoB,EACzB,KAAK,cAAc,EAEpB,MAAM,YAAY,CAAA;AAMnB;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,cAAc;IACrD,OAAO,CAAC,KAAK,CAAe;IAC5B,OAAO,CAAC,MAAM,CAA+C;gBAEjD,MAAM,EAAE,oBAAoB;YAK1B,sBAAsB;IAe9B,YAAY,CAChB,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GACvD,OAAO,CAAC,cAAc,CAAC;IA4E1B,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM;IAOpD,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAM3C,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;CAatC"}