@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.
- package/dist/adapters/filesystem/filesystem-adapter.d.ts +80 -0
- package/dist/adapters/filesystem/filesystem-adapter.d.ts.map +1 -0
- package/dist/adapters/filesystem/filesystem-adapter.js +1370 -0
- package/dist/adapters/filesystem/filesystem-adapter.js.map +1 -0
- package/dist/adapters/filesystem/index.d.ts +29 -0
- package/dist/adapters/filesystem/index.d.ts.map +1 -0
- package/dist/adapters/filesystem/index.js +31 -0
- package/dist/adapters/filesystem/index.js.map +1 -0
- package/dist/adapters/filesystem/types.d.ts +111 -0
- package/dist/adapters/filesystem/types.d.ts.map +1 -0
- package/dist/adapters/filesystem/types.js +2 -0
- package/dist/adapters/filesystem/types.js.map +1 -0
- package/dist/adapters/filesystem-data/filesystem-data-adapter.d.ts +111 -0
- package/dist/adapters/filesystem-data/filesystem-data-adapter.d.ts.map +1 -0
- package/dist/adapters/filesystem-data/filesystem-data-adapter.js +1363 -0
- package/dist/adapters/filesystem-data/filesystem-data-adapter.js.map +1 -0
- package/dist/adapters/filesystem-data/index.d.ts +3 -0
- package/dist/adapters/filesystem-data/index.d.ts.map +1 -0
- package/dist/adapters/filesystem-data/index.js +13 -0
- package/dist/adapters/filesystem-data/index.js.map +1 -0
- package/dist/adapters/filesystem-data/types.d.ts +147 -0
- package/dist/adapters/filesystem-data/types.d.ts.map +1 -0
- package/dist/adapters/filesystem-data/types.js +2 -0
- package/dist/adapters/filesystem-data/types.js.map +1 -0
- package/dist/adapters/filesystem-media/filesystem-media-adapter.d.ts +32 -0
- package/dist/adapters/filesystem-media/filesystem-media-adapter.d.ts.map +1 -0
- package/dist/adapters/filesystem-media/filesystem-media-adapter.js +639 -0
- package/dist/adapters/filesystem-media/filesystem-media-adapter.js.map +1 -0
- package/dist/adapters/filesystem-media/index.d.ts +3 -0
- package/dist/adapters/filesystem-media/index.d.ts.map +1 -0
- package/dist/adapters/filesystem-media/index.js +13 -0
- package/dist/adapters/filesystem-media/index.js.map +1 -0
- package/dist/adapters/filesystem-media/types.d.ts +76 -0
- package/dist/adapters/filesystem-media/types.d.ts.map +1 -0
- package/dist/adapters/filesystem-media/types.js +2 -0
- package/dist/adapters/filesystem-media/types.js.map +1 -0
- package/dist/adapters/postgres-data/index.d.ts +3 -0
- package/dist/adapters/postgres-data/index.d.ts.map +1 -0
- package/dist/adapters/postgres-data/index.js +13 -0
- package/dist/adapters/postgres-data/index.js.map +1 -0
- package/dist/adapters/postgres-data/postgres-data-adapter.d.ts +154 -0
- package/dist/adapters/postgres-data/postgres-data-adapter.d.ts.map +1 -0
- package/dist/adapters/postgres-data/postgres-data-adapter.js +1432 -0
- package/dist/adapters/postgres-data/postgres-data-adapter.js.map +1 -0
- package/dist/adapters/postgres-data/types.d.ts +139 -0
- package/dist/adapters/postgres-data/types.d.ts.map +1 -0
- package/dist/adapters/postgres-data/types.js +2 -0
- package/dist/adapters/postgres-data/types.js.map +1 -0
- package/dist/core/adapters/registry.d.ts +79 -0
- package/dist/core/adapters/registry.d.ts.map +1 -0
- package/dist/core/adapters/registry.js +149 -0
- package/dist/core/adapters/registry.js.map +1 -0
- package/dist/core/core/engine.d.ts +551 -0
- package/dist/core/core/engine.d.ts.map +1 -0
- package/dist/core/core/engine.js +1074 -0
- package/dist/core/core/engine.js.map +1 -0
- package/dist/core/crypto/adapter.d.ts +63 -0
- package/dist/core/crypto/adapter.d.ts.map +1 -0
- package/dist/core/crypto/adapter.js +63 -0
- package/dist/core/crypto/adapter.js.map +1 -0
- package/dist/core/crypto/fallback-adapter.d.ts +23 -0
- package/dist/core/crypto/fallback-adapter.d.ts.map +1 -0
- package/dist/core/crypto/fallback-adapter.js +195 -0
- package/dist/core/crypto/fallback-adapter.js.map +1 -0
- package/dist/core/crypto/node-adapter.d.ts +20 -0
- package/dist/core/crypto/node-adapter.d.ts.map +1 -0
- package/dist/core/crypto/node-adapter.js +85 -0
- package/dist/core/crypto/node-adapter.js.map +1 -0
- package/dist/core/crypto/password-hash.d.ts +73 -0
- package/dist/core/crypto/password-hash.d.ts.map +1 -0
- package/dist/core/crypto/password-hash.js +244 -0
- package/dist/core/crypto/password-hash.js.map +1 -0
- package/dist/core/crypto/webcrypto-adapter.d.ts +24 -0
- package/dist/core/crypto/webcrypto-adapter.d.ts.map +1 -0
- package/dist/core/crypto/webcrypto-adapter.js +158 -0
- package/dist/core/crypto/webcrypto-adapter.js.map +1 -0
- package/dist/core/errors/index.d.ts +30 -0
- package/dist/core/errors/index.d.ts.map +1 -0
- package/dist/core/errors/index.js +61 -0
- package/dist/core/errors/index.js.map +1 -0
- package/dist/core/events/event-bus.d.ts +121 -0
- package/dist/core/events/event-bus.d.ts.map +1 -0
- package/dist/core/events/event-bus.js +631 -0
- package/dist/core/events/event-bus.js.map +1 -0
- package/dist/core/events/index.d.ts +17 -0
- package/dist/core/events/index.d.ts.map +1 -0
- package/dist/core/events/index.js +22 -0
- package/dist/core/events/index.js.map +1 -0
- package/dist/core/events/memory-storage.d.ts +57 -0
- package/dist/core/events/memory-storage.d.ts.map +1 -0
- package/dist/core/events/memory-storage.js +175 -0
- package/dist/core/events/memory-storage.js.map +1 -0
- package/dist/core/events/types.d.ts +434 -0
- package/dist/core/events/types.d.ts.map +1 -0
- package/dist/core/events/types.js +9 -0
- package/dist/core/events/types.js.map +1 -0
- package/dist/core/events/utils.d.ts +134 -0
- package/dist/core/events/utils.d.ts.map +1 -0
- package/dist/core/events/utils.js +333 -0
- package/dist/core/events/utils.js.map +1 -0
- package/dist/core/fields/conditional.d.ts +115 -0
- package/dist/core/fields/conditional.d.ts.map +1 -0
- package/dist/core/fields/conditional.js +296 -0
- package/dist/core/fields/conditional.js.map +1 -0
- package/dist/core/fields/field-type.d.ts +218 -0
- package/dist/core/fields/field-type.d.ts.map +1 -0
- package/dist/core/fields/field-type.js +17 -0
- package/dist/core/fields/field-type.js.map +1 -0
- package/dist/core/fields/helpers.d.ts +86 -0
- package/dist/core/fields/helpers.d.ts.map +1 -0
- package/dist/core/fields/helpers.js +260 -0
- package/dist/core/fields/helpers.js.map +1 -0
- package/dist/core/fields/index.d.ts +5 -0
- package/dist/core/fields/index.d.ts.map +1 -0
- package/dist/core/fields/index.js +6 -0
- package/dist/core/fields/index.js.map +1 -0
- package/dist/core/fields/registry.d.ts +78 -0
- package/dist/core/fields/registry.d.ts.map +1 -0
- package/dist/core/fields/registry.js +185 -0
- package/dist/core/fields/registry.js.map +1 -0
- package/dist/core/index.d.ts +39 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +57 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/media/image-processor.d.ts +24 -0
- package/dist/core/media/image-processor.d.ts.map +1 -0
- package/dist/core/media/image-processor.js +69 -0
- package/dist/core/media/image-processor.js.map +1 -0
- package/dist/core/media/processors/cloudflare-images.d.ts +83 -0
- package/dist/core/media/processors/cloudflare-images.d.ts.map +1 -0
- package/dist/core/media/processors/cloudflare-images.js +241 -0
- package/dist/core/media/processors/cloudflare-images.js.map +1 -0
- package/dist/core/media/processors/cloudflare-transform-store.d.ts +127 -0
- package/dist/core/media/processors/cloudflare-transform-store.d.ts.map +1 -0
- package/dist/core/media/processors/cloudflare-transform-store.js +237 -0
- package/dist/core/media/processors/cloudflare-transform-store.js.map +1 -0
- package/dist/core/media/processors/cloudflare-transformations.d.ts +81 -0
- package/dist/core/media/processors/cloudflare-transformations.d.ts.map +1 -0
- package/dist/core/media/processors/cloudflare-transformations.js +144 -0
- package/dist/core/media/processors/cloudflare-transformations.js.map +1 -0
- package/dist/core/media/processors/index.d.ts +9 -0
- package/dist/core/media/processors/index.d.ts.map +1 -0
- package/dist/core/media/processors/index.js +13 -0
- package/dist/core/media/processors/index.js.map +1 -0
- package/dist/core/media/processors/noop.d.ts +22 -0
- package/dist/core/media/processors/noop.d.ts.map +1 -0
- package/dist/core/media/processors/noop.js +38 -0
- package/dist/core/media/processors/noop.js.map +1 -0
- package/dist/core/media/processors/sharp.d.ts +30 -0
- package/dist/core/media/processors/sharp.d.ts.map +1 -0
- package/dist/core/media/processors/sharp.js +126 -0
- package/dist/core/media/processors/sharp.js.map +1 -0
- package/dist/core/media/processors/types.d.ts +67 -0
- package/dist/core/media/processors/types.d.ts.map +1 -0
- package/dist/core/media/processors/types.js +42 -0
- package/dist/core/media/processors/types.js.map +1 -0
- package/dist/core/media/processors/workers-images.d.ts +112 -0
- package/dist/core/media/processors/workers-images.d.ts.map +1 -0
- package/dist/core/media/processors/workers-images.js +257 -0
- package/dist/core/media/processors/workers-images.js.map +1 -0
- package/dist/core/schema/registry.d.ts +41 -0
- package/dist/core/schema/registry.d.ts.map +1 -0
- package/dist/core/schema/registry.js +248 -0
- package/dist/core/schema/registry.js.map +1 -0
- package/dist/core/schema/singleton.d.ts +107 -0
- package/dist/core/schema/singleton.d.ts.map +1 -0
- package/dist/core/schema/singleton.js +180 -0
- package/dist/core/schema/singleton.js.map +1 -0
- package/dist/core/security/auth.d.ts +120 -0
- package/dist/core/security/auth.d.ts.map +1 -0
- package/dist/core/security/auth.js +274 -0
- package/dist/core/security/auth.js.map +1 -0
- package/dist/core/security/captcha/index.d.ts +21 -0
- package/dist/core/security/captcha/index.d.ts.map +1 -0
- package/dist/core/security/captcha/index.js +34 -0
- package/dist/core/security/captcha/index.js.map +1 -0
- package/dist/core/security/captcha/recaptcha.d.ts +41 -0
- package/dist/core/security/captcha/recaptcha.d.ts.map +1 -0
- package/dist/core/security/captcha/recaptcha.js +89 -0
- package/dist/core/security/captcha/recaptcha.js.map +1 -0
- package/dist/core/security/captcha/turnstile.d.ts +41 -0
- package/dist/core/security/captcha/turnstile.d.ts.map +1 -0
- package/dist/core/security/captcha/turnstile.js +90 -0
- package/dist/core/security/captcha/turnstile.js.map +1 -0
- package/dist/core/security/captcha/types.d.ts +66 -0
- package/dist/core/security/captcha/types.d.ts.map +1 -0
- package/dist/core/security/captcha/types.js +7 -0
- package/dist/core/security/captcha/types.js.map +1 -0
- package/dist/core/security/mfa/email-otp.d.ts +91 -0
- package/dist/core/security/mfa/email-otp.d.ts.map +1 -0
- package/dist/core/security/mfa/email-otp.js +264 -0
- package/dist/core/security/mfa/email-otp.js.map +1 -0
- package/dist/core/security/mfa/index.d.ts +8 -0
- package/dist/core/security/mfa/index.d.ts.map +1 -0
- package/dist/core/security/mfa/index.js +8 -0
- package/dist/core/security/mfa/index.js.map +1 -0
- package/dist/core/security/mfa/totp.d.ts +87 -0
- package/dist/core/security/mfa/totp.d.ts.map +1 -0
- package/dist/core/security/mfa/totp.js +293 -0
- package/dist/core/security/mfa/totp.js.map +1 -0
- package/dist/core/security/middleware.d.ts +102 -0
- package/dist/core/security/middleware.d.ts.map +1 -0
- package/dist/core/security/middleware.js +261 -0
- package/dist/core/security/middleware.js.map +1 -0
- package/dist/core/security/oauth/google.d.ts +76 -0
- package/dist/core/security/oauth/google.d.ts.map +1 -0
- package/dist/core/security/oauth/google.js +154 -0
- package/dist/core/security/oauth/google.js.map +1 -0
- package/dist/core/security/oauth/index.d.ts +8 -0
- package/dist/core/security/oauth/index.d.ts.map +1 -0
- package/dist/core/security/oauth/index.js +7 -0
- package/dist/core/security/oauth/index.js.map +1 -0
- package/dist/core/security/oauth2/authorization-server.d.ts +195 -0
- package/dist/core/security/oauth2/authorization-server.d.ts.map +1 -0
- package/dist/core/security/oauth2/authorization-server.js +569 -0
- package/dist/core/security/oauth2/authorization-server.js.map +1 -0
- package/dist/core/security/oauth2/index.d.ts +9 -0
- package/dist/core/security/oauth2/index.d.ts.map +1 -0
- package/dist/core/security/oauth2/index.js +9 -0
- package/dist/core/security/oauth2/index.js.map +1 -0
- package/dist/core/security/rate-limiter.d.ts +15 -0
- package/dist/core/security/rate-limiter.d.ts.map +1 -0
- package/dist/core/security/rate-limiter.js +48 -0
- package/dist/core/security/rate-limiter.js.map +1 -0
- package/dist/core/security/validation.d.ts +20 -0
- package/dist/core/security/validation.d.ts.map +1 -0
- package/dist/core/security/validation.js +273 -0
- package/dist/core/security/validation.js.map +1 -0
- package/dist/core/services/auth-service.d.ts +128 -0
- package/dist/core/services/auth-service.d.ts.map +1 -0
- package/dist/core/services/auth-service.js +530 -0
- package/dist/core/services/auth-service.js.map +1 -0
- package/dist/core/services/captcha-service.d.ts +44 -0
- package/dist/core/services/captcha-service.d.ts.map +1 -0
- package/dist/core/services/captcha-service.js +82 -0
- package/dist/core/services/captcha-service.js.map +1 -0
- package/dist/core/services/document-service.d.ts +59 -0
- package/dist/core/services/document-service.d.ts.map +1 -0
- package/dist/core/services/document-service.js +269 -0
- package/dist/core/services/document-service.js.map +1 -0
- package/dist/core/services/media-service.d.ts +40 -0
- package/dist/core/services/media-service.d.ts.map +1 -0
- package/dist/core/services/media-service.js +396 -0
- package/dist/core/services/media-service.js.map +1 -0
- package/dist/core/services/mfa-service.d.ts +123 -0
- package/dist/core/services/mfa-service.d.ts.map +1 -0
- package/dist/core/services/mfa-service.js +606 -0
- package/dist/core/services/mfa-service.js.map +1 -0
- package/dist/core/services/oauth-service.d.ts +58 -0
- package/dist/core/services/oauth-service.d.ts.map +1 -0
- package/dist/core/services/oauth-service.js +253 -0
- package/dist/core/services/oauth-service.js.map +1 -0
- package/dist/core/services/oauth2-server-service.d.ts +61 -0
- package/dist/core/services/oauth2-server-service.d.ts.map +1 -0
- package/dist/core/services/oauth2-server-service.js +259 -0
- package/dist/core/services/oauth2-server-service.js.map +1 -0
- package/dist/core/services/passkey-service.d.ts +59 -0
- package/dist/core/services/passkey-service.d.ts.map +1 -0
- package/dist/core/services/passkey-service.js +238 -0
- package/dist/core/services/passkey-service.js.map +1 -0
- package/dist/core/services/token-service.d.ts +31 -0
- package/dist/core/services/token-service.d.ts.map +1 -0
- package/dist/core/services/token-service.js +132 -0
- package/dist/core/services/token-service.js.map +1 -0
- package/dist/core/services/trusted-device-service.d.ts +39 -0
- package/dist/core/services/trusted-device-service.d.ts.map +1 -0
- package/dist/core/services/trusted-device-service.js +123 -0
- package/dist/core/services/trusted-device-service.js.map +1 -0
- package/dist/core/services/user-service.d.ts +38 -0
- package/dist/core/services/user-service.d.ts.map +1 -0
- package/dist/core/services/user-service.js +265 -0
- package/dist/core/services/user-service.js.map +1 -0
- package/dist/core/studio/integration.d.ts +54 -0
- package/dist/core/studio/integration.d.ts.map +1 -0
- package/dist/core/studio/integration.js +326 -0
- package/dist/core/studio/integration.js.map +1 -0
- package/dist/core/types/index.d.ts +282 -0
- package/dist/core/types/index.d.ts.map +1 -0
- package/dist/core/types/index.js +83 -0
- package/dist/core/types/index.js.map +1 -0
- package/dist/core/types/mail.d.ts +90 -0
- package/dist/core/types/mail.d.ts.map +1 -0
- package/dist/core/types/mail.js +7 -0
- package/dist/core/types/mail.js.map +1 -0
- package/dist/core/types/oauth2.d.ts +9 -0
- package/dist/core/types/oauth2.d.ts.map +1 -0
- package/dist/core/types/oauth2.js +7 -0
- package/dist/core/types/oauth2.js.map +1 -0
- package/dist/core/types/storage-adapters.d.ts +611 -0
- package/dist/core/types/storage-adapters.d.ts.map +1 -0
- package/dist/core/types/storage-adapters.js +14 -0
- package/dist/core/types/storage-adapters.js.map +1 -0
- package/dist/core/types/user.d.ts +10 -0
- package/dist/core/types/user.d.ts.map +1 -0
- package/dist/core/types/user.js +45 -0
- package/dist/core/types/user.js.map +1 -0
- package/dist/core/utils/id-generator.d.ts +16 -0
- package/dist/core/utils/id-generator.d.ts.map +1 -0
- package/dist/core/utils/id-generator.js +61 -0
- package/dist/core/utils/id-generator.js.map +1 -0
- package/dist/core/utils/logger.d.ts +100 -0
- package/dist/core/utils/logger.d.ts.map +1 -0
- package/dist/core/utils/logger.js +212 -0
- package/dist/core/utils/logger.js.map +1 -0
- package/dist/core/utils/reference-expander.d.ts +57 -0
- package/dist/core/utils/reference-expander.d.ts.map +1 -0
- package/dist/core/utils/reference-expander.js +192 -0
- package/dist/core/utils/reference-expander.js.map +1 -0
- package/dist/core/utils/universal-crypto.d.ts +46 -0
- package/dist/core/utils/universal-crypto.d.ts.map +1 -0
- package/dist/core/utils/universal-crypto.js +171 -0
- package/dist/core/utils/universal-crypto.js.map +1 -0
- package/dist/core/validation/validator.d.ts +11 -0
- package/dist/core/validation/validator.d.ts.map +1 -0
- package/dist/core/validation/validator.js +164 -0
- package/dist/core/validation/validator.js.map +1 -0
- package/dist/i18n/config.d.ts +4077 -0
- package/dist/i18n/config.d.ts.map +1 -0
- package/dist/i18n/config.js +116 -0
- package/dist/i18n/config.js.map +1 -0
- package/dist/i18n/hooks.d.ts +86 -0
- package/dist/i18n/hooks.d.ts.map +1 -0
- package/dist/i18n/hooks.js +122 -0
- package/dist/i18n/hooks.js.map +1 -0
- package/dist/i18n/index.d.ts +39 -0
- package/dist/i18n/index.d.ts.map +1 -0
- package/dist/i18n/index.js +40 -0
- package/dist/i18n/index.js.map +1 -0
- package/dist/i18n/locales/en/auth.json +108 -0
- package/dist/i18n/locales/en/common.json +100 -0
- package/dist/i18n/locales/en/errors.json +55 -0
- package/dist/i18n/locales/en/fields.json +456 -0
- package/dist/i18n/locales/en/studio.json +1329 -0
- package/dist/i18n/locales/fr/auth.json +108 -0
- package/dist/i18n/locales/fr/common.json +100 -0
- package/dist/i18n/locales/fr/errors.json +55 -0
- package/dist/i18n/locales/fr/fields.json +456 -0
- package/dist/i18n/locales/fr/studio.json +1274 -0
- package/dist/i18n/provider.d.ts +45 -0
- package/dist/i18n/provider.d.ts.map +1 -0
- package/dist/i18n/provider.js +49 -0
- package/dist/i18n/provider.js.map +1 -0
- package/dist/i18n/types.d.ts +8 -0
- package/dist/i18n/types.d.ts.map +1 -0
- package/dist/i18n/types.js +7 -0
- package/dist/i18n/types.js.map +1 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +16 -0
- package/dist/index.js.map +1 -0
- package/dist/integrations/express/adapter.d.ts +33 -0
- package/dist/integrations/express/adapter.d.ts.map +1 -0
- package/dist/integrations/express/adapter.js +203 -0
- package/dist/integrations/express/adapter.js.map +1 -0
- package/dist/integrations/express/config.d.ts +599 -0
- package/dist/integrations/express/config.d.ts.map +1 -0
- package/dist/integrations/express/config.js +166 -0
- package/dist/integrations/express/config.js.map +1 -0
- package/dist/integrations/express/index.d.ts +10 -0
- package/dist/integrations/express/index.d.ts.map +1 -0
- package/dist/integrations/express/index.js +9 -0
- package/dist/integrations/express/index.js.map +1 -0
- package/dist/integrations/express/integration.d.ts +111 -0
- package/dist/integrations/express/integration.d.ts.map +1 -0
- package/dist/integrations/express/integration.js +730 -0
- package/dist/integrations/express/integration.js.map +1 -0
- package/dist/integrations/express/media-rewrite-middleware.d.ts +78 -0
- package/dist/integrations/express/media-rewrite-middleware.d.ts.map +1 -0
- package/dist/integrations/express/media-rewrite-middleware.js +211 -0
- package/dist/integrations/express/media-rewrite-middleware.js.map +1 -0
- package/dist/integrations/express/media-url-generator.d.ts +52 -0
- package/dist/integrations/express/media-url-generator.d.ts.map +1 -0
- package/dist/integrations/express/media-url-generator.js +107 -0
- package/dist/integrations/express/media-url-generator.js.map +1 -0
- package/dist/integrations/express/middleware.d.ts +25 -0
- package/dist/integrations/express/middleware.d.ts.map +1 -0
- package/dist/integrations/express/middleware.js +130 -0
- package/dist/integrations/express/middleware.js.map +1 -0
- package/dist/integrations/express/server.d.ts +99 -0
- package/dist/integrations/express/server.d.ts.map +1 -0
- package/dist/integrations/express/server.js +597 -0
- package/dist/integrations/express/server.js.map +1 -0
- package/dist/integrations/express/types.d.ts +106 -0
- package/dist/integrations/express/types.d.ts.map +1 -0
- package/dist/integrations/express/types.js +2 -0
- package/dist/integrations/express/types.js.map +1 -0
- package/dist/mail/adapters/console.d.ts +30 -0
- package/dist/mail/adapters/console.d.ts.map +1 -0
- package/dist/mail/adapters/console.js +169 -0
- package/dist/mail/adapters/console.js.map +1 -0
- package/dist/mail/adapters/resend.d.ts +18 -0
- package/dist/mail/adapters/resend.d.ts.map +1 -0
- package/dist/mail/adapters/resend.js +148 -0
- package/dist/mail/adapters/resend.js.map +1 -0
- package/dist/mail/adapters/smtp.d.ts +22 -0
- package/dist/mail/adapters/smtp.d.ts.map +1 -0
- package/dist/mail/adapters/smtp.js +180 -0
- package/dist/mail/adapters/smtp.js.map +1 -0
- package/dist/mail/index.d.ts +15 -0
- package/dist/mail/index.d.ts.map +1 -0
- package/dist/mail/index.js +13 -0
- package/dist/mail/index.js.map +1 -0
- package/dist/mail/mail-service.d.ts +180 -0
- package/dist/mail/mail-service.d.ts.map +1 -0
- package/dist/mail/mail-service.js +370 -0
- package/dist/mail/mail-service.js.map +1 -0
- package/dist/mail/notification-service.d.ts +82 -0
- package/dist/mail/notification-service.d.ts.map +1 -0
- package/dist/mail/notification-service.js +262 -0
- package/dist/mail/notification-service.js.map +1 -0
- package/dist/mail/templates/built-in-templates.d.ts +47 -0
- package/dist/mail/templates/built-in-templates.d.ts.map +1 -0
- package/dist/mail/templates/built-in-templates.js +416 -0
- package/dist/mail/templates/built-in-templates.js.map +1 -0
- package/dist/mail/templates/custom-template-renderer.d.ts +115 -0
- package/dist/mail/templates/custom-template-renderer.d.ts.map +1 -0
- package/dist/mail/templates/custom-template-renderer.js +225 -0
- package/dist/mail/templates/custom-template-renderer.js.map +1 -0
- package/dist/mail/types.d.ts +7 -0
- package/dist/mail/types.d.ts.map +1 -0
- package/dist/mail/types.js +7 -0
- package/dist/mail/types.js.map +1 -0
- package/dist/routes/auth/captcha.d.ts +33 -0
- package/dist/routes/auth/captcha.d.ts.map +1 -0
- package/dist/routes/auth/captcha.js +102 -0
- package/dist/routes/auth/captcha.js.map +1 -0
- package/dist/routes/auth/change-password.d.ts +17 -0
- package/dist/routes/auth/change-password.d.ts.map +1 -0
- package/dist/routes/auth/change-password.js +121 -0
- package/dist/routes/auth/change-password.js.map +1 -0
- package/dist/routes/auth/index.d.ts +13 -0
- package/dist/routes/auth/index.d.ts.map +1 -0
- package/dist/routes/auth/index.js +35 -0
- package/dist/routes/auth/index.js.map +1 -0
- package/dist/routes/auth/mfa.d.ts +121 -0
- package/dist/routes/auth/mfa.d.ts.map +1 -0
- package/dist/routes/auth/mfa.js +1143 -0
- package/dist/routes/auth/mfa.js.map +1 -0
- package/dist/routes/auth/oauth.d.ts +37 -0
- package/dist/routes/auth/oauth.d.ts.map +1 -0
- package/dist/routes/auth/oauth.js +420 -0
- package/dist/routes/auth/oauth.js.map +1 -0
- package/dist/routes/auth/oauth2-server.d.ts +70 -0
- package/dist/routes/auth/oauth2-server.d.ts.map +1 -0
- package/dist/routes/auth/oauth2-server.js +775 -0
- package/dist/routes/auth/oauth2-server.js.map +1 -0
- package/dist/routes/auth/passkey.d.ts +65 -0
- package/dist/routes/auth/passkey.d.ts.map +1 -0
- package/dist/routes/auth/passkey.js +910 -0
- package/dist/routes/auth/passkey.js.map +1 -0
- package/dist/routes/auth/password-reset.d.ts +23 -0
- package/dist/routes/auth/password-reset.d.ts.map +1 -0
- package/dist/routes/auth/password-reset.js +336 -0
- package/dist/routes/auth/password-reset.js.map +1 -0
- package/dist/routes/handlers/audit.d.ts +21 -0
- package/dist/routes/handlers/audit.d.ts.map +1 -0
- package/dist/routes/handlers/audit.js +124 -0
- package/dist/routes/handlers/audit.js.map +1 -0
- package/dist/routes/handlers/auth.d.ts +150 -0
- package/dist/routes/handlers/auth.d.ts.map +1 -0
- package/dist/routes/handlers/auth.js +512 -0
- package/dist/routes/handlers/auth.js.map +1 -0
- package/dist/routes/handlers/base.d.ts +34 -0
- package/dist/routes/handlers/base.d.ts.map +1 -0
- package/dist/routes/handlers/base.js +366 -0
- package/dist/routes/handlers/base.js.map +1 -0
- package/dist/routes/handlers/config.d.ts +31 -0
- package/dist/routes/handlers/config.d.ts.map +1 -0
- package/dist/routes/handlers/config.js +483 -0
- package/dist/routes/handlers/config.js.map +1 -0
- package/dist/routes/handlers/documents.d.ts +50 -0
- package/dist/routes/handlers/documents.d.ts.map +1 -0
- package/dist/routes/handlers/documents.js +708 -0
- package/dist/routes/handlers/documents.js.map +1 -0
- package/dist/routes/handlers/index.d.ts +12 -0
- package/dist/routes/handlers/index.d.ts.map +1 -0
- package/dist/routes/handlers/index.js +11 -0
- package/dist/routes/handlers/index.js.map +1 -0
- package/dist/routes/handlers/media.d.ts +24 -0
- package/dist/routes/handlers/media.d.ts.map +1 -0
- package/dist/routes/handlers/media.js +432 -0
- package/dist/routes/handlers/media.js.map +1 -0
- package/dist/routes/handlers/search.d.ts +10 -0
- package/dist/routes/handlers/search.d.ts.map +1 -0
- package/dist/routes/handlers/search.js +153 -0
- package/dist/routes/handlers/search.js.map +1 -0
- package/dist/routes/handlers/tokens.d.ts +14 -0
- package/dist/routes/handlers/tokens.d.ts.map +1 -0
- package/dist/routes/handlers/tokens.js +109 -0
- package/dist/routes/handlers/tokens.js.map +1 -0
- package/dist/routes/handlers/types.d.ts +13 -0
- package/dist/routes/handlers/types.d.ts.map +1 -0
- package/dist/routes/handlers/types.js +5 -0
- package/dist/routes/handlers/types.js.map +1 -0
- package/dist/routes/handlers/users.d.ts +16 -0
- package/dist/routes/handlers/users.d.ts.map +1 -0
- package/dist/routes/handlers/users.js +198 -0
- package/dist/routes/handlers/users.js.map +1 -0
- package/dist/routes/handlers/webhooks.d.ts +37 -0
- package/dist/routes/handlers/webhooks.d.ts.map +1 -0
- package/dist/routes/handlers/webhooks.js +343 -0
- package/dist/routes/handlers/webhooks.js.map +1 -0
- package/dist/routes/index.d.ts +5 -0
- package/dist/routes/index.d.ts.map +1 -0
- package/dist/routes/index.js +5 -0
- package/dist/routes/index.js.map +1 -0
- package/dist/routes/routes.d.ts +29 -0
- package/dist/routes/routes.d.ts.map +1 -0
- package/dist/routes/routes.js +531 -0
- package/dist/routes/routes.js.map +1 -0
- package/dist/routes/slug-processor.d.ts +32 -0
- package/dist/routes/slug-processor.d.ts.map +1 -0
- package/dist/routes/slug-processor.js +328 -0
- package/dist/routes/slug-processor.js.map +1 -0
- package/dist/routes/types.d.ts +31 -0
- package/dist/routes/types.d.ts.map +1 -0
- package/dist/routes/types.js +7 -0
- package/dist/routes/types.js.map +1 -0
- package/dist/routes/users/index.d.ts +7 -0
- package/dist/routes/users/index.d.ts.map +1 -0
- package/dist/routes/users/index.js +7 -0
- package/dist/routes/users/index.js.map +1 -0
- package/dist/structure/builder/StructureBuilder.d.ts +209 -0
- package/dist/structure/builder/StructureBuilder.d.ts.map +1 -0
- package/dist/structure/builder/StructureBuilder.js +425 -0
- package/dist/structure/builder/StructureBuilder.js.map +1 -0
- package/dist/structure/builder/index.d.ts +8 -0
- package/dist/structure/builder/index.d.ts.map +1 -0
- package/dist/structure/builder/index.js +6 -0
- package/dist/structure/builder/index.js.map +1 -0
- package/dist/structure/builder/navigation-tree-builder.d.ts +33 -0
- package/dist/structure/builder/navigation-tree-builder.d.ts.map +1 -0
- package/dist/structure/builder/navigation-tree-builder.js +284 -0
- package/dist/structure/builder/navigation-tree-builder.js.map +1 -0
- package/dist/structure/errors/index.d.ts +72 -0
- package/dist/structure/errors/index.d.ts.map +1 -0
- package/dist/structure/errors/index.js +136 -0
- package/dist/structure/errors/index.js.map +1 -0
- package/dist/structure/index.d.ts +14 -0
- package/dist/structure/index.d.ts.map +1 -0
- package/dist/structure/index.js +16 -0
- package/dist/structure/index.js.map +1 -0
- package/dist/structure/types/filters.d.ts +167 -0
- package/dist/structure/types/filters.d.ts.map +1 -0
- package/dist/structure/types/filters.js +38 -0
- package/dist/structure/types/filters.js.map +1 -0
- package/dist/structure/types/index.d.ts +11 -0
- package/dist/structure/types/index.d.ts.map +1 -0
- package/dist/structure/types/index.js +7 -0
- package/dist/structure/types/index.js.map +1 -0
- package/dist/structure/types/permissions.d.ts +159 -0
- package/dist/structure/types/permissions.d.ts.map +1 -0
- package/dist/structure/types/permissions.js +49 -0
- package/dist/structure/types/permissions.js.map +1 -0
- package/dist/structure/types/structure.d.ts +342 -0
- package/dist/structure/types/structure.d.ts.map +1 -0
- package/dist/structure/types/structure.js +6 -0
- package/dist/structure/types/structure.js.map +1 -0
- package/dist/structure/types/views.d.ts +278 -0
- package/dist/structure/types/views.d.ts.map +1 -0
- package/dist/structure/types/views.js +6 -0
- package/dist/structure/types/views.js.map +1 -0
- package/dist/structure/utils/hash.d.ts +61 -0
- package/dist/structure/utils/hash.d.ts.map +1 -0
- package/dist/structure/utils/hash.js +118 -0
- package/dist/structure/utils/hash.js.map +1 -0
- package/dist/structure/utils/index.d.ts +10 -0
- package/dist/structure/utils/index.d.ts.map +1 -0
- package/dist/structure/utils/index.js +7 -0
- package/dist/structure/utils/index.js.map +1 -0
- package/dist/structure/utils/permission-checker.d.ts +57 -0
- package/dist/structure/utils/permission-checker.d.ts.map +1 -0
- package/dist/structure/utils/permission-checker.js +286 -0
- package/dist/structure/utils/permission-checker.js.map +1 -0
- package/dist/structure/utils/query-builder.d.ts +82 -0
- package/dist/structure/utils/query-builder.d.ts.map +1 -0
- package/dist/structure/utils/query-builder.js +489 -0
- package/dist/structure/utils/query-builder.js.map +1 -0
- package/dist/structure/utils/structure-merger.d.ts +91 -0
- package/dist/structure/utils/structure-merger.d.ts.map +1 -0
- package/dist/structure/utils/structure-merger.js +445 -0
- package/dist/structure/utils/structure-merger.js.map +1 -0
- package/dist/structure/validation/schemas.d.ts +3107 -0
- package/dist/structure/validation/schemas.d.ts.map +1 -0
- package/dist/structure/validation/schemas.js +436 -0
- package/dist/structure/validation/schemas.js.map +1 -0
- package/dist/types/api-requests.d.ts +334 -0
- package/dist/types/api-requests.d.ts.map +1 -0
- package/dist/types/api-requests.js +8 -0
- package/dist/types/api-requests.js.map +1 -0
- package/dist/types/auth.d.ts +394 -0
- package/dist/types/auth.d.ts.map +1 -0
- package/dist/types/auth.js +8 -0
- package/dist/types/auth.js.map +1 -0
- package/dist/types/document.d.ts +49 -0
- package/dist/types/document.d.ts.map +1 -0
- package/dist/types/document.js +6 -0
- package/dist/types/document.js.map +1 -0
- package/dist/types/field-system.d.ts +197 -0
- package/dist/types/field-system.d.ts.map +1 -0
- package/dist/types/field-system.js +8 -0
- package/dist/types/field-system.js.map +1 -0
- package/dist/types/fields.d.ts +17 -0
- package/dist/types/fields.d.ts.map +1 -0
- package/dist/types/fields.js +21 -0
- package/dist/types/fields.js.map +1 -0
- package/dist/types/http.d.ts +162 -0
- package/dist/types/http.d.ts.map +1 -0
- package/dist/types/http.js +8 -0
- package/dist/types/http.js.map +1 -0
- package/dist/types/i18n.d.ts +56 -0
- package/dist/types/i18n.d.ts.map +1 -0
- package/dist/types/i18n.js +25 -0
- package/dist/types/i18n.js.map +1 -0
- package/dist/types/index.d.ts +22 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +10 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/mail.d.ts +224 -0
- package/dist/types/mail.d.ts.map +1 -0
- package/dist/types/mail.js +8 -0
- package/dist/types/mail.js.map +1 -0
- package/dist/types/media.d.ts +56 -0
- package/dist/types/media.d.ts.map +1 -0
- package/dist/types/media.js +6 -0
- package/dist/types/media.js.map +1 -0
- package/dist/types/oauth2.d.ts +287 -0
- package/dist/types/oauth2.d.ts.map +1 -0
- package/dist/types/oauth2.js +43 -0
- package/dist/types/oauth2.js.map +1 -0
- package/dist/types/passkey.d.ts +217 -0
- package/dist/types/passkey.d.ts.map +1 -0
- package/dist/types/passkey.js +8 -0
- package/dist/types/passkey.js.map +1 -0
- package/dist/types/slug.d.ts +99 -0
- package/dist/types/slug.d.ts.map +1 -0
- package/dist/types/slug.js +8 -0
- package/dist/types/slug.js.map +1 -0
- 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"}
|