@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,57 @@
|
|
|
1
|
+
// Core engine
|
|
2
|
+
export { TrokkyCore } from './core/engine.js';
|
|
3
|
+
// Domain services extracted from the engine
|
|
4
|
+
export { AuthService } from './services/auth-service.js';
|
|
5
|
+
export { MFAService } from './services/mfa-service.js';
|
|
6
|
+
export { TrustedDeviceService } from './services/trusted-device-service.js';
|
|
7
|
+
export { OAuthService } from './services/oauth-service.js';
|
|
8
|
+
export { PasskeyService } from './services/passkey-service.js';
|
|
9
|
+
export { UserService } from './services/user-service.js';
|
|
10
|
+
export { TokenService } from './services/token-service.js';
|
|
11
|
+
export { DocumentService } from './services/document-service.js';
|
|
12
|
+
export { MediaService } from './services/media-service.js';
|
|
13
|
+
export { CaptchaService } from './services/captcha-service.js';
|
|
14
|
+
export { OAuth2ServerService } from './services/oauth2-server-service.js';
|
|
15
|
+
// Schema management
|
|
16
|
+
export { SchemaRegistry } from './schema/registry.js';
|
|
17
|
+
// Validation
|
|
18
|
+
export { DocumentValidator } from './validation/validator.js';
|
|
19
|
+
// Security
|
|
20
|
+
export { SecurityValidator } from './security/validation.js';
|
|
21
|
+
export { RateLimiter } from './security/rate-limiter.js';
|
|
22
|
+
// OAuth (Google)
|
|
23
|
+
export { GoogleOAuthService, } from './security/oauth/index.js';
|
|
24
|
+
// OAuth2 Authorization Server (SSO Provider)
|
|
25
|
+
export { OAuth2AuthorizationServer } from './security/oauth2/index.js';
|
|
26
|
+
// MFA (Multi-Factor Authentication)
|
|
27
|
+
export { TOTPService, createTOTPService, EmailOTPService, createEmailOTPService, getOTPEmailSubject, getOTPEmailBody, getOTPEmailHTML, } from './security/mfa/index.js';
|
|
28
|
+
// CAPTCHA
|
|
29
|
+
export { TurnstileService, createTurnstileService, createCaptchaProvider, } from './security/captcha/index.js';
|
|
30
|
+
// Field system
|
|
31
|
+
export { FieldTypeRegistry, FieldTypeRegistrationError, ConditionalEvaluator, ConditionalEvaluationError, ConditionalUtils, FieldUtils, defineField, defineType, rule, Rule, FieldCategory } from './fields/index.js';
|
|
32
|
+
// Studio integration
|
|
33
|
+
export { StudioIntegration } from './studio/integration.js';
|
|
34
|
+
// Media processing
|
|
35
|
+
export { ImageProcessor, NoOpImageProcessor, createImageProcessor, DEFAULT_IMAGE_VARIANTS } from './media/image-processor.js';
|
|
36
|
+
// Adapter registry system
|
|
37
|
+
export { getAdapterRegistry, registerAdapter, createAdapter, adapterRegistry } from './adapters/registry.js';
|
|
38
|
+
// Utilities
|
|
39
|
+
export { IdGenerator } from './utils/id-generator.js';
|
|
40
|
+
export { expandDocumentReferences, expandDocumentsReferences, parseExpandParam, findReferenceFields, isReference } from './utils/reference-expander.js';
|
|
41
|
+
export { TrokkyLogger, LoggerFactory, createLogger, LoggerPresets } from './utils/logger.js';
|
|
42
|
+
export { getUniversalCrypto, bytesToHex, generateRandomHex, generateUUID, getSecureRandomInt, secureShuffleArray, generateSecurePassword } from './utils/universal-crypto.js';
|
|
43
|
+
// Errors
|
|
44
|
+
export { TrokkyError, ValidationError, SchemaNotFoundError, DocumentNotFoundError, InvalidInputError, RateLimitError } from './errors/index.js';
|
|
45
|
+
export { ROLE_PERMISSIONS, AUDIT_ACTOR_TYPES, AUDIT_OPERATIONS } from './types/index.js';
|
|
46
|
+
// Zod schemas for validation
|
|
47
|
+
export { FieldTypeSchema, FieldDefinitionSchema, ContentSchemaSchema } from './types/index.js';
|
|
48
|
+
// Event system
|
|
49
|
+
export { TrokkyEventBus, MemoryEventStorage,
|
|
50
|
+
// Event creation utilities
|
|
51
|
+
createDocumentEvent, createMediaEvent, createUserEvent, createAppTokenEvent, createSystemEvent,
|
|
52
|
+
// Specific event builders
|
|
53
|
+
documentCreated, documentUpdated, documentDeleted, documentPublished, documentUnpublished, mediaUploaded, mediaUpdated, mediaDeleted, mediaVariantGenerated, userCreated, userUpdated, userDeleted, userLogin, userLogout, userRoleChanged, appTokenCreated, appTokenUsed, systemStartup, systemShutdown, systemError,
|
|
54
|
+
// Utility functions
|
|
55
|
+
eventMatches, extractDocumentChanges, actorFromUser, actorFromAppToken, systemActor } from './events/index.js';
|
|
56
|
+
export { BUILTIN_CLI_CLIENT, SCOPE_TO_PERMISSIONS } from './types/oauth2.js';
|
|
57
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Image Processing Architecture - Modular & Bundle-Safe
|
|
3
|
+
*
|
|
4
|
+
* Vendor-agnostic image processing system with completely isolated processors.
|
|
5
|
+
* Each processor is loaded dynamically to prevent bundling issues in edge environments.
|
|
6
|
+
*
|
|
7
|
+
* Supports:
|
|
8
|
+
* - No processing (store originals only) - Safe for all environments
|
|
9
|
+
* - Local processing with Sharp - Node.js only, dynamically loaded
|
|
10
|
+
* - Cloud services (Cloudflare Images, ImageKit, Imgix, etc.) - Future implementations
|
|
11
|
+
* - Custom processors
|
|
12
|
+
*/
|
|
13
|
+
import type { ImageProcessorConfig } from './processors/index.js';
|
|
14
|
+
import type { ImageProcessor } from './processors/index.js';
|
|
15
|
+
export type { ImageVariant, ProcessedImageVariant, ProcessedImage, ImageProcessorConfig } from './processors/index.js';
|
|
16
|
+
export { ImageProcessor, DEFAULT_IMAGE_VARIANTS } from './processors/index.js';
|
|
17
|
+
export { NoOpImageProcessor } from './processors/index.js';
|
|
18
|
+
/**
|
|
19
|
+
* Factory function to create image processors
|
|
20
|
+
* Uses dynamic imports to avoid bundling issues in edge environments
|
|
21
|
+
* Note: All processor imports now use consistent module resolution
|
|
22
|
+
*/
|
|
23
|
+
export declare function createImageProcessor(config: ImageProcessorConfig): Promise<ImageProcessor>;
|
|
24
|
+
//# sourceMappingURL=image-processor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"image-processor.d.ts","sourceRoot":"","sources":["../../../src/core/media/image-processor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAA;AACjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAE3D,YAAY,EACV,YAAY,EACZ,qBAAqB,EACrB,cAAc,EACd,oBAAoB,EACrB,MAAM,uBAAuB,CAAA;AAE9B,OAAO,EACL,cAAc,EACd,sBAAsB,EACvB,MAAM,uBAAuB,CAAA;AAE9B,OAAO,EACL,kBAAkB,EACnB,MAAM,uBAAuB,CAAA;AAE9B;;;;GAIG;AACH,wBAAsB,oBAAoB,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,cAAc,CAAC,CA4DhG"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Image Processing Architecture - Modular & Bundle-Safe
|
|
3
|
+
*
|
|
4
|
+
* Vendor-agnostic image processing system with completely isolated processors.
|
|
5
|
+
* Each processor is loaded dynamically to prevent bundling issues in edge environments.
|
|
6
|
+
*
|
|
7
|
+
* Supports:
|
|
8
|
+
* - No processing (store originals only) - Safe for all environments
|
|
9
|
+
* - Local processing with Sharp - Node.js only, dynamically loaded
|
|
10
|
+
* - Cloud services (Cloudflare Images, ImageKit, Imgix, etc.) - Future implementations
|
|
11
|
+
* - Custom processors
|
|
12
|
+
*/
|
|
13
|
+
export { ImageProcessor, DEFAULT_IMAGE_VARIANTS } from './processors/index.js';
|
|
14
|
+
export { NoOpImageProcessor } from './processors/index.js';
|
|
15
|
+
/**
|
|
16
|
+
* Factory function to create image processors
|
|
17
|
+
* Uses dynamic imports to avoid bundling issues in edge environments
|
|
18
|
+
* Note: All processor imports now use consistent module resolution
|
|
19
|
+
*/
|
|
20
|
+
export async function createImageProcessor(config) {
|
|
21
|
+
switch (config.type) {
|
|
22
|
+
case 'none': {
|
|
23
|
+
// NoOp processor is safe to import statically (no external dependencies)
|
|
24
|
+
const { NoOpImageProcessor } = await import('./processors/noop.js');
|
|
25
|
+
return new NoOpImageProcessor(config);
|
|
26
|
+
}
|
|
27
|
+
case 'sharp': {
|
|
28
|
+
// Sharp processor is dynamically imported to avoid bundling issues
|
|
29
|
+
try {
|
|
30
|
+
const { SharpImageProcessor } = await import('./processors/sharp.js');
|
|
31
|
+
return new SharpImageProcessor(config);
|
|
32
|
+
}
|
|
33
|
+
catch (error) {
|
|
34
|
+
throw new Error(`Failed to load Sharp processor: ${error instanceof Error ? error.message : String(error)}\n\n` +
|
|
35
|
+
`Sharp processor is only available in Node.js environments.\n` +
|
|
36
|
+
`For edge environments (Cloudflare Workers, Vercel Edge), use processor: "none" instead.`);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
// case 'cloudflare-images': {
|
|
40
|
+
// // Cloudflare Images processor - future implementation
|
|
41
|
+
// try {
|
|
42
|
+
// const { CloudflareImagesProcessor } = await import('./processors/cloudflare-images.js')
|
|
43
|
+
// return new CloudflareImagesProcessor(config as any)
|
|
44
|
+
// } catch (error) {
|
|
45
|
+
// throw new Error(
|
|
46
|
+
// `Failed to load Cloudflare Images processor: ${error instanceof Error ? error.message : String(error)}\n\n` +
|
|
47
|
+
// `This processor is not yet implemented. Use processor: "none" for now.`
|
|
48
|
+
// )
|
|
49
|
+
// }
|
|
50
|
+
// }
|
|
51
|
+
case 'imagekit': {
|
|
52
|
+
throw new Error('ImageKit processor is not yet implemented.\n' +
|
|
53
|
+
'Use processor: "none" for edge environments or "sharp" for Node.js environments.');
|
|
54
|
+
}
|
|
55
|
+
case 'imgix': {
|
|
56
|
+
throw new Error('Imgix processor is not yet implemented.\n' +
|
|
57
|
+
'Use processor: "none" for edge environments or "sharp" for Node.js environments.');
|
|
58
|
+
}
|
|
59
|
+
default:
|
|
60
|
+
throw new Error(`Unknown image processor type: ${config.type}\n\n` +
|
|
61
|
+
`Available processors:\n` +
|
|
62
|
+
`- "none": Store originals only (recommended for edge environments)\n` +
|
|
63
|
+
`- "sharp": Local processing with Sharp (Node.js only)\n` +
|
|
64
|
+
`- "cloudflare-images": Cloudflare Images API (coming soon)\n` +
|
|
65
|
+
`- "imagekit": ImageKit API (coming soon)\n` +
|
|
66
|
+
`- "imgix": Imgix API (coming soon)`);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=image-processor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"image-processor.js","sourceRoot":"","sources":["../../../src/core/media/image-processor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAaH,OAAO,EACL,cAAc,EACd,sBAAsB,EACvB,MAAM,uBAAuB,CAAA;AAE9B,OAAO,EACL,kBAAkB,EACnB,MAAM,uBAAuB,CAAA;AAE9B;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,MAA4B;IACrE,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,yEAAyE;YACzE,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAA;YACnE,OAAO,IAAI,kBAAkB,CAAC,MAAM,CAAC,CAAA;QACvC,CAAC;QAED,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,mEAAmE;YACnE,IAAI,CAAC;gBACH,MAAM,EAAE,mBAAmB,EAAE,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAA;gBACrE,OAAO,IAAI,mBAAmB,CAAC,MAAM,CAAC,CAAA;YACxC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,IAAI,KAAK,CACb,mCAAmC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM;oBAC/F,8DAA8D;oBAC9D,yFAAyF,CAC1F,CAAA;YACH,CAAC;QACH,CAAC;QAED,8BAA8B;QAC9B,2DAA2D;QAC3D,UAAU;QACV,8FAA8F;QAC9F,0DAA0D;QAC1D,sBAAsB;QACtB,uBAAuB;QACvB,sHAAsH;QACtH,gFAAgF;QAChF,QAAQ;QACR,MAAM;QACN,IAAI;QAEJ,KAAK,UAAU,CAAC,CAAC,CAAC;YAChB,MAAM,IAAI,KAAK,CACb,8CAA8C;gBAC9C,kFAAkF,CACnF,CAAA;QACH,CAAC;QAED,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,IAAI,KAAK,CACb,2CAA2C;gBAC3C,kFAAkF,CACnF,CAAA;QACH,CAAC;QAED;YACE,MAAM,IAAI,KAAK,CACb,iCAAiC,MAAM,CAAC,IAAI,MAAM;gBAClD,yBAAyB;gBACzB,sEAAsE;gBACtE,yDAAyD;gBACzD,8DAA8D;gBAC9D,4CAA4C;gBAC5C,oCAAoC,CACrC,CAAA;IACL,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cloudflare Images Processor
|
|
3
|
+
*
|
|
4
|
+
* Integrates with Cloudflare Images for:
|
|
5
|
+
* - Automatic image optimization
|
|
6
|
+
* - Global CDN delivery
|
|
7
|
+
* - Real-time transformations
|
|
8
|
+
* - WebP/AVIF conversion
|
|
9
|
+
*
|
|
10
|
+
* Supports two modes:
|
|
11
|
+
* 1. Images API Binding (Workers) - Direct image manipulation in Workers
|
|
12
|
+
* 2. Upload API - Traditional HTTP API for external usage
|
|
13
|
+
*/
|
|
14
|
+
import { ImageProcessor, type ImageProcessorConfig, type ProcessedImage } from './types.js';
|
|
15
|
+
export interface CloudflareImagesConfig extends ImageProcessorConfig {
|
|
16
|
+
type: 'cloudflare-images';
|
|
17
|
+
options: {
|
|
18
|
+
accountId: string;
|
|
19
|
+
apiToken?: string;
|
|
20
|
+
deliveryUrl?: string;
|
|
21
|
+
defaultVariant?: string;
|
|
22
|
+
binding?: {
|
|
23
|
+
enabled: boolean;
|
|
24
|
+
bindingName?: string;
|
|
25
|
+
};
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
interface CloudflareImagesEnv {
|
|
29
|
+
IMAGES?: {
|
|
30
|
+
input(buffer: ArrayBuffer): CloudflareImageTransform;
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
interface CloudflareImageTransform {
|
|
34
|
+
transform(options: CloudflareTransformOptions): CloudflareImageTransform;
|
|
35
|
+
output(): Promise<ArrayBuffer>;
|
|
36
|
+
}
|
|
37
|
+
interface CloudflareTransformOptions {
|
|
38
|
+
width?: number;
|
|
39
|
+
height?: number;
|
|
40
|
+
fit?: 'scale-down' | 'contain' | 'cover' | 'crop' | 'pad';
|
|
41
|
+
quality?: number;
|
|
42
|
+
format?: 'webp' | 'avif' | 'jpeg' | 'png';
|
|
43
|
+
}
|
|
44
|
+
export declare class CloudflareImagesProcessor extends ImageProcessor {
|
|
45
|
+
private accountId;
|
|
46
|
+
private apiToken?;
|
|
47
|
+
private deliveryUrl;
|
|
48
|
+
private defaultVariant;
|
|
49
|
+
private bindingEnabled;
|
|
50
|
+
private bindingName;
|
|
51
|
+
private env?;
|
|
52
|
+
constructor(config: CloudflareImagesConfig);
|
|
53
|
+
/**
|
|
54
|
+
* Set the Workers environment for binding mode
|
|
55
|
+
*/
|
|
56
|
+
setEnv(env: CloudflareImagesEnv): void;
|
|
57
|
+
processImage(file: File, metadata: {
|
|
58
|
+
id: string;
|
|
59
|
+
filename: string;
|
|
60
|
+
path: string;
|
|
61
|
+
}): Promise<ProcessedImage>;
|
|
62
|
+
/**
|
|
63
|
+
* Process image using Workers binding (edge-native)
|
|
64
|
+
*/
|
|
65
|
+
private processWithBinding;
|
|
66
|
+
/**
|
|
67
|
+
* Process image using Upload API (traditional HTTP)
|
|
68
|
+
*/
|
|
69
|
+
private processWithUploadAPI;
|
|
70
|
+
/**
|
|
71
|
+
* Map Trokky variant config to Cloudflare transform options
|
|
72
|
+
*/
|
|
73
|
+
private mapVariantToCloudflareOptions;
|
|
74
|
+
/**
|
|
75
|
+
* Create variant configuration for Upload API
|
|
76
|
+
*/
|
|
77
|
+
private createVariantConfig;
|
|
78
|
+
getImageUrl(imageId: string, variantName?: string): string;
|
|
79
|
+
deleteImage(imageId: string): Promise<void>;
|
|
80
|
+
healthCheck(): Promise<boolean>;
|
|
81
|
+
}
|
|
82
|
+
export {};
|
|
83
|
+
//# sourceMappingURL=cloudflare-images.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cloudflare-images.d.ts","sourceRoot":"","sources":["../../../../src/core/media/processors/cloudflare-images.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EACL,cAAc,EACd,KAAK,oBAAoB,EACzB,KAAK,cAAc,EAGpB,MAAM,YAAY,CAAA;AAEnB,MAAM,WAAW,sBAAuB,SAAQ,oBAAoB;IAClE,IAAI,EAAE,mBAAmB,CAAA;IACzB,OAAO,EAAE;QACP,SAAS,EAAE,MAAM,CAAA;QACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,cAAc,CAAC,EAAE,MAAM,CAAA;QAEvB,OAAO,CAAC,EAAE;YACR,OAAO,EAAE,OAAO,CAAA;YAChB,WAAW,CAAC,EAAE,MAAM,CAAA;SACrB,CAAA;KACF,CAAA;CACF;AAED,UAAU,mBAAmB;IAC3B,MAAM,CAAC,EAAE;QACP,KAAK,CAAC,MAAM,EAAE,WAAW,GAAG,wBAAwB,CAAA;KACrD,CAAA;CACF;AAED,UAAU,wBAAwB;IAChC,SAAS,CAAC,OAAO,EAAE,0BAA0B,GAAG,wBAAwB,CAAA;IACxE,MAAM,IAAI,OAAO,CAAC,WAAW,CAAC,CAAA;CAC/B;AAED,UAAU,0BAA0B;IAClC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,GAAG,CAAC,EAAE,YAAY,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,KAAK,CAAA;IACzD,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAAA;CAC1C;AAcD,qBAAa,yBAA0B,SAAQ,cAAc;IAC3D,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,CAAQ;IACzB,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,cAAc,CAAQ;IAC9B,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,GAAG,CAAC,CAAqB;gBAErB,MAAM,EAAE,sBAAsB;IAa1C;;OAEG;IACH,MAAM,CAAC,GAAG,EAAE,mBAAmB,GAAG,IAAI;IAIhC,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;IA0B1B;;OAEG;YACW,kBAAkB;IAyChC;;OAEG;YACW,oBAAoB;IAsElC;;OAEG;IACH,OAAO,CAAC,6BAA6B;IAuBrC;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAkB3B,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM;IAKpD,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqB3C,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;CA0BtC"}
|
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cloudflare Images Processor
|
|
3
|
+
*
|
|
4
|
+
* Integrates with Cloudflare Images for:
|
|
5
|
+
* - Automatic image optimization
|
|
6
|
+
* - Global CDN delivery
|
|
7
|
+
* - Real-time transformations
|
|
8
|
+
* - WebP/AVIF conversion
|
|
9
|
+
*
|
|
10
|
+
* Supports two modes:
|
|
11
|
+
* 1. Images API Binding (Workers) - Direct image manipulation in Workers
|
|
12
|
+
* 2. Upload API - Traditional HTTP API for external usage
|
|
13
|
+
*/
|
|
14
|
+
import { ImageProcessor } from './types.js';
|
|
15
|
+
export class CloudflareImagesProcessor extends ImageProcessor {
|
|
16
|
+
accountId;
|
|
17
|
+
apiToken;
|
|
18
|
+
deliveryUrl;
|
|
19
|
+
defaultVariant;
|
|
20
|
+
bindingEnabled;
|
|
21
|
+
bindingName;
|
|
22
|
+
env;
|
|
23
|
+
constructor(config) {
|
|
24
|
+
super(config);
|
|
25
|
+
const { accountId, apiToken, deliveryUrl, defaultVariant, binding } = config.options;
|
|
26
|
+
this.accountId = accountId;
|
|
27
|
+
this.apiToken = apiToken;
|
|
28
|
+
this.deliveryUrl = deliveryUrl || `https://imagedelivery.net/${accountId}`;
|
|
29
|
+
this.defaultVariant = defaultVariant || 'public';
|
|
30
|
+
this.bindingEnabled = binding?.enabled || false;
|
|
31
|
+
this.bindingName = binding?.bindingName || 'IMAGES';
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Set the Workers environment for binding mode
|
|
35
|
+
*/
|
|
36
|
+
setEnv(env) {
|
|
37
|
+
this.env = env;
|
|
38
|
+
}
|
|
39
|
+
async processImage(file, metadata) {
|
|
40
|
+
// Try binding mode first if enabled
|
|
41
|
+
if (this.bindingEnabled && this.env?.IMAGES) {
|
|
42
|
+
try {
|
|
43
|
+
return await this.processWithBinding(file, metadata);
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
// In development, binding might not work - fall back to Upload API
|
|
47
|
+
if (error.message?.includes('wrangler dev') || error.message?.includes('proxy to')) {
|
|
48
|
+
console.warn('Cloudflare Images binding failed in development, falling back to Upload API:', error.message);
|
|
49
|
+
if (!this.apiToken) {
|
|
50
|
+
throw new Error('Cloudflare Images API token is required as fallback when binding fails in development');
|
|
51
|
+
}
|
|
52
|
+
return this.processWithUploadAPI(file, metadata);
|
|
53
|
+
}
|
|
54
|
+
throw error; // Re-throw other errors
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
// Use Upload API mode
|
|
58
|
+
if (!this.apiToken) {
|
|
59
|
+
throw new Error('Cloudflare Images API token is required when not using binding mode');
|
|
60
|
+
}
|
|
61
|
+
return this.processWithUploadAPI(file, metadata);
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Process image using Workers binding (edge-native)
|
|
65
|
+
*/
|
|
66
|
+
async processWithBinding(file, metadata) {
|
|
67
|
+
if (!this.env?.IMAGES) {
|
|
68
|
+
throw new Error('Cloudflare Images binding not available in environment');
|
|
69
|
+
}
|
|
70
|
+
const buffer = await file.arrayBuffer();
|
|
71
|
+
const variants = {};
|
|
72
|
+
// Process original
|
|
73
|
+
const original = {
|
|
74
|
+
url: this.getImageUrl(metadata.id, 'original'),
|
|
75
|
+
width: 0, // Will be set by Cloudflare
|
|
76
|
+
height: 0,
|
|
77
|
+
format: file.type.split('/')[1] || 'jpeg',
|
|
78
|
+
size: file.size,
|
|
79
|
+
buffer: Buffer.from(buffer)
|
|
80
|
+
};
|
|
81
|
+
// Process each variant using the binding
|
|
82
|
+
for (const variant of this.config.variants || []) {
|
|
83
|
+
const transformedBuffer = await this.env.IMAGES
|
|
84
|
+
.input(buffer)
|
|
85
|
+
.transform(this.mapVariantToCloudflareOptions(variant))
|
|
86
|
+
.output();
|
|
87
|
+
variants[variant.name] = {
|
|
88
|
+
url: this.getImageUrl(metadata.id, variant.name),
|
|
89
|
+
width: variant.width || 0,
|
|
90
|
+
height: variant.height || 0,
|
|
91
|
+
format: variant.format || 'webp',
|
|
92
|
+
size: transformedBuffer.byteLength,
|
|
93
|
+
buffer: Buffer.from(transformedBuffer)
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
return { original, variants };
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Process image using Upload API (traditional HTTP)
|
|
100
|
+
*/
|
|
101
|
+
async processWithUploadAPI(file, metadata) {
|
|
102
|
+
const formData = new FormData();
|
|
103
|
+
formData.append('file', file);
|
|
104
|
+
formData.append('id', metadata.id);
|
|
105
|
+
// Add metadata
|
|
106
|
+
const customMetadata = {
|
|
107
|
+
filename: metadata.filename,
|
|
108
|
+
path: metadata.path,
|
|
109
|
+
uploadedAt: new Date().toISOString()
|
|
110
|
+
};
|
|
111
|
+
formData.append('metadata', JSON.stringify(customMetadata));
|
|
112
|
+
// Configure variants if specified
|
|
113
|
+
if (this.config.variants && this.config.variants.length > 0) {
|
|
114
|
+
const variantConfig = this.createVariantConfig(this.config.variants);
|
|
115
|
+
formData.append('requireSignedURLs', 'false');
|
|
116
|
+
formData.append('variants', JSON.stringify(variantConfig));
|
|
117
|
+
}
|
|
118
|
+
const response = await fetch(`https://api.cloudflare.com/client/v4/accounts/${this.accountId}/images/v1`, {
|
|
119
|
+
method: 'POST',
|
|
120
|
+
headers: {
|
|
121
|
+
'Authorization': `Bearer ${this.apiToken}`
|
|
122
|
+
},
|
|
123
|
+
body: formData
|
|
124
|
+
});
|
|
125
|
+
if (!response.ok) {
|
|
126
|
+
const error = await response.text();
|
|
127
|
+
throw new Error(`Failed to upload image to Cloudflare: ${error}`);
|
|
128
|
+
}
|
|
129
|
+
const result = await response.json();
|
|
130
|
+
if (!result.success) {
|
|
131
|
+
throw new Error(`Cloudflare Images API error: ${result.errors.join(', ')}`);
|
|
132
|
+
}
|
|
133
|
+
// Build processed image response
|
|
134
|
+
const variants = {};
|
|
135
|
+
for (const variant of this.config.variants || []) {
|
|
136
|
+
variants[variant.name] = {
|
|
137
|
+
url: this.getImageUrl(result.result.id, variant.name),
|
|
138
|
+
width: variant.width || 0,
|
|
139
|
+
height: variant.height || 0,
|
|
140
|
+
format: variant.format || 'webp',
|
|
141
|
+
size: 0 // Size not available from Upload API
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
return {
|
|
145
|
+
original: {
|
|
146
|
+
url: this.getImageUrl(result.result.id, 'original'),
|
|
147
|
+
width: 0, // Dimensions not available from Upload API
|
|
148
|
+
height: 0,
|
|
149
|
+
format: file.type.split('/')[1] || 'jpeg',
|
|
150
|
+
size: file.size
|
|
151
|
+
},
|
|
152
|
+
variants
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Map Trokky variant config to Cloudflare transform options
|
|
157
|
+
*/
|
|
158
|
+
mapVariantToCloudflareOptions(variant) {
|
|
159
|
+
const options = {};
|
|
160
|
+
if (variant.width)
|
|
161
|
+
options.width = variant.width;
|
|
162
|
+
if (variant.height)
|
|
163
|
+
options.height = variant.height;
|
|
164
|
+
if (variant.quality)
|
|
165
|
+
options.quality = variant.quality;
|
|
166
|
+
if (variant.format)
|
|
167
|
+
options.format = variant.format;
|
|
168
|
+
// Map fit modes
|
|
169
|
+
if (variant.fit) {
|
|
170
|
+
const fitMap = {
|
|
171
|
+
'cover': 'cover',
|
|
172
|
+
'contain': 'contain',
|
|
173
|
+
'fill': 'crop',
|
|
174
|
+
'inside': 'scale-down',
|
|
175
|
+
'outside': 'pad'
|
|
176
|
+
};
|
|
177
|
+
options.fit = fitMap[variant.fit] || 'scale-down';
|
|
178
|
+
}
|
|
179
|
+
return options;
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Create variant configuration for Upload API
|
|
183
|
+
*/
|
|
184
|
+
createVariantConfig(variants) {
|
|
185
|
+
const config = {};
|
|
186
|
+
for (const variant of variants) {
|
|
187
|
+
config[variant.name] = {
|
|
188
|
+
width: variant.width,
|
|
189
|
+
height: variant.height,
|
|
190
|
+
fit: variant.fit || 'scale-down',
|
|
191
|
+
metadata: {
|
|
192
|
+
quality: variant.quality,
|
|
193
|
+
format: variant.format
|
|
194
|
+
}
|
|
195
|
+
};
|
|
196
|
+
}
|
|
197
|
+
return config;
|
|
198
|
+
}
|
|
199
|
+
getImageUrl(imageId, variantName) {
|
|
200
|
+
const variant = variantName || this.defaultVariant;
|
|
201
|
+
return `${this.deliveryUrl}/${imageId}/${variant}`;
|
|
202
|
+
}
|
|
203
|
+
async deleteImage(imageId) {
|
|
204
|
+
if (!this.apiToken) {
|
|
205
|
+
throw new Error('Cloudflare Images API token is required for delete operations');
|
|
206
|
+
}
|
|
207
|
+
const response = await fetch(`https://api.cloudflare.com/client/v4/accounts/${this.accountId}/images/v1/${imageId}`, {
|
|
208
|
+
method: 'DELETE',
|
|
209
|
+
headers: {
|
|
210
|
+
'Authorization': `Bearer ${this.apiToken}`
|
|
211
|
+
}
|
|
212
|
+
});
|
|
213
|
+
if (!response.ok && response.status !== 404) {
|
|
214
|
+
const error = await response.text();
|
|
215
|
+
throw new Error(`Failed to delete image from Cloudflare: ${error}`);
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
async healthCheck() {
|
|
219
|
+
// Check binding availability
|
|
220
|
+
if (this.bindingEnabled && this.env?.IMAGES) {
|
|
221
|
+
return true;
|
|
222
|
+
}
|
|
223
|
+
// Check Upload API connectivity
|
|
224
|
+
if (this.apiToken) {
|
|
225
|
+
try {
|
|
226
|
+
const response = await fetch(`https://api.cloudflare.com/client/v4/accounts/${this.accountId}/images/v1/stats`, {
|
|
227
|
+
method: 'GET',
|
|
228
|
+
headers: {
|
|
229
|
+
'Authorization': `Bearer ${this.apiToken}`
|
|
230
|
+
}
|
|
231
|
+
});
|
|
232
|
+
return response.ok;
|
|
233
|
+
}
|
|
234
|
+
catch {
|
|
235
|
+
return false;
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
return false;
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
//# sourceMappingURL=cloudflare-images.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cloudflare-images.js","sourceRoot":"","sources":["../../../../src/core/media/processors/cloudflare-images.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,127 @@
|
|
|
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 type { ImageProcessorConfig, ProcessedImage } from './types.js';
|
|
25
|
+
export interface CloudflareTransformStoreConfig extends ImageProcessorConfig {
|
|
26
|
+
type: 'cloudflare-transform-store';
|
|
27
|
+
options: {
|
|
28
|
+
/**
|
|
29
|
+
* Cloudflare account ID
|
|
30
|
+
*/
|
|
31
|
+
accountId: string;
|
|
32
|
+
/**
|
|
33
|
+
* Cloudflare API token with Images Read permission
|
|
34
|
+
* Used to fetch transformed images from Cloudflare's CDN
|
|
35
|
+
*/
|
|
36
|
+
apiToken?: string;
|
|
37
|
+
/**
|
|
38
|
+
* Base URL for transformation requests
|
|
39
|
+
* This should be a domain proxied through Cloudflare with transformations enabled
|
|
40
|
+
* Example: 'https://trokky.dev' or 'https://transform.yourdomain.com'
|
|
41
|
+
*/
|
|
42
|
+
transformUrl: string;
|
|
43
|
+
/**
|
|
44
|
+
* R2 bucket binding or configuration
|
|
45
|
+
* Used to store transformed images back to R2
|
|
46
|
+
*/
|
|
47
|
+
r2Bucket?: any;
|
|
48
|
+
/**
|
|
49
|
+
* Media path prefix for stored variants
|
|
50
|
+
* Example: '/media' will store variants at /media/[id]-[variant]
|
|
51
|
+
*/
|
|
52
|
+
mediaPath?: string;
|
|
53
|
+
/**
|
|
54
|
+
* Whether to store variants with a naming pattern
|
|
55
|
+
* true: /media/[id]-thumbnail, /media/[id]-medium
|
|
56
|
+
* false: /media/[id]/thumbnail, /media/[id]/medium
|
|
57
|
+
*/
|
|
58
|
+
flatStructure?: boolean;
|
|
59
|
+
/**
|
|
60
|
+
* Default format for transformations
|
|
61
|
+
*/
|
|
62
|
+
defaultFormat?: 'webp' | 'avif' | 'jpeg' | 'png';
|
|
63
|
+
/**
|
|
64
|
+
* Default quality (1-100)
|
|
65
|
+
*/
|
|
66
|
+
defaultQuality?: number;
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Cloudflare Transform & Store processor
|
|
71
|
+
*
|
|
72
|
+
* This processor transforms images using Cloudflare and stores them in R2
|
|
73
|
+
*/
|
|
74
|
+
export declare class CloudflareTransformStoreProcessor extends ImageProcessor {
|
|
75
|
+
private accountId;
|
|
76
|
+
private apiToken?;
|
|
77
|
+
private transformUrl;
|
|
78
|
+
private r2Bucket?;
|
|
79
|
+
private mediaPath;
|
|
80
|
+
private flatStructure;
|
|
81
|
+
private defaultFormat;
|
|
82
|
+
private defaultQuality;
|
|
83
|
+
private env?;
|
|
84
|
+
constructor(config: CloudflareTransformStoreConfig);
|
|
85
|
+
/**
|
|
86
|
+
* Set the R2 bucket from Worker environment
|
|
87
|
+
*/
|
|
88
|
+
setEnv(env: any): void;
|
|
89
|
+
processImage(file: File, metadata: {
|
|
90
|
+
id: string;
|
|
91
|
+
filename: string;
|
|
92
|
+
path: string;
|
|
93
|
+
}): Promise<ProcessedImage>;
|
|
94
|
+
/**
|
|
95
|
+
* Transform image using Cloudflare and fetch the result
|
|
96
|
+
*/
|
|
97
|
+
private transformAndFetch;
|
|
98
|
+
/**
|
|
99
|
+
* Build URL parameters for Cloudflare transformation
|
|
100
|
+
*/
|
|
101
|
+
private buildTransformParams;
|
|
102
|
+
/**
|
|
103
|
+
* Get the storage key for a variant
|
|
104
|
+
*/
|
|
105
|
+
private getVariantKey;
|
|
106
|
+
/**
|
|
107
|
+
* Store a variant in R2
|
|
108
|
+
*/
|
|
109
|
+
private storeVariant;
|
|
110
|
+
/**
|
|
111
|
+
* Get content type from file extension
|
|
112
|
+
*/
|
|
113
|
+
private getContentType;
|
|
114
|
+
/**
|
|
115
|
+
* Get the URL for a specific variant
|
|
116
|
+
*/
|
|
117
|
+
getImageUrl(imageId: string, variantName?: string): string;
|
|
118
|
+
/**
|
|
119
|
+
* Delete image and all variants
|
|
120
|
+
*/
|
|
121
|
+
deleteImage(imageId: string): Promise<void>;
|
|
122
|
+
/**
|
|
123
|
+
* Health check
|
|
124
|
+
*/
|
|
125
|
+
healthCheck(): Promise<boolean>;
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=cloudflare-transform-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cloudflare-transform-store.d.ts","sourceRoot":"","sources":["../../../../src/core/media/processors/cloudflare-transform-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAC3C,OAAO,KAAK,EAAE,oBAAoB,EAAgB,cAAc,EAAyB,MAAM,YAAY,CAAA;AAK3G,MAAM,WAAW,8BAA+B,SAAQ,oBAAoB;IAC1E,IAAI,EAAE,4BAA4B,CAAA;IAClC,OAAO,EAAE;QACP;;WAEG;QACH,SAAS,EAAE,MAAM,CAAA;QAEjB;;;WAGG;QACH,QAAQ,CAAC,EAAE,MAAM,CAAA;QAEjB;;;;WAIG;QACH,YAAY,EAAE,MAAM,CAAA;QAEpB;;;WAGG;QACH,QAAQ,CAAC,EAAE,GAAG,CAAA;QAEd;;;WAGG;QACH,SAAS,CAAC,EAAE,MAAM,CAAA;QAElB;;;;WAIG;QACH,aAAa,CAAC,EAAE,OAAO,CAAA;QAEvB;;WAEG;QACH,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAAA;QAEhD;;WAEG;QACH,cAAc,CAAC,EAAE,MAAM,CAAA;KACxB,CAAA;CACF;AAED;;;;GAIG;AACH,qBAAa,iCAAkC,SAAQ,cAAc;IACnE,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,CAAQ;IACzB,OAAO,CAAC,YAAY,CAAQ;IAC5B,OAAO,CAAC,QAAQ,CAAC,CAAK;IACtB,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,aAAa,CAAQ;IAC7B,OAAO,CAAC,cAAc,CAAQ;IAC9B,OAAO,CAAC,GAAG,CAAC,CAAK;gBAEL,MAAM,EAAE,8BAA8B;IAwBlD;;OAEG;IACH,MAAM,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI;IAOhB,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;IA4C1B;;OAEG;YACW,iBAAiB;IA8B/B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAsC5B;;OAEG;IACH,OAAO,CAAC,aAAa;IAQrB;;OAEG;YACW,YAAY;IAmB1B;;OAEG;IACH,OAAO,CAAC,cAAc;IActB;;OAEG;IACI,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM;IASjE;;OAEG;IACU,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAexD;;OAEG;IACU,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;CAG7C"}
|