@starklabs/forge 1.3.25-cors.0 → 2.0.0
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/LICENSE +21 -0
- package/MIGRATION.md +89 -0
- package/README.md +353 -0
- package/dist/account/AccountController.d.ts +18 -0
- package/dist/account/AccountController.d.ts.map +1 -0
- package/dist/account/AccountController.js +93 -0
- package/dist/account/AccountController.js.map +1 -0
- package/dist/account/AccountModule.d.ts +13 -0
- package/dist/account/AccountModule.d.ts.map +1 -0
- package/dist/account/AccountModule.js +35 -0
- package/dist/account/AccountModule.js.map +1 -0
- package/dist/account/RoleController.d.ts +18 -0
- package/dist/account/RoleController.d.ts.map +1 -0
- package/dist/account/RoleController.js +43 -0
- package/dist/account/RoleController.js.map +1 -0
- package/dist/account/index.d.ts +3 -0
- package/dist/account/index.d.ts.map +1 -0
- package/dist/account/index.js +3 -0
- package/dist/account/index.js.map +1 -0
- package/dist/admin/AdminModule.d.ts +19 -0
- package/dist/admin/AdminModule.d.ts.map +1 -0
- package/dist/admin/AdminModule.js +32 -0
- package/dist/admin/AdminModule.js.map +1 -0
- package/dist/admin/index.d.ts +2 -0
- package/dist/admin/index.d.ts.map +1 -0
- package/dist/admin/index.js +2 -0
- package/dist/admin/index.js.map +1 -0
- package/dist/auth/AccountLinkPolicy.d.ts +17 -0
- package/dist/auth/AccountLinkPolicy.d.ts.map +1 -0
- package/dist/auth/AccountLinkPolicy.js +30 -0
- package/dist/auth/AccountLinkPolicy.js.map +1 -0
- package/dist/auth/AuthController.d.ts +24 -0
- package/dist/auth/AuthController.d.ts.map +1 -0
- package/dist/auth/AuthController.js +99 -0
- package/dist/auth/AuthController.js.map +1 -0
- package/dist/auth/AuthModule.d.ts +24 -0
- package/dist/auth/AuthModule.d.ts.map +1 -0
- package/dist/auth/AuthModule.js +84 -0
- package/dist/auth/AuthModule.js.map +1 -0
- package/dist/auth/AuthService.d.ts +40 -0
- package/dist/auth/AuthService.d.ts.map +1 -0
- package/dist/auth/AuthService.js +119 -0
- package/dist/auth/AuthService.js.map +1 -0
- package/dist/auth/AuthServices.d.ts +43 -0
- package/dist/auth/AuthServices.d.ts.map +1 -0
- package/dist/auth/AuthServices.js +78 -0
- package/dist/auth/AuthServices.js.map +1 -0
- package/dist/auth/CookieWriter.d.ts +26 -0
- package/dist/auth/CookieWriter.d.ts.map +1 -0
- package/dist/auth/CookieWriter.js +53 -0
- package/dist/auth/CookieWriter.js.map +1 -0
- package/dist/auth/LoginCompleter.d.ts +37 -0
- package/dist/auth/LoginCompleter.d.ts.map +1 -0
- package/dist/auth/LoginCompleter.js +32 -0
- package/dist/auth/LoginCompleter.js.map +1 -0
- package/dist/auth/MagicLinkController.d.ts +16 -0
- package/dist/auth/MagicLinkController.d.ts.map +1 -0
- package/dist/auth/MagicLinkController.js +41 -0
- package/dist/auth/MagicLinkController.js.map +1 -0
- package/dist/auth/MagicLinkService.d.ts +45 -0
- package/dist/auth/MagicLinkService.d.ts.map +1 -0
- package/dist/auth/MagicLinkService.js +132 -0
- package/dist/auth/MagicLinkService.js.map +1 -0
- package/dist/auth/MfaController.d.ts +25 -0
- package/dist/auth/MfaController.d.ts.map +1 -0
- package/dist/auth/MfaController.js +67 -0
- package/dist/auth/MfaController.js.map +1 -0
- package/dist/auth/MfaService.d.ts +60 -0
- package/dist/auth/MfaService.d.ts.map +1 -0
- package/dist/auth/MfaService.js +192 -0
- package/dist/auth/MfaService.js.map +1 -0
- package/dist/auth/OtpService.d.ts +43 -0
- package/dist/auth/OtpService.d.ts.map +1 -0
- package/dist/auth/OtpService.js +168 -0
- package/dist/auth/OtpService.js.map +1 -0
- package/dist/auth/SessionResponder.d.ts +37 -0
- package/dist/auth/SessionResponder.d.ts.map +1 -0
- package/dist/auth/SessionResponder.js +49 -0
- package/dist/auth/SessionResponder.js.map +1 -0
- package/dist/auth/SessionService.d.ts +43 -0
- package/dist/auth/SessionService.d.ts.map +1 -0
- package/dist/auth/SessionService.js +122 -0
- package/dist/auth/SessionService.js.map +1 -0
- package/dist/auth/UserProvisioner.d.ts +25 -0
- package/dist/auth/UserProvisioner.d.ts.map +1 -0
- package/dist/auth/UserProvisioner.js +30 -0
- package/dist/auth/UserProvisioner.js.map +1 -0
- package/dist/auth/index.d.ts +7 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +7 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/config/Duration.d.ts +21 -0
- package/dist/config/Duration.d.ts.map +1 -0
- package/dist/config/Duration.js +63 -0
- package/dist/config/Duration.js.map +1 -0
- package/dist/config/ForgeConfig.d.ts +131 -0
- package/dist/config/ForgeConfig.d.ts.map +1 -0
- package/dist/config/ForgeConfig.js +425 -0
- package/dist/config/ForgeConfig.js.map +1 -0
- package/dist/config/ForgeOptions.d.ts +202 -0
- package/dist/config/ForgeOptions.d.ts.map +1 -0
- package/dist/config/ForgeOptions.js +2 -0
- package/dist/config/ForgeOptions.js.map +1 -0
- package/dist/config/index.d.ts +4 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +4 -0
- package/dist/config/index.js.map +1 -0
- package/dist/core/AccessPolicy.d.ts +33 -0
- package/dist/core/AccessPolicy.d.ts.map +1 -0
- package/dist/core/AccessPolicy.js +60 -0
- package/dist/core/AccessPolicy.js.map +1 -0
- package/dist/core/ActionRunner.d.ts +30 -0
- package/dist/core/ActionRunner.d.ts.map +1 -0
- package/dist/core/ActionRunner.js +59 -0
- package/dist/core/ActionRunner.js.map +1 -0
- package/dist/core/BuiltinCollections.d.ts +24 -0
- package/dist/core/BuiltinCollections.d.ts.map +1 -0
- package/dist/core/BuiltinCollections.js +167 -0
- package/dist/core/BuiltinCollections.js.map +1 -0
- package/dist/core/FeatureModule.d.ts +35 -0
- package/dist/core/FeatureModule.d.ts.map +1 -0
- package/dist/core/FeatureModule.js +116 -0
- package/dist/core/FeatureModule.js.map +1 -0
- package/dist/core/FieldTransformer.d.ts +24 -0
- package/dist/core/FieldTransformer.d.ts.map +1 -0
- package/dist/core/FieldTransformer.js +66 -0
- package/dist/core/FieldTransformer.js.map +1 -0
- package/dist/core/Forge.d.ts +47 -0
- package/dist/core/Forge.d.ts.map +1 -0
- package/dist/core/Forge.js +196 -0
- package/dist/core/Forge.js.map +1 -0
- package/dist/core/Pagination.d.ts +19 -0
- package/dist/core/Pagination.d.ts.map +1 -0
- package/dist/core/Pagination.js +51 -0
- package/dist/core/Pagination.js.map +1 -0
- package/dist/core/ResponseSanitizer.d.ts +18 -0
- package/dist/core/ResponseSanitizer.d.ts.map +1 -0
- package/dist/core/ResponseSanitizer.js +65 -0
- package/dist/core/ResponseSanitizer.js.map +1 -0
- package/dist/core/RouteContext.d.ts +30 -0
- package/dist/core/RouteContext.d.ts.map +1 -0
- package/dist/core/RouteContext.js +66 -0
- package/dist/core/RouteContext.js.map +1 -0
- package/dist/core/ServiceFactory.d.ts +20 -0
- package/dist/core/ServiceFactory.d.ts.map +1 -0
- package/dist/core/ServiceFactory.js +81 -0
- package/dist/core/ServiceFactory.js.map +1 -0
- package/dist/core/Services.d.ts +52 -0
- package/dist/core/Services.d.ts.map +1 -0
- package/dist/core/Services.js +2 -0
- package/dist/core/Services.js.map +1 -0
- package/dist/core/index.d.ts +12 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +12 -0
- package/dist/core/index.js.map +1 -0
- package/dist/crud/CrudController.d.ts +37 -0
- package/dist/crud/CrudController.d.ts.map +1 -0
- package/dist/crud/CrudController.js +214 -0
- package/dist/crud/CrudController.js.map +1 -0
- package/dist/crud/CrudModule.d.ts +15 -0
- package/dist/crud/CrudModule.d.ts.map +1 -0
- package/dist/crud/CrudModule.js +49 -0
- package/dist/crud/CrudModule.js.map +1 -0
- package/dist/crud/CrudSupport.d.ts +44 -0
- package/dist/crud/CrudSupport.d.ts.map +1 -0
- package/dist/crud/CrudSupport.js +98 -0
- package/dist/crud/CrudSupport.js.map +1 -0
- package/dist/crud/FileController.d.ts +18 -0
- package/dist/crud/FileController.d.ts.map +1 -0
- package/dist/crud/FileController.js +118 -0
- package/dist/crud/FileController.js.map +1 -0
- package/dist/crud/index.d.ts +5 -0
- package/dist/crud/index.d.ts.map +1 -0
- package/dist/crud/index.js +5 -0
- package/dist/crud/index.js.map +1 -0
- package/dist/data/MongooseDataSource.d.ts +32 -0
- package/dist/data/MongooseDataSource.d.ts.map +1 -0
- package/dist/data/MongooseDataSource.js +101 -0
- package/dist/data/MongooseDataSource.js.map +1 -0
- package/dist/data/MongooseRepository.d.ts +24 -0
- package/dist/data/MongooseRepository.d.ts.map +1 -0
- package/dist/data/MongooseRepository.js +91 -0
- package/dist/data/MongooseRepository.js.map +1 -0
- package/dist/data/Repository.d.ts +68 -0
- package/dist/data/Repository.d.ts.map +1 -0
- package/dist/data/Repository.js +2 -0
- package/dist/data/Repository.js.map +1 -0
- package/dist/data/SchemaCompiler.d.ts +18 -0
- package/dist/data/SchemaCompiler.d.ts.map +1 -0
- package/dist/data/SchemaCompiler.js +66 -0
- package/dist/data/SchemaCompiler.js.map +1 -0
- package/dist/data/index.d.ts +6 -0
- package/dist/data/index.d.ts.map +1 -0
- package/dist/data/index.js +6 -0
- package/dist/data/index.js.map +1 -0
- package/dist/data/internalModels.d.ts +17 -0
- package/dist/data/internalModels.d.ts.map +1 -0
- package/dist/data/internalModels.js +95 -0
- package/dist/data/internalModels.js.map +1 -0
- package/dist/data/references.d.ts +14 -0
- package/dist/data/references.d.ts.map +1 -0
- package/dist/data/references.js +20 -0
- package/dist/data/references.js.map +1 -0
- package/dist/email/ConsoleProvider.d.ts +9 -0
- package/dist/email/ConsoleProvider.d.ts.map +1 -0
- package/dist/email/ConsoleProvider.js +11 -0
- package/dist/email/ConsoleProvider.js.map +1 -0
- package/dist/email/EmailProvider.d.ts +11 -0
- package/dist/email/EmailProvider.d.ts.map +1 -0
- package/dist/email/EmailProvider.js +2 -0
- package/dist/email/EmailProvider.js.map +1 -0
- package/dist/email/EmailService.d.ts +28 -0
- package/dist/email/EmailService.d.ts.map +1 -0
- package/dist/email/EmailService.js +98 -0
- package/dist/email/EmailService.js.map +1 -0
- package/dist/email/ResendProvider.d.ts +7 -0
- package/dist/email/ResendProvider.d.ts.map +1 -0
- package/dist/email/ResendProvider.js +20 -0
- package/dist/email/ResendProvider.js.map +1 -0
- package/dist/email/TemplateRenderer.d.ts +18 -0
- package/dist/email/TemplateRenderer.d.ts.map +1 -0
- package/dist/email/TemplateRenderer.js +106 -0
- package/dist/email/TemplateRenderer.js.map +1 -0
- package/dist/email/index.d.ts +7 -0
- package/dist/email/index.d.ts.map +1 -0
- package/dist/email/index.js +7 -0
- package/dist/email/index.js.map +1 -0
- package/dist/email/templates/account.created.d.ts.map +1 -0
- package/dist/email/templates/account.created.js.map +1 -0
- package/dist/email/templates/account.deleted.d.ts.map +1 -0
- package/dist/email/templates/account.deleted.js.map +1 -0
- package/dist/email/templates/account.updated.d.ts.map +1 -0
- package/dist/email/templates/account.updated.js.map +1 -0
- package/dist/email/templates/announcement.d.ts.map +1 -0
- package/dist/email/templates/announcement.js.map +1 -0
- package/dist/email/templates/api.key.created.d.ts.map +1 -0
- package/dist/email/templates/api.key.created.js.map +1 -0
- package/dist/email/templates/api.key.revoked.d.ts.map +1 -0
- package/dist/email/templates/api.key.revoked.js.map +1 -0
- package/dist/email/templates/contact.form.d.ts.map +1 -0
- package/dist/email/templates/contact.form.js.map +1 -0
- package/dist/email/templates/daily.report.d.ts.map +1 -0
- package/dist/email/templates/daily.report.js.map +1 -0
- package/dist/email/templates/email.changed.d.ts.map +1 -0
- package/dist/email/templates/email.changed.js.map +1 -0
- package/dist/email/templates/feedback.d.ts.map +1 -0
- package/dist/email/templates/feedback.js.map +1 -0
- package/dist/email/templates/index.d.ts.map +1 -0
- package/dist/email/templates/index.js.map +1 -0
- package/dist/email/templates/invoice.d.ts.map +1 -0
- package/dist/email/templates/invoice.js.map +1 -0
- package/dist/email/templates/login.alert.d.ts.map +1 -0
- package/dist/email/templates/login.alert.js.map +1 -0
- package/dist/email/templates/magic.link.d.ts.map +1 -0
- package/dist/email/templates/magic.link.js.map +1 -0
- package/dist/email/templates/maintenance.d.ts.map +1 -0
- package/dist/email/templates/maintenance.js.map +1 -0
- package/dist/email/templates/member.added.d.ts.map +1 -0
- package/dist/email/templates/member.added.js.map +1 -0
- package/dist/email/templates/member.removed.d.ts.map +1 -0
- package/dist/email/templates/member.removed.js.map +1 -0
- package/dist/email/templates/mention.d.ts.map +1 -0
- package/dist/email/templates/mention.js.map +1 -0
- package/dist/email/templates/monthly.report.d.ts.map +1 -0
- package/dist/email/templates/monthly.report.js.map +1 -0
- package/dist/email/templates/new.comment.d.ts.map +1 -0
- package/dist/email/templates/new.comment.js.map +1 -0
- package/dist/email/templates/new.device.login.d.ts.map +1 -0
- package/dist/email/templates/new.device.login.js.map +1 -0
- package/dist/email/templates/new.message.d.ts.map +1 -0
- package/dist/email/templates/new.message.js.map +1 -0
- package/dist/email/templates/notification.d.ts.map +1 -0
- package/dist/email/templates/notification.js.map +1 -0
- package/dist/email/templates/order.cancelled.d.ts.map +1 -0
- package/dist/email/templates/order.cancelled.js.map +1 -0
- package/dist/email/templates/order.confirmation.d.ts.map +1 -0
- package/dist/email/templates/order.confirmation.js.map +1 -0
- package/dist/email/templates/order.delivered.d.ts.map +1 -0
- package/dist/email/templates/order.delivered.js.map +1 -0
- package/dist/email/templates/order.shipped.d.ts.map +1 -0
- package/dist/email/templates/order.shipped.js.map +1 -0
- package/dist/email/templates/organization.invitation.d.ts.map +1 -0
- package/dist/email/templates/organization.invitation.js.map +1 -0
- package/dist/email/templates/otp.verfication.d.ts.map +1 -0
- package/dist/email/templates/otp.verfication.js.map +1 -0
- package/dist/email/templates/password.changed.d.ts.map +1 -0
- package/dist/email/templates/password.changed.js.map +1 -0
- package/dist/email/templates/password.expiring.d.ts.map +1 -0
- package/dist/email/templates/password.expiring.js.map +1 -0
- package/dist/email/templates/password.reset.d.ts.map +1 -0
- package/dist/email/templates/password.reset.js.map +1 -0
- package/dist/email/templates/payment.failed.d.ts.map +1 -0
- package/dist/email/templates/payment.failed.js.map +1 -0
- package/dist/email/templates/payment.success.d.ts.map +1 -0
- package/dist/email/templates/payment.success.js.map +1 -0
- package/dist/email/templates/receipt.d.ts.map +1 -0
- package/dist/email/templates/receipt.js.map +1 -0
- package/dist/email/templates/reminder.d.ts.map +1 -0
- package/dist/email/templates/reminder.js.map +1 -0
- package/dist/email/templates/security.alert.d.ts.map +1 -0
- package/dist/email/templates/security.alert.js.map +1 -0
- package/dist/email/templates/subscription.cancelled.d.ts.map +1 -0
- package/dist/email/templates/subscription.cancelled.js.map +1 -0
- package/dist/email/templates/subscription.created.d.ts.map +1 -0
- package/dist/email/templates/subscription.created.js.map +1 -0
- package/dist/email/templates/subscription.renewed.d.ts.map +1 -0
- package/dist/email/templates/subscription.renewed.js.map +1 -0
- package/dist/email/templates/support.ticket.d.ts.map +1 -0
- package/dist/email/templates/support.ticket.js.map +1 -0
- package/dist/email/templates/team.invitation.d.ts.map +1 -0
- package/dist/email/templates/team.invitation.js.map +1 -0
- package/dist/email/templates/trial.ending.d.ts.map +1 -0
- package/dist/email/templates/trial.ending.js.map +1 -0
- package/dist/email/templates/two.factor.code.d.ts.map +1 -0
- package/dist/email/templates/two.factor.code.js.map +1 -0
- package/dist/email/templates/verify.email.d.ts.map +1 -0
- package/dist/email/templates/verify.email.js.map +1 -0
- package/dist/email/templates/weekly.report.d.ts.map +1 -0
- package/dist/email/templates/weekly.report.js.map +1 -0
- package/dist/email/templates/welcome.d.ts.map +1 -0
- package/dist/email/templates/welcome.js.map +1 -0
- package/dist/email/utils/AutoFields.d.ts +19 -0
- package/dist/email/utils/AutoFields.d.ts.map +1 -0
- package/dist/email/utils/AutoFields.js +61 -0
- package/dist/email/utils/AutoFields.js.map +1 -0
- package/dist/email/utils/auto-fields.type.d.ts.map +1 -0
- package/dist/email/utils/auto-fields.type.js.map +1 -0
- package/dist/errors/AppError.d.ts +89 -0
- package/dist/errors/AppError.d.ts.map +1 -0
- package/dist/errors/AppError.js +108 -0
- package/dist/errors/AppError.js.map +1 -0
- package/dist/errors/ErrorCode.d.ts +85 -0
- package/dist/errors/ErrorCode.d.ts.map +1 -0
- package/dist/errors/ErrorCode.js +95 -0
- package/dist/errors/ErrorCode.js.map +1 -0
- package/dist/errors/ErrorTranslator.d.ts +17 -0
- package/dist/errors/ErrorTranslator.d.ts.map +1 -0
- package/dist/errors/ErrorTranslator.js +184 -0
- package/dist/errors/ErrorTranslator.js.map +1 -0
- package/dist/errors/index.d.ts +4 -0
- package/dist/errors/index.d.ts.map +1 -0
- package/dist/errors/index.js +4 -0
- package/dist/errors/index.js.map +1 -0
- package/dist/fields/mongoose.fields.d.ts +52 -0
- package/dist/fields/mongoose.fields.d.ts.map +1 -0
- package/dist/fields/mongoose.fields.js +385 -0
- package/dist/fields/mongoose.fields.js.map +1 -0
- package/dist/fields/mongoose.types.d.ts +81 -0
- package/dist/fields/mongoose.types.d.ts.map +1 -0
- package/dist/fields/mongoose.types.js +2 -0
- package/dist/fields/mongoose.types.js.map +1 -0
- package/dist/fields/oauth.providers.d.ts +3 -0
- package/dist/fields/oauth.providers.d.ts.map +1 -0
- package/dist/fields/oauth.providers.js +18 -0
- package/dist/fields/oauth.providers.js.map +1 -0
- package/dist/fields/otp.purposes.d.ts +3 -0
- package/dist/fields/otp.purposes.d.ts.map +1 -0
- package/dist/fields/otp.purposes.js +45 -0
- package/dist/fields/otp.purposes.js.map +1 -0
- package/dist/fields/roles.d.ts.map +1 -0
- package/dist/fields/roles.js.map +1 -0
- package/dist/fields/unified.fields.d.ts +57 -0
- package/dist/fields/unified.fields.d.ts.map +1 -0
- package/dist/fields/unified.fields.js +616 -0
- package/dist/fields/unified.fields.js.map +1 -0
- package/dist/fields/unified.types.d.ts +12 -0
- package/dist/fields/unified.types.d.ts.map +1 -0
- package/dist/fields/unified.types.js.map +1 -0
- package/dist/fields/zod.fields.d.ts +181 -0
- package/dist/fields/zod.fields.d.ts.map +1 -0
- package/dist/fields/zod.fields.js +196 -0
- package/dist/fields/zod.fields.js.map +1 -0
- package/dist/health/HealthModule.d.ts +10 -0
- package/dist/health/HealthModule.d.ts.map +1 -0
- package/dist/health/HealthModule.js +34 -0
- package/dist/health/HealthModule.js.map +1 -0
- package/dist/health/index.d.ts +2 -0
- package/dist/health/index.d.ts.map +1 -0
- package/dist/health/index.js +2 -0
- package/dist/health/index.js.map +1 -0
- package/dist/http/Authenticator.d.ts +30 -0
- package/dist/http/Authenticator.d.ts.map +1 -0
- package/dist/http/Authenticator.js +84 -0
- package/dist/http/Authenticator.js.map +1 -0
- package/dist/http/ResponseWriter.d.ts +21 -0
- package/dist/http/ResponseWriter.d.ts.map +1 -0
- package/dist/http/ResponseWriter.js +16 -0
- package/dist/http/ResponseWriter.js.map +1 -0
- package/dist/http/index.d.ts +8 -0
- package/dist/http/index.d.ts.map +1 -0
- package/dist/http/index.js +8 -0
- package/dist/http/index.js.map +1 -0
- package/dist/http/middleware/ErrorHandler.d.ts +15 -0
- package/dist/http/middleware/ErrorHandler.d.ts.map +1 -0
- package/dist/http/middleware/ErrorHandler.js +56 -0
- package/dist/http/middleware/ErrorHandler.js.map +1 -0
- package/dist/http/middleware/InputSanitizer.d.ts +4 -0
- package/dist/http/middleware/InputSanitizer.d.ts.map +1 -0
- package/dist/http/middleware/InputSanitizer.js +9 -0
- package/dist/http/middleware/InputSanitizer.js.map +1 -0
- package/dist/http/middleware/OriginGuard.d.ts +11 -0
- package/dist/http/middleware/OriginGuard.d.ts.map +1 -0
- package/dist/http/middleware/OriginGuard.js +26 -0
- package/dist/http/middleware/OriginGuard.js.map +1 -0
- package/dist/http/middleware/RateLimiters.d.ts +15 -0
- package/dist/http/middleware/RateLimiters.d.ts.map +1 -0
- package/dist/http/middleware/RateLimiters.js +36 -0
- package/dist/http/middleware/RateLimiters.js.map +1 -0
- package/dist/http/middleware/RequestContext.d.ts +4 -0
- package/dist/http/middleware/RequestContext.d.ts.map +1 -0
- package/dist/http/middleware/RequestContext.js +10 -0
- package/dist/http/middleware/RequestContext.js.map +1 -0
- package/dist/index.d.ts +45 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +38 -0
- package/dist/index.js.map +1 -0
- package/dist/oauth/GitHubProvider.d.ts +19 -0
- package/dist/oauth/GitHubProvider.d.ts.map +1 -0
- package/dist/oauth/GitHubProvider.js +38 -0
- package/dist/oauth/GitHubProvider.js.map +1 -0
- package/dist/oauth/GoogleProvider.d.ts +16 -0
- package/dist/oauth/GoogleProvider.d.ts.map +1 -0
- package/dist/oauth/GoogleProvider.js +29 -0
- package/dist/oauth/GoogleProvider.js.map +1 -0
- package/dist/oauth/OAuthController.d.ts +21 -0
- package/dist/oauth/OAuthController.d.ts.map +1 -0
- package/dist/oauth/OAuthController.js +89 -0
- package/dist/oauth/OAuthController.js.map +1 -0
- package/dist/oauth/OAuthProvider.d.ts +80 -0
- package/dist/oauth/OAuthProvider.d.ts.map +1 -0
- package/dist/oauth/OAuthProvider.js +127 -0
- package/dist/oauth/OAuthProvider.js.map +1 -0
- package/dist/oauth/OAuthProviderFactory.d.ts +21 -0
- package/dist/oauth/OAuthProviderFactory.d.ts.map +1 -0
- package/dist/oauth/OAuthProviderFactory.js +35 -0
- package/dist/oauth/OAuthProviderFactory.js.map +1 -0
- package/dist/oauth/OAuthProviderRegistry.d.ts +11 -0
- package/dist/oauth/OAuthProviderRegistry.d.ts.map +1 -0
- package/dist/oauth/OAuthProviderRegistry.js +41 -0
- package/dist/oauth/OAuthProviderRegistry.js.map +1 -0
- package/dist/oauth/OAuthService.d.ts +62 -0
- package/dist/oauth/OAuthService.d.ts.map +1 -0
- package/dist/oauth/OAuthService.js +132 -0
- package/dist/oauth/OAuthService.js.map +1 -0
- package/dist/oauth/index.d.ts +10 -0
- package/dist/oauth/index.d.ts.map +1 -0
- package/dist/oauth/index.js +10 -0
- package/dist/oauth/index.js.map +1 -0
- package/dist/oauth/pkce.d.ts +8 -0
- package/dist/oauth/pkce.d.ts.map +1 -0
- package/dist/oauth/pkce.js +9 -0
- package/dist/oauth/pkce.js.map +1 -0
- package/dist/oauth/returnPath.d.ts +7 -0
- package/dist/oauth/returnPath.d.ts.map +1 -0
- package/dist/oauth/returnPath.js +22 -0
- package/dist/oauth/returnPath.js.map +1 -0
- package/dist/security/CryptoVault.d.ts +28 -0
- package/dist/security/CryptoVault.d.ts.map +1 -0
- package/dist/security/CryptoVault.js +85 -0
- package/dist/security/CryptoVault.js.map +1 -0
- package/dist/security/PasswordHasher.d.ts +22 -0
- package/dist/security/PasswordHasher.d.ts.map +1 -0
- package/dist/security/PasswordHasher.js +64 -0
- package/dist/security/PasswordHasher.js.map +1 -0
- package/dist/security/Sodium.d.ts +4 -0
- package/dist/security/Sodium.d.ts.map +1 -0
- package/dist/security/Sodium.js +7 -0
- package/dist/security/Sodium.js.map +1 -0
- package/dist/security/TokenService.d.ts +63 -0
- package/dist/security/TokenService.d.ts.map +1 -0
- package/dist/security/TokenService.js +141 -0
- package/dist/security/TokenService.js.map +1 -0
- package/dist/security/Totp.d.ts +46 -0
- package/dist/security/Totp.d.ts.map +1 -0
- package/dist/security/Totp.js +111 -0
- package/dist/security/Totp.js.map +1 -0
- package/dist/security/index.d.ts +4 -0
- package/dist/security/index.d.ts.map +1 -0
- package/dist/security/index.js +4 -0
- package/dist/security/index.js.map +1 -0
- package/dist/terminal/BannerPrinter.d.ts +9 -0
- package/dist/terminal/BannerPrinter.d.ts.map +1 -0
- package/dist/terminal/BannerPrinter.js +36 -0
- package/dist/terminal/BannerPrinter.js.map +1 -0
- package/dist/terminal/banner.d.ts +25 -0
- package/dist/terminal/banner.d.ts.map +1 -0
- package/dist/terminal/banner.js +242 -0
- package/dist/terminal/banner.js.map +1 -0
- package/dist/terminal/index.d.ts +2 -0
- package/dist/terminal/index.d.ts.map +1 -0
- package/dist/terminal/index.js +2 -0
- package/dist/terminal/index.js.map +1 -0
- package/dist/testing/FakeOAuthServer.d.ts +64 -0
- package/dist/testing/FakeOAuthServer.d.ts.map +1 -0
- package/dist/testing/FakeOAuthServer.js +117 -0
- package/dist/testing/FakeOAuthServer.js.map +1 -0
- package/dist/testing/InMemoryDataSource.d.ts +15 -0
- package/dist/testing/InMemoryDataSource.d.ts.map +1 -0
- package/dist/testing/InMemoryDataSource.js +31 -0
- package/dist/testing/InMemoryDataSource.js.map +1 -0
- package/dist/testing/InMemoryRepository.d.ts +51 -0
- package/dist/testing/InMemoryRepository.d.ts.map +1 -0
- package/dist/testing/InMemoryRepository.js +252 -0
- package/dist/testing/InMemoryRepository.js.map +1 -0
- package/dist/testing/TestClient.d.ts +29 -0
- package/dist/testing/TestClient.d.ts.map +1 -0
- package/dist/testing/TestClient.js +71 -0
- package/dist/testing/TestClient.js.map +1 -0
- package/dist/testing/createTestForge.d.ts +44 -0
- package/dist/testing/createTestForge.d.ts.map +1 -0
- package/dist/testing/createTestForge.js +65 -0
- package/dist/testing/createTestForge.js.map +1 -0
- package/dist/testing/fakes.d.ts +36 -0
- package/dist/testing/fakes.d.ts.map +1 -0
- package/dist/testing/fakes.js +70 -0
- package/dist/testing/fakes.js.map +1 -0
- package/dist/testing/index.d.ts +7 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +7 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/types/ActionHandler.d.ts +66 -0
- package/dist/types/ActionHandler.d.ts.map +1 -0
- package/dist/types/ActionHandler.js.map +1 -0
- package/dist/types/AuthenticatedUser.d.ts +6 -0
- package/dist/types/AuthenticatedUser.d.ts.map +1 -0
- package/dist/types/AuthenticatedUser.js +2 -0
- package/dist/types/AuthenticatedUser.js.map +1 -0
- package/dist/types/Collection.d.ts +44 -0
- package/dist/types/Collection.d.ts.map +1 -0
- package/dist/types/Collection.js.map +1 -0
- package/dist/types/EmailActionTemplate.d.ts.map +1 -0
- package/dist/types/EmailActionTemplate.js.map +1 -0
- package/dist/types/Route.d.ts +100 -0
- package/dist/types/Route.d.ts.map +1 -0
- package/dist/types/Route.js.map +1 -0
- package/dist/types/Routepath.d.ts +2 -0
- package/dist/types/Routepath.d.ts.map +1 -0
- package/dist/types/Routepath.js +2 -0
- package/dist/types/Routepath.js.map +1 -0
- package/dist/types/StoreFile.d.ts +12 -0
- package/dist/types/StoreFile.d.ts.map +1 -0
- package/dist/types/StoreFile.js.map +1 -0
- package/dist/types/email/account.created.type.d.ts +10 -0
- package/dist/types/email/account.created.type.d.ts.map +1 -0
- package/dist/types/email/account.created.type.js.map +1 -0
- package/dist/types/email/account.deleted.type.d.ts +10 -0
- package/dist/types/email/account.deleted.type.d.ts.map +1 -0
- package/dist/types/email/account.deleted.type.js.map +1 -0
- package/dist/types/email/account.updated.type.d.ts +12 -0
- package/dist/types/email/account.updated.type.d.ts.map +1 -0
- package/dist/types/email/account.updated.type.js.map +1 -0
- package/dist/types/email/announcement.type.d.ts +13 -0
- package/dist/types/email/announcement.type.d.ts.map +1 -0
- package/dist/types/email/announcement.type.js.map +1 -0
- package/dist/types/email/api.key.created.type.d.ts +14 -0
- package/dist/types/email/api.key.created.type.d.ts.map +1 -0
- package/dist/types/email/api.key.created.type.js.map +1 -0
- package/dist/types/email/api.key.revoked.type.d.ts +14 -0
- package/dist/types/email/api.key.revoked.type.d.ts.map +1 -0
- package/dist/types/email/api.key.revoked.type.js.map +1 -0
- package/dist/types/email/contact.form.type.d.ts +11 -0
- package/dist/types/email/contact.form.type.d.ts.map +1 -0
- package/dist/types/email/contact.form.type.js.map +1 -0
- package/dist/types/email/daily.report.type.d.ts +14 -0
- package/dist/types/email/daily.report.type.d.ts.map +1 -0
- package/dist/types/email/daily.report.type.js.map +1 -0
- package/dist/types/email/email.changed.type.d.ts +12 -0
- package/dist/types/email/email.changed.type.d.ts.map +1 -0
- package/dist/types/email/email.changed.type.js.map +1 -0
- package/dist/types/email/feedback.type.d.ts +11 -0
- package/dist/types/email/feedback.type.d.ts.map +1 -0
- package/dist/types/email/feedback.type.js.map +1 -0
- package/dist/types/email/index.d.ts.map +1 -0
- package/dist/types/email/index.js.map +1 -0
- package/dist/types/email/invoice.type.d.ts +14 -0
- package/dist/types/email/invoice.type.d.ts.map +1 -0
- package/dist/types/email/invoice.type.js.map +1 -0
- package/dist/types/email/login.alert.type.d.ts +12 -0
- package/dist/types/email/login.alert.type.d.ts.map +1 -0
- package/dist/types/email/login.alert.type.js.map +1 -0
- package/dist/types/email/magic.link.type.d.ts +11 -0
- package/dist/types/email/magic.link.type.d.ts.map +1 -0
- package/dist/types/email/magic.link.type.js.map +1 -0
- package/dist/types/email/maintenance.type.d.ts +13 -0
- package/dist/types/email/maintenance.type.d.ts.map +1 -0
- package/dist/types/email/maintenance.type.js.map +1 -0
- package/dist/types/email/member.added.type.d.ts +14 -0
- package/dist/types/email/member.added.type.d.ts.map +1 -0
- package/dist/types/email/member.added.type.js.map +1 -0
- package/dist/types/email/member.removed.type.d.ts +14 -0
- package/dist/types/email/member.removed.type.d.ts.map +1 -0
- package/dist/types/email/member.removed.type.js.map +1 -0
- package/dist/types/email/mention.type.d.ts +12 -0
- package/dist/types/email/mention.type.d.ts.map +1 -0
- package/dist/types/email/mention.type.js.map +1 -0
- package/dist/types/email/monthly.report.type.d.ts +14 -0
- package/dist/types/email/monthly.report.type.d.ts.map +1 -0
- package/dist/types/email/monthly.report.type.js.map +1 -0
- package/dist/types/email/new.comment.type.d.ts +12 -0
- package/dist/types/email/new.comment.type.d.ts.map +1 -0
- package/dist/types/email/new.comment.type.js.map +1 -0
- package/dist/types/email/new.device.login.type.d.ts +11 -0
- package/dist/types/email/new.device.login.type.d.ts.map +1 -0
- package/dist/types/email/new.device.login.type.js.map +1 -0
- package/dist/types/email/new.message.type.d.ts +11 -0
- package/dist/types/email/new.message.type.d.ts.map +1 -0
- package/dist/types/email/new.message.type.js.map +1 -0
- package/dist/types/email/notification.type.d.ts +13 -0
- package/dist/types/email/notification.type.d.ts.map +1 -0
- package/dist/types/email/notification.type.js.map +1 -0
- package/dist/types/email/order.cancelled.type.d.ts +12 -0
- package/dist/types/email/order.cancelled.type.d.ts.map +1 -0
- package/dist/types/email/order.cancelled.type.js.map +1 -0
- package/dist/types/email/order.confirmation.type.d.ts +13 -0
- package/dist/types/email/order.confirmation.type.d.ts.map +1 -0
- package/dist/types/email/order.confirmation.type.js.map +1 -0
- package/dist/types/email/order.delivered.type.d.ts +12 -0
- package/dist/types/email/order.delivered.type.d.ts.map +1 -0
- package/dist/types/email/order.delivered.type.js.map +1 -0
- package/dist/types/email/order.shipped.type.d.ts +14 -0
- package/dist/types/email/order.shipped.type.d.ts.map +1 -0
- package/dist/types/email/order.shipped.type.js.map +1 -0
- package/dist/types/email/organization.invitation.type.d.ts +13 -0
- package/dist/types/email/organization.invitation.type.d.ts.map +1 -0
- package/dist/types/email/organization.invitation.type.js.map +1 -0
- package/dist/types/email/otp.verification.type.d.ts +11 -0
- package/dist/types/email/otp.verification.type.d.ts.map +1 -0
- package/dist/types/email/otp.verification.type.js.map +1 -0
- package/dist/types/email/password.changed.type.d.ts +12 -0
- package/dist/types/email/password.changed.type.d.ts.map +1 -0
- package/dist/types/email/password.changed.type.js.map +1 -0
- package/dist/types/email/password.expiring.type.d.ts +12 -0
- package/dist/types/email/password.expiring.type.d.ts.map +1 -0
- package/dist/types/email/password.expiring.type.js.map +1 -0
- package/dist/types/email/password.reset.type.d.ts +11 -0
- package/dist/types/email/password.reset.type.d.ts.map +1 -0
- package/dist/types/email/password.reset.type.js.map +1 -0
- package/dist/types/email/payment.failed.type.d.ts +14 -0
- package/dist/types/email/payment.failed.type.d.ts.map +1 -0
- package/dist/types/email/payment.failed.type.js.map +1 -0
- package/dist/types/email/payment.success.type.d.ts +13 -0
- package/dist/types/email/payment.success.type.d.ts.map +1 -0
- package/dist/types/email/payment.success.type.js.map +1 -0
- package/dist/types/email/receipt.type.d.ts +14 -0
- package/dist/types/email/receipt.type.d.ts.map +1 -0
- package/dist/types/email/receipt.type.js.map +1 -0
- package/dist/types/email/reminder.type.d.ts +12 -0
- package/dist/types/email/reminder.type.d.ts.map +1 -0
- package/dist/types/email/reminder.type.js.map +1 -0
- package/dist/types/email/security.alert.type.d.ts +12 -0
- package/dist/types/email/security.alert.type.d.ts.map +1 -0
- package/dist/types/email/security.alert.type.js.map +1 -0
- package/dist/types/email/static-config.type.d.ts.map +1 -0
- package/dist/types/email/static-config.type.js.map +1 -0
- package/dist/types/email/subscription.cancelled.type.d.ts +12 -0
- package/dist/types/email/subscription.cancelled.type.d.ts.map +1 -0
- package/dist/types/email/subscription.cancelled.type.js.map +1 -0
- package/dist/types/email/subscription.created.type.d.ts +13 -0
- package/dist/types/email/subscription.created.type.d.ts.map +1 -0
- package/dist/types/email/subscription.created.type.js.map +1 -0
- package/dist/types/email/subscription.renewed.type.d.ts +14 -0
- package/dist/types/email/subscription.renewed.type.d.ts.map +1 -0
- package/dist/types/email/subscription.renewed.type.js.map +1 -0
- package/dist/types/email/support.ticket.type.d.ts +14 -0
- package/dist/types/email/support.ticket.type.d.ts.map +1 -0
- package/dist/types/email/support.ticket.type.js.map +1 -0
- package/dist/types/email/team.invitation.type.d.ts +13 -0
- package/dist/types/email/team.invitation.type.d.ts.map +1 -0
- package/dist/types/email/team.invitation.type.js.map +1 -0
- package/dist/types/email/trial.ending.type.d.ts +13 -0
- package/dist/types/email/trial.ending.type.d.ts.map +1 -0
- package/dist/types/email/trial.ending.type.js.map +1 -0
- package/dist/types/email/two.factor.code.type.d.ts +11 -0
- package/dist/types/email/two.factor.code.type.d.ts.map +1 -0
- package/dist/types/email/two.factor.code.type.js.map +1 -0
- package/dist/types/email/verify.email.type.d.ts +11 -0
- package/dist/types/email/verify.email.type.d.ts.map +1 -0
- package/dist/types/email/verify.email.type.js.map +1 -0
- package/dist/types/email/weekly.report.type.d.ts +14 -0
- package/dist/types/email/weekly.report.type.d.ts.map +1 -0
- package/dist/types/email/weekly.report.type.js.map +1 -0
- package/dist/types/email/welcome.type.d.ts +10 -0
- package/dist/types/email/welcome.type.d.ts.map +1 -0
- package/dist/types/email/welcome.type.js.map +1 -0
- package/dist/types/email.d.ts.map +1 -0
- package/dist/types/email.js.map +1 -0
- package/dist/types/express.d.ts +13 -0
- package/dist/types/express.d.ts.map +1 -0
- package/dist/types/express.js +2 -0
- package/dist/types/express.js.map +1 -0
- package/dist/types/handlers.d.ts +22 -0
- package/dist/types/handlers.d.ts.map +1 -0
- package/dist/types/handlers.js +45 -0
- package/dist/types/handlers.js.map +1 -0
- package/dist/types/upload.d.ts +34 -0
- package/dist/types/upload.d.ts.map +1 -0
- package/dist/types/upload.js.map +1 -0
- package/dist/upload/CloudinaryStorage.d.ts +19 -0
- package/dist/upload/CloudinaryStorage.d.ts.map +1 -0
- package/dist/upload/CloudinaryStorage.js +44 -0
- package/dist/upload/CloudinaryStorage.js.map +1 -0
- package/dist/upload/FileTypeSniffer.d.ts +5 -0
- package/dist/upload/FileTypeSniffer.d.ts.map +1 -0
- package/dist/upload/FileTypeSniffer.js +27 -0
- package/dist/upload/FileTypeSniffer.js.map +1 -0
- package/dist/upload/StorageProvider.d.ts +17 -0
- package/dist/upload/StorageProvider.d.ts.map +1 -0
- package/dist/upload/StorageProvider.js +2 -0
- package/dist/upload/StorageProvider.js.map +1 -0
- package/dist/upload/UploadService.d.ts +40 -0
- package/dist/upload/UploadService.d.ts.map +1 -0
- package/dist/upload/UploadService.js +143 -0
- package/dist/upload/UploadService.js.map +1 -0
- package/dist/upload/index.d.ts +5 -0
- package/dist/upload/index.d.ts.map +1 -0
- package/dist/upload/index.js +5 -0
- package/dist/upload/index.js.map +1 -0
- package/dist/utils/Logger.d.ts +22 -0
- package/dist/utils/Logger.d.ts.map +1 -0
- package/dist/utils/Logger.js +44 -0
- package/dist/utils/Logger.js.map +1 -0
- package/dist/utils/html.d.ts +7 -0
- package/dist/utils/html.d.ts.map +1 -0
- package/dist/utils/html.js +24 -0
- package/dist/utils/html.js.map +1 -0
- package/dist/utils/ids.d.ts +7 -0
- package/dist/utils/ids.d.ts.map +1 -0
- package/dist/utils/ids.js +25 -0
- package/dist/utils/ids.js.map +1 -0
- package/dist/utils/index.d.ts +5 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +5 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/sanitizeInput.d.ts +9 -0
- package/dist/utils/sanitizeInput.d.ts.map +1 -0
- package/dist/utils/sanitizeInput.js +32 -0
- package/dist/utils/sanitizeInput.js.map +1 -0
- package/package.json +37 -30
- package/dist/js/account/bunch.account.d.ts +0 -4
- package/dist/js/account/bunch.account.d.ts.map +0 -1
- package/dist/js/account/bunch.account.js +0 -4
- package/dist/js/account/bunch.account.js.map +0 -1
- package/dist/js/account/get.d.ts +0 -10
- package/dist/js/account/get.d.ts.map +0 -1
- package/dist/js/account/get.js +0 -7
- package/dist/js/account/get.js.map +0 -1
- package/dist/js/account/index.d.ts +0 -5
- package/dist/js/account/index.d.ts.map +0 -1
- package/dist/js/account/index.js +0 -38
- package/dist/js/account/index.js.map +0 -1
- package/dist/js/account/me/get.d.ts +0 -10
- package/dist/js/account/me/get.d.ts.map +0 -1
- package/dist/js/account/me/get.js +0 -7
- package/dist/js/account/me/get.js.map +0 -1
- package/dist/js/account/me.delete.d.ts +0 -8
- package/dist/js/account/me.delete.d.ts.map +0 -1
- package/dist/js/account/me.delete.js +0 -39
- package/dist/js/account/me.delete.js.map +0 -1
- package/dist/js/account/me.get.d.ts +0 -7
- package/dist/js/account/me.get.d.ts.map +0 -1
- package/dist/js/account/me.get.js +0 -17
- package/dist/js/account/me.get.js.map +0 -1
- package/dist/js/account/me.update.d.ts +0 -9
- package/dist/js/account/me.update.d.ts.map +0 -1
- package/dist/js/account/me.update.js +0 -52
- package/dist/js/account/me.update.js.map +0 -1
- package/dist/js/admin/builtin/admin.collection.d.ts +0 -4
- package/dist/js/admin/builtin/admin.collection.d.ts.map +0 -1
- package/dist/js/admin/builtin/admin.collection.js +0 -17
- package/dist/js/admin/builtin/admin.collection.js.map +0 -1
- package/dist/js/admin/bunch.admin.d.ts +0 -3
- package/dist/js/admin/bunch.admin.d.ts.map +0 -1
- package/dist/js/admin/bunch.admin.js +0 -3
- package/dist/js/admin/bunch.admin.js.map +0 -1
- package/dist/js/admin/check.admin.d.ts +0 -2
- package/dist/js/admin/check.admin.d.ts.map +0 -1
- package/dist/js/admin/check.admin.js +0 -2
- package/dist/js/admin/check.admin.js.map +0 -1
- package/dist/js/admin/check.d.ts +0 -7
- package/dist/js/admin/check.d.ts.map +0 -1
- package/dist/js/admin/check.js +0 -38
- package/dist/js/admin/check.js.map +0 -1
- package/dist/js/admin/index.d.ts +0 -5
- package/dist/js/admin/index.d.ts.map +0 -1
- package/dist/js/admin/index.js +0 -49
- package/dist/js/admin/index.js.map +0 -1
- package/dist/js/app.d.ts +0 -5
- package/dist/js/app.d.ts.map +0 -1
- package/dist/js/app.js +0 -87
- package/dist/js/app.js.map +0 -1
- package/dist/js/auth/auth.collection.d.ts +0 -4
- package/dist/js/auth/auth.collection.d.ts.map +0 -1
- package/dist/js/auth/auth.collection.js +0 -58
- package/dist/js/auth/auth.collection.js.map +0 -1
- package/dist/js/auth/auth.collections.d.ts +0 -2
- package/dist/js/auth/auth.collections.d.ts.map +0 -1
- package/dist/js/auth/auth.collections.js +0 -2
- package/dist/js/auth/auth.collections.js.map +0 -1
- package/dist/js/auth/builtin/auth.collection.d.ts +0 -4
- package/dist/js/auth/builtin/auth.collection.d.ts.map +0 -1
- package/dist/js/auth/builtin/auth.collection.js +0 -86
- package/dist/js/auth/builtin/auth.collection.js.map +0 -1
- package/dist/js/auth/builtin/getValidations.d.ts +0 -11
- package/dist/js/auth/builtin/getValidations.d.ts.map +0 -1
- package/dist/js/auth/builtin/getValidations.js +0 -50
- package/dist/js/auth/builtin/getValidations.js.map +0 -1
- package/dist/js/auth/bunch.auth.d.ts +0 -9
- package/dist/js/auth/bunch.auth.d.ts.map +0 -1
- package/dist/js/auth/bunch.auth.js +0 -9
- package/dist/js/auth/bunch.auth.js.map +0 -1
- package/dist/js/auth/createOTPModel.d.ts +0 -2
- package/dist/js/auth/createOTPModel.d.ts.map +0 -1
- package/dist/js/auth/createOTPModel.js +0 -2
- package/dist/js/auth/createOTPModel.js.map +0 -1
- package/dist/js/auth/forgotPassword.d.ts +0 -10
- package/dist/js/auth/forgotPassword.d.ts.map +0 -1
- package/dist/js/auth/forgotPassword.js +0 -45
- package/dist/js/auth/forgotPassword.js.map +0 -1
- package/dist/js/auth/index.d.ts +0 -5
- package/dist/js/auth/index.d.ts.map +0 -1
- package/dist/js/auth/index.js +0 -45
- package/dist/js/auth/index.js.map +0 -1
- package/dist/js/auth/login.d.ts +0 -10
- package/dist/js/auth/login.d.ts.map +0 -1
- package/dist/js/auth/login.js +0 -38
- package/dist/js/auth/login.js.map +0 -1
- package/dist/js/auth/logout.d.ts +0 -5
- package/dist/js/auth/logout.d.ts.map +0 -1
- package/dist/js/auth/logout.js +0 -40
- package/dist/js/auth/logout.js.map +0 -1
- package/dist/js/auth/me.d.ts +0 -2
- package/dist/js/auth/me.d.ts.map +0 -1
- package/dist/js/auth/me.js +0 -2
- package/dist/js/auth/me.js.map +0 -1
- package/dist/js/auth/refresh.d.ts +0 -7
- package/dist/js/auth/refresh.d.ts.map +0 -1
- package/dist/js/auth/refresh.js +0 -75
- package/dist/js/auth/refresh.js.map +0 -1
- package/dist/js/auth/resendOTP.d.ts +0 -10
- package/dist/js/auth/resendOTP.d.ts.map +0 -1
- package/dist/js/auth/resendOTP.js +0 -77
- package/dist/js/auth/resendOTP.js.map +0 -1
- package/dist/js/auth/resetPassword.d.ts +0 -10
- package/dist/js/auth/resetPassword.d.ts.map +0 -1
- package/dist/js/auth/resetPassword.js +0 -74
- package/dist/js/auth/resetPassword.js.map +0 -1
- package/dist/js/auth/sendOTP.d.ts +0 -6
- package/dist/js/auth/sendOTP.d.ts.map +0 -1
- package/dist/js/auth/sendOTP.js +0 -28
- package/dist/js/auth/sendOTP.js.map +0 -1
- package/dist/js/auth/signup.d.ts +0 -10
- package/dist/js/auth/signup.d.ts.map +0 -1
- package/dist/js/auth/signup.js +0 -51
- package/dist/js/auth/signup.js.map +0 -1
- package/dist/js/auth/twoFactorAuth.d.ts +0 -2
- package/dist/js/auth/twoFactorAuth.d.ts.map +0 -1
- package/dist/js/auth/twoFactorAuth.js +0 -3
- package/dist/js/auth/twoFactorAuth.js.map +0 -1
- package/dist/js/auth/utils/UAParser.d.ts +0 -11
- package/dist/js/auth/utils/UAParser.d.ts.map +0 -1
- package/dist/js/auth/utils/UAParser.js +0 -16
- package/dist/js/auth/utils/UAParser.js.map +0 -1
- package/dist/js/auth/utils/authenticateUser.d.ts +0 -12
- package/dist/js/auth/utils/authenticateUser.d.ts.map +0 -1
- package/dist/js/auth/utils/authenticateUser.js +0 -98
- package/dist/js/auth/utils/authenticateUser.js.map +0 -1
- package/dist/js/auth/utils/createOTPModel.d.ts +0 -4
- package/dist/js/auth/utils/createOTPModel.d.ts.map +0 -1
- package/dist/js/auth/utils/createOTPModel.js +0 -48
- package/dist/js/auth/utils/createOTPModel.js.map +0 -1
- package/dist/js/auth/utils/createOTPUser.d.ts +0 -12
- package/dist/js/auth/utils/createOTPUser.d.ts.map +0 -1
- package/dist/js/auth/utils/createOTPUser.js +0 -75
- package/dist/js/auth/utils/createOTPUser.js.map +0 -1
- package/dist/js/auth/utils/createUser.d.ts +0 -12
- package/dist/js/auth/utils/createUser.d.ts.map +0 -1
- package/dist/js/auth/utils/createUser.js +0 -88
- package/dist/js/auth/utils/createUser.js.map +0 -1
- package/dist/js/auth/utils/deleteOTPUser.d.ts +0 -3
- package/dist/js/auth/utils/deleteOTPUser.d.ts.map +0 -1
- package/dist/js/auth/utils/deleteOTPUser.js +0 -3
- package/dist/js/auth/utils/deleteOTPUser.js.map +0 -1
- package/dist/js/auth/utils/findRefreshToken.d.ts +0 -4
- package/dist/js/auth/utils/findRefreshToken.d.ts.map +0 -1
- package/dist/js/auth/utils/findRefreshToken.js +0 -33
- package/dist/js/auth/utils/findRefreshToken.js.map +0 -1
- package/dist/js/auth/utils/findRefreshTokenUser.d.ts +0 -4
- package/dist/js/auth/utils/findRefreshTokenUser.d.ts.map +0 -1
- package/dist/js/auth/utils/findRefreshTokenUser.js +0 -19
- package/dist/js/auth/utils/findRefreshTokenUser.js.map +0 -1
- package/dist/js/auth/utils/findUser.d.ts +0 -2
- package/dist/js/auth/utils/findUser.d.ts.map +0 -1
- package/dist/js/auth/utils/findUser.js +0 -2
- package/dist/js/auth/utils/findUser.js.map +0 -1
- package/dist/js/auth/utils/getModel.d.ts +0 -6
- package/dist/js/auth/utils/getModel.d.ts.map +0 -1
- package/dist/js/auth/utils/getModel.js +0 -18
- package/dist/js/auth/utils/getModel.js.map +0 -1
- package/dist/js/auth/utils/getOTPData.d.ts +0 -9
- package/dist/js/auth/utils/getOTPData.d.ts.map +0 -1
- package/dist/js/auth/utils/getOTPData.js +0 -26
- package/dist/js/auth/utils/getOTPData.js.map +0 -1
- package/dist/js/auth/utils/getOTPModel.d.ts +0 -4
- package/dist/js/auth/utils/getOTPModel.d.ts.map +0 -1
- package/dist/js/auth/utils/getOTPModel.js +0 -19
- package/dist/js/auth/utils/getOTPModel.js.map +0 -1
- package/dist/js/auth/utils/getOTPUser.d.ts +0 -8
- package/dist/js/auth/utils/getOTPUser.d.ts.map +0 -1
- package/dist/js/auth/utils/getOTPUser.js +0 -31
- package/dist/js/auth/utils/getOTPUser.js.map +0 -1
- package/dist/js/auth/utils/getUser.d.ts +0 -10
- package/dist/js/auth/utils/getUser.d.ts.map +0 -1
- package/dist/js/auth/utils/getUser.js +0 -39
- package/dist/js/auth/utils/getUser.js.map +0 -1
- package/dist/js/auth/utils/handleGetRefreshToken.d.ts +0 -9
- package/dist/js/auth/utils/handleGetRefreshToken.d.ts.map +0 -1
- package/dist/js/auth/utils/handleGetRefreshToken.js +0 -42
- package/dist/js/auth/utils/handleGetRefreshToken.js.map +0 -1
- package/dist/js/auth/utils/handleGetToken.d.ts +0 -9
- package/dist/js/auth/utils/handleGetToken.d.ts.map +0 -1
- package/dist/js/auth/utils/handleGetToken.js +0 -21
- package/dist/js/auth/utils/handleGetToken.js.map +0 -1
- package/dist/js/auth/utils/handleIsVerfieid.d.ts +0 -9
- package/dist/js/auth/utils/handleIsVerfieid.d.ts.map +0 -1
- package/dist/js/auth/utils/handleIsVerfieid.js +0 -20
- package/dist/js/auth/utils/handleIsVerfieid.js.map +0 -1
- package/dist/js/auth/utils/handleIsVerified.d.ts +0 -11
- package/dist/js/auth/utils/handleIsVerified.d.ts.map +0 -1
- package/dist/js/auth/utils/handleIsVerified.js +0 -27
- package/dist/js/auth/utils/handleIsVerified.js.map +0 -1
- package/dist/js/auth/utils/handleRefreshTokenValidation.d.ts +0 -4
- package/dist/js/auth/utils/handleRefreshTokenValidation.d.ts.map +0 -1
- package/dist/js/auth/utils/handleRefreshTokenValidation.js +0 -49
- package/dist/js/auth/utils/handleRefreshTokenValidation.js.map +0 -1
- package/dist/js/auth/utils/handleRotateRefreshToken.d.ts +0 -18
- package/dist/js/auth/utils/handleRotateRefreshToken.d.ts.map +0 -1
- package/dist/js/auth/utils/handleRotateRefreshToken.js +0 -72
- package/dist/js/auth/utils/handleRotateRefreshToken.js.map +0 -1
- package/dist/js/auth/utils/modeMap.d.ts +0 -40
- package/dist/js/auth/utils/modeMap.d.ts.map +0 -1
- package/dist/js/auth/utils/modeMap.js +0 -15
- package/dist/js/auth/utils/modeMap.js.map +0 -1
- package/dist/js/auth/utils/otpHTML.d.ts +0 -2
- package/dist/js/auth/utils/otpHTML.d.ts.map +0 -1
- package/dist/js/auth/utils/otpHTML.js +0 -2
- package/dist/js/auth/utils/otpHTML.js.map +0 -1
- package/dist/js/auth/utils/otpVerifiedResponse.d.ts +0 -9
- package/dist/js/auth/utils/otpVerifiedResponse.d.ts.map +0 -1
- package/dist/js/auth/utils/otpVerifiedResponse.js +0 -27
- package/dist/js/auth/utils/otpVerifiedResponse.js.map +0 -1
- package/dist/js/auth/utils/returnRotationToken.d.ts +0 -2
- package/dist/js/auth/utils/returnRotationToken.d.ts.map +0 -1
- package/dist/js/auth/utils/returnRotationToken.js +0 -3
- package/dist/js/auth/utils/returnRotationToken.js.map +0 -1
- package/dist/js/auth/utils/rotateRefreshToken.d.ts +0 -16
- package/dist/js/auth/utils/rotateRefreshToken.d.ts.map +0 -1
- package/dist/js/auth/utils/rotateRefreshToken.js +0 -53
- package/dist/js/auth/utils/rotateRefreshToken.js.map +0 -1
- package/dist/js/auth/utils/sendCookie.d.ts +0 -24
- package/dist/js/auth/utils/sendCookie.d.ts.map +0 -1
- package/dist/js/auth/utils/sendCookie.js +0 -101
- package/dist/js/auth/utils/sendCookie.js.map +0 -1
- package/dist/js/auth/utils/sendOTP.d.ts +0 -7
- package/dist/js/auth/utils/sendOTP.d.ts.map +0 -1
- package/dist/js/auth/utils/sendOTP.js +0 -47
- package/dist/js/auth/utils/sendOTP.js.map +0 -1
- package/dist/js/auth/utils/verifyCredentials.d.ts +0 -9
- package/dist/js/auth/utils/verifyCredentials.d.ts.map +0 -1
- package/dist/js/auth/utils/verifyCredentials.js +0 -44
- package/dist/js/auth/utils/verifyCredentials.js.map +0 -1
- package/dist/js/auth/verifyOTP.d.ts +0 -10
- package/dist/js/auth/verifyOTP.d.ts.map +0 -1
- package/dist/js/auth/verifyOTP.js +0 -108
- package/dist/js/auth/verifyOTP.js.map +0 -1
- package/dist/js/config/auth.envs.d.ts +0 -4
- package/dist/js/config/auth.envs.d.ts.map +0 -1
- package/dist/js/config/auth.envs.js +0 -79
- package/dist/js/config/auth.envs.js.map +0 -1
- package/dist/js/config/cloudinary.d.ts +0 -5
- package/dist/js/config/cloudinary.d.ts.map +0 -1
- package/dist/js/config/cloudinary.js +0 -25
- package/dist/js/config/cloudinary.js.map +0 -1
- package/dist/js/config/defaultConfig.d.ts +0 -3
- package/dist/js/config/defaultConfig.d.ts.map +0 -1
- package/dist/js/config/defaultConfig.js +0 -18
- package/dist/js/config/defaultConfig.js.map +0 -1
- package/dist/js/config/duration.d.ts +0 -58
- package/dist/js/config/duration.d.ts.map +0 -1
- package/dist/js/config/duration.js +0 -77
- package/dist/js/config/duration.js.map +0 -1
- package/dist/js/config/email.envs.d.ts +0 -4
- package/dist/js/config/email.envs.d.ts.map +0 -1
- package/dist/js/config/email.envs.js +0 -54
- package/dist/js/config/email.envs.js.map +0 -1
- package/dist/js/config/envs.d.ts +0 -6
- package/dist/js/config/envs.d.ts.map +0 -1
- package/dist/js/config/envs.js +0 -17
- package/dist/js/config/envs.js.map +0 -1
- package/dist/js/config/handleReqType.d.ts +0 -7
- package/dist/js/config/handleReqType.d.ts.map +0 -1
- package/dist/js/config/handleReqType.js +0 -20
- package/dist/js/config/handleReqType.js.map +0 -1
- package/dist/js/config/handlerMap.d.ts +0 -3
- package/dist/js/config/handlerMap.d.ts.map +0 -1
- package/dist/js/config/handlerMap.js +0 -46
- package/dist/js/config/handlerMap.js.map +0 -1
- package/dist/js/config/refreshModel.d.ts +0 -3
- package/dist/js/config/refreshModel.d.ts.map +0 -1
- package/dist/js/config/refreshModel.js +0 -52
- package/dist/js/config/refreshModel.js.map +0 -1
- package/dist/js/config/reqTypes.d.ts +0 -2
- package/dist/js/config/reqTypes.d.ts.map +0 -1
- package/dist/js/config/reqTypes.js +0 -2
- package/dist/js/config/reqTypes.js.map +0 -1
- package/dist/js/config/sendEmail.d.ts +0 -11
- package/dist/js/config/sendEmail.d.ts.map +0 -1
- package/dist/js/config/sendEmail.js +0 -92
- package/dist/js/config/sendEmail.js.map +0 -1
- package/dist/js/core/app.d.ts +0 -3
- package/dist/js/core/app.d.ts.map +0 -1
- package/dist/js/core/app.js +0 -19
- package/dist/js/core/app.js.map +0 -1
- package/dist/js/crud/bunch.crud.d.ts +0 -12
- package/dist/js/crud/bunch.crud.d.ts.map +0 -1
- package/dist/js/crud/bunch.crud.js +0 -14
- package/dist/js/crud/bunch.crud.js.map +0 -1
- package/dist/js/crud/create.d.ts +0 -10
- package/dist/js/crud/create.d.ts.map +0 -1
- package/dist/js/crud/create.js +0 -108
- package/dist/js/crud/create.js.map +0 -1
- package/dist/js/crud/createBulk.d.ts +0 -10
- package/dist/js/crud/createBulk.d.ts.map +0 -1
- package/dist/js/crud/createBulk.js +0 -25
- package/dist/js/crud/createBulk.js.map +0 -1
- package/dist/js/crud/email/index.d.ts +0 -2
- package/dist/js/crud/email/index.d.ts.map +0 -1
- package/dist/js/crud/email/index.js.map +0 -1
- package/dist/js/crud/encryption/handleDecryption.d.ts +0 -4
- package/dist/js/crud/encryption/handleDecryption.d.ts.map +0 -1
- package/dist/js/crud/encryption/handleDecryption.js +0 -64
- package/dist/js/crud/encryption/handleDecryption.js.map +0 -1
- package/dist/js/crud/encryption/handleEncryption.d.ts +0 -5
- package/dist/js/crud/encryption/handleEncryption.d.ts.map +0 -1
- package/dist/js/crud/encryption/handleEncryption.js +0 -49
- package/dist/js/crud/encryption/handleEncryption.js.map +0 -1
- package/dist/js/crud/files/file.update.d.ts +0 -10
- package/dist/js/crud/files/file.update.d.ts.map +0 -1
- package/dist/js/crud/files/file.update.js +0 -28
- package/dist/js/crud/files/file.update.js.map +0 -1
- package/dist/js/crud/handleUploads/file.add.d.ts +0 -10
- package/dist/js/crud/handleUploads/file.add.d.ts.map +0 -1
- package/dist/js/crud/handleUploads/file.add.js +0 -64
- package/dist/js/crud/handleUploads/file.add.js.map +0 -1
- package/dist/js/crud/handleUploads/file.create.d.ts +0 -10
- package/dist/js/crud/handleUploads/file.create.d.ts.map +0 -1
- package/dist/js/crud/handleUploads/file.create.js +0 -33
- package/dist/js/crud/handleUploads/file.create.js.map +0 -1
- package/dist/js/crud/handleUploads/file.delete.d.ts +0 -10
- package/dist/js/crud/handleUploads/file.delete.d.ts.map +0 -1
- package/dist/js/crud/handleUploads/file.delete.js +0 -45
- package/dist/js/crud/handleUploads/file.delete.js.map +0 -1
- package/dist/js/crud/handleUploads/file.update.d.ts +0 -10
- package/dist/js/crud/handleUploads/file.update.d.ts.map +0 -1
- package/dist/js/crud/handleUploads/file.update.js +0 -40
- package/dist/js/crud/handleUploads/file.update.js.map +0 -1
- package/dist/js/crud/index.d.ts +0 -5
- package/dist/js/crud/index.d.ts.map +0 -1
- package/dist/js/crud/index.js +0 -42
- package/dist/js/crud/index.js.map +0 -1
- package/dist/js/crud/read.d.ts +0 -10
- package/dist/js/crud/read.d.ts.map +0 -1
- package/dist/js/crud/read.js +0 -56
- package/dist/js/crud/read.js.map +0 -1
- package/dist/js/crud/readAll.d.ts +0 -9
- package/dist/js/crud/readAll.d.ts.map +0 -1
- package/dist/js/crud/readAll.js +0 -64
- package/dist/js/crud/readAll.js.map +0 -1
- package/dist/js/crud/remove.d.ts +0 -9
- package/dist/js/crud/remove.d.ts.map +0 -1
- package/dist/js/crud/remove.js +0 -60
- package/dist/js/crud/remove.js.map +0 -1
- package/dist/js/crud/removeAll.d.ts +0 -9
- package/dist/js/crud/removeAll.d.ts.map +0 -1
- package/dist/js/crud/removeAll.js +0 -56
- package/dist/js/crud/removeAll.js.map +0 -1
- package/dist/js/crud/removeMultiple.d.ts +0 -10
- package/dist/js/crud/removeMultiple.d.ts.map +0 -1
- package/dist/js/crud/removeMultiple.js +0 -72
- package/dist/js/crud/removeMultiple.js.map +0 -1
- package/dist/js/crud/security/handleDecryption.d.ts +0 -4
- package/dist/js/crud/security/handleDecryption.d.ts.map +0 -1
- package/dist/js/crud/security/handleDecryption.js +0 -64
- package/dist/js/crud/security/handleDecryption.js.map +0 -1
- package/dist/js/crud/security/handleEncryption.d.ts +0 -5
- package/dist/js/crud/security/handleEncryption.d.ts.map +0 -1
- package/dist/js/crud/security/handleEncryption.js +0 -49
- package/dist/js/crud/security/handleEncryption.js.map +0 -1
- package/dist/js/crud/security/handleHashing.d.ts +0 -4
- package/dist/js/crud/security/handleHashing.d.ts.map +0 -1
- package/dist/js/crud/security/handleHashing.js +0 -57
- package/dist/js/crud/security/handleHashing.js.map +0 -1
- package/dist/js/crud/security/handleHasing.d.ts +0 -4
- package/dist/js/crud/security/handleHasing.d.ts.map +0 -1
- package/dist/js/crud/security/handleHasing.js +0 -52
- package/dist/js/crud/security/handleHasing.js.map +0 -1
- package/dist/js/crud/update.d.ts +0 -10
- package/dist/js/crud/update.d.ts.map +0 -1
- package/dist/js/crud/update.js +0 -78
- package/dist/js/crud/update.js.map +0 -1
- package/dist/js/crud/utils/actionHandler.d.ts +0 -5
- package/dist/js/crud/utils/actionHandler.d.ts.map +0 -1
- package/dist/js/crud/utils/actionHandler.js +0 -9
- package/dist/js/crud/utils/actionHandler.js.map +0 -1
- package/dist/js/crud/utils/authorizeAccess.d.ts +0 -10
- package/dist/js/crud/utils/authorizeAccess.d.ts.map +0 -1
- package/dist/js/crud/utils/authorizeAccess.js +0 -52
- package/dist/js/crud/utils/authorizeAccess.js.map +0 -1
- package/dist/js/crud/utils/authroizeAccess.d.ts +0 -10
- package/dist/js/crud/utils/authroizeAccess.d.ts.map +0 -1
- package/dist/js/crud/utils/authroizeAccess.js +0 -46
- package/dist/js/crud/utils/authroizeAccess.js.map +0 -1
- package/dist/js/crud/utils/getItem.d.ts +0 -11
- package/dist/js/crud/utils/getItem.d.ts.map +0 -1
- package/dist/js/crud/utils/getItem.js +0 -79
- package/dist/js/crud/utils/getItem.js.map +0 -1
- package/dist/js/crud/utils/getParam.d.ts +0 -8
- package/dist/js/crud/utils/getParam.d.ts.map +0 -1
- package/dist/js/crud/utils/getParam.js +0 -18
- package/dist/js/crud/utils/getParam.js.map +0 -1
- package/dist/js/crud/utils/runActions.d.ts +0 -4
- package/dist/js/crud/utils/runActions.d.ts.map +0 -1
- package/dist/js/crud/utils/runActions.js +0 -27
- package/dist/js/crud/utils/runActions.js.map +0 -1
- package/dist/js/crud/utils/validateOwner.d.ts +0 -7
- package/dist/js/crud/utils/validateOwner.d.ts.map +0 -1
- package/dist/js/crud/utils/validateOwner.js +0 -5
- package/dist/js/crud/utils/validateOwner.js.map +0 -1
- package/dist/js/email/index.d.ts +0 -4
- package/dist/js/email/index.d.ts.map +0 -1
- package/dist/js/email/index.js +0 -180
- package/dist/js/email/index.js.map +0 -1
- package/dist/js/email/templates/account.created.d.ts.map +0 -1
- package/dist/js/email/templates/account.created.email.d.ts +0 -4
- package/dist/js/email/templates/account.created.email.d.ts.map +0 -1
- package/dist/js/email/templates/account.created.email.js +0 -165
- package/dist/js/email/templates/account.created.email.js.map +0 -1
- package/dist/js/email/templates/account.created.js.map +0 -1
- package/dist/js/email/templates/account.deleted.d.ts.map +0 -1
- package/dist/js/email/templates/account.deleted.js.map +0 -1
- package/dist/js/email/templates/account.updated.d.ts.map +0 -1
- package/dist/js/email/templates/account.updated.js.map +0 -1
- package/dist/js/email/templates/announcement.d.ts.map +0 -1
- package/dist/js/email/templates/announcement.js.map +0 -1
- package/dist/js/email/templates/api.key.created.d.ts.map +0 -1
- package/dist/js/email/templates/api.key.created.js.map +0 -1
- package/dist/js/email/templates/api.key.revoked.d.ts.map +0 -1
- package/dist/js/email/templates/api.key.revoked.js.map +0 -1
- package/dist/js/email/templates/contact.form.d.ts.map +0 -1
- package/dist/js/email/templates/contact.form.js.map +0 -1
- package/dist/js/email/templates/daily.report.d.ts.map +0 -1
- package/dist/js/email/templates/daily.report.js.map +0 -1
- package/dist/js/email/templates/email.changed.d.ts.map +0 -1
- package/dist/js/email/templates/email.changed.js.map +0 -1
- package/dist/js/email/templates/feedback.d.ts.map +0 -1
- package/dist/js/email/templates/feedback.js.map +0 -1
- package/dist/js/email/templates/index.d.ts.map +0 -1
- package/dist/js/email/templates/index.js.map +0 -1
- package/dist/js/email/templates/invoice.d.ts.map +0 -1
- package/dist/js/email/templates/invoice.js.map +0 -1
- package/dist/js/email/templates/login.alert.d.ts.map +0 -1
- package/dist/js/email/templates/login.alert.js.map +0 -1
- package/dist/js/email/templates/magic.link.d.ts.map +0 -1
- package/dist/js/email/templates/magic.link.js.map +0 -1
- package/dist/js/email/templates/maintenance.d.ts.map +0 -1
- package/dist/js/email/templates/maintenance.js.map +0 -1
- package/dist/js/email/templates/member.added.d.ts.map +0 -1
- package/dist/js/email/templates/member.added.js.map +0 -1
- package/dist/js/email/templates/member.removed.d.ts.map +0 -1
- package/dist/js/email/templates/member.removed.js.map +0 -1
- package/dist/js/email/templates/mention.d.ts.map +0 -1
- package/dist/js/email/templates/mention.js.map +0 -1
- package/dist/js/email/templates/monthly.report.d.ts.map +0 -1
- package/dist/js/email/templates/monthly.report.js.map +0 -1
- package/dist/js/email/templates/new.comment.d.ts.map +0 -1
- package/dist/js/email/templates/new.comment.js.map +0 -1
- package/dist/js/email/templates/new.device.login.d.ts.map +0 -1
- package/dist/js/email/templates/new.device.login.js.map +0 -1
- package/dist/js/email/templates/new.message.d.ts.map +0 -1
- package/dist/js/email/templates/new.message.js.map +0 -1
- package/dist/js/email/templates/notification.d.ts.map +0 -1
- package/dist/js/email/templates/notification.js.map +0 -1
- package/dist/js/email/templates/order.cancelled.d.ts.map +0 -1
- package/dist/js/email/templates/order.cancelled.js.map +0 -1
- package/dist/js/email/templates/order.confirmation.d.ts.map +0 -1
- package/dist/js/email/templates/order.confirmation.js.map +0 -1
- package/dist/js/email/templates/order.delivered.d.ts.map +0 -1
- package/dist/js/email/templates/order.delivered.js.map +0 -1
- package/dist/js/email/templates/order.shipped.d.ts.map +0 -1
- package/dist/js/email/templates/order.shipped.js.map +0 -1
- package/dist/js/email/templates/organization.invitation.d.ts.map +0 -1
- package/dist/js/email/templates/organization.invitation.js.map +0 -1
- package/dist/js/email/templates/otp.verfication.d.ts.map +0 -1
- package/dist/js/email/templates/otp.verfication.js.map +0 -1
- package/dist/js/email/templates/password.changed.d.ts.map +0 -1
- package/dist/js/email/templates/password.changed.js.map +0 -1
- package/dist/js/email/templates/password.expiring.d.ts.map +0 -1
- package/dist/js/email/templates/password.expiring.js.map +0 -1
- package/dist/js/email/templates/password.reset.d.ts.map +0 -1
- package/dist/js/email/templates/password.reset.js.map +0 -1
- package/dist/js/email/templates/payment.failed.d.ts.map +0 -1
- package/dist/js/email/templates/payment.failed.js.map +0 -1
- package/dist/js/email/templates/payment.success.d.ts.map +0 -1
- package/dist/js/email/templates/payment.success.js.map +0 -1
- package/dist/js/email/templates/receipt.d.ts.map +0 -1
- package/dist/js/email/templates/receipt.js.map +0 -1
- package/dist/js/email/templates/reminder.d.ts.map +0 -1
- package/dist/js/email/templates/reminder.js.map +0 -1
- package/dist/js/email/templates/security.alert.d.ts.map +0 -1
- package/dist/js/email/templates/security.alert.js.map +0 -1
- package/dist/js/email/templates/subscription.cancelled.d.ts.map +0 -1
- package/dist/js/email/templates/subscription.cancelled.js.map +0 -1
- package/dist/js/email/templates/subscription.created.d.ts.map +0 -1
- package/dist/js/email/templates/subscription.created.js.map +0 -1
- package/dist/js/email/templates/subscription.renewed.d.ts.map +0 -1
- package/dist/js/email/templates/subscription.renewed.js.map +0 -1
- package/dist/js/email/templates/support.ticket.d.ts.map +0 -1
- package/dist/js/email/templates/support.ticket.js.map +0 -1
- package/dist/js/email/templates/team.invitation.d.ts.map +0 -1
- package/dist/js/email/templates/team.invitation.js.map +0 -1
- package/dist/js/email/templates/trial.ending.d.ts.map +0 -1
- package/dist/js/email/templates/trial.ending.js.map +0 -1
- package/dist/js/email/templates/two.factor.code.d.ts.map +0 -1
- package/dist/js/email/templates/two.factor.code.js.map +0 -1
- package/dist/js/email/templates/verify.email.d.ts.map +0 -1
- package/dist/js/email/templates/verify.email.js.map +0 -1
- package/dist/js/email/templates/weekly.report.d.ts.map +0 -1
- package/dist/js/email/templates/weekly.report.js.map +0 -1
- package/dist/js/email/templates/welcome.d.ts.map +0 -1
- package/dist/js/email/templates/welcome.email.d.ts +0 -4
- package/dist/js/email/templates/welcome.email.d.ts.map +0 -1
- package/dist/js/email/templates/welcome.email.js +0 -417
- package/dist/js/email/templates/welcome.email.js.map +0 -1
- package/dist/js/email/templates/welcome.js.map +0 -1
- package/dist/js/email/utils/auto-fields.d.ts +0 -68
- package/dist/js/email/utils/auto-fields.d.ts.map +0 -1
- package/dist/js/email/utils/auto-fields.js +0 -232
- package/dist/js/email/utils/auto-fields.js.map +0 -1
- package/dist/js/email/utils/auto-fields.type.d.ts.map +0 -1
- package/dist/js/email/utils/auto-fields.type.js.map +0 -1
- package/dist/js/email/utils/emailTemplates.d.ts +0 -2
- package/dist/js/email/utils/emailTemplates.d.ts.map +0 -1
- package/dist/js/email/utils/emailTemplates.js +0 -49
- package/dist/js/email/utils/emailTemplates.js.map +0 -1
- package/dist/js/email/utils/handleEmailTemplateConfig.d.ts +0 -4
- package/dist/js/email/utils/handleEmailTemplateConfig.d.ts.map +0 -1
- package/dist/js/email/utils/handleEmailTemplateConfig.js +0 -47
- package/dist/js/email/utils/handleEmailTemplateConfig.js.map +0 -1
- package/dist/js/health/bunch.health.d.ts +0 -6
- package/dist/js/health/bunch.health.d.ts.map +0 -1
- package/dist/js/health/bunch.health.js +0 -6
- package/dist/js/health/bunch.health.js.map +0 -1
- package/dist/js/health/delete.health.d.ts +0 -4
- package/dist/js/health/delete.health.d.ts.map +0 -1
- package/dist/js/health/delete.health.js +0 -5
- package/dist/js/health/delete.health.js.map +0 -1
- package/dist/js/health/get.health.d.ts +0 -4
- package/dist/js/health/get.health.d.ts.map +0 -1
- package/dist/js/health/get.health.js +0 -5
- package/dist/js/health/get.health.js.map +0 -1
- package/dist/js/health/health.collection.d.ts +0 -3
- package/dist/js/health/health.collection.d.ts.map +0 -1
- package/dist/js/health/health.collection.js +0 -39
- package/dist/js/health/health.collection.js.map +0 -1
- package/dist/js/health/health.controller.d.ts +0 -4
- package/dist/js/health/health.controller.d.ts.map +0 -1
- package/dist/js/health/health.controller.js +0 -5
- package/dist/js/health/health.controller.js.map +0 -1
- package/dist/js/health/index.d.ts +0 -5
- package/dist/js/health/index.d.ts.map +0 -1
- package/dist/js/health/index.js +0 -10
- package/dist/js/health/index.js.map +0 -1
- package/dist/js/health/patch.health.d.ts +0 -4
- package/dist/js/health/patch.health.d.ts.map +0 -1
- package/dist/js/health/patch.health.js +0 -5
- package/dist/js/health/patch.health.js.map +0 -1
- package/dist/js/health/post.health.d.ts +0 -4
- package/dist/js/health/post.health.d.ts.map +0 -1
- package/dist/js/health/post.health.js +0 -5
- package/dist/js/health/post.health.js.map +0 -1
- package/dist/js/health/put.health.d.ts +0 -4
- package/dist/js/health/put.health.d.ts.map +0 -1
- package/dist/js/health/put.health.js +0 -5
- package/dist/js/health/put.health.js.map +0 -1
- package/dist/js/index.d.ts +0 -18
- package/dist/js/index.d.ts.map +0 -1
- package/dist/js/index.js +0 -27
- package/dist/js/index.js.map +0 -1
- package/dist/js/lib/Mongoose.d.ts +0 -80
- package/dist/js/lib/Mongoose.d.ts.map +0 -1
- package/dist/js/lib/Mongoose.js +0 -2
- package/dist/js/lib/Mongoose.js.map +0 -1
- package/dist/js/lib/OA.d.ts +0 -2
- package/dist/js/lib/OA.d.ts.map +0 -1
- package/dist/js/lib/OA.js +0 -2
- package/dist/js/lib/OA.js.map +0 -1
- package/dist/js/lib/OAuthProviders.d.ts +0 -3
- package/dist/js/lib/OAuthProviders.d.ts.map +0 -1
- package/dist/js/lib/OAuthProviders.js +0 -18
- package/dist/js/lib/OAuthProviders.js.map +0 -1
- package/dist/js/lib/PROVIDERS.d.ts +0 -2
- package/dist/js/lib/PROVIDERS.d.ts.map +0 -1
- package/dist/js/lib/PROVIDERS.js +0 -2
- package/dist/js/lib/PROVIDERS.js.map +0 -1
- package/dist/js/lib/db.d.ts +0 -8
- package/dist/js/lib/db.d.ts.map +0 -1
- package/dist/js/lib/db.js +0 -47
- package/dist/js/lib/db.js.map +0 -1
- package/dist/js/lib/handler.d.ts +0 -9
- package/dist/js/lib/handler.d.ts.map +0 -1
- package/dist/js/lib/handler.js +0 -11
- package/dist/js/lib/handler.js.map +0 -1
- package/dist/js/lib/handlerMap.d.ts +0 -3
- package/dist/js/lib/handlerMap.d.ts.map +0 -1
- package/dist/js/lib/handlerMap.js +0 -18
- package/dist/js/lib/handlerMap.js.map +0 -1
- package/dist/js/lib/model.factory.d.ts +0 -19
- package/dist/js/lib/model.factory.d.ts.map +0 -1
- package/dist/js/lib/model.factory.js +0 -77
- package/dist/js/lib/model.factory.js.map +0 -1
- package/dist/js/lib/model.registry.d.ts +0 -4
- package/dist/js/lib/model.registry.d.ts.map +0 -1
- package/dist/js/lib/model.registry.js +0 -5
- package/dist/js/lib/model.registry.js.map +0 -1
- package/dist/js/lib/mongoose.fields.d.ts +0 -52
- package/dist/js/lib/mongoose.fields.d.ts.map +0 -1
- package/dist/js/lib/mongoose.fields.js +0 -382
- package/dist/js/lib/mongoose.fields.js.map +0 -1
- package/dist/js/lib/roles.d.ts.map +0 -1
- package/dist/js/lib/roles.js.map +0 -1
- package/dist/js/lib/schema.builder.d.ts +0 -6
- package/dist/js/lib/schema.builder.d.ts.map +0 -1
- package/dist/js/lib/schema.builder.js +0 -31
- package/dist/js/lib/schema.builder.js.map +0 -1
- package/dist/js/lib/unified.fields.d.ts +0 -57
- package/dist/js/lib/unified.fields.d.ts.map +0 -1
- package/dist/js/lib/unified.fields.js +0 -610
- package/dist/js/lib/unified.fields.js.map +0 -1
- package/dist/js/lib/unified.types.d.ts +0 -10
- package/dist/js/lib/unified.types.d.ts.map +0 -1
- package/dist/js/lib/unified.types.js.map +0 -1
- package/dist/js/lib/zod.factory.d.ts +0 -21
- package/dist/js/lib/zod.factory.d.ts.map +0 -1
- package/dist/js/lib/zod.factory.js +0 -49
- package/dist/js/lib/zod.factory.js.map +0 -1
- package/dist/js/lib/zod.fields.d.ts +0 -180
- package/dist/js/lib/zod.fields.d.ts.map +0 -1
- package/dist/js/lib/zod.fields.js +0 -195
- package/dist/js/lib/zod.fields.js.map +0 -1
- package/dist/js/middleware/auth.middleware.d.ts +0 -25
- package/dist/js/middleware/auth.middleware.d.ts.map +0 -1
- package/dist/js/middleware/auth.middleware.js +0 -87
- package/dist/js/middleware/auth.middleware.js.map +0 -1
- package/dist/js/middleware/error.middleware.d.ts +0 -5
- package/dist/js/middleware/error.middleware.d.ts.map +0 -1
- package/dist/js/middleware/error.middleware.js +0 -26
- package/dist/js/middleware/error.middleware.js.map +0 -1
- package/dist/js/middleware/multer.middleware.d.ts +0 -5
- package/dist/js/middleware/multer.middleware.d.ts.map +0 -1
- package/dist/js/middleware/multer.middleware.js +0 -110
- package/dist/js/middleware/multer.middleware.js.map +0 -1
- package/dist/js/middleware/rateLimit.middleware.d.ts +0 -2
- package/dist/js/middleware/rateLimit.middleware.d.ts.map +0 -1
- package/dist/js/middleware/rateLimit.middleware.js +0 -19
- package/dist/js/middleware/rateLimit.middleware.js.map +0 -1
- package/dist/js/realtime/index.d.ts +0 -4
- package/dist/js/realtime/index.d.ts.map +0 -1
- package/dist/js/realtime/index.js +0 -5
- package/dist/js/realtime/index.js.map +0 -1
- package/dist/js/terminal/appInfo.d.ts +0 -19
- package/dist/js/terminal/appInfo.d.ts.map +0 -1
- package/dist/js/terminal/appInfo.js +0 -41
- package/dist/js/terminal/appInfo.js.map +0 -1
- package/dist/js/terminal/collectionInfo.d.ts +0 -19
- package/dist/js/terminal/collectionInfo.d.ts.map +0 -1
- package/dist/js/terminal/collectionInfo.js +0 -36
- package/dist/js/terminal/collectionInfo.js.map +0 -1
- package/dist/js/terminal/logger.d.ts +0 -25
- package/dist/js/terminal/logger.d.ts.map +0 -1
- package/dist/js/terminal/logger.js +0 -242
- package/dist/js/terminal/logger.js.map +0 -1
- package/dist/js/terminal/loggerConfig.d.ts +0 -3
- package/dist/js/terminal/loggerConfig.d.ts.map +0 -1
- package/dist/js/terminal/loggerConfig.js +0 -36
- package/dist/js/terminal/loggerConfig.js.map +0 -1
- package/dist/js/terminal/terminal.d.ts +0 -3
- package/dist/js/terminal/terminal.d.ts.map +0 -1
- package/dist/js/terminal/terminal.js +0 -36
- package/dist/js/terminal/terminal.js.map +0 -1
- package/dist/js/types/ActionHandler.d.ts +0 -93
- package/dist/js/types/ActionHandler.d.ts.map +0 -1
- package/dist/js/types/ActionHandler.js.map +0 -1
- package/dist/js/types/Collection.d.ts +0 -113
- package/dist/js/types/Collection.d.ts.map +0 -1
- package/dist/js/types/Collection.js.map +0 -1
- package/dist/js/types/Constructor.d.ts +0 -68
- package/dist/js/types/Constructor.d.ts.map +0 -1
- package/dist/js/types/Constructor.js +0 -2
- package/dist/js/types/Constructor.js.map +0 -1
- package/dist/js/types/EmailActionTemplate.d.ts.map +0 -1
- package/dist/js/types/EmailActionTemplate.js.map +0 -1
- package/dist/js/types/MongooseOTPSchemaObj.d.ts +0 -10
- package/dist/js/types/MongooseOTPSchemaObj.d.ts.map +0 -1
- package/dist/js/types/MongooseOTPSchemaObj.js +0 -2
- package/dist/js/types/MongooseOTPSchemaObj.js.map +0 -1
- package/dist/js/types/Route.d.ts +0 -152
- package/dist/js/types/Route.d.ts.map +0 -1
- package/dist/js/types/Route.js.map +0 -1
- package/dist/js/types/Routepath.d.ts +0 -2
- package/dist/js/types/Routepath.d.ts.map +0 -1
- package/dist/js/types/Routepath.js +0 -17
- package/dist/js/types/Routepath.js.map +0 -1
- package/dist/js/types/StoreFile.d.ts +0 -10
- package/dist/js/types/StoreFile.d.ts.map +0 -1
- package/dist/js/types/StoreFile.js.map +0 -1
- package/dist/js/types/ValidationsObj.d.ts +0 -7
- package/dist/js/types/ValidationsObj.d.ts.map +0 -1
- package/dist/js/types/ValidationsObj.js +0 -2
- package/dist/js/types/ValidationsObj.js.map +0 -1
- package/dist/js/types/accountHandlers.d.ts +0 -2
- package/dist/js/types/accountHandlers.d.ts.map +0 -1
- package/dist/js/types/accountHandlers.js +0 -2
- package/dist/js/types/accountHandlers.js.map +0 -1
- package/dist/js/types/adminHandlers.d.ts +0 -2
- package/dist/js/types/adminHandlers.d.ts.map +0 -1
- package/dist/js/types/adminHandlers.js +0 -2
- package/dist/js/types/adminHandlers.js.map +0 -1
- package/dist/js/types/authHandlers.d.ts +0 -2
- package/dist/js/types/authHandlers.d.ts.map +0 -1
- package/dist/js/types/authHandlers.js +0 -2
- package/dist/js/types/authHandlers.js.map +0 -1
- package/dist/js/types/crudHandlers.d.ts +0 -2
- package/dist/js/types/crudHandlers.d.ts.map +0 -1
- package/dist/js/types/crudHandlers.js +0 -2
- package/dist/js/types/crudHandlers.js.map +0 -1
- package/dist/js/types/email/account.created.type.d.ts +0 -10
- package/dist/js/types/email/account.created.type.d.ts.map +0 -1
- package/dist/js/types/email/account.created.type.js.map +0 -1
- package/dist/js/types/email/account.deleted.type.d.ts +0 -10
- package/dist/js/types/email/account.deleted.type.d.ts.map +0 -1
- package/dist/js/types/email/account.deleted.type.js.map +0 -1
- package/dist/js/types/email/account.updated.type.d.ts +0 -12
- package/dist/js/types/email/account.updated.type.d.ts.map +0 -1
- package/dist/js/types/email/account.updated.type.js.map +0 -1
- package/dist/js/types/email/announcement.type.d.ts +0 -13
- package/dist/js/types/email/announcement.type.d.ts.map +0 -1
- package/dist/js/types/email/announcement.type.js.map +0 -1
- package/dist/js/types/email/api.key.created.type.d.ts +0 -14
- package/dist/js/types/email/api.key.created.type.d.ts.map +0 -1
- package/dist/js/types/email/api.key.created.type.js.map +0 -1
- package/dist/js/types/email/api.key.revoked.type.d.ts +0 -14
- package/dist/js/types/email/api.key.revoked.type.d.ts.map +0 -1
- package/dist/js/types/email/api.key.revoked.type.js.map +0 -1
- package/dist/js/types/email/contact.form.type.d.ts +0 -11
- package/dist/js/types/email/contact.form.type.d.ts.map +0 -1
- package/dist/js/types/email/contact.form.type.js.map +0 -1
- package/dist/js/types/email/daily.report.type.d.ts +0 -14
- package/dist/js/types/email/daily.report.type.d.ts.map +0 -1
- package/dist/js/types/email/daily.report.type.js.map +0 -1
- package/dist/js/types/email/email.changed.type.d.ts +0 -12
- package/dist/js/types/email/email.changed.type.d.ts.map +0 -1
- package/dist/js/types/email/email.changed.type.js.map +0 -1
- package/dist/js/types/email/feedback.type.d.ts +0 -11
- package/dist/js/types/email/feedback.type.d.ts.map +0 -1
- package/dist/js/types/email/feedback.type.js.map +0 -1
- package/dist/js/types/email/index.d.ts.map +0 -1
- package/dist/js/types/email/index.js +0 -2
- package/dist/js/types/email/index.js.map +0 -1
- package/dist/js/types/email/invoice.type.d.ts +0 -14
- package/dist/js/types/email/invoice.type.d.ts.map +0 -1
- package/dist/js/types/email/invoice.type.js.map +0 -1
- package/dist/js/types/email/login.alert.type.d.ts +0 -12
- package/dist/js/types/email/login.alert.type.d.ts.map +0 -1
- package/dist/js/types/email/login.alert.type.js.map +0 -1
- package/dist/js/types/email/magic.link.type.d.ts +0 -11
- package/dist/js/types/email/magic.link.type.d.ts.map +0 -1
- package/dist/js/types/email/magic.link.type.js.map +0 -1
- package/dist/js/types/email/maintenance.type.d.ts +0 -13
- package/dist/js/types/email/maintenance.type.d.ts.map +0 -1
- package/dist/js/types/email/maintenance.type.js.map +0 -1
- package/dist/js/types/email/member.added.type.d.ts +0 -14
- package/dist/js/types/email/member.added.type.d.ts.map +0 -1
- package/dist/js/types/email/member.added.type.js.map +0 -1
- package/dist/js/types/email/member.removed.type.d.ts +0 -14
- package/dist/js/types/email/member.removed.type.d.ts.map +0 -1
- package/dist/js/types/email/member.removed.type.js.map +0 -1
- package/dist/js/types/email/mention.type.d.ts +0 -12
- package/dist/js/types/email/mention.type.d.ts.map +0 -1
- package/dist/js/types/email/mention.type.js.map +0 -1
- package/dist/js/types/email/monthly.report.type.d.ts +0 -14
- package/dist/js/types/email/monthly.report.type.d.ts.map +0 -1
- package/dist/js/types/email/monthly.report.type.js.map +0 -1
- package/dist/js/types/email/new.comment.type.d.ts +0 -12
- package/dist/js/types/email/new.comment.type.d.ts.map +0 -1
- package/dist/js/types/email/new.comment.type.js.map +0 -1
- package/dist/js/types/email/new.device.login.type.d.ts +0 -11
- package/dist/js/types/email/new.device.login.type.d.ts.map +0 -1
- package/dist/js/types/email/new.device.login.type.js.map +0 -1
- package/dist/js/types/email/new.message.type.d.ts +0 -11
- package/dist/js/types/email/new.message.type.d.ts.map +0 -1
- package/dist/js/types/email/new.message.type.js.map +0 -1
- package/dist/js/types/email/notification.type.d.ts +0 -13
- package/dist/js/types/email/notification.type.d.ts.map +0 -1
- package/dist/js/types/email/notification.type.js.map +0 -1
- package/dist/js/types/email/order.cancelled.type.d.ts +0 -12
- package/dist/js/types/email/order.cancelled.type.d.ts.map +0 -1
- package/dist/js/types/email/order.cancelled.type.js.map +0 -1
- package/dist/js/types/email/order.confirmation.type.d.ts +0 -13
- package/dist/js/types/email/order.confirmation.type.d.ts.map +0 -1
- package/dist/js/types/email/order.confirmation.type.js.map +0 -1
- package/dist/js/types/email/order.delivered.type.d.ts +0 -12
- package/dist/js/types/email/order.delivered.type.d.ts.map +0 -1
- package/dist/js/types/email/order.delivered.type.js.map +0 -1
- package/dist/js/types/email/order.shipped.type.d.ts +0 -14
- package/dist/js/types/email/order.shipped.type.d.ts.map +0 -1
- package/dist/js/types/email/order.shipped.type.js.map +0 -1
- package/dist/js/types/email/organization.invitation.type.d.ts +0 -13
- package/dist/js/types/email/organization.invitation.type.d.ts.map +0 -1
- package/dist/js/types/email/organization.invitation.type.js.map +0 -1
- package/dist/js/types/email/otp.verification.type.d.ts +0 -11
- package/dist/js/types/email/otp.verification.type.d.ts.map +0 -1
- package/dist/js/types/email/otp.verification.type.js.map +0 -1
- package/dist/js/types/email/password.changed.type.d.ts +0 -12
- package/dist/js/types/email/password.changed.type.d.ts.map +0 -1
- package/dist/js/types/email/password.changed.type.js.map +0 -1
- package/dist/js/types/email/password.expiring.type.d.ts +0 -12
- package/dist/js/types/email/password.expiring.type.d.ts.map +0 -1
- package/dist/js/types/email/password.expiring.type.js.map +0 -1
- package/dist/js/types/email/password.reset.type.d.ts +0 -11
- package/dist/js/types/email/password.reset.type.d.ts.map +0 -1
- package/dist/js/types/email/password.reset.type.js.map +0 -1
- package/dist/js/types/email/payment.failed.type.d.ts +0 -14
- package/dist/js/types/email/payment.failed.type.d.ts.map +0 -1
- package/dist/js/types/email/payment.failed.type.js.map +0 -1
- package/dist/js/types/email/payment.success.type.d.ts +0 -13
- package/dist/js/types/email/payment.success.type.d.ts.map +0 -1
- package/dist/js/types/email/payment.success.type.js.map +0 -1
- package/dist/js/types/email/receipt.type.d.ts +0 -14
- package/dist/js/types/email/receipt.type.d.ts.map +0 -1
- package/dist/js/types/email/receipt.type.js.map +0 -1
- package/dist/js/types/email/reminder.type.d.ts +0 -12
- package/dist/js/types/email/reminder.type.d.ts.map +0 -1
- package/dist/js/types/email/reminder.type.js.map +0 -1
- package/dist/js/types/email/security.alert.type.d.ts +0 -12
- package/dist/js/types/email/security.alert.type.d.ts.map +0 -1
- package/dist/js/types/email/security.alert.type.js.map +0 -1
- package/dist/js/types/email/static-config.type.d.ts.map +0 -1
- package/dist/js/types/email/static-config.type.js.map +0 -1
- package/dist/js/types/email/subscription.cancelled.type.d.ts +0 -12
- package/dist/js/types/email/subscription.cancelled.type.d.ts.map +0 -1
- package/dist/js/types/email/subscription.cancelled.type.js.map +0 -1
- package/dist/js/types/email/subscription.created.type.d.ts +0 -13
- package/dist/js/types/email/subscription.created.type.d.ts.map +0 -1
- package/dist/js/types/email/subscription.created.type.js.map +0 -1
- package/dist/js/types/email/subscription.renewed.type.d.ts +0 -14
- package/dist/js/types/email/subscription.renewed.type.d.ts.map +0 -1
- package/dist/js/types/email/subscription.renewed.type.js.map +0 -1
- package/dist/js/types/email/support.ticket.type.d.ts +0 -14
- package/dist/js/types/email/support.ticket.type.d.ts.map +0 -1
- package/dist/js/types/email/support.ticket.type.js.map +0 -1
- package/dist/js/types/email/team.invitation.type.d.ts +0 -13
- package/dist/js/types/email/team.invitation.type.d.ts.map +0 -1
- package/dist/js/types/email/team.invitation.type.js.map +0 -1
- package/dist/js/types/email/trial.ending.type.d.ts +0 -13
- package/dist/js/types/email/trial.ending.type.d.ts.map +0 -1
- package/dist/js/types/email/trial.ending.type.js.map +0 -1
- package/dist/js/types/email/two.factor.code.type.d.ts +0 -11
- package/dist/js/types/email/two.factor.code.type.d.ts.map +0 -1
- package/dist/js/types/email/two.factor.code.type.js.map +0 -1
- package/dist/js/types/email/verify.email.type.d.ts +0 -11
- package/dist/js/types/email/verify.email.type.d.ts.map +0 -1
- package/dist/js/types/email/verify.email.type.js.map +0 -1
- package/dist/js/types/email/weekly.report.type.d.ts +0 -14
- package/dist/js/types/email/weekly.report.type.d.ts.map +0 -1
- package/dist/js/types/email/weekly.report.type.js.map +0 -1
- package/dist/js/types/email/welcome.type.d.ts +0 -10
- package/dist/js/types/email/welcome.type.d.ts.map +0 -1
- package/dist/js/types/email/welcome.type.js.map +0 -1
- package/dist/js/types/email.d.ts.map +0 -1
- package/dist/js/types/email.js.map +0 -1
- package/dist/js/types/healthHandlers.d.ts +0 -2
- package/dist/js/types/healthHandlers.d.ts.map +0 -1
- package/dist/js/types/healthHandlers.js +0 -2
- package/dist/js/types/healthHandlers.js.map +0 -1
- package/dist/js/types/upload.d.ts +0 -61
- package/dist/js/types/upload.d.ts.map +0 -1
- package/dist/js/types/upload.js.map +0 -1
- package/dist/js/types/uploadFile.d.ts +0 -10
- package/dist/js/types/uploadFile.d.ts.map +0 -1
- package/dist/js/types/uploadFile.js +0 -2
- package/dist/js/types/uploadFile.js.map +0 -1
- package/dist/js/types/uploadHandlers.d.ts +0 -2
- package/dist/js/types/uploadHandlers.d.ts.map +0 -1
- package/dist/js/types/uploadHandlers.js +0 -2
- package/dist/js/types/uploadHandlers.js.map +0 -1
- package/dist/js/upload/create.d.ts +0 -8
- package/dist/js/upload/create.d.ts.map +0 -1
- package/dist/js/upload/create.js +0 -70
- package/dist/js/upload/create.js.map +0 -1
- package/dist/js/upload/delete.d.ts +0 -8
- package/dist/js/upload/delete.d.ts.map +0 -1
- package/dist/js/upload/delete.js +0 -100
- package/dist/js/upload/delete.js.map +0 -1
- package/dist/js/upload/index.d.ts +0 -3
- package/dist/js/upload/index.d.ts.map +0 -1
- package/dist/js/upload/index.js +0 -3
- package/dist/js/upload/index.js.map +0 -1
- package/dist/js/upload/providers/cloudinary.provider.d.ts +0 -2
- package/dist/js/upload/providers/cloudinary.provider.d.ts.map +0 -1
- package/dist/js/upload/providers/cloudinary.provider.js +0 -2
- package/dist/js/upload/providers/cloudinary.provider.js.map +0 -1
- package/dist/js/upload/update.d.ts +0 -10
- package/dist/js/upload/update.d.ts.map +0 -1
- package/dist/js/upload/update.js +0 -138
- package/dist/js/upload/update.js.map +0 -1
- package/dist/js/utils/AppError.d.ts +0 -26
- package/dist/js/utils/AppError.d.ts.map +0 -1
- package/dist/js/utils/AppError.js +0 -18
- package/dist/js/utils/AppError.js.map +0 -1
- package/dist/js/utils/AppLog.d.ts +0 -10
- package/dist/js/utils/AppLog.d.ts.map +0 -1
- package/dist/js/utils/AppLog.js +0 -12
- package/dist/js/utils/AppLog.js.map +0 -1
- package/dist/js/utils/Applog.d.ts +0 -2
- package/dist/js/utils/Applog.d.ts.map +0 -1
- package/dist/js/utils/Applog.js +0 -2
- package/dist/js/utils/Applog.js.map +0 -1
- package/dist/js/utils/AsyncHandler.d.ts +0 -4
- package/dist/js/utils/AsyncHandler.d.ts.map +0 -1
- package/dist/js/utils/AsyncHandler.js +0 -5
- package/dist/js/utils/AsyncHandler.js.map +0 -1
- package/dist/js/utils/extractParamsNames.d.ts +0 -2
- package/dist/js/utils/extractParamsNames.d.ts.map +0 -1
- package/dist/js/utils/extractParamsNames.js +0 -13
- package/dist/js/utils/extractParamsNames.js.map +0 -1
- package/dist/js/utils/getErrorDetail.d.ts +0 -9
- package/dist/js/utils/getErrorDetail.d.ts.map +0 -1
- package/dist/js/utils/getErrorDetail.js +0 -10
- package/dist/js/utils/getErrorDetail.js.map +0 -1
- package/dist/js/utils/getModel.d.ts +0 -8
- package/dist/js/utils/getModel.d.ts.map +0 -1
- package/dist/js/utils/getModel.js +0 -25
- package/dist/js/utils/getModel.js.map +0 -1
- package/dist/js/utils/handleJWT.d.ts +0 -13
- package/dist/js/utils/handleJWT.d.ts.map +0 -1
- package/dist/js/utils/handleJWT.js +0 -86
- package/dist/js/utils/handleJWT.js.map +0 -1
- package/dist/js/utils/libsodium.d.ts +0 -20
- package/dist/js/utils/libsodium.d.ts.map +0 -1
- package/dist/js/utils/libsodium.js +0 -193
- package/dist/js/utils/libsodium.js.map +0 -1
- package/dist/js/utils/otpPurposes.d.ts +0 -3
- package/dist/js/utils/otpPurposes.d.ts.map +0 -1
- package/dist/js/utils/otpPurposes.js +0 -45
- package/dist/js/utils/otpPurposes.js.map +0 -1
- package/dist/js/utils/response.d.ts +0 -13
- package/dist/js/utils/response.d.ts.map +0 -1
- package/dist/js/utils/response.js +0 -14
- package/dist/js/utils/response.js.map +0 -1
- package/dist/js/utils/sanitize.d.ts +0 -4
- package/dist/js/utils/sanitize.d.ts.map +0 -1
- package/dist/js/utils/sanitize.js +0 -59
- package/dist/js/utils/sanitize.js.map +0 -1
- package/dist/js/utils/saveRefreshToken.d.ts +0 -17
- package/dist/js/utils/saveRefreshToken.d.ts.map +0 -1
- package/dist/js/utils/saveRefreshToken.js +0 -19
- package/dist/js/utils/saveRefreshToken.js.map +0 -1
- package/dist/js/utils/validate.d.ts +0 -4
- package/dist/js/utils/validate.d.ts.map +0 -1
- package/dist/js/utils/validate.js +0 -58
- package/dist/js/utils/validate.js.map +0 -1
- package/dist/js/utils/validationKeyError.d.ts +0 -4
- package/dist/js/utils/validationKeyError.d.ts.map +0 -1
- package/dist/js/utils/validationKeyError.js +0 -47
- package/dist/js/utils/validationKeyError.js.map +0 -1
- package/dist/js/validations.d.ts +0 -3
- package/dist/js/validations.d.ts.map +0 -1
- package/dist/js/validations.js +0 -6
- package/dist/js/validations.js.map +0 -1
- package/readme.md +0 -1476
- /package/dist/{js/email → email}/templates/account.created.d.ts +0 -0
- /package/dist/{js/email → email}/templates/account.created.js +0 -0
- /package/dist/{js/email → email}/templates/account.deleted.d.ts +0 -0
- /package/dist/{js/email → email}/templates/account.deleted.js +0 -0
- /package/dist/{js/email → email}/templates/account.updated.d.ts +0 -0
- /package/dist/{js/email → email}/templates/account.updated.js +0 -0
- /package/dist/{js/email → email}/templates/announcement.d.ts +0 -0
- /package/dist/{js/email → email}/templates/announcement.js +0 -0
- /package/dist/{js/email → email}/templates/api.key.created.d.ts +0 -0
- /package/dist/{js/email → email}/templates/api.key.created.js +0 -0
- /package/dist/{js/email → email}/templates/api.key.revoked.d.ts +0 -0
- /package/dist/{js/email → email}/templates/api.key.revoked.js +0 -0
- /package/dist/{js/email → email}/templates/contact.form.d.ts +0 -0
- /package/dist/{js/email → email}/templates/contact.form.js +0 -0
- /package/dist/{js/email → email}/templates/daily.report.d.ts +0 -0
- /package/dist/{js/email → email}/templates/daily.report.js +0 -0
- /package/dist/{js/email → email}/templates/email.changed.d.ts +0 -0
- /package/dist/{js/email → email}/templates/email.changed.js +0 -0
- /package/dist/{js/email → email}/templates/feedback.d.ts +0 -0
- /package/dist/{js/email → email}/templates/feedback.js +0 -0
- /package/dist/{js/email → email}/templates/index.d.ts +0 -0
- /package/dist/{js/email → email}/templates/index.js +0 -0
- /package/dist/{js/email → email}/templates/invoice.d.ts +0 -0
- /package/dist/{js/email → email}/templates/invoice.js +0 -0
- /package/dist/{js/email → email}/templates/login.alert.d.ts +0 -0
- /package/dist/{js/email → email}/templates/login.alert.js +0 -0
- /package/dist/{js/email → email}/templates/magic.link.d.ts +0 -0
- /package/dist/{js/email → email}/templates/magic.link.js +0 -0
- /package/dist/{js/email → email}/templates/maintenance.d.ts +0 -0
- /package/dist/{js/email → email}/templates/maintenance.js +0 -0
- /package/dist/{js/email → email}/templates/member.added.d.ts +0 -0
- /package/dist/{js/email → email}/templates/member.added.js +0 -0
- /package/dist/{js/email → email}/templates/member.removed.d.ts +0 -0
- /package/dist/{js/email → email}/templates/member.removed.js +0 -0
- /package/dist/{js/email → email}/templates/mention.d.ts +0 -0
- /package/dist/{js/email → email}/templates/mention.js +0 -0
- /package/dist/{js/email → email}/templates/monthly.report.d.ts +0 -0
- /package/dist/{js/email → email}/templates/monthly.report.js +0 -0
- /package/dist/{js/email → email}/templates/new.comment.d.ts +0 -0
- /package/dist/{js/email → email}/templates/new.comment.js +0 -0
- /package/dist/{js/email → email}/templates/new.device.login.d.ts +0 -0
- /package/dist/{js/email → email}/templates/new.device.login.js +0 -0
- /package/dist/{js/email → email}/templates/new.message.d.ts +0 -0
- /package/dist/{js/email → email}/templates/new.message.js +0 -0
- /package/dist/{js/email → email}/templates/notification.d.ts +0 -0
- /package/dist/{js/email → email}/templates/notification.js +0 -0
- /package/dist/{js/email → email}/templates/order.cancelled.d.ts +0 -0
- /package/dist/{js/email → email}/templates/order.cancelled.js +0 -0
- /package/dist/{js/email → email}/templates/order.confirmation.d.ts +0 -0
- /package/dist/{js/email → email}/templates/order.confirmation.js +0 -0
- /package/dist/{js/email → email}/templates/order.delivered.d.ts +0 -0
- /package/dist/{js/email → email}/templates/order.delivered.js +0 -0
- /package/dist/{js/email → email}/templates/order.shipped.d.ts +0 -0
- /package/dist/{js/email → email}/templates/order.shipped.js +0 -0
- /package/dist/{js/email → email}/templates/organization.invitation.d.ts +0 -0
- /package/dist/{js/email → email}/templates/organization.invitation.js +0 -0
- /package/dist/{js/email → email}/templates/otp.verfication.d.ts +0 -0
- /package/dist/{js/email → email}/templates/otp.verfication.js +0 -0
- /package/dist/{js/email → email}/templates/password.changed.d.ts +0 -0
- /package/dist/{js/email → email}/templates/password.changed.js +0 -0
- /package/dist/{js/email → email}/templates/password.expiring.d.ts +0 -0
- /package/dist/{js/email → email}/templates/password.expiring.js +0 -0
- /package/dist/{js/email → email}/templates/password.reset.d.ts +0 -0
- /package/dist/{js/email → email}/templates/password.reset.js +0 -0
- /package/dist/{js/email → email}/templates/payment.failed.d.ts +0 -0
- /package/dist/{js/email → email}/templates/payment.failed.js +0 -0
- /package/dist/{js/email → email}/templates/payment.success.d.ts +0 -0
- /package/dist/{js/email → email}/templates/payment.success.js +0 -0
- /package/dist/{js/email → email}/templates/receipt.d.ts +0 -0
- /package/dist/{js/email → email}/templates/receipt.js +0 -0
- /package/dist/{js/email → email}/templates/reminder.d.ts +0 -0
- /package/dist/{js/email → email}/templates/reminder.js +0 -0
- /package/dist/{js/email → email}/templates/security.alert.d.ts +0 -0
- /package/dist/{js/email → email}/templates/security.alert.js +0 -0
- /package/dist/{js/email → email}/templates/subscription.cancelled.d.ts +0 -0
- /package/dist/{js/email → email}/templates/subscription.cancelled.js +0 -0
- /package/dist/{js/email → email}/templates/subscription.created.d.ts +0 -0
- /package/dist/{js/email → email}/templates/subscription.created.js +0 -0
- /package/dist/{js/email → email}/templates/subscription.renewed.d.ts +0 -0
- /package/dist/{js/email → email}/templates/subscription.renewed.js +0 -0
- /package/dist/{js/email → email}/templates/support.ticket.d.ts +0 -0
- /package/dist/{js/email → email}/templates/support.ticket.js +0 -0
- /package/dist/{js/email → email}/templates/team.invitation.d.ts +0 -0
- /package/dist/{js/email → email}/templates/team.invitation.js +0 -0
- /package/dist/{js/email → email}/templates/trial.ending.d.ts +0 -0
- /package/dist/{js/email → email}/templates/trial.ending.js +0 -0
- /package/dist/{js/email → email}/templates/two.factor.code.d.ts +0 -0
- /package/dist/{js/email → email}/templates/two.factor.code.js +0 -0
- /package/dist/{js/email → email}/templates/verify.email.d.ts +0 -0
- /package/dist/{js/email → email}/templates/verify.email.js +0 -0
- /package/dist/{js/email → email}/templates/weekly.report.d.ts +0 -0
- /package/dist/{js/email → email}/templates/weekly.report.js +0 -0
- /package/dist/{js/email → email}/templates/welcome.d.ts +0 -0
- /package/dist/{js/email → email}/templates/welcome.js +0 -0
- /package/dist/{js/email → email}/utils/auto-fields.type.d.ts +0 -0
- /package/dist/{js/email → email}/utils/auto-fields.type.js +0 -0
- /package/dist/{js/lib → fields}/roles.d.ts +0 -0
- /package/dist/{js/lib → fields}/roles.js +0 -0
- /package/dist/{js/lib → fields}/unified.types.js +0 -0
- /package/dist/{js/types → types}/ActionHandler.js +0 -0
- /package/dist/{js/types → types}/Collection.js +0 -0
- /package/dist/{js/types → types}/EmailActionTemplate.d.ts +0 -0
- /package/dist/{js/types → types}/EmailActionTemplate.js +0 -0
- /package/dist/{js/types → types}/Route.js +0 -0
- /package/dist/{js/types → types}/StoreFile.js +0 -0
- /package/dist/{js/types → types}/email/account.created.type.js +0 -0
- /package/dist/{js/types → types}/email/account.deleted.type.js +0 -0
- /package/dist/{js/types → types}/email/account.updated.type.js +0 -0
- /package/dist/{js/types → types}/email/announcement.type.js +0 -0
- /package/dist/{js/types → types}/email/api.key.created.type.js +0 -0
- /package/dist/{js/types → types}/email/api.key.revoked.type.js +0 -0
- /package/dist/{js/types → types}/email/contact.form.type.js +0 -0
- /package/dist/{js/types → types}/email/daily.report.type.js +0 -0
- /package/dist/{js/types → types}/email/email.changed.type.js +0 -0
- /package/dist/{js/types → types}/email/feedback.type.js +0 -0
- /package/dist/{js/types → types}/email/index.d.ts +0 -0
- /package/dist/{js/crud → types}/email/index.js +0 -0
- /package/dist/{js/types → types}/email/invoice.type.js +0 -0
- /package/dist/{js/types → types}/email/login.alert.type.js +0 -0
- /package/dist/{js/types → types}/email/magic.link.type.js +0 -0
- /package/dist/{js/types → types}/email/maintenance.type.js +0 -0
- /package/dist/{js/types → types}/email/member.added.type.js +0 -0
- /package/dist/{js/types → types}/email/member.removed.type.js +0 -0
- /package/dist/{js/types → types}/email/mention.type.js +0 -0
- /package/dist/{js/types → types}/email/monthly.report.type.js +0 -0
- /package/dist/{js/types → types}/email/new.comment.type.js +0 -0
- /package/dist/{js/types → types}/email/new.device.login.type.js +0 -0
- /package/dist/{js/types → types}/email/new.message.type.js +0 -0
- /package/dist/{js/types → types}/email/notification.type.js +0 -0
- /package/dist/{js/types → types}/email/order.cancelled.type.js +0 -0
- /package/dist/{js/types → types}/email/order.confirmation.type.js +0 -0
- /package/dist/{js/types → types}/email/order.delivered.type.js +0 -0
- /package/dist/{js/types → types}/email/order.shipped.type.js +0 -0
- /package/dist/{js/types → types}/email/organization.invitation.type.js +0 -0
- /package/dist/{js/types → types}/email/otp.verification.type.js +0 -0
- /package/dist/{js/types → types}/email/password.changed.type.js +0 -0
- /package/dist/{js/types → types}/email/password.expiring.type.js +0 -0
- /package/dist/{js/types → types}/email/password.reset.type.js +0 -0
- /package/dist/{js/types → types}/email/payment.failed.type.js +0 -0
- /package/dist/{js/types → types}/email/payment.success.type.js +0 -0
- /package/dist/{js/types → types}/email/receipt.type.js +0 -0
- /package/dist/{js/types → types}/email/reminder.type.js +0 -0
- /package/dist/{js/types → types}/email/security.alert.type.js +0 -0
- /package/dist/{js/types → types}/email/static-config.type.d.ts +0 -0
- /package/dist/{js/types → types}/email/static-config.type.js +0 -0
- /package/dist/{js/types → types}/email/subscription.cancelled.type.js +0 -0
- /package/dist/{js/types → types}/email/subscription.created.type.js +0 -0
- /package/dist/{js/types → types}/email/subscription.renewed.type.js +0 -0
- /package/dist/{js/types → types}/email/support.ticket.type.js +0 -0
- /package/dist/{js/types → types}/email/team.invitation.type.js +0 -0
- /package/dist/{js/types → types}/email/trial.ending.type.js +0 -0
- /package/dist/{js/types → types}/email/two.factor.code.type.js +0 -0
- /package/dist/{js/types → types}/email/verify.email.type.js +0 -0
- /package/dist/{js/types → types}/email/weekly.report.type.js +0 -0
- /package/dist/{js/types → types}/email/welcome.type.js +0 -0
- /package/dist/{js/types → types}/email.d.ts +0 -0
- /package/dist/{js/types → types}/email.js +0 -0
- /package/dist/{js/types → types}/upload.js +0 -0
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
import { BadRequestError, ErrorCode, NotFoundError, TooManyRequestsError } from "../errors/index.js";
|
|
2
|
+
import { OTP_REQUEST_MODEL } from "../data/internalModels.js";
|
|
3
|
+
import { hmacCode, randomNumericCode, randomToken, safeEqual, sha256 } from "../security/TokenService.js";
|
|
4
|
+
export const OTP_PURPOSES = ["signup", "login", "password_reset"];
|
|
5
|
+
const SUBJECTS = {
|
|
6
|
+
signup: "Confirm your e-mail address",
|
|
7
|
+
login: "Your login code",
|
|
8
|
+
password_reset: "Reset your password",
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* One-time codes for sign-up, login and password reset.
|
|
12
|
+
*
|
|
13
|
+
* Differences from 1.x: codes expire on their own (TTL index) instead of
|
|
14
|
+
* blocking the user forever, wrong guesses are counted correctly, resend is
|
|
15
|
+
* rate limited, codes are stored as keyed hashes, and password reset hands
|
|
16
|
+
* out a separate single-use token rather than a reusable "verified" flag.
|
|
17
|
+
*/
|
|
18
|
+
export class OtpService {
|
|
19
|
+
config;
|
|
20
|
+
data;
|
|
21
|
+
emails;
|
|
22
|
+
logger;
|
|
23
|
+
constructor(config, data, emails, logger) {
|
|
24
|
+
this.config = config;
|
|
25
|
+
this.data = data;
|
|
26
|
+
this.emails = emails;
|
|
27
|
+
this.logger = logger;
|
|
28
|
+
}
|
|
29
|
+
get repo() {
|
|
30
|
+
return this.data.repository(OTP_REQUEST_MODEL);
|
|
31
|
+
}
|
|
32
|
+
key() {
|
|
33
|
+
return `forge-otp:${this.config.jwtSecret ?? ""}`;
|
|
34
|
+
}
|
|
35
|
+
async issue(input) {
|
|
36
|
+
const { otp } = this.config.auth;
|
|
37
|
+
const email = input.email.toLowerCase();
|
|
38
|
+
const existing = await this.repo.findOne({ email, purpose: input.purpose });
|
|
39
|
+
const now = Date.now();
|
|
40
|
+
if (existing && new Date(existing.expiresAt).getTime() > now) {
|
|
41
|
+
const waitMs = new Date(existing.lastSentAt).getTime() + otp.resendCooldown.toMs() - now;
|
|
42
|
+
if (waitMs > 0) {
|
|
43
|
+
throw new TooManyRequestsError({
|
|
44
|
+
message: "A code was sent recently. Please wait before requesting another.",
|
|
45
|
+
code: ErrorCode.OTP_RESEND_COOLDOWN,
|
|
46
|
+
headers: { "Retry-After": String(Math.ceil(waitMs / 1000)) },
|
|
47
|
+
details: { retryAfterSeconds: Math.ceil(waitMs / 1000) },
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
if (existing.resends >= otp.maxResends) {
|
|
51
|
+
throw new TooManyRequestsError({
|
|
52
|
+
message: "Too many codes were requested. Please try again later.",
|
|
53
|
+
code: ErrorCode.OTP_RESEND_LIMIT,
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
const code = randomNumericCode(6);
|
|
58
|
+
const record = {
|
|
59
|
+
email,
|
|
60
|
+
purpose: input.purpose,
|
|
61
|
+
codeHash: hmacCode(code, this.key()),
|
|
62
|
+
expiresAt: otp.expiresIn.fromNow(now),
|
|
63
|
+
attempts: 0,
|
|
64
|
+
lastSentAt: new Date(now),
|
|
65
|
+
verifiedAt: null,
|
|
66
|
+
resetTokenHash: null,
|
|
67
|
+
resetExpiresAt: null,
|
|
68
|
+
};
|
|
69
|
+
if (existing) {
|
|
70
|
+
await this.repo.updateById(existing._id, {
|
|
71
|
+
...record,
|
|
72
|
+
resends: (existing.resends ?? 0) + 1,
|
|
73
|
+
...(input.payload ? { payload: input.payload } : {}),
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
await this.repo.create({ ...record, resends: 0, ...(input.payload ? { payload: input.payload } : {}) });
|
|
78
|
+
}
|
|
79
|
+
await this.send(email, code, input);
|
|
80
|
+
}
|
|
81
|
+
/** Re-sends a code for a request that is already pending. */
|
|
82
|
+
async resend(email, purpose, userName) {
|
|
83
|
+
const existing = await this.repo.findOne({ email: email.toLowerCase(), purpose });
|
|
84
|
+
if (!existing) {
|
|
85
|
+
throw new NotFoundError({
|
|
86
|
+
message: "There is no pending request for this e-mail. Start again.",
|
|
87
|
+
code: ErrorCode.OTP_NOT_FOUND,
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
await this.issue({ email, purpose, userName });
|
|
91
|
+
}
|
|
92
|
+
/** Checks a code. On success a signup/login request is consumed and its payload returned. */
|
|
93
|
+
async verify(email, purpose, code) {
|
|
94
|
+
const { otp } = this.config.auth;
|
|
95
|
+
const record = await this.repo.findOne({ email: email.toLowerCase(), purpose }, { withSecrets: ["codeHash"] });
|
|
96
|
+
if (!record) {
|
|
97
|
+
throw new NotFoundError({ message: "No pending code was found. Request a new one.", code: ErrorCode.OTP_NOT_FOUND });
|
|
98
|
+
}
|
|
99
|
+
if (new Date(record.expiresAt).getTime() <= Date.now()) {
|
|
100
|
+
await this.repo.deleteById(record._id);
|
|
101
|
+
throw new BadRequestError({ message: "The code has expired. Request a new one.", code: ErrorCode.OTP_EXPIRED });
|
|
102
|
+
}
|
|
103
|
+
if (record.attempts >= otp.maxAttempts) {
|
|
104
|
+
await this.repo.deleteById(record._id);
|
|
105
|
+
throw new TooManyRequestsError({
|
|
106
|
+
message: "Too many wrong attempts. Request a new code.",
|
|
107
|
+
code: ErrorCode.OTP_ATTEMPTS_EXCEEDED,
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
const valid = typeof record.codeHash === "string" && safeEqual(record.codeHash, hmacCode(code, this.key()));
|
|
111
|
+
if (!valid) {
|
|
112
|
+
const attempts = record.attempts + 1;
|
|
113
|
+
await this.repo.updateById(record._id, { attempts });
|
|
114
|
+
throw new BadRequestError({
|
|
115
|
+
message: "The code is incorrect.",
|
|
116
|
+
code: ErrorCode.OTP_INVALID,
|
|
117
|
+
details: { attemptsLeft: Math.max(0, otp.maxAttempts - attempts) },
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
if (purpose !== "password_reset") {
|
|
121
|
+
await this.repo.deleteById(record._id);
|
|
122
|
+
return { record };
|
|
123
|
+
}
|
|
124
|
+
// Password reset: swap the code for a separate single-use token.
|
|
125
|
+
const resetToken = randomToken(32);
|
|
126
|
+
await this.repo.updateById(record._id, {
|
|
127
|
+
verifiedAt: new Date(),
|
|
128
|
+
codeHash: sha256(`used:${randomToken(8)}`),
|
|
129
|
+
resetTokenHash: sha256(resetToken),
|
|
130
|
+
resetExpiresAt: otp.verifiedWindow.fromNow(),
|
|
131
|
+
});
|
|
132
|
+
return { record, resetToken };
|
|
133
|
+
}
|
|
134
|
+
/** Validates and burns a password-reset token. */
|
|
135
|
+
async consumeResetToken(email, resetToken) {
|
|
136
|
+
const record = await this.repo.findOne({ email: email.toLowerCase(), purpose: "password_reset" }, { withSecrets: ["resetTokenHash"] });
|
|
137
|
+
const valid = record &&
|
|
138
|
+
typeof record.resetTokenHash === "string" &&
|
|
139
|
+
record.resetExpiresAt &&
|
|
140
|
+
new Date(record.resetExpiresAt).getTime() > Date.now() &&
|
|
141
|
+
safeEqual(record.resetTokenHash, sha256(resetToken));
|
|
142
|
+
if (!valid) {
|
|
143
|
+
throw new BadRequestError({
|
|
144
|
+
message: "The reset link is invalid or has expired. Start again.",
|
|
145
|
+
code: ErrorCode.RESET_TOKEN_INVALID,
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
await this.repo.deleteById(record._id);
|
|
149
|
+
}
|
|
150
|
+
async send(email, code, input) {
|
|
151
|
+
if (this.config.isOffline) {
|
|
152
|
+
// Development only (isOffline is rejected in production): nothing is e-mailed, so show the code.
|
|
153
|
+
this.logger.info(`[offline] ${input.purpose} code for ${email}: ${code}`);
|
|
154
|
+
}
|
|
155
|
+
await this.emails.sendTemplate({
|
|
156
|
+
to: email,
|
|
157
|
+
subject: SUBJECTS[input.purpose],
|
|
158
|
+
template: "two-factor-code",
|
|
159
|
+
placeholders: {
|
|
160
|
+
otpCode: code,
|
|
161
|
+
userName: input.userName ?? "there",
|
|
162
|
+
userEmail: email,
|
|
163
|
+
expiryMinutes: Math.max(1, Math.round(this.config.auth.otp.expiresIn.toMs() / 60_000)),
|
|
164
|
+
},
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
//# sourceMappingURL=OtpService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OtpService.js","sourceRoot":"","sources":["../../src/auth/OtpService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { Response } from "express";
|
|
2
|
+
import type { ForgeConfig } from "../config/ForgeConfig.js";
|
|
3
|
+
import type { ResponseSanitizer } from "../core/ResponseSanitizer.js";
|
|
4
|
+
import type { Doc } from "../data/Repository.js";
|
|
5
|
+
import type { ResponseWriter } from "../http/ResponseWriter.js";
|
|
6
|
+
import type { CookieWriter } from "./CookieWriter.js";
|
|
7
|
+
import type { LoginResult } from "./LoginCompleter.js";
|
|
8
|
+
import type { SessionTokens } from "./SessionService.js";
|
|
9
|
+
export interface SessionResponse {
|
|
10
|
+
user: Doc;
|
|
11
|
+
tokens: SessionTokens;
|
|
12
|
+
created: boolean;
|
|
13
|
+
message: string;
|
|
14
|
+
hiddenFields?: readonly string[] | undefined;
|
|
15
|
+
}
|
|
16
|
+
/** Sets the session cookies and writes the "you are signed in" response. Shared by every way of signing in. */
|
|
17
|
+
export declare class SessionResponder {
|
|
18
|
+
private readonly config;
|
|
19
|
+
private readonly cookies;
|
|
20
|
+
private readonly sanitizer;
|
|
21
|
+
private readonly responses;
|
|
22
|
+
constructor(config: ForgeConfig, cookies: CookieWriter, sanitizer: ResponseSanitizer, responses: ResponseWriter);
|
|
23
|
+
/** Answers the outcome of a first-factor sign-in: a session, or "a second factor is needed". */
|
|
24
|
+
sendLogin(res: Response, result: LoginResult, options: {
|
|
25
|
+
message: string;
|
|
26
|
+
hiddenFields?: readonly string[] | undefined;
|
|
27
|
+
}): void;
|
|
28
|
+
/** Cookies only (used when the browser is about to be redirected). */
|
|
29
|
+
establish(res: Response, tokens: SessionTokens): void;
|
|
30
|
+
send(res: Response, input: SessionResponse): void;
|
|
31
|
+
/** Tokens are included in the JSON body only when explicitly enabled (for mobile / non-cookie clients). */
|
|
32
|
+
tokenBody(tokens: {
|
|
33
|
+
accessToken?: string;
|
|
34
|
+
refreshToken?: string;
|
|
35
|
+
}): Record<string, unknown>;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=SessionResponder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SessionResponder.d.ts","sourceRoot":"","sources":["../../src/auth/SessionResponder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,GAAG,CAAC;IACV,MAAM,EAAE,aAAa,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;CAC9C;AAED,+GAA+G;AAC/G,qBAAa,gBAAgB;IAEzB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAJ5B,YACmB,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,YAAY,EACrB,SAAS,EAAE,iBAAiB,EAC5B,SAAS,EAAE,cAAc,EACxC;IAEJ,gGAAgG;IAChG,SAAS,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAA;KAAE,GAAG,IAAI,CAS9H;IAED,sEAAsE;IACtE,SAAS,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI,CAEpD;IAED,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,eAAe,GAAG,IAAI,CAShD;IAED,2GAA2G;IAC3G,SAAS,CAAC,MAAM,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAM1F;CACF"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/** Sets the session cookies and writes the "you are signed in" response. Shared by every way of signing in. */
|
|
2
|
+
export class SessionResponder {
|
|
3
|
+
config;
|
|
4
|
+
cookies;
|
|
5
|
+
sanitizer;
|
|
6
|
+
responses;
|
|
7
|
+
constructor(config, cookies, sanitizer, responses) {
|
|
8
|
+
this.config = config;
|
|
9
|
+
this.cookies = cookies;
|
|
10
|
+
this.sanitizer = sanitizer;
|
|
11
|
+
this.responses = responses;
|
|
12
|
+
}
|
|
13
|
+
/** Answers the outcome of a first-factor sign-in: a session, or "a second factor is needed". */
|
|
14
|
+
sendLogin(res, result, options) {
|
|
15
|
+
if (result.kind === "mfa-required") {
|
|
16
|
+
this.responses.success(res, {
|
|
17
|
+
message: "Enter the code from your authenticator app to finish signing in.",
|
|
18
|
+
extra: { mfaRequired: true, mfaToken: result.mfaToken },
|
|
19
|
+
});
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
this.send(res, { user: result.user, tokens: result.tokens, created: result.created, ...options });
|
|
23
|
+
}
|
|
24
|
+
/** Cookies only (used when the browser is about to be redirected). */
|
|
25
|
+
establish(res, tokens) {
|
|
26
|
+
this.cookies.set(res, tokens);
|
|
27
|
+
}
|
|
28
|
+
send(res, input) {
|
|
29
|
+
this.establish(res, input.tokens);
|
|
30
|
+
const body = {
|
|
31
|
+
message: input.message,
|
|
32
|
+
data: this.sanitizer.one(input.user, { hiddenFields: input.hiddenFields }),
|
|
33
|
+
extra: this.tokenBody(input.tokens),
|
|
34
|
+
};
|
|
35
|
+
if (input.created)
|
|
36
|
+
this.responses.created(res, body);
|
|
37
|
+
else
|
|
38
|
+
this.responses.success(res, body);
|
|
39
|
+
}
|
|
40
|
+
/** Tokens are included in the JSON body only when explicitly enabled (for mobile / non-cookie clients). */
|
|
41
|
+
tokenBody(tokens) {
|
|
42
|
+
const { auth } = this.config;
|
|
43
|
+
return {
|
|
44
|
+
...(auth.returnAccessToken && tokens.accessToken ? { [auth.accessTokenName]: tokens.accessToken } : {}),
|
|
45
|
+
...(auth.returnRefreshToken && tokens.refreshToken ? { [auth.refreshTokenName]: tokens.refreshToken } : {}),
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=SessionResponder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SessionResponder.js","sourceRoot":"","sources":["../../src/auth/SessionResponder.ts"],"names":[],"mappings":"AAiBA,+GAA+G;AAC/G,MAAM,OAAO,gBAAgB;IAER,MAAM;IACN,OAAO;IACP,SAAS;IACT,SAAS;IAJ5B,YACmB,MAAmB,EACnB,OAAqB,EACrB,SAA4B,EAC5B,SAAyB;sBAHzB,MAAM;uBACN,OAAO;yBACP,SAAS;yBACT,SAAS;IACzB,CAAC;IAEJ,gGAAgG;IAChG,SAAS,CAAC,GAAa,EAAE,MAAmB,EAAE,OAA0E;QACtH,IAAI,MAAM,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;YACnC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE;gBAC1B,OAAO,EAAE,kEAAkE;gBAC3E,KAAK,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE;aACxD,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;IACpG,CAAC;IAED,sEAAsE;IACtE,SAAS,CAAC,GAAa,EAAE,MAAqB;QAC5C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAChC,CAAC;IAED,IAAI,CAAC,GAAa,EAAE,KAAsB;QACxC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QAClC,MAAM,IAAI,GAAG;YACX,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,YAAY,EAAE,KAAK,CAAC,YAAY,EAAE,CAAC;YAC1E,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC;SACpC,CAAC;QACF,IAAI,KAAK,CAAC,OAAO;YAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;;YAChD,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACzC,CAAC;IAED,2GAA2G;IAC3G,SAAS,CAAC,MAAuD;QAC/D,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;QAC7B,OAAO;YACL,GAAG,CAAC,IAAI,CAAC,iBAAiB,IAAI,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvG,GAAG,CAAC,IAAI,CAAC,kBAAkB,IAAI,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC5G,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { Request } from "express";
|
|
2
|
+
import type { ForgeConfig } from "../config/ForgeConfig.js";
|
|
3
|
+
import type { DataSource } from "../data/Repository.js";
|
|
4
|
+
import { type TokenService } from "../security/TokenService.js";
|
|
5
|
+
import type { Logger } from "../utils/Logger.js";
|
|
6
|
+
export interface SessionTokens {
|
|
7
|
+
accessToken: string;
|
|
8
|
+
refreshToken: string;
|
|
9
|
+
}
|
|
10
|
+
export interface RefreshResult {
|
|
11
|
+
userId: string;
|
|
12
|
+
accessToken: string;
|
|
13
|
+
/** Present only when the refresh token was rotated. */
|
|
14
|
+
refreshToken?: string;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Server-side sessions built on refresh tokens.
|
|
18
|
+
*
|
|
19
|
+
* - Every login starts a *family* of tokens. Each refresh rotates the token:
|
|
20
|
+
* the old one is marked as used and a new one is issued.
|
|
21
|
+
* - Presenting an already-rotated token after the grace period means it was
|
|
22
|
+
* stolen (or replayed): the whole family is revoked.
|
|
23
|
+
* - Tokens are stored as SHA-256 hashes and compared in constant time.
|
|
24
|
+
*/
|
|
25
|
+
export declare class SessionService {
|
|
26
|
+
private readonly config;
|
|
27
|
+
private readonly tokens;
|
|
28
|
+
private readonly data;
|
|
29
|
+
private readonly logger;
|
|
30
|
+
constructor(config: ForgeConfig, tokens: TokenService, data: DataSource, logger: Logger);
|
|
31
|
+
private get repo();
|
|
32
|
+
start(userId: string, req?: Request): Promise<SessionTokens>;
|
|
33
|
+
refresh(rawToken: string | undefined, req?: Request): Promise<RefreshResult>;
|
|
34
|
+
/** Closes the session a refresh token belongs to. Never throws: logging out twice is fine. */
|
|
35
|
+
revoke(rawToken: string | undefined): Promise<void>;
|
|
36
|
+
/** Closes every session of a user (password change, account deletion). */
|
|
37
|
+
revokeAll(userId: string): Promise<void>;
|
|
38
|
+
private revokeFamily;
|
|
39
|
+
private get userModel();
|
|
40
|
+
private createdAt;
|
|
41
|
+
private issueRefreshToken;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=SessionService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SessionService.d.ts","sourceRoot":"","sources":["../../src/auth/SessionService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAG5D,OAAO,KAAK,EAAE,UAAU,EAAO,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAqB,KAAK,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAEnF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAEjD,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,uDAAuD;IACvD,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;;GAQG;AACH,qBAAa,cAAc;IAEvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAJzB,YACmB,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,MAAM,EAC7B;IAEJ,OAAO,KAAK,IAAI,GAEf;IAEK,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC,CAIjE;IAEK,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,GAAG,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC,CAuDjF;IAED,8FAA8F;IACxF,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAQxD;IAED,0EAA0E;IACpE,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE7C;YAEa,YAAY;IAI1B,OAAO,KAAK,SAAS,GAEpB;IAED,OAAO,CAAC,SAAS;YAIH,iBAAiB;CAehC"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import { ErrorCode, UnauthorizedError } from "../errors/index.js";
|
|
2
|
+
import { REFRESH_TOKEN_MODEL } from "../data/internalModels.js";
|
|
3
|
+
import { safeEqual, sha256 } from "../security/TokenService.js";
|
|
4
|
+
import { newObjectId } from "../utils/ids.js";
|
|
5
|
+
/**
|
|
6
|
+
* Server-side sessions built on refresh tokens.
|
|
7
|
+
*
|
|
8
|
+
* - Every login starts a *family* of tokens. Each refresh rotates the token:
|
|
9
|
+
* the old one is marked as used and a new one is issued.
|
|
10
|
+
* - Presenting an already-rotated token after the grace period means it was
|
|
11
|
+
* stolen (or replayed): the whole family is revoked.
|
|
12
|
+
* - Tokens are stored as SHA-256 hashes and compared in constant time.
|
|
13
|
+
*/
|
|
14
|
+
export class SessionService {
|
|
15
|
+
config;
|
|
16
|
+
tokens;
|
|
17
|
+
data;
|
|
18
|
+
logger;
|
|
19
|
+
constructor(config, tokens, data, logger) {
|
|
20
|
+
this.config = config;
|
|
21
|
+
this.tokens = tokens;
|
|
22
|
+
this.data = data;
|
|
23
|
+
this.logger = logger;
|
|
24
|
+
}
|
|
25
|
+
get repo() {
|
|
26
|
+
return this.data.repository(REFRESH_TOKEN_MODEL);
|
|
27
|
+
}
|
|
28
|
+
async start(userId, req) {
|
|
29
|
+
const familyId = newObjectId();
|
|
30
|
+
const refreshToken = await this.issueRefreshToken(userId, familyId, req);
|
|
31
|
+
return { accessToken: this.tokens.signAccess(userId, this.config.auth.accessTokenAge), refreshToken };
|
|
32
|
+
}
|
|
33
|
+
async refresh(rawToken, req) {
|
|
34
|
+
const claims = this.tokens.verifyRefresh(rawToken);
|
|
35
|
+
const record = await this.repo.findById(claims.jti, { withSecrets: ["tokenHash"] });
|
|
36
|
+
if (!record ||
|
|
37
|
+
typeof record.tokenHash !== "string" ||
|
|
38
|
+
!safeEqual(record.tokenHash, sha256(rawToken)) ||
|
|
39
|
+
record.familyId !== claims.fam ||
|
|
40
|
+
String(record.owner) !== claims.sub) {
|
|
41
|
+
throw new UnauthorizedError({ message: "The refresh token is not recognised.", code: ErrorCode.REFRESH_TOKEN_NOT_FOUND });
|
|
42
|
+
}
|
|
43
|
+
const now = Date.now();
|
|
44
|
+
if (record.revokedAt) {
|
|
45
|
+
throw new UnauthorizedError({ message: "This session has been closed.", code: ErrorCode.REFRESH_TOKEN_REVOKED });
|
|
46
|
+
}
|
|
47
|
+
if (record.rotatedAt) {
|
|
48
|
+
const sinceRotation = now - new Date(record.rotatedAt).getTime();
|
|
49
|
+
if (sinceRotation <= this.config.auth.refreshReuseGracePeriod.toMs()) {
|
|
50
|
+
// Two tabs refreshed at the same moment: ask the client to retry with the newest token.
|
|
51
|
+
throw new UnauthorizedError({ message: "This refresh token was just replaced.", code: ErrorCode.REFRESH_TOKEN_ROTATED });
|
|
52
|
+
}
|
|
53
|
+
await this.revokeFamily(claims.fam);
|
|
54
|
+
this.logger.warn("Refresh token reuse detected; the session family was revoked.", { userId: claims.sub });
|
|
55
|
+
throw new UnauthorizedError({
|
|
56
|
+
message: "This session is no longer valid. Please log in again.",
|
|
57
|
+
code: ErrorCode.REFRESH_TOKEN_REUSED,
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
if (new Date(record.expiresAt).getTime() <= now) {
|
|
61
|
+
throw new UnauthorizedError({ message: "The refresh token has expired.", code: ErrorCode.REFRESH_TOKEN_EXPIRED });
|
|
62
|
+
}
|
|
63
|
+
if (this.config.auth.verifyAccessUser && this.userModel && this.data.has(this.userModel)) {
|
|
64
|
+
const user = await this.data.repository(this.userModel).findById(claims.sub);
|
|
65
|
+
if (!user) {
|
|
66
|
+
await this.revokeFamily(claims.fam);
|
|
67
|
+
throw new UnauthorizedError({ message: "The account no longer exists.", code: ErrorCode.REFRESH_USER_NOT_FOUND });
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
const accessToken = this.tokens.signAccess(claims.sub, this.config.auth.accessTokenAge);
|
|
71
|
+
const age = now - this.createdAt(record);
|
|
72
|
+
const shouldRotate = this.config.auth.rotateRefreshToken && age >= this.config.auth.refreshTokenRotationInterval.toMs();
|
|
73
|
+
if (!shouldRotate) {
|
|
74
|
+
await this.repo.updateById(record._id, { lastUsedAt: new Date(now) });
|
|
75
|
+
return { userId: claims.sub, accessToken };
|
|
76
|
+
}
|
|
77
|
+
const refreshToken = await this.issueRefreshToken(claims.sub, claims.fam, req);
|
|
78
|
+
await this.repo.updateById(record._id, { rotatedAt: new Date(now), lastUsedAt: new Date(now) });
|
|
79
|
+
return { userId: claims.sub, accessToken, refreshToken };
|
|
80
|
+
}
|
|
81
|
+
/** Closes the session a refresh token belongs to. Never throws: logging out twice is fine. */
|
|
82
|
+
async revoke(rawToken) {
|
|
83
|
+
if (!rawToken)
|
|
84
|
+
return;
|
|
85
|
+
try {
|
|
86
|
+
const claims = this.tokens.verifyRefresh(rawToken);
|
|
87
|
+
await this.revokeFamily(claims.fam);
|
|
88
|
+
}
|
|
89
|
+
catch {
|
|
90
|
+
/* invalid or expired token: nothing left to revoke */
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
/** Closes every session of a user (password change, account deletion). */
|
|
94
|
+
async revokeAll(userId) {
|
|
95
|
+
await this.repo.deleteMany({ owner: userId });
|
|
96
|
+
}
|
|
97
|
+
async revokeFamily(familyId) {
|
|
98
|
+
await this.repo.updateMany({ familyId }, { revokedAt: new Date() });
|
|
99
|
+
}
|
|
100
|
+
get userModel() {
|
|
101
|
+
return this.config.auth.mongooseConfig?.model ?? this.config.collections.find((c) => c.type === "auth")?.model;
|
|
102
|
+
}
|
|
103
|
+
createdAt(record) {
|
|
104
|
+
return new Date(record.createdAt ?? Date.now()).getTime();
|
|
105
|
+
}
|
|
106
|
+
async issueRefreshToken(userId, familyId, req) {
|
|
107
|
+
const jti = newObjectId();
|
|
108
|
+
const token = this.tokens.signRefresh({ sub: userId, jti, fam: familyId }, this.config.auth.refreshTokenAge);
|
|
109
|
+
await this.repo.create({
|
|
110
|
+
_id: jti,
|
|
111
|
+
owner: userId,
|
|
112
|
+
tokenHash: sha256(token),
|
|
113
|
+
familyId,
|
|
114
|
+
expiresAt: this.config.auth.refreshTokenAge.fromNow(),
|
|
115
|
+
lastUsedAt: new Date(),
|
|
116
|
+
userAgent: req?.get("user-agent")?.slice(0, 512),
|
|
117
|
+
ip: req?.ip?.slice(0, 64),
|
|
118
|
+
});
|
|
119
|
+
return token;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
//# sourceMappingURL=SessionService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SessionService.js","sourceRoot":"","sources":["../../src/auth/SessionService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { ForgeConfig } from "../config/ForgeConfig.js";
|
|
2
|
+
import type { Doc, Repository } from "../data/Repository.js";
|
|
3
|
+
import type { PasswordHasher } from "../security/PasswordHasher.js";
|
|
4
|
+
export interface NewUserInput {
|
|
5
|
+
email: string;
|
|
6
|
+
/** Display name, used when the user schema has a `name` field. Defaults to the e-mail's local part. */
|
|
7
|
+
name?: string | undefined;
|
|
8
|
+
/** Additional schema fields (e.g. from `oauth.userFromProfile`). Never allowed to change the e-mail or password. */
|
|
9
|
+
extra?: Record<string, unknown> | undefined;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Creates accounts for people who arrive without choosing a password (OAuth, magic link).
|
|
13
|
+
*
|
|
14
|
+
* The schema still requires a password, so a random, never-disclosed one is stored: it cannot be guessed,
|
|
15
|
+
* and the user can set a real one any time through "forgot password".
|
|
16
|
+
*/
|
|
17
|
+
export declare class UserProvisioner {
|
|
18
|
+
private readonly config;
|
|
19
|
+
private readonly users;
|
|
20
|
+
private readonly hasher;
|
|
21
|
+
private readonly knownFields;
|
|
22
|
+
constructor(config: ForgeConfig, users: () => Repository, hasher: PasswordHasher, knownFields: ReadonlySet<string>);
|
|
23
|
+
create(input: NewUserInput): Promise<Doc>;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=UserProvisioner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UserProvisioner.d.ts","sourceRoot":"","sources":["../../src/auth/UserProvisioner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAGpE,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,uGAAuG;IACvG,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,oHAAoH;IACpH,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;CAC7C;AAED;;;;;GAKG;AACH,qBAAa,eAAe;IAExB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAJ9B,YACmB,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,MAAM,UAAU,EACvB,MAAM,EAAE,cAAc,EACtB,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,EAC/C;IAEE,MAAM,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,CAS9C;CACF"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { randomToken } from "../security/TokenService.js";
|
|
2
|
+
/**
|
|
3
|
+
* Creates accounts for people who arrive without choosing a password (OAuth, magic link).
|
|
4
|
+
*
|
|
5
|
+
* The schema still requires a password, so a random, never-disclosed one is stored: it cannot be guessed,
|
|
6
|
+
* and the user can set a real one any time through "forgot password".
|
|
7
|
+
*/
|
|
8
|
+
export class UserProvisioner {
|
|
9
|
+
config;
|
|
10
|
+
users;
|
|
11
|
+
hasher;
|
|
12
|
+
knownFields;
|
|
13
|
+
constructor(config, users, hasher, knownFields) {
|
|
14
|
+
this.config = config;
|
|
15
|
+
this.users = users;
|
|
16
|
+
this.hasher = hasher;
|
|
17
|
+
this.knownFields = knownFields;
|
|
18
|
+
}
|
|
19
|
+
async create(input) {
|
|
20
|
+
const { fields } = this.config.auth;
|
|
21
|
+
const name = input.name?.trim() || input.email.split("@")[0];
|
|
22
|
+
return this.users().create({
|
|
23
|
+
...(this.knownFields.has("name") ? { name } : {}),
|
|
24
|
+
...input.extra,
|
|
25
|
+
[fields.email]: input.email,
|
|
26
|
+
[fields.password]: await this.hasher.hash(randomToken(32)),
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=UserProvisioner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UserProvisioner.js","sourceRoot":"","sources":["../../src/auth/UserProvisioner.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAU1D;;;;;GAKG;AACH,MAAM,OAAO,eAAe;IAEP,MAAM;IACN,KAAK;IACL,MAAM;IACN,WAAW;IAJ9B,YACmB,MAAmB,EACnB,KAAuB,EACvB,MAAsB,EACtB,WAAgC;sBAHhC,MAAM;qBACN,KAAK;sBACL,MAAM;2BACN,WAAW;IAC3B,CAAC;IAEJ,KAAK,CAAC,MAAM,CAAC,KAAmB;QAC9B,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QACpC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7D,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC;YACzB,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACjD,GAAG,KAAK,CAAC,KAAK;YACd,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,KAAK;YAC3B,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;SAC3D,CAAC,CAAC;IACL,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export type DurationUnit = "ms" | "s" | "m" | "h" | "d" | "w" | "mo" | "y";
|
|
2
|
+
/** A human-readable duration such as `"15m"`, `"1d"` or `"2w"`. */
|
|
3
|
+
export type DurationType = `${number}${DurationUnit}`;
|
|
4
|
+
/**
|
|
5
|
+
* Immutable time span.
|
|
6
|
+
*
|
|
7
|
+
* Replaces the 1.x lookup table, which could only express a fixed set of
|
|
8
|
+
* values and mapped `"0s"` to one second.
|
|
9
|
+
*/
|
|
10
|
+
export declare class Duration {
|
|
11
|
+
private readonly milliseconds;
|
|
12
|
+
private constructor();
|
|
13
|
+
static ofMs(ms: number): Duration;
|
|
14
|
+
static parse(input: DurationType | string | number | Duration): Duration;
|
|
15
|
+
toMs(): number;
|
|
16
|
+
toSeconds(): number;
|
|
17
|
+
isZero(): boolean;
|
|
18
|
+
/** The point in time this duration from `from` (default: now). */
|
|
19
|
+
fromNow(from?: number | Date): Date;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=Duration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Duration.d.ts","sourceRoot":"","sources":["../../src/config/Duration.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,YAAY,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,CAAC;AAE3E,mEAAmE;AACnE,MAAM,MAAM,YAAY,GAAG,GAAG,MAAM,GAAG,YAAY,EAAE,CAAC;AAetD;;;;;GAKG;AACH,qBAAa,QAAQ;IACC,OAAO,CAAC,QAAQ,CAAC,YAAY;IAAjD,OAAO,eAAsD;IAE7D,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,QAAQ,CAQhC;IAED,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAavE;IAED,IAAI,IAAI,MAAM,CAEb;IAED,SAAS,IAAI,MAAM,CAElB;IAED,MAAM,IAAI,OAAO,CAEhB;IAED,kEAAkE;IAClE,OAAO,CAAC,IAAI,GAAE,MAAM,GAAG,IAAiB,GAAG,IAAI,CAG9C;CACF"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { ConfigurationError, ErrorCode } from "../errors/index.js";
|
|
2
|
+
const UNIT_MS = {
|
|
3
|
+
ms: 1,
|
|
4
|
+
s: 1_000,
|
|
5
|
+
m: 60_000,
|
|
6
|
+
h: 3_600_000,
|
|
7
|
+
d: 86_400_000,
|
|
8
|
+
w: 604_800_000,
|
|
9
|
+
mo: 2_592_000_000, // 30 days
|
|
10
|
+
y: 31_536_000_000, // 365 days
|
|
11
|
+
};
|
|
12
|
+
const PATTERN = /^(\d+(?:\.\d+)?)(ms|s|m|h|d|w|mo|y)$/;
|
|
13
|
+
/**
|
|
14
|
+
* Immutable time span.
|
|
15
|
+
*
|
|
16
|
+
* Replaces the 1.x lookup table, which could only express a fixed set of
|
|
17
|
+
* values and mapped `"0s"` to one second.
|
|
18
|
+
*/
|
|
19
|
+
export class Duration {
|
|
20
|
+
milliseconds;
|
|
21
|
+
constructor(milliseconds) {
|
|
22
|
+
this.milliseconds = milliseconds;
|
|
23
|
+
}
|
|
24
|
+
static ofMs(ms) {
|
|
25
|
+
if (!Number.isFinite(ms) || ms < 0) {
|
|
26
|
+
throw new ConfigurationError({
|
|
27
|
+
message: `Invalid duration: ${ms}`,
|
|
28
|
+
code: ErrorCode.CONFIGURATION_ERROR,
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
return new Duration(Math.round(ms));
|
|
32
|
+
}
|
|
33
|
+
static parse(input) {
|
|
34
|
+
if (input instanceof Duration)
|
|
35
|
+
return input;
|
|
36
|
+
if (typeof input === "number")
|
|
37
|
+
return Duration.ofMs(input);
|
|
38
|
+
const match = PATTERN.exec(input.trim());
|
|
39
|
+
if (!match) {
|
|
40
|
+
throw new ConfigurationError({
|
|
41
|
+
message: `Invalid duration "${input}".`,
|
|
42
|
+
hint: 'Write durations like "30s", "15m", "1h", "7d", "2w", "1mo" or "1y".',
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
const [, amount, unit] = match;
|
|
46
|
+
return Duration.ofMs(Number(amount) * UNIT_MS[unit]);
|
|
47
|
+
}
|
|
48
|
+
toMs() {
|
|
49
|
+
return this.milliseconds;
|
|
50
|
+
}
|
|
51
|
+
toSeconds() {
|
|
52
|
+
return Math.floor(this.milliseconds / 1000);
|
|
53
|
+
}
|
|
54
|
+
isZero() {
|
|
55
|
+
return this.milliseconds === 0;
|
|
56
|
+
}
|
|
57
|
+
/** The point in time this duration from `from` (default: now). */
|
|
58
|
+
fromNow(from = Date.now()) {
|
|
59
|
+
const base = typeof from === "number" ? from : from.getTime();
|
|
60
|
+
return new Date(base + this.milliseconds);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=Duration.js.map
|