@breadstone/archipel-mcp 0.0.13 → 0.0.14
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/package.json +1 -1
- package/src/DocsLoader.js +2 -5
- package/src/GuidesLoader.js +2 -5
- package/data/guides/ai-text-generation.md +0 -361
- package/data/guides/analytics-and-error-tracking.md +0 -189
- package/data/guides/authentication-and-authorization.md +0 -657
- package/data/guides/blob-storage.md +0 -242
- package/data/guides/caching.md +0 -255
- package/data/guides/cryptography-and-otp.md +0 -240
- package/data/guides/database-setup.md +0 -546
- package/data/guides/document-generation.md +0 -174
- package/data/guides/email-delivery.md +0 -196
- package/data/guides/esigning-integration.md +0 -231
- package/data/guides/getting-started.md +0 -351
- package/data/guides/implementing-ports.md +0 -317
- package/data/guides/index.md +0 -62
- package/data/guides/mcp-server.md +0 -222
- package/data/guides/openapi-and-feature-discovery.md +0 -266
- package/data/guides/payments-and-feature-gating.md +0 -244
- package/data/guides/resource-management.md +0 -352
- package/data/guides/telemetry-and-observability.md +0 -190
- package/data/guides/testing.md +0 -319
- package/data/guides/tsdoc-guidelines.md +0 -45
- package/data/packages/index.md +0 -52
- package/data/packages/platform-analytics/api/Class.AnalyticsClientPort.md +0 -141
- package/data/packages/platform-analytics/api/Class.AnalyticsModule.md +0 -47
- package/data/packages/platform-analytics/api/Class.AppInsightsAnalyticsClient.md +0 -169
- package/data/packages/platform-analytics/api/Class.DatadogAnalyticsClient.md +0 -169
- package/data/packages/platform-analytics/api/Class.NoopAnalyticsClient.md +0 -161
- package/data/packages/platform-analytics/api/Class.SentryAnalyticsClient.md +0 -169
- package/data/packages/platform-analytics/api/Interface.IAnalyticsBreadcrumb.md +0 -58
- package/data/packages/platform-analytics/api/Interface.IAnalyticsModuleOptions.md +0 -47
- package/data/packages/platform-analytics/api/Interface.IAnalyticsUser.md +0 -58
- package/data/packages/platform-analytics/api/TypeAlias.AnalyticsLevel.md +0 -14
- package/data/packages/platform-analytics/api/Variable.APPINSIGHTS_CONFIG_ENTRIES.md +0 -14
- package/data/packages/platform-analytics/api/Variable.APPLICATIONINSIGHTS_CONNECTION_STRING.md +0 -14
- package/data/packages/platform-analytics/api/Variable.DATADOG_CONFIG_ENTRIES.md +0 -14
- package/data/packages/platform-analytics/api/Variable.DD_ENV.md +0 -14
- package/data/packages/platform-analytics/api/Variable.DD_SERVICE.md +0 -14
- package/data/packages/platform-analytics/api/Variable.SENTRY_CONFIG_ENTRIES.md +0 -14
- package/data/packages/platform-analytics/api/Variable.SENTRY_DSN.md +0 -14
- package/data/packages/platform-analytics/api/Variable.SENTRY_ENVIRONMENT.md +0 -14
- package/data/packages/platform-analytics/api/index.md +0 -44
- package/data/packages/platform-analytics/index.md +0 -170
- package/data/packages/platform-authentication/api/Class.AnonymousAuthGuard.md +0 -40
- package/data/packages/platform-authentication/api/Class.AppleConnector.md +0 -86
- package/data/packages/platform-authentication/api/Class.AuthModule.md +0 -67
- package/data/packages/platform-authentication/api/Class.AuthSubjectPort.md +0 -95
- package/data/packages/platform-authentication/api/Class.AuthTokenService.md +0 -59
- package/data/packages/platform-authentication/api/Class.ChallengeService.md +0 -131
- package/data/packages/platform-authentication/api/Class.GithubAuthGuard.md +0 -40
- package/data/packages/platform-authentication/api/Class.GithubConnector.md +0 -78
- package/data/packages/platform-authentication/api/Class.GoogleConnector.md +0 -84
- package/data/packages/platform-authentication/api/Class.JwtAuthGuard.md +0 -40
- package/data/packages/platform-authentication/api/Class.JwtPayloadBase.md +0 -136
- package/data/packages/platform-authentication/api/Class.LastActiveMiddleware.md +0 -71
- package/data/packages/platform-authentication/api/Class.LocalAuthGuard.md +0 -40
- package/data/packages/platform-authentication/api/Class.MfaService.md +0 -252
- package/data/packages/platform-authentication/api/Class.MfaSubjectPort.md +0 -70
- package/data/packages/platform-authentication/api/Class.MicrosoftConnector.md +0 -84
- package/data/packages/platform-authentication/api/Class.RolesGuard.md +0 -60
- package/data/packages/platform-authentication/api/Class.SessionMappingProfile.md +0 -60
- package/data/packages/platform-authentication/api/Class.SessionPersistencePort.md +0 -165
- package/data/packages/platform-authentication/api/Class.SessionResponse.md +0 -152
- package/data/packages/platform-authentication/api/Class.SessionService.md +0 -162
- package/data/packages/platform-authentication/api/Class.SocialAuthGuard.md +0 -61
- package/data/packages/platform-authentication/api/Class.SocialAuthPort.md +0 -48
- package/data/packages/platform-authentication/api/Class.TokenEnricherPort.md +0 -47
- package/data/packages/platform-authentication/api/Class.TotpMfaChannel.md +0 -144
- package/data/packages/platform-authentication/api/Class.VerificationService.md +0 -154
- package/data/packages/platform-authentication/api/Class.VerificationSubjectPort.md +0 -116
- package/data/packages/platform-authentication/api/Function.Token.md +0 -18
- package/data/packages/platform-authentication/api/Function.UseRoles.md +0 -24
- package/data/packages/platform-authentication/api/Function.socialAuthGuardFactory.md +0 -22
- package/data/packages/platform-authentication/api/Interface.IAuthModuleOptions.md +0 -143
- package/data/packages/platform-authentication/api/Interface.IAuthSubject.md +0 -107
- package/data/packages/platform-authentication/api/Interface.IMfaChallengePayload.md +0 -82
- package/data/packages/platform-authentication/api/Interface.IMfaChallengeState.md +0 -118
- package/data/packages/platform-authentication/api/Interface.IMfaConfirmation.md +0 -22
- package/data/packages/platform-authentication/api/Interface.IMfaSetup.md +0 -58
- package/data/packages/platform-authentication/api/Interface.IMfaSubject.md +0 -131
- package/data/packages/platform-authentication/api/Interface.IMfaSubjectUpdate.md +0 -91
- package/data/packages/platform-authentication/api/Interface.ISessionRecord.md +0 -160
- package/data/packages/platform-authentication/api/Interface.ISignInResult.md +0 -82
- package/data/packages/platform-authentication/api/Interface.ISocialProfile.md +0 -58
- package/data/packages/platform-authentication/api/Interface.IStoreSessionArgs.md +0 -70
- package/data/packages/platform-authentication/api/Interface.IVerifiableSubject.md +0 -71
- package/data/packages/platform-authentication/api/Variable.APPLE_AUTH_CONFIG_ENTRIES.md +0 -14
- package/data/packages/platform-authentication/api/Variable.AUTH_APPLE_CALLBACK_URL.md +0 -14
- package/data/packages/platform-authentication/api/Variable.AUTH_APPLE_CLIENT_ID.md +0 -14
- package/data/packages/platform-authentication/api/Variable.AUTH_APPLE_KEY_ID.md +0 -14
- package/data/packages/platform-authentication/api/Variable.AUTH_APPLE_PRIVATE_KEY.md +0 -14
- package/data/packages/platform-authentication/api/Variable.AUTH_APPLE_SCOPE.md +0 -14
- package/data/packages/platform-authentication/api/Variable.AUTH_APPLE_TEAM_ID.md +0 -14
- package/data/packages/platform-authentication/api/Variable.AUTH_GITHUB_CALLBACK_URL.md +0 -14
- package/data/packages/platform-authentication/api/Variable.AUTH_GITHUB_CLIENT_ID.md +0 -14
- package/data/packages/platform-authentication/api/Variable.AUTH_GITHUB_CLIENT_SECRET.md +0 -14
- package/data/packages/platform-authentication/api/Variable.AUTH_GITHUB_SCOPE.md +0 -14
- package/data/packages/platform-authentication/api/Variable.AUTH_GOOGLE_CALLBACK_URL.md +0 -14
- package/data/packages/platform-authentication/api/Variable.AUTH_GOOGLE_CLIENT_ID.md +0 -14
- package/data/packages/platform-authentication/api/Variable.AUTH_GOOGLE_CLIENT_SECRET.md +0 -14
- package/data/packages/platform-authentication/api/Variable.AUTH_GOOGLE_SCOPE.md +0 -14
- package/data/packages/platform-authentication/api/Variable.AUTH_JWT_EXPIRES_IN.md +0 -14
- package/data/packages/platform-authentication/api/Variable.AUTH_JWT_SECRET.md +0 -14
- package/data/packages/platform-authentication/api/Variable.AUTH_MFA_CHALLENGE_EXPIRES_IN.md +0 -14
- package/data/packages/platform-authentication/api/Variable.AUTH_MFA_EMAIL_CODE_TTL.md +0 -14
- package/data/packages/platform-authentication/api/Variable.AUTH_MFA_EMAIL_MIN_RESEND.md +0 -14
- package/data/packages/platform-authentication/api/Variable.AUTH_MFA_ENCRYPTION_KEY.md +0 -14
- package/data/packages/platform-authentication/api/Variable.AUTH_MFA_ISSUER.md +0 -14
- package/data/packages/platform-authentication/api/Variable.AUTH_MFA_MAX_ATTEMPTS.md +0 -14
- package/data/packages/platform-authentication/api/Variable.AUTH_MFA_PUSH_CODE_TTL.md +0 -14
- package/data/packages/platform-authentication/api/Variable.AUTH_MFA_PUSH_MIN_RESEND.md +0 -14
- package/data/packages/platform-authentication/api/Variable.AUTH_MFA_SMS_CODE_TTL.md +0 -14
- package/data/packages/platform-authentication/api/Variable.AUTH_MFA_SMS_MIN_RESEND.md +0 -14
- package/data/packages/platform-authentication/api/Variable.AUTH_MICROSOFT_CALLBACK_URL.md +0 -14
- package/data/packages/platform-authentication/api/Variable.AUTH_MICROSOFT_CLIENT_ID.md +0 -14
- package/data/packages/platform-authentication/api/Variable.AUTH_MICROSOFT_CLIENT_SECRET.md +0 -14
- package/data/packages/platform-authentication/api/Variable.AUTH_MICROSOFT_SCOPE.md +0 -14
- package/data/packages/platform-authentication/api/Variable.AUTH_MICROSOFT_TENANT.md +0 -14
- package/data/packages/platform-authentication/api/Variable.AUTH_VERIFY_JWT_EXPIRES_IN.md +0 -14
- package/data/packages/platform-authentication/api/Variable.GITHUB_AUTH_CONFIG_ENTRIES.md +0 -14
- package/data/packages/platform-authentication/api/Variable.GOOGLE_AUTH_CONFIG_ENTRIES.md +0 -14
- package/data/packages/platform-authentication/api/Variable.MICROSOFT_AUTH_CONFIG_ENTRIES.md +0 -14
- package/data/packages/platform-authentication/api/Variable.PLATFORM_AUTHENTICATION_CONFIG_ENTRIES.md +0 -14
- package/data/packages/platform-authentication/api/Variable.ROLES_KEY.md +0 -14
- package/data/packages/platform-authentication/api/Variable.SEED_ANONYMOUS_USERNAME.md +0 -14
- package/data/packages/platform-authentication/api/Variable.SESSION_LIST_MAPPING_KEY.md +0 -14
- package/data/packages/platform-authentication/api/Variable.SESSION_MAPPING_KEY.md +0 -14
- package/data/packages/platform-authentication/api/Variable.TOTP_MFA_PROVIDERS.md +0 -29
- package/data/packages/platform-authentication/api/Variable.User.md +0 -24
- package/data/packages/platform-authentication/api/index.md +0 -112
- package/data/packages/platform-authentication/index.md +0 -635
- package/data/packages/platform-blob-storage/api/Class.AwsS3BlobProvider.md +0 -196
- package/data/packages/platform-blob-storage/api/Class.AzureBlobProvider.md +0 -196
- package/data/packages/platform-blob-storage/api/Class.BlobHealthIndicator.md +0 -79
- package/data/packages/platform-blob-storage/api/Class.BlobModule.md +0 -49
- package/data/packages/platform-blob-storage/api/Class.BlobObjectPersistencePort.md +0 -75
- package/data/packages/platform-blob-storage/api/Class.BlobService.md +0 -248
- package/data/packages/platform-blob-storage/api/Class.BlobVariantPersistencePort.md +0 -51
- package/data/packages/platform-blob-storage/api/Class.VercelBlobProvider.md +0 -197
- package/data/packages/platform-blob-storage/api/Interface.IAwsS3BlobProviderRegistration.md +0 -28
- package/data/packages/platform-blob-storage/api/Interface.IAwsS3ProviderOptions.md +0 -68
- package/data/packages/platform-blob-storage/api/Interface.IAzureBlobProviderOptions.md +0 -38
- package/data/packages/platform-blob-storage/api/Interface.IAzureBlobProviderRegistration.md +0 -28
- package/data/packages/platform-blob-storage/api/Interface.IBlobDeleteRequest.md +0 -38
- package/data/packages/platform-blob-storage/api/Interface.IBlobDownloadRequest.md +0 -48
- package/data/packages/platform-blob-storage/api/Interface.IBlobDownloadResult.md +0 -64
- package/data/packages/platform-blob-storage/api/Interface.IBlobModuleOptions.md +0 -48
- package/data/packages/platform-blob-storage/api/Interface.IBlobObjectMetadata.md +0 -138
- package/data/packages/platform-blob-storage/api/Interface.IBlobProvider.md +0 -114
- package/data/packages/platform-blob-storage/api/Interface.IBlobSignedUrlRequest.md +0 -48
- package/data/packages/platform-blob-storage/api/Interface.IBlobUploadRequest.md +0 -98
- package/data/packages/platform-blob-storage/api/Interface.IBlobUploadResult.md +0 -28
- package/data/packages/platform-blob-storage/api/Interface.ICustomBlobProviderRegistration.md +0 -28
- package/data/packages/platform-blob-storage/api/Interface.IVercelBlobProviderOptions.md +0 -68
- package/data/packages/platform-blob-storage/api/Interface.IVercelBlobProviderRegistration.md +0 -28
- package/data/packages/platform-blob-storage/api/TypeAlias.BlobDownloadResponseType.md +0 -12
- package/data/packages/platform-blob-storage/api/TypeAlias.BlobUploadBody.md +0 -12
- package/data/packages/platform-blob-storage/api/TypeAlias.IBlobProviderRegistration.md +0 -16
- package/data/packages/platform-blob-storage/api/Variable.AWS_S3_PROVIDER_OPTIONS.md +0 -12
- package/data/packages/platform-blob-storage/api/Variable.AZURE_BLOB_PROVIDER_OPTIONS.md +0 -12
- package/data/packages/platform-blob-storage/api/Variable.BLOB_PROVIDER.md +0 -12
- package/data/packages/platform-blob-storage/api/Variable.BlobDownloadResponseTypes.md +0 -26
- package/data/packages/platform-blob-storage/api/Variable.BlobProviderKinds.md +0 -26
- package/data/packages/platform-blob-storage/api/Variable.VERCEL_BLOB_PROVIDER_OPTIONS.md +0 -12
- package/data/packages/platform-blob-storage/api/index.md +0 -59
- package/data/packages/platform-blob-storage/index.md +0 -335
- package/data/packages/platform-caching/api/Class.MemoryLayeredCache.md +0 -258
- package/data/packages/platform-caching/api/Class.NoopCacheMetricsRecorder.md +0 -157
- package/data/packages/platform-caching/api/Class.RedisLayeredCache.md +0 -295
- package/data/packages/platform-caching/api/Interface.ICacheMetricsRecorder.md +0 -121
- package/data/packages/platform-caching/api/Interface.ICacheStats.md +0 -70
- package/data/packages/platform-caching/api/Interface.ILayeredCache.md +0 -198
- package/data/packages/platform-caching/api/Interface.ILayeredCacheOptions.md +0 -75
- package/data/packages/platform-caching/api/Interface.IRedisLayeredCacheOptions.md +0 -121
- package/data/packages/platform-caching/api/index.md +0 -24
- package/data/packages/platform-caching/index.md +0 -116
- package/data/packages/platform-core/api/Class.AppHealthIndicator.md +0 -50
- package/data/packages/platform-core/api/Class.BlobResourceStrategy.md +0 -195
- package/data/packages/platform-core/api/Class.BooleanUtils.md +0 -82
- package/data/packages/platform-core/api/Class.CUIDGenerator.md +0 -120
- package/data/packages/platform-core/api/Class.CasingInterceptor.md +0 -83
- package/data/packages/platform-core/api/Class.CatchUtils.md +0 -93
- package/data/packages/platform-core/api/Class.ConfigKeyNotFoundError.md +0 -89
- package/data/packages/platform-core/api/Class.ConfigModule.md +0 -69
- package/data/packages/platform-core/api/Class.ConfigRegistry.md +0 -115
- package/data/packages/platform-core/api/Class.ConfigService.md +0 -137
- package/data/packages/platform-core/api/Class.ConfigStrategyBase.md +0 -125
- package/data/packages/platform-core/api/Class.ContentTemplateEngine.md +0 -63
- package/data/packages/platform-core/api/Class.DateTimeUtils.md +0 -101
- package/data/packages/platform-core/api/Class.DeviceParserService.md +0 -52
- package/data/packages/platform-core/api/Class.EmbeddedResourceStrategy.md +0 -215
- package/data/packages/platform-core/api/Class.EnvironmentConfigStrategy.md +0 -141
- package/data/packages/platform-core/api/Class.ErrorTemplateService.md +0 -109
- package/data/packages/platform-core/api/Class.EventHub.md +0 -163
- package/data/packages/platform-core/api/Class.EventModule.md +0 -22
- package/data/packages/platform-core/api/Class.FileConfigStrategy.md +0 -147
- package/data/packages/platform-core/api/Class.FileResourceStrategy.md +0 -192
- package/data/packages/platform-core/api/Class.GUIDGenerator.md +0 -85
- package/data/packages/platform-core/api/Class.GlobalExceptionFilter.md +0 -66
- package/data/packages/platform-core/api/Class.HealthModule.md +0 -42
- package/data/packages/platform-core/api/Class.HealthOrchestrator.md +0 -64
- package/data/packages/platform-core/api/Class.HostModule.md +0 -31
- package/data/packages/platform-core/api/Class.HostService.md +0 -149
- package/data/packages/platform-core/api/Class.HttpLoggerMiddleware.md +0 -59
- package/data/packages/platform-core/api/Class.IdGeneratorBase.md +0 -87
- package/data/packages/platform-core/api/Class.IdentifierModule.md +0 -40
- package/data/packages/platform-core/api/Class.LimitRequestSizeMiddleware.md +0 -59
- package/data/packages/platform-core/api/Class.LocalizedTextRequest.md +0 -42
- package/data/packages/platform-core/api/Class.LocalizedTextResponse.md +0 -42
- package/data/packages/platform-core/api/Class.MappingBuilder.md +0 -110
- package/data/packages/platform-core/api/Class.MappingModule.md +0 -46
- package/data/packages/platform-core/api/Class.MappingNotRegisteredError.md +0 -56
- package/data/packages/platform-core/api/Class.MappingProfileBase.md +0 -52
- package/data/packages/platform-core/api/Class.MappingService.md +0 -284
- package/data/packages/platform-core/api/Class.NormalizedUtils.md +0 -148
- package/data/packages/platform-core/api/Class.PageableRequest.md +0 -42
- package/data/packages/platform-core/api/Class.PageableResponse.md +0 -62
- package/data/packages/platform-core/api/Class.ProblemDetailException.md +0 -61
- package/data/packages/platform-core/api/Class.ProblemDetailExceptionFilter.md +0 -94
- package/data/packages/platform-core/api/Class.QuantityResponse.md +0 -42
- package/data/packages/platform-core/api/Class.ResourceManager.md +0 -565
- package/data/packages/platform-core/api/Class.ResourceModule.md +0 -46
- package/data/packages/platform-core/api/Class.ResponseReturn.md +0 -502
- package/data/packages/platform-core/api/Class.SseHub.md +0 -183
- package/data/packages/platform-core/api/Class.SseModule.md +0 -42
- package/data/packages/platform-core/api/Class.TimeStampResponse.md +0 -42
- package/data/packages/platform-core/api/Class.TypeMappingNotRegisteredError.md +0 -57
- package/data/packages/platform-core/api/Class.UUIDGenerator.md +0 -85
- package/data/packages/platform-core/api/Class.UserAvatarGeneratorService.md +0 -47
- package/data/packages/platform-core/api/Class.UserNameGeneratorService.md +0 -64
- package/data/packages/platform-core/api/Function.Public.md +0 -18
- package/data/packages/platform-core/api/Function.createConfigKey.md +0 -58
- package/data/packages/platform-core/api/Function.createEventKey.md +0 -33
- package/data/packages/platform-core/api/Function.createMappingKey.md +0 -39
- package/data/packages/platform-core/api/Function.env.md +0 -28
- package/data/packages/platform-core/api/Function.getMimeTypeByFileNameOrExtension.md +0 -26
- package/data/packages/platform-core/api/ISseEventData.Function.isActionId.md +0 -27
- package/data/packages/platform-core/api/Interface.IBlobResourceStrategyConfig.md +0 -28
- package/data/packages/platform-core/api/Interface.IBlobServiceAdapter.md +0 -40
- package/data/packages/platform-core/api/Interface.IConfigKey.md +0 -63
- package/data/packages/platform-core/api/Interface.IConfigModuleOptions.md +0 -40
- package/data/packages/platform-core/api/Interface.IConfigRegistryEntry.md +0 -79
- package/data/packages/platform-core/api/Interface.IDeviceInfo.md +0 -80
- package/data/packages/platform-core/api/Interface.IErrorPageParams.md +0 -153
- package/data/packages/platform-core/api/Interface.IEventKey.md +0 -57
- package/data/packages/platform-core/api/Interface.IEventMap.md +0 -16
- package/data/packages/platform-core/api/Interface.IFileResourceStrategyConfig.md +0 -72
- package/data/packages/platform-core/api/Interface.IHealthCheckResult.md +0 -46
- package/data/packages/platform-core/api/Interface.IHealthIndicator.md +0 -41
- package/data/packages/platform-core/api/Interface.IHostContentParams.md +0 -232
- package/data/packages/platform-core/api/Interface.IIdGenerator.md +0 -57
- package/data/packages/platform-core/api/Interface.IMappingBuilder.md +0 -76
- package/data/packages/platform-core/api/Interface.IMappingKey.md +0 -58
- package/data/packages/platform-core/api/Interface.IMappingProfile.md +0 -32
- package/data/packages/platform-core/api/Interface.IResourceManagerConfig.md +0 -71
- package/data/packages/platform-core/api/Interface.IResourceMetadata.md +0 -94
- package/data/packages/platform-core/api/Interface.IResourceResult.md +0 -34
- package/data/packages/platform-core/api/Interface.IResourceStrategy.md +0 -134
- package/data/packages/platform-core/api/Interface.ISseEventData.md +0 -36
- package/data/packages/platform-core/api/Interface.ISseHub.md +0 -91
- package/data/packages/platform-core/api/Namespace.ISseEventData.md +0 -14
- package/data/packages/platform-core/api/TypeAlias.CamelCase.md +0 -18
- package/data/packages/platform-core/api/TypeAlias.ProblemDetail.md +0 -28
- package/data/packages/platform-core/api/TypeAlias.ProblemDetailTypeUrlResolver.md +0 -25
- package/data/packages/platform-core/api/TypeAlias.SetOptional.md +0 -21
- package/data/packages/platform-core/api/TypeAlias.StringValue.md +0 -15
- package/data/packages/platform-core/api/Variable.APP_NAME.md +0 -14
- package/data/packages/platform-core/api/Variable.APP_PORT.md +0 -14
- package/data/packages/platform-core/api/Variable.APP_URL.md +0 -14
- package/data/packages/platform-core/api/Variable.APP_VERSION.md +0 -14
- package/data/packages/platform-core/api/Variable.GIT_COMMIT.md +0 -14
- package/data/packages/platform-core/api/Variable.HEALTH_INDICATORS_TOKEN.md +0 -14
- package/data/packages/platform-core/api/Variable.ID_GENERATOR_TOKEN.md +0 -14
- package/data/packages/platform-core/api/Variable.INTELLIGENCE_MAX_OUTPUT_TOKENS.md +0 -14
- package/data/packages/platform-core/api/Variable.INTELLIGENCE_MODEL.md +0 -14
- package/data/packages/platform-core/api/Variable.INTELLIGENCE_TEMPERATURE.md +0 -14
- package/data/packages/platform-core/api/Variable.INTELLIGENCE_TOP_P.md +0 -14
- package/data/packages/platform-core/api/Variable.IS_PUBLIC_KEY.md +0 -12
- package/data/packages/platform-core/api/Variable.IpAddress.md +0 -31
- package/data/packages/platform-core/api/Variable.Lang.md +0 -29
- package/data/packages/platform-core/api/Variable.NODE_ENV.md +0 -14
- package/data/packages/platform-core/api/Variable.PLATFORM_CORE_CONFIG_ENTRIES.md +0 -14
- package/data/packages/platform-core/api/Variable.UserAgent.md +0 -24
- package/data/packages/platform-core/api/index.md +0 -142
- package/data/packages/platform-core/index.md +0 -485
- package/data/packages/platform-cryptography/api/Class.BcryptService.md +0 -72
- package/data/packages/platform-cryptography/api/Class.CryptoService.md +0 -51
- package/data/packages/platform-cryptography/api/Class.OtpService.md +0 -109
- package/data/packages/platform-cryptography/api/Interface.IOtpService.md +0 -81
- package/data/packages/platform-cryptography/api/Interface.IOtpUriOptions.md +0 -46
- package/data/packages/platform-cryptography/api/Variable.OTP_SERVICE_TOKEN.md +0 -14
- package/data/packages/platform-cryptography/api/Variable.TOTP_EPOCH_TOLERANCE.md +0 -23
- package/data/packages/platform-cryptography/api/index.md +0 -28
- package/data/packages/platform-cryptography/index.md +0 -132
- package/data/packages/platform-database/api/Class.DatabaseHealthIndicator.md +0 -75
- package/data/packages/platform-database/api/Class.DatabaseModule.md +0 -68
- package/data/packages/platform-database/api/Class.DatabaseService.md +0 -161
- package/data/packages/platform-database/api/Class.PrismaService.md +0 -112
- package/data/packages/platform-database/api/Class.RepositoryBase.md +0 -586
- package/data/packages/platform-database/api/Class.RepositoryExceptionFilter.md +0 -55
- package/data/packages/platform-database/api/Function.pageable.md +0 -35
- package/data/packages/platform-database/api/Function.paginator.md +0 -22
- package/data/packages/platform-database/api/Function.query.md +0 -34
- package/data/packages/platform-database/api/Function.skip.md +0 -33
- package/data/packages/platform-database/api/Function.transactionalQuery.md +0 -31
- package/data/packages/platform-database/api/Interface.IDatabaseModuleConfig.md +0 -34
- package/data/packages/platform-database/api/Interface.IPaginateOptions.md +0 -28
- package/data/packages/platform-database/api/Interface.IPaginatedResult.md +0 -77
- package/data/packages/platform-database/api/Interface.IPrismaServiceOptions.md +0 -22
- package/data/packages/platform-database/api/Interface.IRepositoryQuery.md +0 -51
- package/data/packages/platform-database/api/Interface.ITransactionalRepositoryQuery.md +0 -50
- package/data/packages/platform-database/api/TypeAlias.DelegateArgs.md +0 -18
- package/data/packages/platform-database/api/TypeAlias.DelegateReturnTypes.md +0 -18
- package/data/packages/platform-database/api/TypeAlias.PaginateFunction.md +0 -31
- package/data/packages/platform-database/api/TypeAlias.QueryResultType.md +0 -27
- package/data/packages/platform-database/api/TypeAlias.TransactionalQueryResultType.md +0 -26
- package/data/packages/platform-database/api/Variable.DATABASE_MODULE_CONFIG.md +0 -14
- package/data/packages/platform-database/api/Variable.DB_ACCELERATE_URL.md +0 -14
- package/data/packages/platform-database/api/Variable.DB_AUTO_CONNECTION.md +0 -14
- package/data/packages/platform-database/api/Variable.DB_OPTIMIZE.md +0 -14
- package/data/packages/platform-database/api/Variable.DB_OPTIMIZE_API_KEY.md +0 -14
- package/data/packages/platform-database/api/Variable.PLATFORM_DATABASE_CONFIG_ENTRIES.md +0 -14
- package/data/packages/platform-database/api/index.md +0 -59
- package/data/packages/platform-database/index.md +0 -323
- package/data/packages/platform-documents/api/Class.BaseDocumentRenderer.md +0 -277
- package/data/packages/platform-documents/api/Class.DocumentEngine.md +0 -80
- package/data/packages/platform-documents/api/Class.DocumentModule.md +0 -47
- package/data/packages/platform-documents/api/Class.SharpImageProcessor.md +0 -131
- package/data/packages/platform-documents/api/Interface.IDocumentModuleOptions.md +0 -94
- package/data/packages/platform-documents/api/Interface.IDocumentPlaceholderDetail.md +0 -70
- package/data/packages/platform-documents/api/Interface.IDocumentProbeReport.md +0 -118
- package/data/packages/platform-documents/api/Interface.IDocumentRenderer.md +0 -47
- package/data/packages/platform-documents/api/Interface.IImagePayload.md +0 -58
- package/data/packages/platform-documents/api/Interface.IImageProcessor.md +0 -95
- package/data/packages/platform-documents/api/Interface.IRenderOptions.md +0 -64
- package/data/packages/platform-documents/api/Interface.IRenderResult.md +0 -58
- package/data/packages/platform-documents/api/TypeAlias.DocumentFormat.md +0 -14
- package/data/packages/platform-documents/api/TypeAlias.EngineType.md +0 -14
- package/data/packages/platform-documents/api/TypeAlias.ImageMimeType.md +0 -14
- package/data/packages/platform-documents/api/TypeAlias.TemplateFormat.md +0 -14
- package/data/packages/platform-documents/api/TypeAlias.TemplateType.md +0 -14
- package/data/packages/platform-documents/api/Variable.DOCUMENT_MODULE_OPTIONS.md +0 -14
- package/data/packages/platform-documents/api/Variable.DOCUMENT_PARSER_TOKEN.md +0 -14
- package/data/packages/platform-documents/api/Variable.DOCUMENT_RENDERER_TOKEN.md +0 -14
- package/data/packages/platform-documents/api/Variable.IMAGE_PROCESSOR_TOKEN.md +0 -14
- package/data/packages/platform-documents/api/index.md +0 -47
- package/data/packages/platform-documents/index.md +0 -219
- package/data/packages/platform-esigning/api/Class.EsigningClientPort.md +0 -184
- package/data/packages/platform-esigning/api/Class.EsigningError.md +0 -65
- package/data/packages/platform-esigning/api/Class.EsigningModule.md +0 -48
- package/data/packages/platform-esigning/api/Class.EsigningPersistencePort.md +0 -90
- package/data/packages/platform-esigning/api/Class.EsigningService.md +0 -198
- package/data/packages/platform-esigning/api/Class.InternalEsigningProvider.md +0 -249
- package/data/packages/platform-esigning/api/Class.SigningProviderError.md +0 -101
- package/data/packages/platform-esigning/api/Class.SigningRequestNotFoundError.md +0 -78
- package/data/packages/platform-esigning/api/Class.WebhookVerificationError.md +0 -60
- package/data/packages/platform-esigning/api/Interface.ICreateSigningRequest.md +0 -94
- package/data/packages/platform-esigning/api/Interface.ICreateSigningRequestDocument.md +0 -58
- package/data/packages/platform-esigning/api/Interface.ICreateSigningRequestSigner.md +0 -58
- package/data/packages/platform-esigning/api/Interface.ICreateSigningSessionRequest.md +0 -46
- package/data/packages/platform-esigning/api/Interface.IEsigningModuleOptions.md +0 -60
- package/data/packages/platform-esigning/api/Interface.IEsigningWebhookEvent.md +0 -82
- package/data/packages/platform-esigning/api/Interface.ISignedDocument.md +0 -82
- package/data/packages/platform-esigning/api/Interface.ISigner.md +0 -82
- package/data/packages/platform-esigning/api/Interface.ISigningDocument.md +0 -82
- package/data/packages/platform-esigning/api/Interface.ISigningField.md +0 -142
- package/data/packages/platform-esigning/api/Interface.ISigningRequest.md +0 -142
- package/data/packages/platform-esigning/api/Interface.ISigningSession.md +0 -70
- package/data/packages/platform-esigning/api/TypeAlias.SignerRole.md +0 -14
- package/data/packages/platform-esigning/api/TypeAlias.SignerStatus.md +0 -14
- package/data/packages/platform-esigning/api/TypeAlias.SigningFieldType.md +0 -14
- package/data/packages/platform-esigning/api/TypeAlias.SigningRequestStatus.md +0 -14
- package/data/packages/platform-esigning/api/TypeAlias.WebhookEventType.md +0 -14
- package/data/packages/platform-esigning/api/Variable.ADOBE_SIGN_BASE_URL.md +0 -14
- package/data/packages/platform-esigning/api/Variable.ADOBE_SIGN_CLIENT_SECRET.md +0 -14
- package/data/packages/platform-esigning/api/Variable.ADOBE_SIGN_CONFIG_ENTRIES.md +0 -14
- package/data/packages/platform-esigning/api/Variable.ADOBE_SIGN_INTEGRATION_KEY.md +0 -14
- package/data/packages/platform-esigning/api/Variable.ADOBE_SIGN_WEBHOOK_CLIENT_ID.md +0 -14
- package/data/packages/platform-esigning/api/Variable.DOCUSIGN_ACCOUNT_ID.md +0 -14
- package/data/packages/platform-esigning/api/Variable.DOCUSIGN_BASE_URL.md +0 -14
- package/data/packages/platform-esigning/api/Variable.DOCUSIGN_CONFIG_ENTRIES.md +0 -14
- package/data/packages/platform-esigning/api/Variable.DOCUSIGN_INTEGRATION_KEY.md +0 -14
- package/data/packages/platform-esigning/api/Variable.DOCUSIGN_SECRET_KEY.md +0 -14
- package/data/packages/platform-esigning/api/Variable.DOCUSIGN_WEBHOOK_HMAC_KEY.md +0 -14
- package/data/packages/platform-esigning/api/Variable.DROPBOX_SIGN_API_KEY.md +0 -14
- package/data/packages/platform-esigning/api/Variable.DROPBOX_SIGN_CLIENT_ID.md +0 -14
- package/data/packages/platform-esigning/api/Variable.DROPBOX_SIGN_CONFIG_ENTRIES.md +0 -14
- package/data/packages/platform-esigning/api/Variable.DROPBOX_SIGN_WEBHOOK_SECRET.md +0 -14
- package/data/packages/platform-esigning/api/Variable.ESIGNING_API_BASE_URL.md +0 -14
- package/data/packages/platform-esigning/api/Variable.ESIGNING_API_KEY.md +0 -14
- package/data/packages/platform-esigning/api/Variable.ESIGNING_PROVIDER.md +0 -12
- package/data/packages/platform-esigning/api/Variable.ESIGNING_PROVIDER_OPTIONS.md +0 -12
- package/data/packages/platform-esigning/api/Variable.ESIGNING_WEBHOOK_SECRET.md +0 -14
- package/data/packages/platform-esigning/api/Variable.PLATFORM_ESIGNING_CONFIG_ENTRIES.md +0 -14
- package/data/packages/platform-esigning/api/Variable.SIGNNOW_API_KEY.md +0 -14
- package/data/packages/platform-esigning/api/Variable.SIGNNOW_BASE_URL.md +0 -14
- package/data/packages/platform-esigning/api/Variable.SIGNNOW_CLIENT_ID.md +0 -14
- package/data/packages/platform-esigning/api/Variable.SIGNNOW_CLIENT_SECRET.md +0 -14
- package/data/packages/platform-esigning/api/Variable.SIGNNOW_CONFIG_ENTRIES.md +0 -14
- package/data/packages/platform-esigning/api/Variable.SIGNNOW_WEBHOOK_SECRET.md +0 -14
- package/data/packages/platform-esigning/api/Variable.SignerRoles.md +0 -30
- package/data/packages/platform-esigning/api/Variable.SignerStatuses.md +0 -32
- package/data/packages/platform-esigning/api/Variable.SigningFieldTypes.md +0 -38
- package/data/packages/platform-esigning/api/Variable.SigningRequestStatuses.md +0 -36
- package/data/packages/platform-esigning/api/Variable.WebhookEventTypes.md +0 -38
- package/data/packages/platform-esigning/api/index.md +0 -84
- package/data/packages/platform-esigning/index.md +0 -691
- package/data/packages/platform-intelligence/api/Class.IntelligenceCapabilityRegistrarBase.md +0 -94
- package/data/packages/platform-intelligence/api/Class.IntelligenceCapabilityRegistry.md +0 -106
- package/data/packages/platform-intelligence/api/Class.IntelligenceModule.md +0 -22
- package/data/packages/platform-intelligence/api/Class.IntelligenceTextGenerator.md +0 -81
- package/data/packages/platform-intelligence/api/Function.createProviderOptions.md +0 -26
- package/data/packages/platform-intelligence/api/Function.loadAnthropicLanguageModel.md +0 -26
- package/data/packages/platform-intelligence/api/Function.loadGoogleLanguageModel.md +0 -26
- package/data/packages/platform-intelligence/api/Function.loadGrokLanguageModel.md +0 -26
- package/data/packages/platform-intelligence/api/Function.loadOpenAILanguageModel.md +0 -26
- package/data/packages/platform-intelligence/api/Function.loadProviderFactory.md +0 -31
- package/data/packages/platform-intelligence/api/Interface.IIntelligenceArtifact.md +0 -34
- package/data/packages/platform-intelligence/api/Interface.IIntelligenceCapability.md +0 -71
- package/data/packages/platform-intelligence/api/Interface.IIntelligenceCapabilityMetadata.md +0 -70
- package/data/packages/platform-intelligence/api/Interface.IIntelligenceCapabilityPayload.md +0 -46
- package/data/packages/platform-intelligence/api/Interface.IIntelligenceCapabilityRegistry.md +0 -78
- package/data/packages/platform-intelligence/api/Interface.IIntelligenceCapabilityResult.md +0 -46
- package/data/packages/platform-intelligence/api/Interface.IIntelligenceCompletionUsage.md +0 -46
- package/data/packages/platform-intelligence/api/Interface.IIntelligenceContext.md +0 -72
- package/data/packages/platform-intelligence/api/Interface.IIntelligenceContextBuilder.md +0 -35
- package/data/packages/platform-intelligence/api/Interface.IIntelligenceConversationMessageSnapshot.md +0 -70
- package/data/packages/platform-intelligence/api/Interface.IIntelligenceConversationSnapshot.md +0 -58
- package/data/packages/platform-intelligence/api/Interface.IIntelligenceFollowUpQuestion.md +0 -46
- package/data/packages/platform-intelligence/api/Interface.IIntelligenceIntent.md +0 -46
- package/data/packages/platform-intelligence/api/Interface.IIntelligenceIntentEntity.md +0 -34
- package/data/packages/platform-intelligence/api/Interface.IIntelligenceMessageModel.md +0 -70
- package/data/packages/platform-intelligence/api/Interface.IIntelligenceMessagePayload.md +0 -34
- package/data/packages/platform-intelligence/api/Interface.IIntelligencePrompt.md +0 -34
- package/data/packages/platform-intelligence/api/Interface.IIntelligencePromptMessage.md +0 -34
- package/data/packages/platform-intelligence/api/Interface.IIntelligenceProviderConfiguration.md +0 -94
- package/data/packages/platform-intelligence/api/Interface.IIntelligenceResponseMessage.md +0 -34
- package/data/packages/platform-intelligence/api/Interface.IIntelligenceTextCompletion.md +0 -60
- package/data/packages/platform-intelligence/api/Interface.IIntelligenceTextGenerationOptions.md +0 -46
- package/data/packages/platform-intelligence/api/Interface.IIntelligenceTextGenerator.md +0 -53
- package/data/packages/platform-intelligence/api/TypeAlias.IntelligenceConversationMessageRole.md +0 -14
- package/data/packages/platform-intelligence/api/TypeAlias.IntelligenceLanguageModelLoader.md +0 -24
- package/data/packages/platform-intelligence/api/TypeAlias.IntelligenceProviderName.md +0 -14
- package/data/packages/platform-intelligence/api/Variable.IntelligenceConversationMessageRoles.md +0 -26
- package/data/packages/platform-intelligence/api/Variable.IntelligenceProviderNames.md +0 -28
- package/data/packages/platform-intelligence/api/index.md +0 -69
- package/data/packages/platform-intelligence/index.md +0 -131
- package/data/packages/platform-logging/api/Class.LoggerModule.md +0 -20
- package/data/packages/platform-logging/api/Variable.APP_LOG_LEVEL.md +0 -14
- package/data/packages/platform-logging/api/Variable.PLATFORM_LOGGING_CONFIG_ENTRIES.md +0 -14
- package/data/packages/platform-logging/api/index.md +0 -19
- package/data/packages/platform-logging/index.md +0 -92
- package/data/packages/platform-mailing/api/Class.BlobTemplateFetchStrategy.md +0 -60
- package/data/packages/platform-mailing/api/Class.DeliveryStrategyBase.md +0 -66
- package/data/packages/platform-mailing/api/Class.FileTemplateFetchStrategy.md +0 -58
- package/data/packages/platform-mailing/api/Class.LogDeliveryStrategy.md +0 -75
- package/data/packages/platform-mailing/api/Class.MailHealthIndicator.md +0 -78
- package/data/packages/platform-mailing/api/Class.MailModule.md +0 -22
- package/data/packages/platform-mailing/api/Class.MailService.md +0 -96
- package/data/packages/platform-mailing/api/Class.MailTemplateEngine.md +0 -93
- package/data/packages/platform-mailing/api/Class.MailVerificationService.md +0 -85
- package/data/packages/platform-mailing/api/Class.MailgunDeliveryStrategy.md +0 -75
- package/data/packages/platform-mailing/api/Class.PostmarkDeliveryStrategy.md +0 -75
- package/data/packages/platform-mailing/api/Class.ResendDeliveryStrategy.md +0 -75
- package/data/packages/platform-mailing/api/Class.SendGridDeliveryStrategy.md +0 -75
- package/data/packages/platform-mailing/api/Class.SmtpDeliveryStrategy.md +0 -75
- package/data/packages/platform-mailing/api/Class.TemplateFetchStrategyBase.md +0 -53
- package/data/packages/platform-mailing/api/Interface.IMailEvents.md +0 -66
- package/data/packages/platform-mailing/api/Interface.IMailTemplateVariants.md +0 -30
- package/data/packages/platform-mailing/api/TypeAlias.MailTemplateFormat.md +0 -14
- package/data/packages/platform-mailing/api/Variable.MAILGUN_API_KEY.md +0 -14
- package/data/packages/platform-mailing/api/Variable.MAILGUN_CONFIG_ENTRIES.md +0 -14
- package/data/packages/platform-mailing/api/Variable.MAILGUN_DOMAIN.md +0 -14
- package/data/packages/platform-mailing/api/Variable.MAIL_DELIVERY_STRATEGY.md +0 -14
- package/data/packages/platform-mailing/api/Variable.MAIL_DELIVERY_STRATEGY_TOKEN.md +0 -12
- package/data/packages/platform-mailing/api/Variable.MAIL_HOST.md +0 -14
- package/data/packages/platform-mailing/api/Variable.MAIL_MAILGUN_API_KEY.md +0 -14
- package/data/packages/platform-mailing/api/Variable.MAIL_MAILGUN_DOMAIN.md +0 -14
- package/data/packages/platform-mailing/api/Variable.MAIL_PORT.md +0 -14
- package/data/packages/platform-mailing/api/Variable.MAIL_POSTMARK_API_KEY.md +0 -14
- package/data/packages/platform-mailing/api/Variable.MAIL_RESEND_API_KEY.md +0 -14
- package/data/packages/platform-mailing/api/Variable.MAIL_SENDER_EMAIL.md +0 -14
- package/data/packages/platform-mailing/api/Variable.MAIL_SENDGRID_API_KEY.md +0 -14
- package/data/packages/platform-mailing/api/Variable.MAIL_SMTP_HOST.md +0 -14
- package/data/packages/platform-mailing/api/Variable.MAIL_SMTP_PASSWORD.md +0 -14
- package/data/packages/platform-mailing/api/Variable.MAIL_SMTP_PORT.md +0 -14
- package/data/packages/platform-mailing/api/Variable.MAIL_SMTP_SECURE.md +0 -14
- package/data/packages/platform-mailing/api/Variable.MAIL_SMTP_USER.md +0 -14
- package/data/packages/platform-mailing/api/Variable.MAIL_TEMPLATE_ENGINE_FORMAT.md +0 -14
- package/data/packages/platform-mailing/api/Variable.MAIL_TEMPLATE_FETCH_STRATEGY_TOKEN.md +0 -16
- package/data/packages/platform-mailing/api/Variable.MAIL_TEMPLATE_STRATEGY.md +0 -14
- package/data/packages/platform-mailing/api/Variable.MAIL_USER.md +0 -14
- package/data/packages/platform-mailing/api/Variable.PLATFORM_MAILING_CONFIG_ENTRIES.md +0 -14
- package/data/packages/platform-mailing/api/Variable.POSTMARK_API_KEY.md +0 -14
- package/data/packages/platform-mailing/api/Variable.POSTMARK_CONFIG_ENTRIES.md +0 -14
- package/data/packages/platform-mailing/api/Variable.RESEND_API_KEY.md +0 -14
- package/data/packages/platform-mailing/api/Variable.RESEND_CONFIG_ENTRIES.md +0 -14
- package/data/packages/platform-mailing/api/Variable.SENDGRID_API_KEY.md +0 -14
- package/data/packages/platform-mailing/api/Variable.SENDGRID_CONFIG_ENTRIES.md +0 -14
- package/data/packages/platform-mailing/api/Variable.SEND_MAIL_EVENT_KEY.md +0 -14
- package/data/packages/platform-mailing/api/index.md +0 -74
- package/data/packages/platform-mailing/index.md +0 -335
- package/data/packages/platform-mcp/api/Class.McpDiscoveryService.md +0 -64
- package/data/packages/platform-mcp/api/Class.McpModule.md +0 -82
- package/data/packages/platform-mcp/api/Class.McpRegistryService.md +0 -146
- package/data/packages/platform-mcp/api/Class.McpServerService.md +0 -196
- package/data/packages/platform-mcp/api/Function.McpPrompt.md +0 -28
- package/data/packages/platform-mcp/api/Function.McpResource.md +0 -28
- package/data/packages/platform-mcp/api/Function.McpTool.md +0 -28
- package/data/packages/platform-mcp/api/Interface.IMcpHandlerMetadata.md +0 -46
- package/data/packages/platform-mcp/api/Interface.IMcpModuleAsyncOptions.md +0 -75
- package/data/packages/platform-mcp/api/Interface.IMcpModuleOptions.md +0 -125
- package/data/packages/platform-mcp/api/Interface.IMcpModuleOptionsFactory.md +0 -27
- package/data/packages/platform-mcp/api/Interface.IMcpPromptMetadata.md +0 -58
- package/data/packages/platform-mcp/api/Interface.IMcpResourceMetadata.md +0 -72
- package/data/packages/platform-mcp/api/Interface.IMcpToolMetadata.md +0 -82
- package/data/packages/platform-mcp/api/Interface.IRegisteredPrompt.md +0 -40
- package/data/packages/platform-mcp/api/Interface.IRegisteredResource.md +0 -40
- package/data/packages/platform-mcp/api/Interface.IRegisteredTool.md +0 -40
- package/data/packages/platform-mcp/api/Interface.ISseTransportOptions.md +0 -22
- package/data/packages/platform-mcp/api/Interface.IStreamableHttpTransportOptions.md +0 -38
- package/data/packages/platform-mcp/api/Variable.MCP_MODULE_OPTIONS.md +0 -14
- package/data/packages/platform-mcp/api/index.md +0 -46
- package/data/packages/platform-mcp/index.md +0 -299
- package/data/packages/platform-openapi/api/Class.SwaggerFeatureDiscovery.md +0 -70
- package/data/packages/platform-openapi/api/Class.SwaggerFeatureRegistry.md +0 -99
- package/data/packages/platform-openapi/api/Class.SwaggerMultiDocumentService.md +0 -77
- package/data/packages/platform-openapi/api/Class.SwaggerTheme.md +0 -46
- package/data/packages/platform-openapi/api/Function.Api.md +0 -35
- package/data/packages/platform-openapi/api/Function.SwaggerFeature.md +0 -42
- package/data/packages/platform-openapi/api/Function.getRegisteredSwaggerFeatures.md +0 -18
- package/data/packages/platform-openapi/api/Function.getSwaggerFeatureMetadata.md +0 -27
- package/data/packages/platform-openapi/api/Interface.IFeatureSwaggerConfig.md +0 -68
- package/data/packages/platform-openapi/api/Interface.ISwaggerFeatureMetadata.md +0 -68
- package/data/packages/platform-openapi/api/Variable.APP_VERSION.md +0 -14
- package/data/packages/platform-openapi/api/Variable.PLATFORM_OPENAPI_CONFIG_ENTRIES.md +0 -14
- package/data/packages/platform-openapi/api/Variable.SWAGGER_CONTACT_EMAIL.md +0 -14
- package/data/packages/platform-openapi/api/Variable.SWAGGER_CONTACT_NAME.md +0 -14
- package/data/packages/platform-openapi/api/Variable.SWAGGER_CONTACT_URL.md +0 -14
- package/data/packages/platform-openapi/api/Variable.SWAGGER_FEATURE_METADATA_KEY.md +0 -12
- package/data/packages/platform-openapi/api/index.md +0 -42
- package/data/packages/platform-openapi/index.md +0 -170
- package/data/packages/platform-payments/api/Class.FeatureAccessPort.md +0 -74
- package/data/packages/platform-payments/api/Class.FeatureGuard.md +0 -68
- package/data/packages/platform-payments/api/Class.FeatureUsageInterceptor.md +0 -69
- package/data/packages/platform-payments/api/Class.LemonSqueezyClient.md +0 -163
- package/data/packages/platform-payments/api/Class.MollieClient.md +0 -163
- package/data/packages/platform-payments/api/Class.PaddleClient.md +0 -163
- package/data/packages/platform-payments/api/Class.PaymentClientPort.md +0 -142
- package/data/packages/platform-payments/api/Class.PaymentModule.md +0 -48
- package/data/packages/platform-payments/api/Class.StripeClient.md +0 -163
- package/data/packages/platform-payments/api/Function.RequiresFeature.md +0 -25
- package/data/packages/platform-payments/api/Interface.IFeatureAccessResult.md +0 -70
- package/data/packages/platform-payments/api/Interface.INormalizedCheckoutSession.md +0 -70
- package/data/packages/platform-payments/api/Interface.INormalizedPrice.md +0 -80
- package/data/packages/platform-payments/api/Interface.INormalizedSubscription.md +0 -100
- package/data/packages/platform-payments/api/Interface.INormalizedWebhookEvent.md +0 -84
- package/data/packages/platform-payments/api/Interface.IPaymentModuleOptions.md +0 -60
- package/data/packages/platform-payments/api/TypeAlias.SubscriptionStatus.md +0 -22
- package/data/packages/platform-payments/api/Variable.FEATURE_KEY_METADATA.md +0 -12
- package/data/packages/platform-payments/api/Variable.LEMONSQUEEZY_API_KEY.md +0 -14
- package/data/packages/platform-payments/api/Variable.LEMONSQUEEZY_CONFIG_ENTRIES.md +0 -14
- package/data/packages/platform-payments/api/Variable.LEMONSQUEEZY_STORE_ID.md +0 -14
- package/data/packages/platform-payments/api/Variable.LEMONSQUEEZY_WEBHOOK_SECRET.md +0 -14
- package/data/packages/platform-payments/api/Variable.MOLLIE_API_KEY.md +0 -14
- package/data/packages/platform-payments/api/Variable.MOLLIE_CONFIG_ENTRIES.md +0 -14
- package/data/packages/platform-payments/api/Variable.MOLLIE_WEBHOOK_SECRET.md +0 -14
- package/data/packages/platform-payments/api/Variable.PADDLE_API_KEY.md +0 -14
- package/data/packages/platform-payments/api/Variable.PADDLE_CONFIG_ENTRIES.md +0 -14
- package/data/packages/platform-payments/api/Variable.PADDLE_ENVIRONMENT.md +0 -14
- package/data/packages/platform-payments/api/Variable.PADDLE_WEBHOOK_SECRET.md +0 -14
- package/data/packages/platform-payments/api/Variable.STRIPE_API_KEY.md +0 -14
- package/data/packages/platform-payments/api/Variable.STRIPE_CONFIG_ENTRIES.md +0 -14
- package/data/packages/platform-payments/api/Variable.STRIPE_WEBHOOK_SECRET.md +0 -14
- package/data/packages/platform-payments/api/index.md +0 -63
- package/data/packages/platform-payments/index.md +0 -532
- package/data/packages/platform-reporting/api/Class.ReportingContributorRegistry.md +0 -56
- package/data/packages/platform-reporting/api/Class.ReportingDatasetNotFoundError.md +0 -40
- package/data/packages/platform-reporting/api/Class.ReportingFacade.md +0 -84
- package/data/packages/platform-reporting/api/Class.ReportingModule.md +0 -22
- package/data/packages/platform-reporting/api/Interface.IReportingContributor.md +0 -61
- package/data/packages/platform-reporting/api/Interface.IReportingDataset.md +0 -82
- package/data/packages/platform-reporting/api/Interface.IReportingDatasetField.md +0 -70
- package/data/packages/platform-reporting/api/Interface.IReportingQuery.md +0 -60
- package/data/packages/platform-reporting/api/Interface.IReportingQueryFilter.md +0 -40
- package/data/packages/platform-reporting/api/Interface.IReportingQueryResult.md +0 -60
- package/data/packages/platform-reporting/api/Interface.IReportingQuerySort.md +0 -30
- package/data/packages/platform-reporting/api/TypeAlias.ReportingFieldType.md +0 -12
- package/data/packages/platform-reporting/api/TypeAlias.ReportingFilterOperator.md +0 -12
- package/data/packages/platform-reporting/api/TypeAlias.ReportingQueryResultRow.md +0 -14
- package/data/packages/platform-reporting/api/Variable.ReportingFieldTypes.md +0 -30
- package/data/packages/platform-reporting/api/Variable.ReportingFilterOperators.md +0 -28
- package/data/packages/platform-reporting/api/index.md +0 -42
- package/data/packages/platform-reporting/index.md +0 -229
- package/data/packages/platform-telemetry/api/Class.NoopTelemetryFacade.md +0 -113
- package/data/packages/platform-telemetry/api/Class.TelemetryCacheMetricsRecorder.md +0 -175
- package/data/packages/platform-telemetry/api/Class.TelemetryFacade.md +0 -127
- package/data/packages/platform-telemetry/api/Class.TelemetryLoggerService.md +0 -226
- package/data/packages/platform-telemetry/api/Class.TelemetryModule.md +0 -40
- package/data/packages/platform-telemetry/api/Class.TelemetryRuleEngine.md +0 -48
- package/data/packages/platform-telemetry/api/Interface.ITelemetryFacade.md +0 -85
- package/data/packages/platform-telemetry/api/Interface.ITelemetryMetricsOptions.md +0 -38
- package/data/packages/platform-telemetry/api/Interface.ITelemetryOptions.md +0 -136
- package/data/packages/platform-telemetry/api/Interface.ITelemetryTracesOptions.md +0 -38
- package/data/packages/platform-telemetry/api/Variable.TELEMETRY_ENABLED.md +0 -12
- package/data/packages/platform-telemetry/api/Variable.TELEMETRY_FACADE.md +0 -12
- package/data/packages/platform-telemetry/api/Variable.TELEMETRY_OPTIONS.md +0 -12
- package/data/packages/platform-telemetry/api/Variable.TELEMETRY_SHUTDOWN.md +0 -12
- package/data/packages/platform-telemetry/api/Variable.defaultTelemetryOptions.md +0 -12
- package/data/packages/platform-telemetry/api/index.md +0 -36
- package/data/packages/platform-telemetry/index.md +0 -234
|
@@ -1,351 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: Getting Started
|
|
3
|
-
description: Set up an Archipel-powered NestJS application from scratch.
|
|
4
|
-
order: 1
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# Getting Started
|
|
8
|
-
|
|
9
|
-
This guide walks you through adding Archipel packages to a NestJS application. By the end, you'll have a working setup with configuration management, database access, and authentication.
|
|
10
|
-
|
|
11
|
-
## Prerequisites
|
|
12
|
-
|
|
13
|
-
- Node.js 20 or later
|
|
14
|
-
- A NestJS application (v10+)
|
|
15
|
-
- PostgreSQL database (for `platform-database`)
|
|
16
|
-
- Prisma CLI (`npx prisma`)
|
|
17
|
-
|
|
18
|
-
## Install the Foundation
|
|
19
|
-
|
|
20
|
-
Every Archipel application starts with `platform-core`. It provides configuration management, object mapping, caching, and cryptographic utilities that other packages depend on.
|
|
21
|
-
|
|
22
|
-
```bash
|
|
23
|
-
yarn add @breadstone/archipel-platform-core
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
### Set Up Configuration
|
|
27
|
-
|
|
28
|
-
Archipel uses a type-safe configuration system. Instead of reading `process.env` directly, you define typed config keys and register them with the `ConfigModule`. This gives you compile-time safety, centralized validation, and default values — all scoped to your module.
|
|
29
|
-
|
|
30
|
-
Create a config file for your application:
|
|
31
|
-
|
|
32
|
-
```typescript
|
|
33
|
-
// src/env.ts
|
|
34
|
-
import { createConfigKey, type IConfigRegistryEntry } from '@breadstone/archipel-platform-core';
|
|
35
|
-
|
|
36
|
-
export const DATABASE_URL = createConfigKey<string>('DATABASE_URL');
|
|
37
|
-
export const JWT_SECRET = createConfigKey<string>('JWT_SECRET');
|
|
38
|
-
export const JWT_EXPIRATION = createConfigKey<string>('JWT_EXPIRATION');
|
|
39
|
-
|
|
40
|
-
export const APP_CONFIG_ENTRIES: ReadonlyArray<IConfigRegistryEntry> = [
|
|
41
|
-
{ key: DATABASE_URL, module: 'app', required: true, description: 'PostgreSQL connection string' },
|
|
42
|
-
{ key: JWT_SECRET, module: 'app', required: true, description: 'Secret for signing JWTs' },
|
|
43
|
-
{ key: JWT_EXPIRATION, module: 'app', required: false, defaultValue: '1h', description: 'JWT token lifetime' },
|
|
44
|
-
];
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
Register it in your root module:
|
|
48
|
-
|
|
49
|
-
```typescript
|
|
50
|
-
// src/app.module.ts
|
|
51
|
-
import { Module } from '@nestjs/common';
|
|
52
|
-
import { ConfigModule } from '@breadstone/archipel-platform-core';
|
|
53
|
-
import { APP_CONFIG_ENTRIES } from './env';
|
|
54
|
-
|
|
55
|
-
@Module({
|
|
56
|
-
imports: [ConfigModule.register('app', APP_CONFIG_ENTRIES)],
|
|
57
|
-
})
|
|
58
|
-
export class AppModule {}
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
Now you can inject `ConfigService` anywhere and read values with full type safety:
|
|
62
|
-
|
|
63
|
-
```typescript
|
|
64
|
-
import { Injectable } from '@nestjs/common';
|
|
65
|
-
import { ConfigService } from '@breadstone/archipel-platform-core';
|
|
66
|
-
import { JWT_SECRET } from './env';
|
|
67
|
-
|
|
68
|
-
@Injectable()
|
|
69
|
-
export class TokenService {
|
|
70
|
-
private readonly _secret: string;
|
|
71
|
-
|
|
72
|
-
constructor(configService: ConfigService) {
|
|
73
|
-
this._secret = configService.get(JWT_SECRET);
|
|
74
|
-
// TypeScript knows this is a string — no cast needed
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
The `ConfigModule` validates all required keys at startup. If `DATABASE_URL` is missing from the environment, the application fails immediately with a clear error message instead of crashing later at runtime.
|
|
80
|
-
|
|
81
|
-
### Set Up Object Mapping
|
|
82
|
-
|
|
83
|
-
The `MappingModule` provides a centralized service for transforming domain entities into response DTOs. This keeps transformation logic out of your services and controllers and makes it testable in isolation.
|
|
84
|
-
|
|
85
|
-
```typescript
|
|
86
|
-
import { Module } from '@nestjs/common';
|
|
87
|
-
import { ConfigModule, MappingModule } from '@breadstone/archipel-platform-core';
|
|
88
|
-
import { APP_CONFIG_ENTRIES } from './env';
|
|
89
|
-
import { UserMappingProfile } from './mapping/UserMappingProfile';
|
|
90
|
-
|
|
91
|
-
@Module({
|
|
92
|
-
imports: [ConfigModule.register('app', APP_CONFIG_ENTRIES), MappingModule],
|
|
93
|
-
providers: [UserMappingProfile],
|
|
94
|
-
})
|
|
95
|
-
export class AppModule {}
|
|
96
|
-
```
|
|
97
|
-
|
|
98
|
-
You define mapping profiles that register transformations:
|
|
99
|
-
|
|
100
|
-
```typescript
|
|
101
|
-
import { Injectable } from '@nestjs/common';
|
|
102
|
-
import { MappingProfileBase, type MappingRegistry } from '@breadstone/archipel-platform-core';
|
|
103
|
-
import { USER_TO_RESPONSE } from './mapping-keys';
|
|
104
|
-
|
|
105
|
-
@Injectable()
|
|
106
|
-
export class UserMappingProfile extends MappingProfileBase {
|
|
107
|
-
public override configure(registry: MappingRegistry): void {
|
|
108
|
-
registry.createMap(USER_TO_RESPONSE, (source: IUserEntity) => ({
|
|
109
|
-
id: source.id,
|
|
110
|
-
name: source.userName,
|
|
111
|
-
email: source.email,
|
|
112
|
-
}));
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
```
|
|
116
|
-
|
|
117
|
-
Then use `MappingService.map()` in controllers to convert entities to responses without leaking mapping logic into services.
|
|
118
|
-
|
|
119
|
-
---
|
|
120
|
-
|
|
121
|
-
## Add Database Access
|
|
122
|
-
|
|
123
|
-
Install the database package:
|
|
124
|
-
|
|
125
|
-
```bash
|
|
126
|
-
yarn add @breadstone/archipel-platform-database
|
|
127
|
-
```
|
|
128
|
-
|
|
129
|
-
`platform-database` provides a repository + query pattern on top of Prisma. Instead of calling Prisma directly from services, you define query objects and execute them through a repository base class. This keeps data access logic encapsulated, testable, and separate from business logic.
|
|
130
|
-
|
|
131
|
-
Register the module:
|
|
132
|
-
|
|
133
|
-
```typescript
|
|
134
|
-
// src/app.module.ts
|
|
135
|
-
import { Module } from '@nestjs/common';
|
|
136
|
-
import { ConfigModule, MappingModule } from '@breadstone/archipel-platform-core';
|
|
137
|
-
import { DatabaseModule } from '@breadstone/archipel-platform-database';
|
|
138
|
-
import { APP_CONFIG_ENTRIES } from './env';
|
|
139
|
-
|
|
140
|
-
@Module({
|
|
141
|
-
imports: [ConfigModule.register('app', APP_CONFIG_ENTRIES), MappingModule, DatabaseModule.register()],
|
|
142
|
-
})
|
|
143
|
-
export class AppModule {}
|
|
144
|
-
```
|
|
145
|
-
|
|
146
|
-
### Define Queries
|
|
147
|
-
|
|
148
|
-
A query is a plain object that describes a database operation. It receives a Prisma client and returns a result:
|
|
149
|
-
|
|
150
|
-
```typescript
|
|
151
|
-
// src/users/queries/findUserByIdQuery.ts
|
|
152
|
-
import { type IRepositoryQuery } from '@breadstone/archipel-platform-database';
|
|
153
|
-
import { type PrismaClient } from '@prisma/client';
|
|
154
|
-
|
|
155
|
-
export interface IUserEntity {
|
|
156
|
-
id: string;
|
|
157
|
-
userName: string;
|
|
158
|
-
email: string;
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
export const findUserByIdQuery = (id: string): IRepositoryQuery<PrismaClient, IUserEntity | null> => ({
|
|
162
|
-
execute: (prisma) =>
|
|
163
|
-
prisma.user.findUnique({
|
|
164
|
-
where: { id },
|
|
165
|
-
select: { id: true, userName: true, email: true },
|
|
166
|
-
}),
|
|
167
|
-
});
|
|
168
|
-
```
|
|
169
|
-
|
|
170
|
-
### Create a Repository
|
|
171
|
-
|
|
172
|
-
Repositories extend `RepositoryBase` and execute queries:
|
|
173
|
-
|
|
174
|
-
```typescript
|
|
175
|
-
// src/users/UserRepository.ts
|
|
176
|
-
import { Injectable } from '@nestjs/common';
|
|
177
|
-
import { RepositoryBase } from '@breadstone/archipel-platform-database';
|
|
178
|
-
import { findUserByIdQuery, type IUserEntity } from './queries/findUserByIdQuery';
|
|
179
|
-
|
|
180
|
-
@Injectable()
|
|
181
|
-
export class UserRepository extends RepositoryBase {
|
|
182
|
-
public async findById(id: string): Promise<IUserEntity | null> {
|
|
183
|
-
return this.execute(findUserByIdQuery(id));
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
```
|
|
187
|
-
|
|
188
|
-
This pattern means your services never touch Prisma directly. They call repository methods, which execute typed queries. When you need to test a service, you mock the repository — not Prisma internals.
|
|
189
|
-
|
|
190
|
-
---
|
|
191
|
-
|
|
192
|
-
## Add Authentication
|
|
193
|
-
|
|
194
|
-
Install the authentication package:
|
|
195
|
-
|
|
196
|
-
```bash
|
|
197
|
-
yarn add @breadstone/archipel-platform-authentication
|
|
198
|
-
```
|
|
199
|
-
|
|
200
|
-
Authentication is the first package where you encounter **ports** — abstract classes that define contracts between the library and your application. `AuthModule` requires four port implementations that tell it how to look up users, sessions, MFA state, and verification records in your specific data store.
|
|
201
|
-
|
|
202
|
-
### Implement the Required Ports
|
|
203
|
-
|
|
204
|
-
Here's the most important one — `AuthSubjectPort`, which handles user lookup:
|
|
205
|
-
|
|
206
|
-
```typescript
|
|
207
|
-
// src/adapters/PrismaAuthSubjectAdapter.ts
|
|
208
|
-
import { Injectable } from '@nestjs/common';
|
|
209
|
-
import { AuthSubjectPort, type IAuthSubject } from '@breadstone/archipel-platform-authentication';
|
|
210
|
-
import { PrismaService } from '@breadstone/archipel-platform-database';
|
|
211
|
-
|
|
212
|
-
@Injectable()
|
|
213
|
-
export class PrismaAuthSubjectAdapter extends AuthSubjectPort {
|
|
214
|
-
private readonly _prisma: PrismaService;
|
|
215
|
-
|
|
216
|
-
constructor(prisma: PrismaService) {
|
|
217
|
-
super();
|
|
218
|
-
this._prisma = prisma;
|
|
219
|
-
}
|
|
220
|
-
|
|
221
|
-
public async findById(id: string): Promise<IAuthSubject | null> {
|
|
222
|
-
const user = await this._prisma.user.findUnique({
|
|
223
|
-
where: { id },
|
|
224
|
-
select: {
|
|
225
|
-
id: true,
|
|
226
|
-
userName: true,
|
|
227
|
-
email: true,
|
|
228
|
-
password: true,
|
|
229
|
-
isVerified: true,
|
|
230
|
-
isAnonymous: true,
|
|
231
|
-
roles: true,
|
|
232
|
-
mfaEnabled: true,
|
|
233
|
-
},
|
|
234
|
-
});
|
|
235
|
-
|
|
236
|
-
return user ?? null;
|
|
237
|
-
}
|
|
238
|
-
|
|
239
|
-
public async findByLogin(login: string): Promise<IAuthSubject | null> {
|
|
240
|
-
const user = await this._prisma.user.findFirst({
|
|
241
|
-
where: { OR: [{ userName: login }, { email: login }] },
|
|
242
|
-
select: {
|
|
243
|
-
id: true,
|
|
244
|
-
userName: true,
|
|
245
|
-
email: true,
|
|
246
|
-
password: true,
|
|
247
|
-
isVerified: true,
|
|
248
|
-
isAnonymous: true,
|
|
249
|
-
roles: true,
|
|
250
|
-
mfaEnabled: true,
|
|
251
|
-
},
|
|
252
|
-
});
|
|
253
|
-
|
|
254
|
-
return user ?? null;
|
|
255
|
-
}
|
|
256
|
-
|
|
257
|
-
public async findAnonymous(userName: string): Promise<IAuthSubject | null> {
|
|
258
|
-
const user = await this._prisma.user.findFirst({
|
|
259
|
-
where: { userName, isAnonymous: true },
|
|
260
|
-
select: {
|
|
261
|
-
id: true,
|
|
262
|
-
userName: true,
|
|
263
|
-
email: true,
|
|
264
|
-
password: true,
|
|
265
|
-
isVerified: true,
|
|
266
|
-
isAnonymous: true,
|
|
267
|
-
roles: true,
|
|
268
|
-
mfaEnabled: true,
|
|
269
|
-
},
|
|
270
|
-
});
|
|
271
|
-
|
|
272
|
-
return user ?? null;
|
|
273
|
-
}
|
|
274
|
-
}
|
|
275
|
-
```
|
|
276
|
-
|
|
277
|
-
You'll implement the same pattern for `MfaSubjectPort`, `SessionPersistencePort`, and `VerificationSubjectPort`. Each port's abstract methods are documented in the [platform-authentication API reference](/packages/platform-authentication/api/).
|
|
278
|
-
|
|
279
|
-
### Register the Module
|
|
280
|
-
|
|
281
|
-
Pass your adapter classes to `AuthModule.register()`:
|
|
282
|
-
|
|
283
|
-
```typescript
|
|
284
|
-
// src/app.module.ts
|
|
285
|
-
import { Module } from '@nestjs/common';
|
|
286
|
-
import { ConfigModule, MappingModule } from '@breadstone/archipel-platform-core';
|
|
287
|
-
import { DatabaseModule } from '@breadstone/archipel-platform-database';
|
|
288
|
-
import { AuthModule } from '@breadstone/archipel-platform-authentication';
|
|
289
|
-
import { APP_CONFIG_ENTRIES } from './env';
|
|
290
|
-
import { PrismaAuthSubjectAdapter } from './adapters/PrismaAuthSubjectAdapter';
|
|
291
|
-
import { PrismaMfaSubjectAdapter } from './adapters/PrismaMfaSubjectAdapter';
|
|
292
|
-
import { PrismaSessionAdapter } from './adapters/PrismaSessionAdapter';
|
|
293
|
-
import { PrismaVerificationAdapter } from './adapters/PrismaVerificationAdapter';
|
|
294
|
-
|
|
295
|
-
@Module({
|
|
296
|
-
imports: [
|
|
297
|
-
ConfigModule.register('app', APP_CONFIG_ENTRIES),
|
|
298
|
-
MappingModule,
|
|
299
|
-
DatabaseModule.register(),
|
|
300
|
-
AuthModule.register({
|
|
301
|
-
authSubject: PrismaAuthSubjectAdapter,
|
|
302
|
-
mfaSubject: PrismaMfaSubjectAdapter,
|
|
303
|
-
sessionPersistence: PrismaSessionAdapter,
|
|
304
|
-
verificationSubject: PrismaVerificationAdapter,
|
|
305
|
-
}),
|
|
306
|
-
],
|
|
307
|
-
})
|
|
308
|
-
export class AppModule {}
|
|
309
|
-
```
|
|
310
|
-
|
|
311
|
-
The `AuthModule` now has everything it needs. Its internal services (`AuthTokenService`, `SessionService`, `MfaService`, `VerificationService`) are available for injection in your controllers and services.
|
|
312
|
-
|
|
313
|
-
### Optional Ports
|
|
314
|
-
|
|
315
|
-
`AuthModule` also accepts two optional ports:
|
|
316
|
-
|
|
317
|
-
- **`socialAuth`** — Provide a `SocialAuthPort` adapter to enable OAuth strategies (GitHub, Google, Microsoft, Apple). Without it, those routes don't exist.
|
|
318
|
-
- **`tokenEnricher`** — Provide a `TokenEnricherPort` adapter to add custom claims (subscription tier, org ID, etc.) to every JWT. Without it, tokens contain only the base claims.
|
|
319
|
-
|
|
320
|
-
```typescript
|
|
321
|
-
AuthModule.register({
|
|
322
|
-
authSubject: PrismaAuthSubjectAdapter,
|
|
323
|
-
mfaSubject: PrismaMfaSubjectAdapter,
|
|
324
|
-
sessionPersistence: PrismaSessionAdapter,
|
|
325
|
-
verificationSubject: PrismaVerificationAdapter,
|
|
326
|
-
socialAuth: PrismaSocialAuthAdapter, // optional: enables OAuth
|
|
327
|
-
tokenEnricher: AppTokenEnricherAdapter, // optional: enriches JWTs
|
|
328
|
-
}),
|
|
329
|
-
```
|
|
330
|
-
|
|
331
|
-
---
|
|
332
|
-
|
|
333
|
-
## Adding More Packages
|
|
334
|
-
|
|
335
|
-
Every Archipel package follows the same integration pattern:
|
|
336
|
-
|
|
337
|
-
1. **Install** the package with `yarn add @breadstone/archipel-<name>`
|
|
338
|
-
2. **Check** its documentation page under [Packages](/packages/) for required ports and configuration
|
|
339
|
-
3. **Implement** adapter classes for required ports (if any)
|
|
340
|
-
4. **Register** the module with `SomeModule.register({ ... })`
|
|
341
|
-
5. **Inject** the package's services where you need them
|
|
342
|
-
|
|
343
|
-
Some packages have no ports at all — `platform-logging`, `platform-telemetry`, `platform-openapi`, and several others just need a module registration and you're done.
|
|
344
|
-
|
|
345
|
-
---
|
|
346
|
-
|
|
347
|
-
## Next Steps
|
|
348
|
-
|
|
349
|
-
- Read the [Implementing Ports](/guides/implementing-ports) guide for a thorough explanation of the port/adapter pattern across all packages
|
|
350
|
-
- Browse the [Packages](/packages/) section for detailed documentation on each module
|
|
351
|
-
- Check the [Architecture](/architecture/) overview for the dependency graph and design principles
|
|
@@ -1,317 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: Implementing Ports
|
|
3
|
-
description: How the port/adapter pattern works in Archipel and how to implement adapters for each package.
|
|
4
|
-
order: 2
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# Implementing Ports
|
|
8
|
-
|
|
9
|
-
Archipel libraries don't hardcode how you store data, send emails, or check permissions. Instead, they define **ports** — abstract classes describing what the library needs — and your application provides **adapters** — concrete classes that implement those methods with your specific database, API, or logic.
|
|
10
|
-
|
|
11
|
-
This guide covers why ports are abstract classes, which ports exist across all packages, how to write and register adapters, and what happens when optional ports are omitted.
|
|
12
|
-
|
|
13
|
-
## Why Abstract Classes?
|
|
14
|
-
|
|
15
|
-
NestJS uses a token-based dependency injection system. Every injectable needs a token for resolution. Archipel uses abstract classes as ports because they serve two purposes simultaneously:
|
|
16
|
-
|
|
17
|
-
1. **Type contract** — They define the method signatures your adapter must implement. TypeScript enforces this at compile time.
|
|
18
|
-
2. **DI token** — NestJS can use the class reference directly as an injection token, so there's no need for separate `Symbol()` tokens or string identifiers.
|
|
19
|
-
|
|
20
|
-
```typescript
|
|
21
|
-
// Inside the platform library — you don't write this, it's already there
|
|
22
|
-
@Injectable()
|
|
23
|
-
export class SessionService {
|
|
24
|
-
constructor(
|
|
25
|
-
private readonly _sessionPersistence: SessionPersistencePort,
|
|
26
|
-
// The abstract class IS the DI token
|
|
27
|
-
) {}
|
|
28
|
-
}
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
When you pass `{ sessionPersistence: PrismaSessionAdapter }` to `register()`, the library binds your concrete class to the abstract class token. NestJS resolves it automatically wherever the port is injected.
|
|
32
|
-
|
|
33
|
-
---
|
|
34
|
-
|
|
35
|
-
## All Ports Reference
|
|
36
|
-
|
|
37
|
-
Every port across all Archipel packages:
|
|
38
|
-
|
|
39
|
-
| Package | Port | Purpose | Required |
|
|
40
|
-
| ------------------------- | ---------------------------- | ---------------------------------------------- | -------- |
|
|
41
|
-
| `platform-authentication` | `AuthSubjectPort` | User lookup for authentication strategies | Yes |
|
|
42
|
-
| `platform-authentication` | `MfaSubjectPort` | MFA state persistence (enable/disable, verify) | Yes |
|
|
43
|
-
| `platform-authentication` | `SessionPersistencePort` | Session storage, querying, and cleanup | Yes |
|
|
44
|
-
| `platform-authentication` | `VerificationSubjectPort` | Email/PIN verification persistence | Yes |
|
|
45
|
-
| `platform-authentication` | `SocialAuthPort` | OAuth user creation and account linking | No |
|
|
46
|
-
| `platform-authentication` | `TokenEnricherPort` | Add custom claims to JWTs | No |
|
|
47
|
-
| `platform-blob-storage` | `BlobObjectPersistencePort` | Track blob metadata after upload/delete | No |
|
|
48
|
-
| `platform-blob-storage` | `BlobVariantPersistencePort` | Track image variant metadata | No |
|
|
49
|
-
| `platform-payments` | `FeatureAccessPort` | Feature quota checks and usage recording | No |
|
|
50
|
-
|
|
51
|
-
Packages not listed here (`platform-core`, `platform-database`, `platform-logging`, `platform-telemetry`, `platform-openapi`, `platform-reporting`, `platform-documents`, `platform-mailing`, `platform-mcp`) have no ports — they work out of the box with configuration only.
|
|
52
|
-
|
|
53
|
-
---
|
|
54
|
-
|
|
55
|
-
## Writing an Adapter
|
|
56
|
-
|
|
57
|
-
### Step 1: Create the Adapter File
|
|
58
|
-
|
|
59
|
-
Create one file per adapter in an `adapters/` directory in your application:
|
|
60
|
-
|
|
61
|
-
```
|
|
62
|
-
src/
|
|
63
|
-
adapters/
|
|
64
|
-
PrismaAuthSubjectAdapter.ts
|
|
65
|
-
PrismaMfaSubjectAdapter.ts
|
|
66
|
-
PrismaSessionAdapter.ts
|
|
67
|
-
PrismaVerificationAdapter.ts
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
### Step 2: Extend the Port
|
|
71
|
-
|
|
72
|
-
```typescript
|
|
73
|
-
import { Injectable } from '@nestjs/common';
|
|
74
|
-
import { AuthSubjectPort, type IAuthSubject } from '@breadstone/archipel-platform-authentication';
|
|
75
|
-
import { PrismaService } from '@breadstone/archipel-platform-database';
|
|
76
|
-
|
|
77
|
-
@Injectable()
|
|
78
|
-
export class PrismaAuthSubjectAdapter extends AuthSubjectPort {
|
|
79
|
-
private readonly _prisma: PrismaService;
|
|
80
|
-
|
|
81
|
-
constructor(prisma: PrismaService) {
|
|
82
|
-
super();
|
|
83
|
-
this._prisma = prisma;
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
public async findById(id: string): Promise<IAuthSubject | null> {
|
|
87
|
-
const user = await this._prisma.user.findUnique({
|
|
88
|
-
where: { id },
|
|
89
|
-
select: {
|
|
90
|
-
id: true,
|
|
91
|
-
userName: true,
|
|
92
|
-
email: true,
|
|
93
|
-
password: true,
|
|
94
|
-
isVerified: true,
|
|
95
|
-
isAnonymous: true,
|
|
96
|
-
roles: true,
|
|
97
|
-
mfaEnabled: true,
|
|
98
|
-
},
|
|
99
|
-
});
|
|
100
|
-
|
|
101
|
-
return user ?? null;
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
public async findByLogin(login: string): Promise<IAuthSubject | null> {
|
|
105
|
-
const user = await this._prisma.user.findFirst({
|
|
106
|
-
where: { OR: [{ userName: login }, { email: login }] },
|
|
107
|
-
select: {
|
|
108
|
-
id: true,
|
|
109
|
-
userName: true,
|
|
110
|
-
email: true,
|
|
111
|
-
password: true,
|
|
112
|
-
isVerified: true,
|
|
113
|
-
isAnonymous: true,
|
|
114
|
-
roles: true,
|
|
115
|
-
mfaEnabled: true,
|
|
116
|
-
},
|
|
117
|
-
});
|
|
118
|
-
|
|
119
|
-
return user ?? null;
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
public async findAnonymous(userName: string): Promise<IAuthSubject | null> {
|
|
123
|
-
const user = await this._prisma.user.findFirst({
|
|
124
|
-
where: { userName, isAnonymous: true },
|
|
125
|
-
select: {
|
|
126
|
-
id: true,
|
|
127
|
-
userName: true,
|
|
128
|
-
email: true,
|
|
129
|
-
password: true,
|
|
130
|
-
isVerified: true,
|
|
131
|
-
isAnonymous: true,
|
|
132
|
-
roles: true,
|
|
133
|
-
mfaEnabled: true,
|
|
134
|
-
},
|
|
135
|
-
});
|
|
136
|
-
|
|
137
|
-
return user ?? null;
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
```
|
|
141
|
-
|
|
142
|
-
**Key rules:**
|
|
143
|
-
|
|
144
|
-
- Always annotate with `@Injectable()` — the adapter is a NestJS provider and participates in DI.
|
|
145
|
-
- Always call `super()` in the constructor — the abstract class may have a constructor that sets up internal state.
|
|
146
|
-
- Return the port's interface type (`IAuthSubject`, `ISessionRecord`, etc.), not your raw Prisma model. The port defines the contract.
|
|
147
|
-
- Inject your own dependencies via constructor — the adapter has full access to NestJS DI, so it can use your `PrismaService`, `HttpService`, or anything else.
|
|
148
|
-
- One adapter per port — don't combine multiple ports in one class. NestJS resolves each port token independently.
|
|
149
|
-
|
|
150
|
-
### Step 3: Register
|
|
151
|
-
|
|
152
|
-
Pass the adapter class (not an instance) to the module's `register()` method:
|
|
153
|
-
|
|
154
|
-
```typescript
|
|
155
|
-
AuthModule.register({
|
|
156
|
-
authSubject: PrismaAuthSubjectAdapter,
|
|
157
|
-
mfaSubject: PrismaMfaSubjectAdapter,
|
|
158
|
-
sessionPersistence: PrismaSessionAdapter,
|
|
159
|
-
verificationSubject: PrismaVerificationAdapter,
|
|
160
|
-
});
|
|
161
|
-
```
|
|
162
|
-
|
|
163
|
-
NestJS handles instantiation and dependency resolution. You pass the class reference, the framework does the rest.
|
|
164
|
-
|
|
165
|
-
---
|
|
166
|
-
|
|
167
|
-
## Schema Mapping
|
|
168
|
-
|
|
169
|
-
Your database schema won't always match the port interface field-for-field. The adapter is where you handle the translation. This is one of the main reasons adapters exist — they decouple the library's expectations from your specific data model.
|
|
170
|
-
|
|
171
|
-
```typescript
|
|
172
|
-
public async findById(id: string): Promise<IAuthSubject | null> {
|
|
173
|
-
const user = await this._prisma.user.findUnique({
|
|
174
|
-
where: { id },
|
|
175
|
-
include: { userRoles: { include: { role: true } } },
|
|
176
|
-
});
|
|
177
|
-
|
|
178
|
-
if (!user) return null;
|
|
179
|
-
|
|
180
|
-
return {
|
|
181
|
-
id: user.id,
|
|
182
|
-
userName: user.username, // different casing
|
|
183
|
-
email: user.emailAddress, // different field name
|
|
184
|
-
password: user.passwordHash, // different field name
|
|
185
|
-
isVerified: user.emailVerified, // different field name
|
|
186
|
-
isAnonymous: user.type === 'anonymous', // derived from enum
|
|
187
|
-
roles: user.userRoles.map((ur) => ur.role.name), // flattened relation
|
|
188
|
-
mfaEnabled: user.twoFactorEnabled, // different field name
|
|
189
|
-
};
|
|
190
|
-
}
|
|
191
|
-
```
|
|
192
|
-
|
|
193
|
-
As long as the returned object satisfies the port's interface, the platform library doesn't care what your underlying schema looks like.
|
|
194
|
-
|
|
195
|
-
---
|
|
196
|
-
|
|
197
|
-
## Adapters for External APIs
|
|
198
|
-
|
|
199
|
-
Ports aren't limited to database adapters. You can implement an adapter that calls an external API, talks to a microservice, or reads from a cache — anything that fulfills the contract.
|
|
200
|
-
|
|
201
|
-
```typescript
|
|
202
|
-
@Injectable()
|
|
203
|
-
export class Auth0AuthSubjectAdapter extends AuthSubjectPort {
|
|
204
|
-
private readonly _http: HttpService;
|
|
205
|
-
|
|
206
|
-
constructor(http: HttpService) {
|
|
207
|
-
super();
|
|
208
|
-
this._http = http;
|
|
209
|
-
}
|
|
210
|
-
|
|
211
|
-
public async findById(id: string): Promise<IAuthSubject | null> {
|
|
212
|
-
const { data } = await firstValueFrom(this._http.get(`https://my-tenant.auth0.com/api/v2/users/${id}`));
|
|
213
|
-
|
|
214
|
-
return {
|
|
215
|
-
id: data.user_id,
|
|
216
|
-
userName: data.nickname,
|
|
217
|
-
email: data.email,
|
|
218
|
-
password: '',
|
|
219
|
-
isVerified: data.email_verified,
|
|
220
|
-
isAnonymous: false,
|
|
221
|
-
roles: data.app_metadata?.roles ?? [],
|
|
222
|
-
mfaEnabled: data.multifactor?.length > 0,
|
|
223
|
-
};
|
|
224
|
-
}
|
|
225
|
-
|
|
226
|
-
public async findByLogin(login: string): Promise<IAuthSubject | null> {
|
|
227
|
-
const { data } = await firstValueFrom(
|
|
228
|
-
this._http.get('https://my-tenant.auth0.com/api/v2/users', {
|
|
229
|
-
params: { q: `email:"${login}" OR nickname:"${login}"` },
|
|
230
|
-
}),
|
|
231
|
-
);
|
|
232
|
-
|
|
233
|
-
return data[0] ? this.mapToAuthSubject(data[0]) : null;
|
|
234
|
-
}
|
|
235
|
-
|
|
236
|
-
// ...
|
|
237
|
-
}
|
|
238
|
-
```
|
|
239
|
-
|
|
240
|
-
The library has no idea it's talking to Auth0. It calls `findById()` and gets back an `IAuthSubject` — that's the entire contract.
|
|
241
|
-
|
|
242
|
-
---
|
|
243
|
-
|
|
244
|
-
## In-Memory Adapters for Testing
|
|
245
|
-
|
|
246
|
-
For integration tests where you need a working port without a real database, create in-memory implementations:
|
|
247
|
-
|
|
248
|
-
```typescript
|
|
249
|
-
@Injectable()
|
|
250
|
-
export class InMemoryAuthSubjectAdapter extends AuthSubjectPort {
|
|
251
|
-
private readonly _subjects = new Map<string, IAuthSubject>();
|
|
252
|
-
|
|
253
|
-
public seed(subjects: IAuthSubject[]): void {
|
|
254
|
-
subjects.forEach((s) => this._subjects.set(s.id, s));
|
|
255
|
-
}
|
|
256
|
-
|
|
257
|
-
public async findById(id: string): Promise<IAuthSubject | null> {
|
|
258
|
-
return this._subjects.get(id) ?? null;
|
|
259
|
-
}
|
|
260
|
-
|
|
261
|
-
public async findByLogin(login: string): Promise<IAuthSubject | null> {
|
|
262
|
-
return [...this._subjects.values()].find((s) => s.userName === login || s.email === login) ?? null;
|
|
263
|
-
}
|
|
264
|
-
|
|
265
|
-
public async findAnonymous(userName: string): Promise<IAuthSubject | null> {
|
|
266
|
-
return [...this._subjects.values()].find((s) => s.userName === userName && s.isAnonymous) ?? null;
|
|
267
|
-
}
|
|
268
|
-
}
|
|
269
|
-
```
|
|
270
|
-
|
|
271
|
-
This pattern works for any port. Seed with test data, inject into the module under test, and your tests run fast and deterministically without database fixtures. See the [Testing](/guides/testing) guide for full integration test examples.
|
|
272
|
-
|
|
273
|
-
---
|
|
274
|
-
|
|
275
|
-
## Optional Ports
|
|
276
|
-
|
|
277
|
-
Some ports are optional. When not provided, the library gracefully degrades — the feature that depends on that port simply isn't available. The library's internal services use `@Optional()` on the injection, so they receive `undefined` and skip the corresponding logic.
|
|
278
|
-
|
|
279
|
-
### TokenEnricherPort (Authentication)
|
|
280
|
-
|
|
281
|
-
When omitted, JWTs contain only the base claims (`id`, `email`, `roles`). When provided, `AuthTokenService` calls your adapter's `enrichClaims()` method and merges the result into every token.
|
|
282
|
-
|
|
283
|
-
```typescript
|
|
284
|
-
@Injectable()
|
|
285
|
-
export class AppTokenEnricherAdapter extends TokenEnricherPort {
|
|
286
|
-
public async enrichClaims(subject: IAuthSubject): Promise<Record<string, unknown>> {
|
|
287
|
-
return {
|
|
288
|
-
subscriptionTier: 'pro',
|
|
289
|
-
organizationId: 'org-123',
|
|
290
|
-
};
|
|
291
|
-
}
|
|
292
|
-
}
|
|
293
|
-
```
|
|
294
|
-
|
|
295
|
-
### SocialAuthPort (Authentication)
|
|
296
|
-
|
|
297
|
-
When omitted, OAuth strategies (GitHub, Google, Microsoft, Apple) are not registered — the routes don't exist. When provided, all configured strategies become active and the library handles the OAuth callback flow.
|
|
298
|
-
|
|
299
|
-
### BlobObjectPersistencePort / BlobVariantPersistencePort (Blob Storage)
|
|
300
|
-
|
|
301
|
-
When omitted, blob uploads and deletes work normally, but metadata isn't tracked in your database. When provided, `BlobService` calls the persistence port after each operation so you can maintain your own blob inventory.
|
|
302
|
-
|
|
303
|
-
### FeatureAccessPort (Payments)
|
|
304
|
-
|
|
305
|
-
When omitted, `FeatureGuard` and `FeatureUsageInterceptor` have no access port and will deny or skip feature checks. When provided, they delegate quota enforcement and usage recording to your adapter.
|
|
306
|
-
|
|
307
|
-
---
|
|
308
|
-
|
|
309
|
-
## Common Mistakes
|
|
310
|
-
|
|
311
|
-
**Not calling `super()`** — If you forget `super()` in the constructor, JavaScript throws a runtime error. Abstract classes are still real classes with constructors.
|
|
312
|
-
|
|
313
|
-
**Returning raw Prisma objects** — If your Prisma model includes extra fields beyond what the port interface expects, don't return it raw. Always map to the exact interface shape. Extra fields won't cause type errors but may leak internal data.
|
|
314
|
-
|
|
315
|
-
**Sharing adapters across ports** — Don't make one class implement two different ports. Each port has its own DI token, and NestJS resolves them independently. One class, one port, one responsibility.
|
|
316
|
-
|
|
317
|
-
**Registering instances instead of classes** — `register()` expects the class reference (`PrismaAuthSubjectAdapter`), not `new PrismaAuthSubjectAdapter()`. NestJS creates the instance and injects its dependencies automatically.
|