@db3.ai/app 0.1.0-beta.1
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 +31 -0
- package/README.md +241 -0
- package/agent-instructions.md +69 -0
- package/bin/db3-agents.mjs +140 -0
- package/bin/db3.mjs +11 -0
- package/dist/ai/AIErrors.d.ts +33 -0
- package/dist/ai/AIErrors.js +43 -0
- package/dist/ai/AIFailover.d.ts +25 -0
- package/dist/ai/AIFailover.js +96 -0
- package/dist/ai/AIProviders.d.ts +35 -0
- package/dist/ai/AIProviders.js +197 -0
- package/dist/ai/AIQuotaDeferredError.d.ts +19 -0
- package/dist/ai/AIQuotaDeferredError.js +25 -0
- package/dist/ai/AIRateLimiter.d.ts +103 -0
- package/dist/ai/AIRateLimiter.js +690 -0
- package/dist/ai/Agent.d.ts +633 -0
- package/dist/ai/Agent.js +2976 -0
- package/dist/ai/AgentHistory.d.ts +11 -0
- package/dist/ai/AgentHistory.js +495 -0
- package/dist/ai/AgentRunJob.d.ts +21 -0
- package/dist/ai/AgentRunJob.js +53 -0
- package/dist/ai/Ai.d.ts +375 -0
- package/dist/ai/Ai.js +1771 -0
- package/dist/ai/AiConversation.d.ts +17 -0
- package/dist/ai/AiConversation.js +38 -0
- package/dist/ai/AiExecutionContext.d.ts +7 -0
- package/dist/ai/AiExecutionContext.js +16 -0
- package/dist/ai/AiMessage.d.ts +43 -0
- package/dist/ai/AiMessage.js +105 -0
- package/dist/ai/AiRateLimitBucket.d.ts +69 -0
- package/dist/ai/AiRateLimitBucket.js +138 -0
- package/dist/ai/AiRateLimitReservation.d.ts +56 -0
- package/dist/ai/AiRateLimitReservation.js +101 -0
- package/dist/ai/AiRequest.d.ts +78 -0
- package/dist/ai/AiRequest.js +384 -0
- package/dist/ai/Estimates.d.ts +26 -0
- package/dist/ai/Estimates.js +34 -0
- package/dist/ai/Models.d.ts +88 -0
- package/dist/ai/Models.js +328 -0
- package/dist/ai/OpenAIProviderError.d.ts +30 -0
- package/dist/ai/OpenAIProviderError.js +77 -0
- package/dist/ai/OpenAIQuotaRetry.d.ts +27 -0
- package/dist/ai/OpenAIQuotaRetry.js +144 -0
- package/dist/ai/ProviderCosts.d.ts +55 -0
- package/dist/ai/ProviderCosts.js +108 -0
- package/dist/ai/ResponsesProviderCall.d.ts +13 -0
- package/dist/ai/ResponsesProviderCall.js +29 -0
- package/dist/ai/agentCitations.d.ts +27 -0
- package/dist/ai/agentCitations.js +153 -0
- package/dist/ai/contracts/AI.d.ts +347 -0
- package/dist/ai/contracts/AI.js +13 -0
- package/dist/ai/contracts/Agent.d.ts +476 -0
- package/dist/ai/contracts/Agent.js +1 -0
- package/dist/ai/contracts/AiRequestRunCostSummary.d.ts +31 -0
- package/dist/ai/contracts/AiRequestRunCostSummary.js +1 -0
- package/dist/ai/contracts/Pricing.d.ts +88 -0
- package/dist/ai/contracts/Pricing.js +1 -0
- package/dist/ai/contracts/Providers.d.ts +68 -0
- package/dist/ai/contracts/Providers.js +1 -0
- package/dist/ai/contracts/QuotaRetry.d.ts +38 -0
- package/dist/ai/contracts/QuotaRetry.js +1 -0
- package/dist/ai/contracts/RateLimits.d.ts +45 -0
- package/dist/ai/contracts/RateLimits.js +1 -0
- package/dist/ai/contracts/ResponsesProviderCall.d.ts +28 -0
- package/dist/ai/contracts/ResponsesProviderCall.js +1 -0
- package/dist/ai/contracts/index.d.ts +8 -0
- package/dist/ai/contracts/index.js +8 -0
- package/dist/ai/index.d.ts +27 -0
- package/dist/ai/index.js +27 -0
- package/dist/ai/registry.d.ts +28 -0
- package/dist/ai/registry.js +49 -0
- package/dist/ai/sdkNodeCompatibility.d.ts +76 -0
- package/dist/ai/toolCallRecovery.d.ts +16 -0
- package/dist/ai/toolCallRecovery.js +71 -0
- package/dist/ai/toolHelpers.d.ts +65 -0
- package/dist/ai/toolHelpers.js +106 -0
- package/dist/auth/Auth.d.ts +641 -0
- package/dist/auth/Auth.js +927 -0
- package/dist/auth/AuthProvider.d.ts +104 -0
- package/dist/auth/AuthProvider.js +185 -0
- package/dist/auth/AuthToken.d.ts +123 -0
- package/dist/auth/AuthToken.js +156 -0
- package/dist/auth/PasswordResetToken.d.ts +33 -0
- package/dist/auth/PasswordResetToken.js +64 -0
- package/dist/auth/UserIdentity.d.ts +46 -0
- package/dist/auth/UserIdentity.js +72 -0
- package/dist/auth/contracts/AuthProviderDriver.d.ts +94 -0
- package/dist/auth/contracts/AuthProviderDriver.js +1 -0
- package/dist/auth/contracts/index.d.ts +1 -0
- package/dist/auth/contracts/index.js +1 -0
- package/dist/auth/index.d.ts +8 -0
- package/dist/auth/index.js +8 -0
- package/dist/auth/passwordHash.d.ts +26 -0
- package/dist/auth/passwordHash.js +96 -0
- package/dist/auth/providers/GoogleAuthProvider.d.ts +135 -0
- package/dist/auth/providers/GoogleAuthProvider.js +305 -0
- package/dist/auth/providers/PasswordAuthProvider.d.ts +115 -0
- package/dist/auth/providers/PasswordAuthProvider.js +195 -0
- package/dist/auth/providers/index.d.ts +3 -0
- package/dist/auth/providers/index.js +3 -0
- package/dist/auth/providers/resolveAuthProviders.d.ts +29 -0
- package/dist/auth/providers/resolveAuthProviders.js +111 -0
- package/dist/cache/Cache.d.ts +67 -0
- package/dist/cache/Cache.js +115 -0
- package/dist/cache/contracts/CacheDriver.d.ts +10 -0
- package/dist/cache/contracts/CacheDriver.js +1 -0
- package/dist/cache/contracts/CacheOperations.d.ts +26 -0
- package/dist/cache/contracts/CacheOperations.js +1 -0
- package/dist/cache/contracts/CacheOptions.d.ts +51 -0
- package/dist/cache/contracts/CacheOptions.js +1 -0
- package/dist/cache/contracts/CacheRepository.d.ts +45 -0
- package/dist/cache/contracts/CacheRepository.js +1 -0
- package/dist/cache/contracts/index.d.ts +4 -0
- package/dist/cache/contracts/index.js +4 -0
- package/dist/cache/drivers/CacheManagerDriver.d.ts +55 -0
- package/dist/cache/drivers/CacheManagerDriver.js +68 -0
- package/dist/cache/drivers/createCacheDriver.d.ts +8 -0
- package/dist/cache/drivers/createCacheDriver.js +147 -0
- package/dist/cache/index.d.ts +2 -0
- package/dist/cache/index.js +2 -0
- package/dist/cli/Cli.d.ts +17 -0
- package/dist/cli/Cli.js +120 -0
- package/dist/cli/commands/repl.d.ts +9 -0
- package/dist/cli/commands/repl.js +27 -0
- package/dist/cli/contracts/CliCommand.d.ts +30 -0
- package/dist/cli/contracts/CliCommand.js +1 -0
- package/dist/cli/contracts/CliConfig.d.ts +9 -0
- package/dist/cli/contracts/CliConfig.js +1 -0
- package/dist/cli/contracts/CliOptions.d.ts +13 -0
- package/dist/cli/contracts/CliOptions.js +1 -0
- package/dist/cli/contracts/CommandDefinition.d.ts +18 -0
- package/dist/cli/contracts/CommandDefinition.js +1 -0
- package/dist/cli/contracts/ReplOptions.d.ts +11 -0
- package/dist/cli/contracts/ReplOptions.js +1 -0
- package/dist/cli/contracts/index.d.ts +5 -0
- package/dist/cli/contracts/index.js +1 -0
- package/dist/cli/defineCommand.d.ts +10 -0
- package/dist/cli/defineCommand.js +25 -0
- package/dist/cli/index.d.ts +5 -0
- package/dist/cli/index.js +5 -0
- package/dist/cli/runDb3.d.ts +11 -0
- package/dist/cli/runDb3.js +70 -0
- package/dist/cli/runRepl.d.ts +12 -0
- package/dist/cli/runRepl.js +54 -0
- package/dist/config/Config.d.ts +48 -0
- package/dist/config/Config.js +80 -0
- package/dist/config/env.d.ts +26 -0
- package/dist/config/env.js +117 -0
- package/dist/config/index.d.ts +2 -0
- package/dist/config/index.js +2 -0
- package/dist/db/ActiveProjection.d.ts +90 -0
- package/dist/db/ActiveProjection.js +134 -0
- package/dist/db/ActiveQueryBuilder.d.ts +268 -0
- package/dist/db/ActiveQueryBuilder.js +621 -0
- package/dist/db/ActiveRecord.d.ts +483 -0
- package/dist/db/ActiveRecord.js +765 -0
- package/dist/db/Database.d.ts +277 -0
- package/dist/db/Database.js +827 -0
- package/dist/db/FieldType.d.ts +540 -0
- package/dist/db/FieldType.js +706 -0
- package/dist/db/SoftDeletes.d.ts +30 -0
- package/dist/db/SoftDeletes.js +93 -0
- package/dist/db/commands/check.d.ts +6 -0
- package/dist/db/commands/check.js +8 -0
- package/dist/db/commands/index.d.ts +6 -0
- package/dist/db/commands/index.js +17 -0
- package/dist/db/commands/makeMigration.d.ts +7 -0
- package/dist/db/commands/makeMigration.js +9 -0
- package/dist/db/commands/migrate.d.ts +6 -0
- package/dist/db/commands/migrate.js +8 -0
- package/dist/db/connection.d.ts +10 -0
- package/dist/db/connection.js +55 -0
- package/dist/db/contracts/ActiveRecordDefinition.d.ts +64 -0
- package/dist/db/contracts/ActiveRecordDefinition.js +1 -0
- package/dist/db/contracts/DatabaseBackup.d.ts +7 -0
- package/dist/db/contracts/DatabaseBackup.js +1 -0
- package/dist/db/contracts/DatabaseMigrationsConfig.d.ts +9 -0
- package/dist/db/contracts/DatabaseMigrationsConfig.js +1 -0
- package/dist/db/contracts/index.d.ts +3 -0
- package/dist/db/contracts/index.js +3 -0
- package/dist/db/dialects/columnTypes.d.ts +20 -0
- package/dist/db/dialects/columnTypes.js +67 -0
- package/dist/db/dialects/index.d.ts +6 -0
- package/dist/db/dialects/index.js +6 -0
- package/dist/db/dialects/mariadb.d.ts +7 -0
- package/dist/db/dialects/mariadb.js +35 -0
- package/dist/db/dialects/mysql.d.ts +14 -0
- package/dist/db/dialects/mysql.js +203 -0
- package/dist/db/dialects/postgres.d.ts +5 -0
- package/dist/db/dialects/postgres.js +106 -0
- package/dist/db/dialects/resolveDialect.d.ts +14 -0
- package/dist/db/dialects/resolveDialect.js +57 -0
- package/dist/db/dialects/types.d.ts +44 -0
- package/dist/db/dialects/types.js +1 -0
- package/dist/db/errors.d.ts +15 -0
- package/dist/db/errors.js +20 -0
- package/dist/db/fields/BooleanField.d.ts +29 -0
- package/dist/db/fields/BooleanField.js +89 -0
- package/dist/db/fields/CharUuidField.d.ts +29 -0
- package/dist/db/fields/CharUuidField.js +63 -0
- package/dist/db/fields/ChoiceStringField.d.ts +25 -0
- package/dist/db/fields/ChoiceStringField.js +58 -0
- package/dist/db/fields/DecimalField.d.ts +20 -0
- package/dist/db/fields/DecimalField.js +105 -0
- package/dist/db/fields/EmailField.d.ts +31 -0
- package/dist/db/fields/EmailField.js +52 -0
- package/dist/db/fields/EncryptedJsonField.d.ts +82 -0
- package/dist/db/fields/EncryptedJsonField.js +169 -0
- package/dist/db/fields/IntegerField.d.ts +35 -0
- package/dist/db/fields/IntegerField.js +139 -0
- package/dist/db/fields/JsonField.d.ts +40 -0
- package/dist/db/fields/JsonField.js +79 -0
- package/dist/db/fields/JsonStringField.d.ts +21 -0
- package/dist/db/fields/JsonStringField.js +41 -0
- package/dist/db/fields/LinkField.d.ts +180 -0
- package/dist/db/fields/LinkField.js +359 -0
- package/dist/db/fields/PasswordField.d.ts +93 -0
- package/dist/db/fields/PasswordField.js +180 -0
- package/dist/db/fields/StringField.d.ts +43 -0
- package/dist/db/fields/StringField.js +102 -0
- package/dist/db/fields/StringListField.d.ts +54 -0
- package/dist/db/fields/StringListField.js +124 -0
- package/dist/db/fields/TextField.d.ts +25 -0
- package/dist/db/fields/TextField.js +44 -0
- package/dist/db/fields/TimestampField.d.ts +47 -0
- package/dist/db/fields/TimestampField.js +97 -0
- package/dist/db/fields/UlidField.d.ts +69 -0
- package/dist/db/fields/UlidField.js +114 -0
- package/dist/db/fields/UrlField.d.ts +30 -0
- package/dist/db/fields/UrlField.js +61 -0
- package/dist/db/fields/VectorField.d.ts +64 -0
- package/dist/db/fields/VectorField.js +180 -0
- package/dist/db/fields/createField.d.ts +2 -0
- package/dist/db/fields/createField.js +13 -0
- package/dist/db/fields/field.d.ts +36 -0
- package/dist/db/fields/field.js +101 -0
- package/dist/db/fields/index.d.ts +18 -0
- package/dist/db/fields/index.js +18 -0
- package/dist/db/fields/resolveFields.d.ts +17 -0
- package/dist/db/fields/resolveFields.js +38 -0
- package/dist/db/index.d.ts +13 -0
- package/dist/db/index.js +13 -0
- package/dist/db/migrations/DatabaseMigrationManager.d.ts +57 -0
- package/dist/db/migrations/DatabaseMigrationManager.js +589 -0
- package/dist/db/migrations/DatabaseSchemaInspector.d.ts +19 -0
- package/dist/db/migrations/DatabaseSchemaInspector.js +384 -0
- package/dist/db/migrations/KnexMigrationRenderer.d.ts +11 -0
- package/dist/db/migrations/KnexMigrationRenderer.js +390 -0
- package/dist/db/migrations/ModelSchemaCollector.d.ts +29 -0
- package/dist/db/migrations/ModelSchemaCollector.js +183 -0
- package/dist/db/migrations/SchemaDiffer.d.ts +13 -0
- package/dist/db/migrations/SchemaDiffer.js +427 -0
- package/dist/db/migrations/SchemaNames.d.ts +27 -0
- package/dist/db/migrations/SchemaNames.js +46 -0
- package/dist/db/migrations/SchemaSnapshotSerializer.d.ts +30 -0
- package/dist/db/migrations/SchemaSnapshotSerializer.js +49 -0
- package/dist/db/migrations/contracts/DatabaseMigration.d.ts +118 -0
- package/dist/db/migrations/contracts/DatabaseMigration.js +1 -0
- package/dist/db/migrations/contracts/SchemaChange.d.ts +83 -0
- package/dist/db/migrations/contracts/SchemaChange.js +1 -0
- package/dist/db/migrations/contracts/SchemaSnapshot.d.ts +94 -0
- package/dist/db/migrations/contracts/SchemaSnapshot.js +1 -0
- package/dist/db/migrations/contracts/index.d.ts +3 -0
- package/dist/db/migrations/contracts/index.js +3 -0
- package/dist/db/migrations/errors.d.ts +35 -0
- package/dist/db/migrations/errors.js +45 -0
- package/dist/db/migrations/index.d.ts +10 -0
- package/dist/db/migrations/index.js +10 -0
- package/dist/db/migrations/promoteDestructiveSchemaChanges.d.ts +19 -0
- package/dist/db/migrations/promoteDestructiveSchemaChanges.js +102 -0
- package/dist/db/queryMonitor.d.ts +142 -0
- package/dist/db/queryMonitor.js +357 -0
- package/dist/db/sqlErrors.d.ts +11 -0
- package/dist/db/sqlErrors.js +17 -0
- package/dist/db/test/db.d.ts +11 -0
- package/dist/db/test/db.js +109 -0
- package/dist/devtools/HttpEventDispatcher.d.ts +19 -0
- package/dist/devtools/HttpEventDispatcher.js +180 -0
- package/dist/devtools/contracts/DevtoolsEventDispatcher.d.ts +53 -0
- package/dist/devtools/contracts/DevtoolsEventDispatcher.js +1 -0
- package/dist/devtools/contracts/index.d.ts +1 -0
- package/dist/devtools/contracts/index.js +1 -0
- package/dist/devtools/environment.d.ts +10 -0
- package/dist/devtools/environment.js +14 -0
- package/dist/devtools/index.d.ts +3 -0
- package/dist/devtools/index.js +3 -0
- package/dist/events/Events.d.ts +70 -0
- package/dist/events/Events.js +126 -0
- package/dist/events/contracts/EventConstructor.d.ts +12 -0
- package/dist/events/contracts/EventConstructor.js +1 -0
- package/dist/events/contracts/EventListener.d.ts +6 -0
- package/dist/events/contracts/EventListener.js +1 -0
- package/dist/events/contracts/EventUnsubscribe.d.ts +4 -0
- package/dist/events/contracts/EventUnsubscribe.js +1 -0
- package/dist/events/contracts/index.d.ts +3 -0
- package/dist/events/contracts/index.js +3 -0
- package/dist/events/index.d.ts +2 -0
- package/dist/events/index.js +2 -0
- package/dist/flows/FlowBlockRegistry.d.ts +39 -0
- package/dist/flows/FlowBlockRegistry.js +66 -0
- package/dist/flows/FlowCompiler.d.ts +26 -0
- package/dist/flows/FlowCompiler.js +488 -0
- package/dist/flows/FlowDefinitionError.d.ts +21 -0
- package/dist/flows/FlowDefinitionError.js +16 -0
- package/dist/flows/FlowStepJob.d.ts +28 -0
- package/dist/flows/FlowStepJob.js +31 -0
- package/dist/flows/FlowValueValidator.d.ts +32 -0
- package/dist/flows/FlowValueValidator.js +105 -0
- package/dist/flows/Flows.d.ts +102 -0
- package/dist/flows/Flows.js +871 -0
- package/dist/flows/blocks/FlowInput.d.ts +10 -0
- package/dist/flows/blocks/FlowInput.js +29 -0
- package/dist/flows/blocks/FlowOutput.d.ts +10 -0
- package/dist/flows/blocks/FlowOutput.js +29 -0
- package/dist/flows/blocks/Subflow.d.ts +10 -0
- package/dist/flows/blocks/Subflow.js +21 -0
- package/dist/flows/blocks/index.d.ts +6 -0
- package/dist/flows/blocks/index.js +8 -0
- package/dist/flows/constants.d.ts +55 -0
- package/dist/flows/constants.js +47 -0
- package/dist/flows/contracts/FlowBlock.d.ts +64 -0
- package/dist/flows/contracts/FlowBlock.js +1 -0
- package/dist/flows/contracts/FlowCompiler.d.ts +30 -0
- package/dist/flows/contracts/FlowCompiler.js +1 -0
- package/dist/flows/contracts/FlowDefinition.d.ts +118 -0
- package/dist/flows/contracts/FlowDefinition.js +1 -0
- package/dist/flows/contracts/FlowDefinitionStore.d.ts +47 -0
- package/dist/flows/contracts/FlowDefinitionStore.js +1 -0
- package/dist/flows/contracts/FlowRun.d.ts +40 -0
- package/dist/flows/contracts/FlowRun.js +1 -0
- package/dist/flows/contracts/FlowValue.d.ts +49 -0
- package/dist/flows/contracts/FlowValue.js +1 -0
- package/dist/flows/contracts/FlowsService.d.ts +37 -0
- package/dist/flows/contracts/FlowsService.js +1 -0
- package/dist/flows/contracts/index.d.ts +7 -0
- package/dist/flows/contracts/index.js +7 -0
- package/dist/flows/defineBlock.d.ts +18 -0
- package/dist/flows/defineBlock.js +19 -0
- package/dist/flows/drivers/FileFlowDefinitionStore.d.ts +53 -0
- package/dist/flows/drivers/FileFlowDefinitionStore.js +313 -0
- package/dist/flows/drivers/index.d.ts +1 -0
- package/dist/flows/drivers/index.js +1 -0
- package/dist/flows/errors.d.ts +8 -0
- package/dist/flows/errors.js +19 -0
- package/dist/flows/index.d.ts +13 -0
- package/dist/flows/index.js +13 -0
- package/dist/flows/models/FlowRun.d.ts +55 -0
- package/dist/flows/models/FlowRun.js +126 -0
- package/dist/flows/models/FlowRunEvent.d.ts +41 -0
- package/dist/flows/models/FlowRunEvent.js +85 -0
- package/dist/flows/models/FlowStepRun.d.ts +56 -0
- package/dist/flows/models/FlowStepRun.js +137 -0
- package/dist/flows/models/index.d.ts +10 -0
- package/dist/flows/models/index.js +14 -0
- package/dist/index.d.ts +25 -0
- package/dist/index.js +16 -0
- package/dist/logging/Log.d.ts +66 -0
- package/dist/logging/Log.js +79 -0
- package/dist/logging/contracts/HttpExchange.d.ts +50 -0
- package/dist/logging/contracts/HttpExchange.js +1 -0
- package/dist/logging/contracts/Logger.d.ts +41 -0
- package/dist/logging/contracts/Logger.js +1 -0
- package/dist/logging/contracts/LoggerDriver.d.ts +16 -0
- package/dist/logging/contracts/LoggerDriver.js +1 -0
- package/dist/logging/contracts/LoggingOptions.d.ts +49 -0
- package/dist/logging/contracts/LoggingOptions.js +1 -0
- package/dist/logging/contracts/index.d.ts +4 -0
- package/dist/logging/contracts/index.js +4 -0
- package/dist/logging/drivers/PinoLoggerDriver.d.ts +24 -0
- package/dist/logging/drivers/PinoLoggerDriver.js +291 -0
- package/dist/logging/drivers/index.d.ts +1 -0
- package/dist/logging/drivers/index.js +1 -0
- package/dist/logging/index.d.ts +3 -0
- package/dist/logging/index.js +3 -0
- package/dist/logging/transports/DevtoolsLogTransport.d.ts +35 -0
- package/dist/logging/transports/DevtoolsLogTransport.js +96 -0
- package/dist/mail/Mail.d.ts +62 -0
- package/dist/mail/Mail.js +98 -0
- package/dist/mail/index.d.ts +4 -0
- package/dist/mail/index.js +4 -0
- package/dist/mail/transports/FileMailTransport.d.ts +12 -0
- package/dist/mail/transports/FileMailTransport.js +41 -0
- package/dist/mail/transports/MailgunTransport.d.ts +22 -0
- package/dist/mail/transports/MailgunTransport.js +57 -0
- package/dist/mail/transports/ResendTransport.d.ts +14 -0
- package/dist/mail/transports/ResendTransport.js +55 -0
- package/dist/media/MediaFile.d.ts +48 -0
- package/dist/media/MediaFile.js +104 -0
- package/dist/media/MediaItem.d.ts +47 -0
- package/dist/media/MediaItem.js +106 -0
- package/dist/media/MediaLibrary.d.ts +42 -0
- package/dist/media/MediaLibrary.js +94 -0
- package/dist/media/MediaManager.d.ts +159 -0
- package/dist/media/MediaManager.js +754 -0
- package/dist/media/constants.d.ts +27 -0
- package/dist/media/constants.js +19 -0
- package/dist/media/contracts/MediaOptions.d.ts +8 -0
- package/dist/media/contracts/MediaOptions.js +1 -0
- package/dist/media/contracts/index.d.ts +1 -0
- package/dist/media/contracts/index.js +1 -0
- package/dist/media/image/ImageReconstructionError.d.ts +15 -0
- package/dist/media/image/ImageReconstructionError.js +18 -0
- package/dist/media/image/ImageVariantRenderer.d.ts +44 -0
- package/dist/media/image/ImageVariantRenderer.js +337 -0
- package/dist/media/image/ImageVariantRequest.d.ts +28 -0
- package/dist/media/image/ImageVariantRequest.js +55 -0
- package/dist/media/image/contracts/ImageProcessor.d.ts +46 -0
- package/dist/media/image/contracts/ImageProcessor.js +1 -0
- package/dist/media/image/contracts/ImageVariant.d.ts +31 -0
- package/dist/media/image/contracts/ImageVariant.js +7 -0
- package/dist/media/image/contracts/ImageVariantCacheOptions.d.ts +20 -0
- package/dist/media/image/contracts/ImageVariantCacheOptions.js +1 -0
- package/dist/media/image/contracts/index.d.ts +3 -0
- package/dist/media/image/contracts/index.js +3 -0
- package/dist/media/image/index.d.ts +5 -0
- package/dist/media/image/index.js +5 -0
- package/dist/media/image/processors/SharpImageProcessor.d.ts +25 -0
- package/dist/media/image/processors/SharpImageProcessor.js +112 -0
- package/dist/media/image/processors/index.d.ts +1 -0
- package/dist/media/image/processors/index.js +1 -0
- package/dist/media/index.d.ts +8 -0
- package/dist/media/index.js +8 -0
- package/dist/media/types.d.ts +129 -0
- package/dist/media/types.js +1 -0
- package/dist/queue/FailedJob.d.ts +31 -0
- package/dist/queue/FailedJob.js +41 -0
- package/dist/queue/Queue.d.ts +208 -0
- package/dist/queue/Queue.js +685 -0
- package/dist/queue/QueueEvents.d.ts +31 -0
- package/dist/queue/QueueEvents.js +49 -0
- package/dist/queue/QueueRetryLaterError.d.ts +23 -0
- package/dist/queue/QueueRetryLaterError.js +34 -0
- package/dist/queue/QueueWorker.d.ts +72 -0
- package/dist/queue/QueueWorker.js +236 -0
- package/dist/queue/QueueableJob.d.ts +109 -0
- package/dist/queue/QueueableJob.js +137 -0
- package/dist/queue/QueuedJob.d.ts +31 -0
- package/dist/queue/QueuedJob.js +52 -0
- package/dist/queue/RetryPolicy.d.ts +51 -0
- package/dist/queue/RetryPolicy.js +84 -0
- package/dist/queue/commands/index.d.ts +4 -0
- package/dist/queue/commands/index.js +11 -0
- package/dist/queue/commands/makeJob.d.ts +7 -0
- package/dist/queue/commands/makeJob.js +9 -0
- package/dist/queue/console.d.ts +60 -0
- package/dist/queue/console.js +348 -0
- package/dist/queue/contracts/CreateJob.d.ts +12 -0
- package/dist/queue/contracts/CreateJob.js +1 -0
- package/dist/queue/contracts/QueueDriver.d.ts +122 -0
- package/dist/queue/contracts/QueueDriver.js +1 -0
- package/dist/queue/contracts/QueueEvents.d.ts +61 -0
- package/dist/queue/contracts/QueueEvents.js +1 -0
- package/dist/queue/contracts/QueuePayload.d.ts +136 -0
- package/dist/queue/contracts/QueuePayload.js +1 -0
- package/dist/queue/contracts/QueueRetry.d.ts +43 -0
- package/dist/queue/contracts/QueueRetry.js +1 -0
- package/dist/queue/contracts/QueueService.d.ts +199 -0
- package/dist/queue/contracts/QueueService.js +1 -0
- package/dist/queue/contracts/QueueWorkerLifecycle.d.ts +65 -0
- package/dist/queue/contracts/QueueWorkerLifecycle.js +1 -0
- package/dist/queue/contracts/QueueableJob.d.ts +50 -0
- package/dist/queue/contracts/QueueableJob.js +1 -0
- package/dist/queue/contracts/RedisQueueDriver.d.ts +37 -0
- package/dist/queue/contracts/RedisQueueDriver.js +1 -0
- package/dist/queue/contracts/index.d.ts +9 -0
- package/dist/queue/contracts/index.js +9 -0
- package/dist/queue/createJob.d.ts +18 -0
- package/dist/queue/createJob.js +52 -0
- package/dist/queue/drivers/DatabaseQueueDriver.d.ts +83 -0
- package/dist/queue/drivers/DatabaseQueueDriver.js +393 -0
- package/dist/queue/drivers/RedisQueueDriver.d.ts +102 -0
- package/dist/queue/drivers/RedisQueueDriver.js +641 -0
- package/dist/queue/index.d.ts +13 -0
- package/dist/queue/index.js +13 -0
- package/dist/queue/queueMonitor.d.ts +133 -0
- package/dist/queue/queueMonitor.js +238 -0
- package/dist/scheduler/ScheduledCall.d.ts +25 -0
- package/dist/scheduler/ScheduledCall.js +31 -0
- package/dist/scheduler/ScheduledEvent.d.ts +74 -0
- package/dist/scheduler/ScheduledEvent.js +115 -0
- package/dist/scheduler/ScheduledJob.d.ts +34 -0
- package/dist/scheduler/ScheduledJob.js +50 -0
- package/dist/scheduler/ScheduledOccurrence.d.ts +74 -0
- package/dist/scheduler/ScheduledOccurrence.js +194 -0
- package/dist/scheduler/ScheduledOccurrenceRecorder.d.ts +34 -0
- package/dist/scheduler/ScheduledOccurrenceRecorder.js +106 -0
- package/dist/scheduler/Scheduler.d.ts +76 -0
- package/dist/scheduler/Scheduler.js +186 -0
- package/dist/scheduler/SchedulerWorker.d.ts +37 -0
- package/dist/scheduler/SchedulerWorker.js +119 -0
- package/dist/scheduler/console.d.ts +18 -0
- package/dist/scheduler/console.js +288 -0
- package/dist/scheduler/constants.d.ts +13 -0
- package/dist/scheduler/constants.js +23 -0
- package/dist/scheduler/contracts/Scheduler.d.ts +104 -0
- package/dist/scheduler/contracts/Scheduler.js +1 -0
- package/dist/scheduler/contracts/SchedulerConsole.d.ts +37 -0
- package/dist/scheduler/contracts/SchedulerConsole.js +1 -0
- package/dist/scheduler/contracts/SchedulerWorker.d.ts +18 -0
- package/dist/scheduler/contracts/SchedulerWorker.js +1 -0
- package/dist/scheduler/contracts/index.d.ts +3 -0
- package/dist/scheduler/contracts/index.js +3 -0
- package/dist/scheduler/index.d.ts +9 -0
- package/dist/scheduler/index.js +9 -0
- package/dist/scheduler/scheduleTime.d.ts +30 -0
- package/dist/scheduler/scheduleTime.js +64 -0
- package/dist/security/Security.d.ts +60 -0
- package/dist/security/Security.js +252 -0
- package/dist/security/SecurityError.d.ts +13 -0
- package/dist/security/SecurityError.js +16 -0
- package/dist/security/contracts/SecurityOptions.d.ts +17 -0
- package/dist/security/contracts/SecurityOptions.js +1 -0
- package/dist/security/contracts/SecurityPayload.d.ts +13 -0
- package/dist/security/contracts/SecurityPayload.js +1 -0
- package/dist/security/contracts/index.d.ts +2 -0
- package/dist/security/contracts/index.js +2 -0
- package/dist/security/ensureAppKey.d.ts +16 -0
- package/dist/security/ensureAppKey.js +69 -0
- package/dist/security/index.d.ts +4 -0
- package/dist/security/index.js +4 -0
- package/dist/serialization/Serializable.d.ts +17 -0
- package/dist/serialization/Serializable.js +1 -0
- package/dist/serialization/SerializationError.d.ts +40 -0
- package/dist/serialization/SerializationError.js +42 -0
- package/dist/serialization/SerializationRegistry.d.ts +76 -0
- package/dist/serialization/SerializationRegistry.js +153 -0
- package/dist/serialization/SerializationRegistryError.d.ts +18 -0
- package/dist/serialization/SerializationRegistryError.js +18 -0
- package/dist/serialization/Serializer.d.ts +37 -0
- package/dist/serialization/Serializer.js +477 -0
- package/dist/serialization/contracts/SerializableClass.d.ts +20 -0
- package/dist/serialization/contracts/SerializableClass.js +1 -0
- package/dist/serialization/contracts/SerializedValue.d.ts +59 -0
- package/dist/serialization/contracts/SerializedValue.js +19 -0
- package/dist/serialization/contracts/SerializerOptions.d.ts +17 -0
- package/dist/serialization/contracts/SerializerOptions.js +1 -0
- package/dist/serialization/contracts/SerializerService.d.ts +26 -0
- package/dist/serialization/contracts/SerializerService.js +1 -0
- package/dist/serialization/contracts/index.d.ts +4 -0
- package/dist/serialization/contracts/index.js +4 -0
- package/dist/serialization/index.d.ts +6 -0
- package/dist/serialization/index.js +6 -0
- package/dist/server/App.d.ts +141 -0
- package/dist/server/App.js +225 -0
- package/dist/server/RequestContext.d.ts +42 -0
- package/dist/server/RequestContext.js +95 -0
- package/dist/server/appContext.d.ts +34 -0
- package/dist/server/appContext.js +42 -0
- package/dist/server/index.d.ts +3 -0
- package/dist/server/index.js +3 -0
- package/dist/ssr/constants.d.ts +6 -0
- package/dist/ssr/constants.js +6 -0
- package/dist/ssr/contracts/DocumentHead.d.ts +32 -0
- package/dist/ssr/contracts/DocumentHead.js +1 -0
- package/dist/ssr/contracts/SsrRenderContext.d.ts +23 -0
- package/dist/ssr/contracts/SsrRenderContext.js +1 -0
- package/dist/ssr/contracts/SsrRenderResult.d.ts +21 -0
- package/dist/ssr/contracts/SsrRenderResult.js +1 -0
- package/dist/ssr/contracts/SsrRenderer.d.ts +9 -0
- package/dist/ssr/contracts/SsrRenderer.js +1 -0
- package/dist/ssr/contracts/SsrRequest.d.ts +16 -0
- package/dist/ssr/contracts/SsrRequest.js +1 -0
- package/dist/ssr/contracts/index.d.ts +5 -0
- package/dist/ssr/contracts/index.js +1 -0
- package/dist/ssr/createSsrRenderContext.d.ts +9 -0
- package/dist/ssr/createSsrRenderContext.js +20 -0
- package/dist/ssr/fastify/contracts/FastifySsrOptions.d.ts +21 -0
- package/dist/ssr/fastify/contracts/FastifySsrOptions.js +1 -0
- package/dist/ssr/fastify/contracts/index.d.ts +1 -0
- package/dist/ssr/fastify/contracts/index.js +1 -0
- package/dist/ssr/fastify/fastifySsr.d.ts +25 -0
- package/dist/ssr/fastify/fastifySsr.js +89 -0
- package/dist/ssr/fastify/index.d.ts +2 -0
- package/dist/ssr/fastify/index.js +1 -0
- package/dist/ssr/index.d.ts +6 -0
- package/dist/ssr/index.js +5 -0
- package/dist/ssr/renderDocumentHead.d.ts +8 -0
- package/dist/ssr/renderDocumentHead.js +62 -0
- package/dist/ssr/renderSsrDocument.d.ts +14 -0
- package/dist/ssr/renderSsrDocument.js +28 -0
- package/dist/ssr/serializeSsrState.d.ts +10 -0
- package/dist/ssr/serializeSsrState.js +18 -0
- package/dist/ssr/vite/contracts/ViteSsrOptions.d.ts +45 -0
- package/dist/ssr/vite/contracts/ViteSsrOptions.js +1 -0
- package/dist/ssr/vite/contracts/index.d.ts +1 -0
- package/dist/ssr/vite/contracts/index.js +1 -0
- package/dist/ssr/vite/fastifyViteSsr.d.ts +24 -0
- package/dist/ssr/vite/fastifyViteSsr.js +213 -0
- package/dist/ssr/vite/index.d.ts +4 -0
- package/dist/ssr/vite/index.js +2 -0
- package/dist/ssr/vite/viteSsrManifest.d.ts +16 -0
- package/dist/ssr/vite/viteSsrManifest.js +63 -0
- package/dist/storage/Storage.d.ts +244 -0
- package/dist/storage/Storage.js +348 -0
- package/dist/storage/contents.d.ts +8 -0
- package/dist/storage/contents.js +18 -0
- package/dist/storage/contracts/StorageListing.d.ts +50 -0
- package/dist/storage/contracts/StorageListing.js +1 -0
- package/dist/storage/contracts/index.d.ts +1 -0
- package/dist/storage/contracts/index.js +1 -0
- package/dist/storage/drivers/FlystorageDisk.d.ts +185 -0
- package/dist/storage/drivers/FlystorageDisk.js +250 -0
- package/dist/storage/drivers/FlystorageListing.d.ts +27 -0
- package/dist/storage/drivers/FlystorageListing.js +69 -0
- package/dist/storage/drivers/LocalStorageDisk.d.ts +25 -0
- package/dist/storage/drivers/LocalStorageDisk.js +38 -0
- package/dist/storage/drivers/S3StorageDisk.d.ts +17 -0
- package/dist/storage/drivers/S3StorageDisk.js +102 -0
- package/dist/storage/drivers/index.d.ts +3 -0
- package/dist/storage/drivers/index.js +3 -0
- package/dist/storage/index.d.ts +7 -0
- package/dist/storage/index.js +7 -0
- package/dist/storage/mime.d.ts +7 -0
- package/dist/storage/mime.js +28 -0
- package/dist/storage/path.d.ts +22 -0
- package/dist/storage/path.js +61 -0
- package/dist/storage/types.d.ts +218 -0
- package/dist/storage/types.js +1 -0
- package/dist/url/UrlGenerator.d.ts +32 -0
- package/dist/url/UrlGenerator.js +61 -0
- package/dist/url/contracts/UrlGeneratorOptions.d.ts +13 -0
- package/dist/url/contracts/UrlGeneratorOptions.js +1 -0
- package/dist/url/contracts/index.d.ts +1 -0
- package/dist/url/contracts/index.js +1 -0
- package/dist/url/index.d.ts +2 -0
- package/dist/url/index.js +2 -0
- package/dist/validation/index.d.ts +28 -0
- package/dist/validation/index.js +260 -0
- package/package.json +290 -0
- package/src/ai/AIErrors.ts +46 -0
- package/src/ai/AIFailover.ts +101 -0
- package/src/ai/AIProviders.ts +228 -0
- package/src/ai/AIQuotaDeferredError.ts +26 -0
- package/src/ai/AIRateLimiter.ts +880 -0
- package/src/ai/Agent.ts +3630 -0
- package/src/ai/AgentHistory.ts +576 -0
- package/src/ai/AgentRunJob.ts +65 -0
- package/src/ai/Ai.ts +2176 -0
- package/src/ai/AiConversation.ts +49 -0
- package/src/ai/AiExecutionContext.ts +19 -0
- package/src/ai/AiMessage.ts +131 -0
- package/src/ai/AiRateLimitBucket.ts +163 -0
- package/src/ai/AiRateLimitReservation.ts +117 -0
- package/src/ai/AiRequest.ts +466 -0
- package/src/ai/Estimates.ts +36 -0
- package/src/ai/Models.ts +373 -0
- package/src/ai/OpenAIProviderError.ts +98 -0
- package/src/ai/OpenAIQuotaRetry.ts +183 -0
- package/src/ai/ProviderCosts.ts +156 -0
- package/src/ai/README.md +187 -0
- package/src/ai/ResponsesProviderCall.ts +34 -0
- package/src/ai/agentCitations.ts +186 -0
- package/src/ai/contracts/AI.ts +380 -0
- package/src/ai/contracts/Agent.ts +539 -0
- package/src/ai/contracts/AiRequestRunCostSummary.ts +31 -0
- package/src/ai/contracts/Pricing.ts +95 -0
- package/src/ai/contracts/Providers.ts +73 -0
- package/src/ai/contracts/QuotaRetry.ts +39 -0
- package/src/ai/contracts/RateLimits.ts +49 -0
- package/src/ai/contracts/ResponsesProviderCall.ts +30 -0
- package/src/ai/contracts/index.ts +8 -0
- package/src/ai/examples/Conversation.ts +12 -0
- package/src/ai/examples/HelpAgent.ts +27 -0
- package/src/ai/examples/createHelpImage.ts +13 -0
- package/src/ai/index.ts +27 -0
- package/src/ai/registry.ts +70 -0
- package/src/ai/sdkNodeCompatibility.d.ts +76 -0
- package/src/ai/toolCallRecovery.ts +82 -0
- package/src/ai/toolHelpers.ts +145 -0
- package/src/auth/Auth.ts +1422 -0
- package/src/auth/AuthProvider.ts +251 -0
- package/src/auth/AuthToken.ts +239 -0
- package/src/auth/PasswordResetToken.ts +93 -0
- package/src/auth/README.md +396 -0
- package/src/auth/UserIdentity.ts +112 -0
- package/src/auth/contracts/AuthProviderDriver.ts +114 -0
- package/src/auth/contracts/index.ts +1 -0
- package/src/auth/examples/runPasswordAuth.ts +45 -0
- package/src/auth/index.ts +8 -0
- package/src/auth/passwordHash.ts +160 -0
- package/src/auth/providers/GoogleAuthProvider.ts +470 -0
- package/src/auth/providers/PasswordAuthProvider.ts +256 -0
- package/src/auth/providers/index.ts +3 -0
- package/src/auth/providers/resolveAuthProviders.ts +166 -0
- package/src/cache/Cache.ts +151 -0
- package/src/cache/README.md +137 -0
- package/src/cache/contracts/CacheDriver.ts +11 -0
- package/src/cache/contracts/CacheOperations.ts +28 -0
- package/src/cache/contracts/CacheOptions.ts +56 -0
- package/src/cache/contracts/CacheRepository.ts +62 -0
- package/src/cache/contracts/index.ts +4 -0
- package/src/cache/drivers/CacheManagerDriver.ts +84 -0
- package/src/cache/drivers/createCacheDriver.ts +191 -0
- package/src/cache/examples/runNoteCache.ts +37 -0
- package/src/cache/index.ts +2 -0
- package/src/cli/Cli.ts +110 -0
- package/src/cli/README.md +164 -0
- package/src/cli/commands/repl.ts +29 -0
- package/src/cli/contracts/CliCommand.ts +33 -0
- package/src/cli/contracts/CliConfig.ts +10 -0
- package/src/cli/contracts/CliOptions.ts +13 -0
- package/src/cli/contracts/CommandDefinition.ts +19 -0
- package/src/cli/contracts/ReplOptions.ts +11 -0
- package/src/cli/contracts/index.ts +5 -0
- package/src/cli/defineCommand.ts +25 -0
- package/src/cli/index.ts +5 -0
- package/src/cli/runDb3.ts +63 -0
- package/src/cli/runRepl.ts +55 -0
- package/src/config/Config.ts +110 -0
- package/src/config/README.md +142 -0
- package/src/config/env.ts +164 -0
- package/src/config/examples/loadNotesConfig.ts +29 -0
- package/src/config/examples/runConfig.ts +40 -0
- package/src/config/index.ts +2 -0
- package/src/db/ActiveProjection.ts +311 -0
- package/src/db/ActiveQueryBuilder.ts +831 -0
- package/src/db/ActiveRecord.ts +1317 -0
- package/src/db/Database.ts +1283 -0
- package/src/db/FieldType.ts +1243 -0
- package/src/db/README.md +508 -0
- package/src/db/SoftDeletes.ts +158 -0
- package/src/db/commands/check.ts +10 -0
- package/src/db/commands/index.ts +19 -0
- package/src/db/commands/makeMigration.ts +11 -0
- package/src/db/commands/migrate.ts +10 -0
- package/src/db/connection.ts +68 -0
- package/src/db/contracts/ActiveRecordDefinition.ts +69 -0
- package/src/db/contracts/DatabaseBackup.ts +7 -0
- package/src/db/contracts/DatabaseMigrationsConfig.ts +10 -0
- package/src/db/contracts/index.ts +3 -0
- package/src/db/dialects/columnTypes.ts +103 -0
- package/src/db/dialects/index.ts +6 -0
- package/src/db/dialects/mariadb.ts +51 -0
- package/src/db/dialects/mysql.ts +277 -0
- package/src/db/dialects/postgres.ts +143 -0
- package/src/db/dialects/resolveDialect.ts +88 -0
- package/src/db/dialects/types.ts +59 -0
- package/src/db/errors.ts +22 -0
- package/src/db/examples/DefinedUser.ts +20 -0
- package/src/db/examples/FieldNote.ts +27 -0
- package/src/db/examples/KnowledgeNote.ts +29 -0
- package/src/db/examples/NoteCodeField.ts +9 -0
- package/src/db/examples/createNotesTogether.ts +24 -0
- package/src/db/examples/outputs/workspace-notes.json +9 -0
- package/src/db/examples/runFieldNotes.ts +51 -0
- package/src/db/examples/runNoteMigrations.ts +64 -0
- package/src/db/examples/runWorkspaceNotes.ts +86 -0
- package/src/db/examples/workspaceNotes.ts +57 -0
- package/src/db/fields/BooleanField.ts +128 -0
- package/src/db/fields/CharUuidField.ts +91 -0
- package/src/db/fields/ChoiceStringField.ts +97 -0
- package/src/db/fields/DecimalField.ts +157 -0
- package/src/db/fields/EmailField.ts +79 -0
- package/src/db/fields/EncryptedJsonField.ts +211 -0
- package/src/db/fields/IntegerField.ts +200 -0
- package/src/db/fields/JsonField.ts +108 -0
- package/src/db/fields/JsonStringField.ts +63 -0
- package/src/db/fields/LinkField.ts +502 -0
- package/src/db/fields/PasswordField.ts +294 -0
- package/src/db/fields/StringField.ts +154 -0
- package/src/db/fields/StringListField.ts +179 -0
- package/src/db/fields/TextField.ts +71 -0
- package/src/db/fields/TimestampField.ts +164 -0
- package/src/db/fields/UlidField.ts +189 -0
- package/src/db/fields/UrlField.ts +97 -0
- package/src/db/fields/VectorField.ts +266 -0
- package/src/db/fields/createField.ts +22 -0
- package/src/db/fields/field.ts +209 -0
- package/src/db/fields/index.ts +76 -0
- package/src/db/fields/resolveFields.ts +69 -0
- package/src/db/index.ts +13 -0
- package/src/db/migrations/DatabaseMigrationManager.ts +756 -0
- package/src/db/migrations/DatabaseSchemaInspector.ts +541 -0
- package/src/db/migrations/KnexMigrationRenderer.ts +490 -0
- package/src/db/migrations/ModelSchemaCollector.ts +240 -0
- package/src/db/migrations/SchemaDiffer.ts +541 -0
- package/src/db/migrations/SchemaNames.ts +62 -0
- package/src/db/migrations/SchemaSnapshotSerializer.ts +59 -0
- package/src/db/migrations/contracts/DatabaseMigration.ts +143 -0
- package/src/db/migrations/contracts/SchemaChange.ts +113 -0
- package/src/db/migrations/contracts/SchemaSnapshot.ts +122 -0
- package/src/db/migrations/contracts/index.ts +3 -0
- package/src/db/migrations/errors.ts +45 -0
- package/src/db/migrations/index.ts +10 -0
- package/src/db/migrations/promoteDestructiveSchemaChanges.ts +120 -0
- package/src/db/queryMonitor.ts +549 -0
- package/src/db/sqlErrors.ts +36 -0
- package/src/db/test/db.ts +159 -0
- package/src/devtools/HttpEventDispatcher.ts +214 -0
- package/src/devtools/contracts/DevtoolsEventDispatcher.ts +57 -0
- package/src/devtools/contracts/index.ts +1 -0
- package/src/devtools/environment.ts +18 -0
- package/src/devtools/index.ts +3 -0
- package/src/events/Events.ts +165 -0
- package/src/events/README.md +106 -0
- package/src/events/contracts/EventConstructor.ts +12 -0
- package/src/events/contracts/EventListener.ts +8 -0
- package/src/events/contracts/EventUnsubscribe.ts +4 -0
- package/src/events/contracts/index.ts +3 -0
- package/src/events/examples/NoteSaved.ts +9 -0
- package/src/events/examples/runNoteEvents.ts +31 -0
- package/src/events/index.ts +2 -0
- package/src/flows/FlowBlockRegistry.ts +79 -0
- package/src/flows/FlowCompiler.ts +624 -0
- package/src/flows/FlowDefinitionError.ts +24 -0
- package/src/flows/FlowStepJob.ts +54 -0
- package/src/flows/FlowValueValidator.ts +120 -0
- package/src/flows/Flows.ts +1118 -0
- package/src/flows/README.md +144 -0
- package/src/flows/blocks/FlowInput.ts +32 -0
- package/src/flows/blocks/FlowOutput.ts +32 -0
- package/src/flows/blocks/Subflow.ts +24 -0
- package/src/flows/blocks/index.ts +11 -0
- package/src/flows/constants.ts +62 -0
- package/src/flows/contracts/FlowBlock.ts +73 -0
- package/src/flows/contracts/FlowCompiler.ts +32 -0
- package/src/flows/contracts/FlowDefinition.ts +126 -0
- package/src/flows/contracts/FlowDefinitionStore.ts +52 -0
- package/src/flows/contracts/FlowRun.ts +44 -0
- package/src/flows/contracts/FlowValue.ts +54 -0
- package/src/flows/contracts/FlowsService.ts +39 -0
- package/src/flows/contracts/index.ts +7 -0
- package/src/flows/defineBlock.ts +25 -0
- package/src/flows/drivers/FileFlowDefinitionStore.ts +372 -0
- package/src/flows/drivers/index.ts +1 -0
- package/src/flows/errors.ts +22 -0
- package/src/flows/examples/FlowExampleApp.ts +15 -0
- package/src/flows/examples/createTextFlow.ts +14 -0
- package/src/flows/examples/normalizeTextBlock.ts +15 -0
- package/src/flows/examples/runTextFlow.ts +46 -0
- package/src/flows/examples/uppercaseTextBlock.ts +11 -0
- package/src/flows/index.ts +13 -0
- package/src/flows/models/FlowRun.ts +164 -0
- package/src/flows/models/FlowRunEvent.ts +108 -0
- package/src/flows/models/FlowStepRun.ts +176 -0
- package/src/flows/models/index.ts +16 -0
- package/src/index.ts +40 -0
- package/src/logging/Log.ts +100 -0
- package/src/logging/README.md +139 -0
- package/src/logging/contracts/HttpExchange.ts +53 -0
- package/src/logging/contracts/Logger.ts +45 -0
- package/src/logging/contracts/LoggerDriver.ts +19 -0
- package/src/logging/contracts/LoggingOptions.ts +51 -0
- package/src/logging/contracts/index.ts +4 -0
- package/src/logging/drivers/PinoLoggerDriver.ts +376 -0
- package/src/logging/drivers/index.ts +1 -0
- package/src/logging/examples/runNoteLogs.ts +38 -0
- package/src/logging/index.ts +3 -0
- package/src/logging/transports/DevtoolsLogTransport.ts +142 -0
- package/src/mail/Mail.ts +188 -0
- package/src/mail/README.md +206 -0
- package/src/mail/examples/runMailPreview.ts +44 -0
- package/src/mail/examples/welcomeMessage.ts +26 -0
- package/src/mail/index.ts +4 -0
- package/src/mail/transports/FileMailTransport.ts +58 -0
- package/src/mail/transports/MailgunTransport.ts +85 -0
- package/src/mail/transports/ResendTransport.ts +80 -0
- package/src/media/MediaFile.ts +132 -0
- package/src/media/MediaItem.ts +132 -0
- package/src/media/MediaLibrary.ts +117 -0
- package/src/media/MediaManager.ts +874 -0
- package/src/media/README.md +358 -0
- package/src/media/constants.ts +31 -0
- package/src/media/contracts/MediaOptions.ts +9 -0
- package/src/media/contracts/index.ts +1 -0
- package/src/media/examples/createPrivateFileServer.ts +55 -0
- package/src/media/examples/runPrivateFiles.ts +45 -0
- package/src/media/examples/runProjectMedia.ts +46 -0
- package/src/media/image/ImageReconstructionError.ts +18 -0
- package/src/media/image/ImageVariantRenderer.ts +386 -0
- package/src/media/image/ImageVariantRequest.ts +65 -0
- package/src/media/image/contracts/ImageProcessor.ts +53 -0
- package/src/media/image/contracts/ImageVariant.ts +37 -0
- package/src/media/image/contracts/ImageVariantCacheOptions.ts +21 -0
- package/src/media/image/contracts/index.ts +3 -0
- package/src/media/image/index.ts +5 -0
- package/src/media/image/processors/SharpImageProcessor.ts +121 -0
- package/src/media/image/processors/index.ts +1 -0
- package/src/media/index.ts +8 -0
- package/src/media/types.ts +168 -0
- package/src/queue/FailedJob.ts +58 -0
- package/src/queue/Queue.ts +938 -0
- package/src/queue/QueueEvents.ts +57 -0
- package/src/queue/QueueRetryLaterError.ts +40 -0
- package/src/queue/QueueWorker.ts +296 -0
- package/src/queue/QueueableJob.ts +167 -0
- package/src/queue/QueuedJob.ts +69 -0
- package/src/queue/README.md +368 -0
- package/src/queue/RetryPolicy.ts +129 -0
- package/src/queue/commands/index.ts +13 -0
- package/src/queue/commands/makeJob.ts +11 -0
- package/src/queue/console.ts +518 -0
- package/src/queue/contracts/CreateJob.ts +13 -0
- package/src/queue/contracts/QueueDriver.ts +135 -0
- package/src/queue/contracts/QueueEvents.ts +77 -0
- package/src/queue/contracts/QueuePayload.ts +150 -0
- package/src/queue/contracts/QueueRetry.ts +47 -0
- package/src/queue/contracts/QueueService.ts +219 -0
- package/src/queue/contracts/QueueWorkerLifecycle.ts +71 -0
- package/src/queue/contracts/QueueableJob.ts +56 -0
- package/src/queue/contracts/RedisQueueDriver.ts +37 -0
- package/src/queue/contracts/index.ts +9 -0
- package/src/queue/createJob.ts +54 -0
- package/src/queue/drivers/DatabaseQueueDriver.ts +449 -0
- package/src/queue/drivers/RedisQueueDriver.ts +733 -0
- package/src/queue/examples/DeferredReportJob.ts +25 -0
- package/src/queue/examples/GenerateReportJob.ts +37 -0
- package/src/queue/examples/WriteReportJob.ts +37 -0
- package/src/queue/examples/createAndProcessReportJob.ts +29 -0
- package/src/queue/examples/dispatchReportWorkflows.ts +40 -0
- package/src/queue/examples/manageReportRetries.ts +47 -0
- package/src/queue/examples/outputs/create-and-process-report-job.json +6 -0
- package/src/queue/examples/outputs/dispatch-report-workflows.json +14 -0
- package/src/queue/examples/outputs/manage-report-retries.json +24 -0
- package/src/queue/examples/outputs/queue-reports.json +11 -0
- package/src/queue/examples/reportConsole.ts +47 -0
- package/src/queue/examples/runBackpressure.ts +27 -0
- package/src/queue/examples/runQueueReports.ts +80 -0
- package/src/queue/examples/runQueueWorkflows.ts +43 -0
- package/src/queue/index.ts +13 -0
- package/src/queue/queueMonitor.ts +368 -0
- package/src/scheduler/README.md +139 -0
- package/src/scheduler/ScheduledCall.ts +36 -0
- package/src/scheduler/ScheduledEvent.ts +149 -0
- package/src/scheduler/ScheduledJob.ts +58 -0
- package/src/scheduler/ScheduledOccurrence.ts +250 -0
- package/src/scheduler/ScheduledOccurrenceRecorder.ts +125 -0
- package/src/scheduler/Scheduler.ts +225 -0
- package/src/scheduler/SchedulerWorker.ts +151 -0
- package/src/scheduler/console.ts +368 -0
- package/src/scheduler/constants.ts +27 -0
- package/src/scheduler/contracts/Scheduler.ts +123 -0
- package/src/scheduler/contracts/SchedulerConsole.ts +40 -0
- package/src/scheduler/contracts/SchedulerWorker.ts +23 -0
- package/src/scheduler/contracts/index.ts +3 -0
- package/src/scheduler/examples/RecoverableSummaryJob.ts +18 -0
- package/src/scheduler/examples/WriteDailySummaryJob.ts +17 -0
- package/src/scheduler/examples/registerDailySummary.ts +13 -0
- package/src/scheduler/examples/runDailySummary.ts +46 -0
- package/src/scheduler/examples/runScheduledReplay.ts +60 -0
- package/src/scheduler/index.ts +9 -0
- package/src/scheduler/scheduleTime.ts +78 -0
- package/src/security/README.md +130 -0
- package/src/security/Security.ts +346 -0
- package/src/security/SecurityError.ts +16 -0
- package/src/security/contracts/SecurityOptions.ts +20 -0
- package/src/security/contracts/SecurityPayload.ts +14 -0
- package/src/security/contracts/index.ts +2 -0
- package/src/security/ensureAppKey.ts +82 -0
- package/src/security/examples/runSecretRoundTrip.ts +42 -0
- package/src/security/index.ts +4 -0
- package/src/serialization/README.md +169 -0
- package/src/serialization/Serializable.ts +17 -0
- package/src/serialization/SerializationError.ts +91 -0
- package/src/serialization/SerializationRegistry.ts +208 -0
- package/src/serialization/SerializationRegistryError.ts +24 -0
- package/src/serialization/Serializer.ts +793 -0
- package/src/serialization/contracts/SerializableClass.ts +26 -0
- package/src/serialization/contracts/SerializedValue.ts +71 -0
- package/src/serialization/contracts/SerializerOptions.ts +19 -0
- package/src/serialization/contracts/SerializerService.ts +29 -0
- package/src/serialization/contracts/index.ts +4 -0
- package/src/serialization/examples/ExportRequest.ts +25 -0
- package/src/serialization/examples/runExportSerialization.ts +24 -0
- package/src/serialization/index.ts +6 -0
- package/src/server/App.ts +326 -0
- package/src/server/README.md +219 -0
- package/src/server/RequestContext.ts +122 -0
- package/src/server/appContext.ts +59 -0
- package/src/server/examples/createFirstServer.ts +25 -0
- package/src/server/examples/startFirstServer.ts +19 -0
- package/src/server/index.ts +16 -0
- package/src/ssr/README.md +158 -0
- package/src/ssr/constants.ts +8 -0
- package/src/ssr/contracts/DocumentHead.ts +35 -0
- package/src/ssr/contracts/SsrRenderContext.ts +25 -0
- package/src/ssr/contracts/SsrRenderResult.ts +23 -0
- package/src/ssr/contracts/SsrRenderer.ts +12 -0
- package/src/ssr/contracts/SsrRequest.ts +17 -0
- package/src/ssr/contracts/index.ts +19 -0
- package/src/ssr/createSsrRenderContext.ts +25 -0
- package/src/ssr/examples/createPublicPageServer.ts +32 -0
- package/src/ssr/examples/runPublicPages.ts +25 -0
- package/src/ssr/fastify/contracts/FastifySsrOptions.ts +24 -0
- package/src/ssr/fastify/contracts/index.ts +5 -0
- package/src/ssr/fastify/fastifySsr.ts +110 -0
- package/src/ssr/fastify/index.ts +2 -0
- package/src/ssr/index.ts +10 -0
- package/src/ssr/renderDocumentHead.ts +72 -0
- package/src/ssr/renderSsrDocument.ts +35 -0
- package/src/ssr/serializeSsrState.ts +19 -0
- package/src/ssr/vite/contracts/ViteSsrOptions.ts +52 -0
- package/src/ssr/vite/contracts/index.ts +6 -0
- package/src/ssr/vite/fastifyViteSsr.ts +279 -0
- package/src/ssr/vite/index.ts +4 -0
- package/src/ssr/vite/viteSsrManifest.ts +92 -0
- package/src/storage/README.md +310 -0
- package/src/storage/Storage.ts +392 -0
- package/src/storage/contents.ts +23 -0
- package/src/storage/contracts/StorageListing.ts +55 -0
- package/src/storage/contracts/index.ts +1 -0
- package/src/storage/drivers/FlystorageDisk.ts +295 -0
- package/src/storage/drivers/FlystorageListing.ts +78 -0
- package/src/storage/drivers/LocalStorageDisk.ts +45 -0
- package/src/storage/drivers/S3StorageDisk.ts +114 -0
- package/src/storage/drivers/index.ts +3 -0
- package/src/storage/examples/runStorage.ts +37 -0
- package/src/storage/examples/runStreamExport.ts +41 -0
- package/src/storage/examples/writeCsvExport.ts +45 -0
- package/src/storage/index.ts +7 -0
- package/src/storage/mime.ts +30 -0
- package/src/storage/path.ts +76 -0
- package/src/storage/types.ts +251 -0
- package/src/url/README.md +41 -0
- package/src/url/UrlGenerator.ts +72 -0
- package/src/url/contracts/UrlGeneratorOptions.ts +14 -0
- package/src/url/contracts/index.ts +1 -0
- package/src/url/examples/runApplicationLinks.ts +33 -0
- package/src/url/index.ts +2 -0
- package/src/validation/README.md +433 -0
- package/src/validation/examples/runNoteValidation.ts +18 -0
- package/src/validation/examples/validateNoteInput.ts +31 -0
- package/src/validation/index.ts +398 -0
- package/templates/AGENTS.md +15 -0
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { ActiveRecord, PasswordField, type FieldBuilder } from '../db/index.js';
|
|
2
|
+
import type * as auth from './contracts/index.js';
|
|
3
|
+
import { type PasswordHash } from './passwordHash.js';
|
|
4
|
+
export declare const PASSWORD_AUTH_PROVIDER = "password";
|
|
5
|
+
/** Safe provider metadata suitable for account-management screens. */
|
|
6
|
+
export interface AuthProviderSummary {
|
|
7
|
+
/** Persistent provider-row identifier used for scoped removal. */
|
|
8
|
+
id: string;
|
|
9
|
+
/** Stable provider name such as password or google. */
|
|
10
|
+
provider: string;
|
|
11
|
+
/** Human-friendly provider label. */
|
|
12
|
+
label: string | null;
|
|
13
|
+
/** Email address reported or owned by the provider. */
|
|
14
|
+
email: string | null;
|
|
15
|
+
/** Avatar URL reported by the provider. */
|
|
16
|
+
avatarUrl: string | null;
|
|
17
|
+
/** Most recent successful login through this provider. */
|
|
18
|
+
lastLoginAt: string | null;
|
|
19
|
+
/** Time the provider was linked to the account. */
|
|
20
|
+
createdAt: string | null;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Persisted authentication method linked to one user account.
|
|
24
|
+
*
|
|
25
|
+
* Password, Google, magic-link, and future login mechanisms all share this
|
|
26
|
+
* model. Provider-specific verification happens in the auth service or a
|
|
27
|
+
* provider driver; this model owns the durable account-to-provider link.
|
|
28
|
+
*/
|
|
29
|
+
export declare class AuthProvider extends ActiveRecord {
|
|
30
|
+
static table: string;
|
|
31
|
+
static primaryKey: string;
|
|
32
|
+
static comment: string;
|
|
33
|
+
/**
|
|
34
|
+
* Defines the provider link, credential, and display metadata columns.
|
|
35
|
+
*
|
|
36
|
+
* @param field - Framework field builder.
|
|
37
|
+
* @returns Field definitions for the auth provider table.
|
|
38
|
+
*/
|
|
39
|
+
static fields(field: FieldBuilder): {
|
|
40
|
+
id: import("../db/index.js").UlidField;
|
|
41
|
+
userId: import("../db/index.js").StringField;
|
|
42
|
+
provider: import("../db/index.js").StringField;
|
|
43
|
+
providerUserId: import("../db/index.js").StringField;
|
|
44
|
+
label: import("../db/index.js").StringField;
|
|
45
|
+
email: import("../db/index.js").EmailField;
|
|
46
|
+
emailVerifiedAt: import("../db/index.js").TimestampField;
|
|
47
|
+
name: import("../db/index.js").StringField;
|
|
48
|
+
avatarUrl: import("../db/index.js").StringField;
|
|
49
|
+
password: PasswordField;
|
|
50
|
+
profile: import("../db/index.js").JsonStringField<Record<string, unknown>>;
|
|
51
|
+
lastLoginAt: import("../db/index.js").TimestampField;
|
|
52
|
+
createdAt: import("../db/index.js").TimestampField;
|
|
53
|
+
updatedAt: import("../db/index.js").TimestampField;
|
|
54
|
+
};
|
|
55
|
+
/**
|
|
56
|
+
* Applies normalized provider metadata to this row.
|
|
57
|
+
*
|
|
58
|
+
* @param profile - Provider profile returned by a driver.
|
|
59
|
+
*/
|
|
60
|
+
applyProfile(profile: auth.AuthProviderProfile): void;
|
|
61
|
+
/**
|
|
62
|
+
* Marks this provider as used for authentication.
|
|
63
|
+
*
|
|
64
|
+
* @param date - Login time to store.
|
|
65
|
+
*/
|
|
66
|
+
markUsed(date?: Date): void;
|
|
67
|
+
/**
|
|
68
|
+
* Returns true when this provider stores a local password credential.
|
|
69
|
+
*
|
|
70
|
+
* @returns Whether this row is the built-in password provider.
|
|
71
|
+
*/
|
|
72
|
+
isPasswordProvider(): boolean;
|
|
73
|
+
/**
|
|
74
|
+
* Returns settings-safe provider metadata.
|
|
75
|
+
*
|
|
76
|
+
* Password hashes, provider-owned identifiers, and raw profile metadata are
|
|
77
|
+
* deliberately excluded from this projection.
|
|
78
|
+
*
|
|
79
|
+
* @returns Provider summary for account-management APIs.
|
|
80
|
+
*/
|
|
81
|
+
toSummary(): AuthProviderSummary;
|
|
82
|
+
/**
|
|
83
|
+
* Verifies a plaintext password against the provider password hash.
|
|
84
|
+
*
|
|
85
|
+
* @param plainText - Password supplied by the user.
|
|
86
|
+
* @param passwordHash - Password hashing service to use.
|
|
87
|
+
* @returns True when the password matches this provider.
|
|
88
|
+
*/
|
|
89
|
+
verifyPassword(plainText: string, passwordHash?: PasswordHash): Promise<boolean>;
|
|
90
|
+
id: string | null;
|
|
91
|
+
userId: string | null;
|
|
92
|
+
provider: string | null;
|
|
93
|
+
providerUserId: string | null;
|
|
94
|
+
label: string | null;
|
|
95
|
+
email: string | null;
|
|
96
|
+
emailVerifiedAt: Date | null;
|
|
97
|
+
name: string | null;
|
|
98
|
+
avatarUrl: string | null;
|
|
99
|
+
password: null;
|
|
100
|
+
profile: Record<string, unknown> | null;
|
|
101
|
+
lastLoginAt: Date | null;
|
|
102
|
+
createdAt: Date | null;
|
|
103
|
+
updatedAt: Date | null;
|
|
104
|
+
}
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
import { ActiveRecord, PasswordField, } from '../db/index.js';
|
|
2
|
+
import { defaultPasswordHash, } from './passwordHash.js';
|
|
3
|
+
export const PASSWORD_AUTH_PROVIDER = 'password';
|
|
4
|
+
/**
|
|
5
|
+
* Persisted authentication method linked to one user account.
|
|
6
|
+
*
|
|
7
|
+
* Password, Google, magic-link, and future login mechanisms all share this
|
|
8
|
+
* model. Provider-specific verification happens in the auth service or a
|
|
9
|
+
* provider driver; this model owns the durable account-to-provider link.
|
|
10
|
+
*/
|
|
11
|
+
export class AuthProvider extends ActiveRecord {
|
|
12
|
+
static table = 'auth_providers';
|
|
13
|
+
static primaryKey = 'id';
|
|
14
|
+
static comment = 'Authentication provider linked to a user account. Password credentials and external login identities share this table.';
|
|
15
|
+
/**
|
|
16
|
+
* Defines the provider link, credential, and display metadata columns.
|
|
17
|
+
*
|
|
18
|
+
* @param field - Framework field builder.
|
|
19
|
+
* @returns Field definitions for the auth provider table.
|
|
20
|
+
*/
|
|
21
|
+
static fields(field) {
|
|
22
|
+
return {
|
|
23
|
+
id: field.ulid(),
|
|
24
|
+
userId: field.string({
|
|
25
|
+
column: 'user_id',
|
|
26
|
+
required: true,
|
|
27
|
+
maxLength: 255,
|
|
28
|
+
length: 255,
|
|
29
|
+
comment: 'User account this authentication provider belongs to.',
|
|
30
|
+
indexes: [
|
|
31
|
+
{
|
|
32
|
+
name: 'auth_providers_user_id_index',
|
|
33
|
+
columns: ['user_id'],
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
name: 'auth_providers_user_provider_unique',
|
|
37
|
+
columns: ['user_id', 'provider'],
|
|
38
|
+
unique: true,
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
name: 'auth_providers_provider_user_id_unique',
|
|
42
|
+
columns: ['provider', 'provider_user_id'],
|
|
43
|
+
unique: true,
|
|
44
|
+
},
|
|
45
|
+
],
|
|
46
|
+
}),
|
|
47
|
+
provider: field.string({
|
|
48
|
+
required: true,
|
|
49
|
+
maxLength: 64,
|
|
50
|
+
length: 64,
|
|
51
|
+
comment: 'Stable provider name such as password, google, or magic_link.',
|
|
52
|
+
}),
|
|
53
|
+
providerUserId: field.string({
|
|
54
|
+
column: 'provider_user_id',
|
|
55
|
+
required: true,
|
|
56
|
+
maxLength: 255,
|
|
57
|
+
length: 255,
|
|
58
|
+
comment: 'Stable provider-owned user id. For password this is the normalized email address.',
|
|
59
|
+
}),
|
|
60
|
+
label: field.string({
|
|
61
|
+
maxLength: 255,
|
|
62
|
+
length: 255,
|
|
63
|
+
comment: 'Human-friendly label for settings screens.',
|
|
64
|
+
}),
|
|
65
|
+
email: field.email({
|
|
66
|
+
maxLength: 255,
|
|
67
|
+
length: 255,
|
|
68
|
+
comment: 'Email address reported or proven by this provider.',
|
|
69
|
+
}),
|
|
70
|
+
emailVerifiedAt: field.timestamp({
|
|
71
|
+
column: 'email_verified_at',
|
|
72
|
+
comment: 'When this provider proved the linked email address.',
|
|
73
|
+
}),
|
|
74
|
+
name: field.string({
|
|
75
|
+
maxLength: 255,
|
|
76
|
+
length: 255,
|
|
77
|
+
comment: 'Display name reported by the provider.',
|
|
78
|
+
}),
|
|
79
|
+
avatarUrl: field.string({
|
|
80
|
+
column: 'avatar_url',
|
|
81
|
+
maxLength: 2048,
|
|
82
|
+
length: 2048,
|
|
83
|
+
comment: 'Avatar URL reported by the provider.',
|
|
84
|
+
}),
|
|
85
|
+
password: field.password({
|
|
86
|
+
required: false,
|
|
87
|
+
minLength: 12,
|
|
88
|
+
comment: 'Password hash for the built-in password provider. Null for external providers.',
|
|
89
|
+
}),
|
|
90
|
+
profile: field.jsonText({
|
|
91
|
+
column: 'profile_json',
|
|
92
|
+
comment: 'Safe provider metadata captured during verification.',
|
|
93
|
+
}),
|
|
94
|
+
lastLoginAt: field.timestamp({
|
|
95
|
+
column: 'last_login_at',
|
|
96
|
+
comment: 'Last time this provider was used to authenticate.',
|
|
97
|
+
}),
|
|
98
|
+
createdAt: field.timestamp({
|
|
99
|
+
column: 'created_at',
|
|
100
|
+
auto: 'create',
|
|
101
|
+
}),
|
|
102
|
+
updatedAt: field.timestamp({
|
|
103
|
+
column: 'updated_at',
|
|
104
|
+
auto: 'update',
|
|
105
|
+
}),
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Applies normalized provider metadata to this row.
|
|
110
|
+
*
|
|
111
|
+
* @param profile - Provider profile returned by a driver.
|
|
112
|
+
*/
|
|
113
|
+
applyProfile(profile) {
|
|
114
|
+
this.provider = profile.provider;
|
|
115
|
+
this.providerUserId = profile.providerUserId;
|
|
116
|
+
this.email = profile.email ?? null;
|
|
117
|
+
this.emailVerifiedAt = profile.emailVerifiedAt ?? null;
|
|
118
|
+
this.name = profile.name ?? null;
|
|
119
|
+
this.avatarUrl = profile.avatarUrl ?? null;
|
|
120
|
+
this.label = profile.label ?? providerLabel(profile);
|
|
121
|
+
this.profile = profile.profile ?? null;
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Marks this provider as used for authentication.
|
|
125
|
+
*
|
|
126
|
+
* @param date - Login time to store.
|
|
127
|
+
*/
|
|
128
|
+
markUsed(date = new Date()) {
|
|
129
|
+
this.lastLoginAt = date;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Returns true when this provider stores a local password credential.
|
|
133
|
+
*
|
|
134
|
+
* @returns Whether this row is the built-in password provider.
|
|
135
|
+
*/
|
|
136
|
+
isPasswordProvider() {
|
|
137
|
+
return this.provider === PASSWORD_AUTH_PROVIDER;
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Returns settings-safe provider metadata.
|
|
141
|
+
*
|
|
142
|
+
* Password hashes, provider-owned identifiers, and raw profile metadata are
|
|
143
|
+
* deliberately excluded from this projection.
|
|
144
|
+
*
|
|
145
|
+
* @returns Provider summary for account-management APIs.
|
|
146
|
+
*/
|
|
147
|
+
toSummary() {
|
|
148
|
+
return {
|
|
149
|
+
id: String(this.id),
|
|
150
|
+
provider: this.provider ?? '',
|
|
151
|
+
label: this.label,
|
|
152
|
+
email: this.email,
|
|
153
|
+
avatarUrl: this.avatarUrl,
|
|
154
|
+
lastLoginAt: this.lastLoginAt?.toISOString() ?? null,
|
|
155
|
+
createdAt: this.createdAt?.toISOString() ?? null,
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Verifies a plaintext password against the provider password hash.
|
|
160
|
+
*
|
|
161
|
+
* @param plainText - Password supplied by the user.
|
|
162
|
+
* @param passwordHash - Password hashing service to use.
|
|
163
|
+
* @returns True when the password matches this provider.
|
|
164
|
+
*/
|
|
165
|
+
verifyPassword(plainText, passwordHash = defaultPasswordHash) {
|
|
166
|
+
const passwordField = this.getBoundField('password');
|
|
167
|
+
if (!(passwordField instanceof PasswordField)) {
|
|
168
|
+
throw new Error('AuthProvider password field is not a password field.');
|
|
169
|
+
}
|
|
170
|
+
return passwordField.verifyPassword(plainText, passwordHash);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Builds a compact default settings label for a provider profile.
|
|
175
|
+
*
|
|
176
|
+
* @param profile - Normalized provider profile.
|
|
177
|
+
* @returns Provider settings label.
|
|
178
|
+
*/
|
|
179
|
+
function providerLabel(profile) {
|
|
180
|
+
if (profile.provider === PASSWORD_AUTH_PROVIDER)
|
|
181
|
+
return 'Password';
|
|
182
|
+
if (profile.email)
|
|
183
|
+
return `${profile.provider}: ${profile.email}`;
|
|
184
|
+
return profile.provider;
|
|
185
|
+
}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { ActiveRecord, type FieldBuilder } from '../db/index.js';
|
|
2
|
+
export interface CreateAuthTokenOptions {
|
|
3
|
+
/** Human-friendly session name displayed to the user. */
|
|
4
|
+
name?: string;
|
|
5
|
+
/** Absolute token expiry. Null creates a non-expiring token. */
|
|
6
|
+
expiresAt?: Date | null;
|
|
7
|
+
/** Latest client IP address observed for the session. */
|
|
8
|
+
ipAddress?: string | null;
|
|
9
|
+
/** Raw user-agent string captured when the session was created. */
|
|
10
|
+
userAgent?: string | null;
|
|
11
|
+
/** Parsed browser name, such as Chrome or Mobile Safari. */
|
|
12
|
+
browser?: string | null;
|
|
13
|
+
/** Parsed operating-system name, such as macOS or iOS. */
|
|
14
|
+
operatingSystem?: string | null;
|
|
15
|
+
/** Parsed device label, such as iPhone or Desktop. */
|
|
16
|
+
device?: string | null;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Request metadata refreshed when a bearer token is authenticated.
|
|
20
|
+
*/
|
|
21
|
+
export interface AuthTokenUsage {
|
|
22
|
+
/** Latest client IP address observed for the session. */
|
|
23
|
+
ipAddress?: string | null;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Safe session information suitable for account-management APIs.
|
|
27
|
+
*/
|
|
28
|
+
export interface AuthSessionData {
|
|
29
|
+
id: string;
|
|
30
|
+
name: string | null;
|
|
31
|
+
ipAddress: string | null;
|
|
32
|
+
browser: string | null;
|
|
33
|
+
operatingSystem: string | null;
|
|
34
|
+
device: string | null;
|
|
35
|
+
expiresAt: string | null;
|
|
36
|
+
lastUsedAt: string | null;
|
|
37
|
+
createdAt: string | null;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Persisted bearer token for API/mobile clients.
|
|
41
|
+
*
|
|
42
|
+
* The raw token is only returned to the client once. The database stores a
|
|
43
|
+
* SHA-256 hash so a token table leak does not expose immediately usable bearer
|
|
44
|
+
* tokens.
|
|
45
|
+
*/
|
|
46
|
+
export declare class AuthToken extends ActiveRecord {
|
|
47
|
+
static table: string;
|
|
48
|
+
static primaryKey: string;
|
|
49
|
+
static fields(field: FieldBuilder): {
|
|
50
|
+
id: import("../db/index.js").UlidField;
|
|
51
|
+
userId: import("../db/index.js").StringField;
|
|
52
|
+
tokenHash: import("../db/index.js").StringField;
|
|
53
|
+
name: import("../db/index.js").StringField;
|
|
54
|
+
ipAddress: import("../db/index.js").StringField;
|
|
55
|
+
userAgent: import("../db/index.js").TextField;
|
|
56
|
+
browser: import("../db/index.js").StringField;
|
|
57
|
+
operatingSystem: import("../db/index.js").StringField;
|
|
58
|
+
device: import("../db/index.js").StringField;
|
|
59
|
+
expiresAt: import("../db/index.js").TimestampField;
|
|
60
|
+
lastUsedAt: import("../db/index.js").TimestampField;
|
|
61
|
+
revokedAt: import("../db/index.js").TimestampField;
|
|
62
|
+
createdAt: import("../db/index.js").TimestampField;
|
|
63
|
+
};
|
|
64
|
+
id: string | null;
|
|
65
|
+
userId: string | null;
|
|
66
|
+
tokenHash: string | null;
|
|
67
|
+
name: string | null;
|
|
68
|
+
ipAddress: string | null;
|
|
69
|
+
userAgent: string | null;
|
|
70
|
+
browser: string | null;
|
|
71
|
+
operatingSystem: string | null;
|
|
72
|
+
device: string | null;
|
|
73
|
+
expiresAt: Date | null;
|
|
74
|
+
lastUsedAt: Date | null;
|
|
75
|
+
revokedAt: Date | null;
|
|
76
|
+
createdAt: Date | null;
|
|
77
|
+
/**
|
|
78
|
+
* Generates a cryptographically random bearer token.
|
|
79
|
+
*
|
|
80
|
+
* @returns Plaintext bearer token shown to the client once.
|
|
81
|
+
*/
|
|
82
|
+
static generatePlainTextToken(): string;
|
|
83
|
+
/**
|
|
84
|
+
* Hashes a plaintext bearer token for persistent lookup.
|
|
85
|
+
*
|
|
86
|
+
* @param token - Plaintext bearer token.
|
|
87
|
+
* @returns SHA-256 token hash.
|
|
88
|
+
*/
|
|
89
|
+
static hashToken(token: string): string;
|
|
90
|
+
/**
|
|
91
|
+
* Returns whether the token has passed its expiry time.
|
|
92
|
+
*
|
|
93
|
+
* @param date - Comparison time.
|
|
94
|
+
* @returns True when the session is expired.
|
|
95
|
+
*/
|
|
96
|
+
isExpired(date?: Date): boolean;
|
|
97
|
+
/**
|
|
98
|
+
* Returns whether the session can currently authenticate.
|
|
99
|
+
*
|
|
100
|
+
* @param date - Comparison time.
|
|
101
|
+
* @returns True when the token is neither revoked nor expired.
|
|
102
|
+
*/
|
|
103
|
+
isActive(date?: Date): boolean;
|
|
104
|
+
/**
|
|
105
|
+
* Records token activity and optional request metadata.
|
|
106
|
+
*
|
|
107
|
+
* @param date - Activity time.
|
|
108
|
+
* @param usage - Request metadata observed during authentication.
|
|
109
|
+
*/
|
|
110
|
+
markUsed(date?: Date, usage?: AuthTokenUsage): void;
|
|
111
|
+
/**
|
|
112
|
+
* Permanently revokes this session.
|
|
113
|
+
*
|
|
114
|
+
* @param date - Revocation time.
|
|
115
|
+
*/
|
|
116
|
+
revoke(date?: Date): void;
|
|
117
|
+
/**
|
|
118
|
+
* Returns safe session information without the token hash or raw user agent.
|
|
119
|
+
*
|
|
120
|
+
* @returns Session data for account-management APIs.
|
|
121
|
+
*/
|
|
122
|
+
toSessionData(): AuthSessionData;
|
|
123
|
+
}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
import { createHash, randomBytes, } from 'node:crypto';
|
|
2
|
+
import { ActiveRecord, } from '../db/index.js';
|
|
3
|
+
/**
|
|
4
|
+
* Persisted bearer token for API/mobile clients.
|
|
5
|
+
*
|
|
6
|
+
* The raw token is only returned to the client once. The database stores a
|
|
7
|
+
* SHA-256 hash so a token table leak does not expose immediately usable bearer
|
|
8
|
+
* tokens.
|
|
9
|
+
*/
|
|
10
|
+
export class AuthToken extends ActiveRecord {
|
|
11
|
+
static table = 'auth_tokens';
|
|
12
|
+
static primaryKey = 'id';
|
|
13
|
+
static fields(field) {
|
|
14
|
+
return {
|
|
15
|
+
id: field.ulid(),
|
|
16
|
+
userId: field.string({
|
|
17
|
+
column: 'user_id',
|
|
18
|
+
required: true,
|
|
19
|
+
maxLength: 255,
|
|
20
|
+
length: 255,
|
|
21
|
+
indexes: [
|
|
22
|
+
{
|
|
23
|
+
name: 'auth_tokens_user_id_index',
|
|
24
|
+
columns: ['user_id'],
|
|
25
|
+
},
|
|
26
|
+
],
|
|
27
|
+
}),
|
|
28
|
+
tokenHash: field.string({
|
|
29
|
+
column: 'token_hash',
|
|
30
|
+
required: true,
|
|
31
|
+
unique: true,
|
|
32
|
+
maxLength: 64,
|
|
33
|
+
length: 64,
|
|
34
|
+
hidden: true,
|
|
35
|
+
}),
|
|
36
|
+
name: field.string({
|
|
37
|
+
maxLength: 120,
|
|
38
|
+
length: 120,
|
|
39
|
+
}),
|
|
40
|
+
ipAddress: field.string({
|
|
41
|
+
column: 'ip_address',
|
|
42
|
+
maxLength: 45,
|
|
43
|
+
length: 45,
|
|
44
|
+
comment: 'Latest client IP address observed while this session was active.',
|
|
45
|
+
}),
|
|
46
|
+
userAgent: field.text({
|
|
47
|
+
column: 'user_agent',
|
|
48
|
+
hidden: true,
|
|
49
|
+
comment: 'Raw client user-agent captured when this session was created.',
|
|
50
|
+
}),
|
|
51
|
+
browser: field.string({
|
|
52
|
+
maxLength: 64,
|
|
53
|
+
length: 64,
|
|
54
|
+
comment: 'Parsed browser name used for account session displays.',
|
|
55
|
+
}),
|
|
56
|
+
operatingSystem: field.string({
|
|
57
|
+
column: 'operating_system',
|
|
58
|
+
maxLength: 64,
|
|
59
|
+
length: 64,
|
|
60
|
+
comment: 'Parsed operating-system name used for account session displays.',
|
|
61
|
+
}),
|
|
62
|
+
device: field.string({
|
|
63
|
+
maxLength: 120,
|
|
64
|
+
length: 120,
|
|
65
|
+
comment: 'Parsed device model or category used for account session displays.',
|
|
66
|
+
}),
|
|
67
|
+
expiresAt: field.timestamp({
|
|
68
|
+
column: 'expires_at',
|
|
69
|
+
}),
|
|
70
|
+
lastUsedAt: field.timestamp({
|
|
71
|
+
column: 'last_used_at',
|
|
72
|
+
}),
|
|
73
|
+
revokedAt: field.timestamp({
|
|
74
|
+
column: 'revoked_at',
|
|
75
|
+
comment: 'When this bearer session was explicitly revoked.',
|
|
76
|
+
}),
|
|
77
|
+
createdAt: field.timestamp({
|
|
78
|
+
column: 'created_at',
|
|
79
|
+
auto: 'create',
|
|
80
|
+
}),
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Generates a cryptographically random bearer token.
|
|
85
|
+
*
|
|
86
|
+
* @returns Plaintext bearer token shown to the client once.
|
|
87
|
+
*/
|
|
88
|
+
static generatePlainTextToken() {
|
|
89
|
+
return randomBytes(32).toString('base64url');
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Hashes a plaintext bearer token for persistent lookup.
|
|
93
|
+
*
|
|
94
|
+
* @param token - Plaintext bearer token.
|
|
95
|
+
* @returns SHA-256 token hash.
|
|
96
|
+
*/
|
|
97
|
+
static hashToken(token) {
|
|
98
|
+
return createHash('sha256').update(token).digest('hex');
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Returns whether the token has passed its expiry time.
|
|
102
|
+
*
|
|
103
|
+
* @param date - Comparison time.
|
|
104
|
+
* @returns True when the session is expired.
|
|
105
|
+
*/
|
|
106
|
+
isExpired(date = new Date()) {
|
|
107
|
+
return this.expiresAt !== null && this.expiresAt <= date;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Returns whether the session can currently authenticate.
|
|
111
|
+
*
|
|
112
|
+
* @param date - Comparison time.
|
|
113
|
+
* @returns True when the token is neither revoked nor expired.
|
|
114
|
+
*/
|
|
115
|
+
isActive(date = new Date()) {
|
|
116
|
+
return this.revokedAt === null && !this.isExpired(date);
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Records token activity and optional request metadata.
|
|
120
|
+
*
|
|
121
|
+
* @param date - Activity time.
|
|
122
|
+
* @param usage - Request metadata observed during authentication.
|
|
123
|
+
*/
|
|
124
|
+
markUsed(date = new Date(), usage = {}) {
|
|
125
|
+
this.lastUsedAt = date;
|
|
126
|
+
if (usage.ipAddress) {
|
|
127
|
+
this.ipAddress = usage.ipAddress;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Permanently revokes this session.
|
|
132
|
+
*
|
|
133
|
+
* @param date - Revocation time.
|
|
134
|
+
*/
|
|
135
|
+
revoke(date = new Date()) {
|
|
136
|
+
this.revokedAt = date;
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Returns safe session information without the token hash or raw user agent.
|
|
140
|
+
*
|
|
141
|
+
* @returns Session data for account-management APIs.
|
|
142
|
+
*/
|
|
143
|
+
toSessionData() {
|
|
144
|
+
return {
|
|
145
|
+
id: String(this.id),
|
|
146
|
+
name: this.name,
|
|
147
|
+
ipAddress: this.ipAddress,
|
|
148
|
+
browser: this.browser,
|
|
149
|
+
operatingSystem: this.operatingSystem,
|
|
150
|
+
device: this.device,
|
|
151
|
+
expiresAt: this.expiresAt?.toISOString() ?? null,
|
|
152
|
+
lastUsedAt: this.lastUsedAt?.toISOString() ?? null,
|
|
153
|
+
createdAt: this.createdAt?.toISOString() ?? null,
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { ActiveRecord, type FieldBuilder } from '../db/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Single-use password reset token.
|
|
4
|
+
*
|
|
5
|
+
* The raw token is only sent in email. The database stores a SHA-256 hash so
|
|
6
|
+
* reset-token table leaks do not expose usable reset links.
|
|
7
|
+
*/
|
|
8
|
+
export declare class PasswordResetToken extends ActiveRecord {
|
|
9
|
+
static table: string;
|
|
10
|
+
static primaryKey: string;
|
|
11
|
+
static fields(field: FieldBuilder): {
|
|
12
|
+
id: import("../db/index.js").UlidField;
|
|
13
|
+
userId: import("../db/index.js").StringField;
|
|
14
|
+
email: import("../db/index.js").EmailField;
|
|
15
|
+
tokenHash: import("../db/index.js").StringField;
|
|
16
|
+
expiresAt: import("../db/index.js").TimestampField;
|
|
17
|
+
usedAt: import("../db/index.js").TimestampField;
|
|
18
|
+
createdAt: import("../db/index.js").TimestampField;
|
|
19
|
+
};
|
|
20
|
+
id: string | null;
|
|
21
|
+
userId: string | null;
|
|
22
|
+
email: string | null;
|
|
23
|
+
tokenHash: string | null;
|
|
24
|
+
expiresAt: Date | null;
|
|
25
|
+
usedAt: Date | null;
|
|
26
|
+
createdAt: Date | null;
|
|
27
|
+
static generatePlainTextToken(): string;
|
|
28
|
+
static hashToken(token: string): string;
|
|
29
|
+
isExpired(date?: Date): boolean;
|
|
30
|
+
isUsed(): boolean;
|
|
31
|
+
isUsable(date?: Date): boolean;
|
|
32
|
+
markUsed(date?: Date): void;
|
|
33
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { createHash, randomBytes, } from 'node:crypto';
|
|
2
|
+
import { ActiveRecord, } from '../db/index.js';
|
|
3
|
+
/**
|
|
4
|
+
* Single-use password reset token.
|
|
5
|
+
*
|
|
6
|
+
* The raw token is only sent in email. The database stores a SHA-256 hash so
|
|
7
|
+
* reset-token table leaks do not expose usable reset links.
|
|
8
|
+
*/
|
|
9
|
+
export class PasswordResetToken extends ActiveRecord {
|
|
10
|
+
static table = 'password_reset_tokens';
|
|
11
|
+
static primaryKey = 'id';
|
|
12
|
+
static fields(field) {
|
|
13
|
+
return {
|
|
14
|
+
id: field.ulid(),
|
|
15
|
+
userId: field.string({
|
|
16
|
+
column: 'user_id',
|
|
17
|
+
required: true,
|
|
18
|
+
maxLength: 255,
|
|
19
|
+
length: 255,
|
|
20
|
+
}),
|
|
21
|
+
email: field.email({
|
|
22
|
+
required: true,
|
|
23
|
+
maxLength: 255,
|
|
24
|
+
length: 255,
|
|
25
|
+
}),
|
|
26
|
+
tokenHash: field.string({
|
|
27
|
+
column: 'token_hash',
|
|
28
|
+
required: true,
|
|
29
|
+
unique: true,
|
|
30
|
+
maxLength: 64,
|
|
31
|
+
length: 64,
|
|
32
|
+
}),
|
|
33
|
+
expiresAt: field.timestamp({
|
|
34
|
+
column: 'expires_at',
|
|
35
|
+
required: true,
|
|
36
|
+
}),
|
|
37
|
+
usedAt: field.timestamp({
|
|
38
|
+
column: 'used_at',
|
|
39
|
+
}),
|
|
40
|
+
createdAt: field.timestamp({
|
|
41
|
+
column: 'created_at',
|
|
42
|
+
auto: 'create',
|
|
43
|
+
}),
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
static generatePlainTextToken() {
|
|
47
|
+
return randomBytes(32).toString('base64url');
|
|
48
|
+
}
|
|
49
|
+
static hashToken(token) {
|
|
50
|
+
return createHash('sha256').update(token).digest('hex');
|
|
51
|
+
}
|
|
52
|
+
isExpired(date = new Date()) {
|
|
53
|
+
return this.expiresAt !== null && this.expiresAt <= date;
|
|
54
|
+
}
|
|
55
|
+
isUsed() {
|
|
56
|
+
return this.usedAt !== null;
|
|
57
|
+
}
|
|
58
|
+
isUsable(date = new Date()) {
|
|
59
|
+
return !this.isUsed() && !this.isExpired(date);
|
|
60
|
+
}
|
|
61
|
+
markUsed(date = new Date()) {
|
|
62
|
+
this.usedAt = date;
|
|
63
|
+
}
|
|
64
|
+
}
|