@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,218 @@
|
|
|
1
|
+
import type { Readable } from 'node:stream';
|
|
2
|
+
import type { StorageListing, StorageListOptions } from './contracts/index.js';
|
|
3
|
+
export type StorageVisibility = 'public' | 'private';
|
|
4
|
+
export type StorageContents = string | Buffer | Uint8Array | ArrayBuffer;
|
|
5
|
+
export interface StoragePutOptions {
|
|
6
|
+
visibility?: StorageVisibility;
|
|
7
|
+
mimeType?: string;
|
|
8
|
+
}
|
|
9
|
+
export interface StorageFileStat {
|
|
10
|
+
path: string;
|
|
11
|
+
size: number;
|
|
12
|
+
lastModified: Date;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Runtime interface implemented by configured storage disks.
|
|
16
|
+
*/
|
|
17
|
+
export interface StorageDisk {
|
|
18
|
+
readonly name: string;
|
|
19
|
+
/**
|
|
20
|
+
* Writes file contents to a path on this disk.
|
|
21
|
+
*
|
|
22
|
+
* Alias for put(), useful for command-line and REPL usage.
|
|
23
|
+
*
|
|
24
|
+
* @param path - Relative storage path to write.
|
|
25
|
+
* @param contents - Bytes or text content to persist.
|
|
26
|
+
* @param options - Optional write metadata.
|
|
27
|
+
* @returns Promise that resolves once the file is written.
|
|
28
|
+
*/
|
|
29
|
+
write(path: string, contents: StorageContents, options?: StoragePutOptions): Promise<void>;
|
|
30
|
+
/**
|
|
31
|
+
* Writes file contents to a path on this disk.
|
|
32
|
+
*
|
|
33
|
+
* @param path - Relative storage path to write.
|
|
34
|
+
* @param contents - Bytes or text content to persist.
|
|
35
|
+
* @param options - Optional write metadata.
|
|
36
|
+
* @returns Promise that resolves once the file is written.
|
|
37
|
+
*/
|
|
38
|
+
put(path: string, contents: StorageContents, options?: StoragePutOptions): Promise<void>;
|
|
39
|
+
/**
|
|
40
|
+
* Writes streamed file contents to a path on this disk.
|
|
41
|
+
*
|
|
42
|
+
* @param path - Relative storage path to write.
|
|
43
|
+
* @param stream - Readable stream containing file bytes.
|
|
44
|
+
* @param options - Optional write metadata.
|
|
45
|
+
* @returns Promise that resolves once the stream is written.
|
|
46
|
+
*/
|
|
47
|
+
writeStream(path: string, stream: Readable, options?: StoragePutOptions): Promise<void>;
|
|
48
|
+
/**
|
|
49
|
+
* Lists files and directories beneath a path on this disk.
|
|
50
|
+
*
|
|
51
|
+
* @param path - Relative directory path, or an empty string for the disk root.
|
|
52
|
+
* @param options - Directory traversal options.
|
|
53
|
+
* @returns Lazy provider-neutral directory listing.
|
|
54
|
+
*/
|
|
55
|
+
list(path?: string, options?: StorageListOptions): StorageListing;
|
|
56
|
+
/**
|
|
57
|
+
* Reads file contents as bytes from this disk.
|
|
58
|
+
*
|
|
59
|
+
* @param path - Relative storage path to read.
|
|
60
|
+
* @returns Stored file contents.
|
|
61
|
+
*/
|
|
62
|
+
get(path: string): Promise<Buffer>;
|
|
63
|
+
/**
|
|
64
|
+
* Reads file contents into a string from this disk.
|
|
65
|
+
*
|
|
66
|
+
* Matches Flystorage's readToString() API.
|
|
67
|
+
*
|
|
68
|
+
* @param path - Relative storage path to read.
|
|
69
|
+
* @returns Stored text content.
|
|
70
|
+
*/
|
|
71
|
+
readToString(path: string): Promise<string>;
|
|
72
|
+
/**
|
|
73
|
+
* Reads file contents into a Buffer from this disk.
|
|
74
|
+
*
|
|
75
|
+
* Matches Flystorage's readToBuffer() API.
|
|
76
|
+
*
|
|
77
|
+
* @param path - Relative storage path to read.
|
|
78
|
+
* @returns Stored file contents.
|
|
79
|
+
*/
|
|
80
|
+
readToBuffer(path: string): Promise<Buffer>;
|
|
81
|
+
/**
|
|
82
|
+
* Reads file contents into a Uint8Array from this disk.
|
|
83
|
+
*
|
|
84
|
+
* Matches Flystorage's readToUint8Array() API.
|
|
85
|
+
*
|
|
86
|
+
* @param path - Relative storage path to read.
|
|
87
|
+
* @returns Stored file contents.
|
|
88
|
+
*/
|
|
89
|
+
readToUint8Array(path: string): Promise<Uint8Array>;
|
|
90
|
+
/**
|
|
91
|
+
* Reads file contents as a stream from this disk.
|
|
92
|
+
*
|
|
93
|
+
* Matches Flystorage's read() API.
|
|
94
|
+
*
|
|
95
|
+
* @param path - Relative storage path to read.
|
|
96
|
+
* @returns Readable stream for the stored file.
|
|
97
|
+
*/
|
|
98
|
+
read(path: string): Promise<Readable>;
|
|
99
|
+
/**
|
|
100
|
+
* Reads file contents as a stream from this disk.
|
|
101
|
+
*
|
|
102
|
+
* @param path - Relative storage path to read.
|
|
103
|
+
* @returns Readable stream for the stored file.
|
|
104
|
+
*/
|
|
105
|
+
readStream(path: string): Promise<Readable>;
|
|
106
|
+
/**
|
|
107
|
+
* Reads file contents as text from this disk.
|
|
108
|
+
*
|
|
109
|
+
* @param path - Relative storage path to read.
|
|
110
|
+
* @param encoding - Text encoding used to decode the file.
|
|
111
|
+
* @returns Stored text content.
|
|
112
|
+
*/
|
|
113
|
+
getText(path: string, encoding?: BufferEncoding): Promise<string>;
|
|
114
|
+
/**
|
|
115
|
+
* Returns true when a file exists at the given path.
|
|
116
|
+
*
|
|
117
|
+
* @param path - Relative storage path to inspect.
|
|
118
|
+
* @returns True when the file exists.
|
|
119
|
+
*/
|
|
120
|
+
exists(path: string): Promise<boolean>;
|
|
121
|
+
/**
|
|
122
|
+
* Returns true when a file does not exist at the given path.
|
|
123
|
+
*
|
|
124
|
+
* @param path - Relative storage path to inspect.
|
|
125
|
+
* @returns True when the file is missing.
|
|
126
|
+
*/
|
|
127
|
+
missing(path: string): Promise<boolean>;
|
|
128
|
+
/**
|
|
129
|
+
* Deletes a file from this disk.
|
|
130
|
+
*
|
|
131
|
+
* @param path - Relative storage path to delete.
|
|
132
|
+
* @returns True when a file was deleted.
|
|
133
|
+
*/
|
|
134
|
+
delete(path: string): Promise<boolean>;
|
|
135
|
+
/**
|
|
136
|
+
* Copies a file between two paths on this disk.
|
|
137
|
+
*
|
|
138
|
+
* @param from - Existing relative storage path.
|
|
139
|
+
* @param to - New relative storage path.
|
|
140
|
+
* @returns Promise that resolves once the copy is complete.
|
|
141
|
+
*/
|
|
142
|
+
copy(from: string, to: string): Promise<void>;
|
|
143
|
+
/**
|
|
144
|
+
* Moves a file between two paths on this disk.
|
|
145
|
+
*
|
|
146
|
+
* @param from - Existing relative storage path.
|
|
147
|
+
* @param to - New relative storage path.
|
|
148
|
+
* @returns Promise that resolves once the move is complete.
|
|
149
|
+
*/
|
|
150
|
+
move(from: string, to: string): Promise<void>;
|
|
151
|
+
/**
|
|
152
|
+
* Returns file size in bytes.
|
|
153
|
+
*
|
|
154
|
+
* @param path - Relative storage path to inspect.
|
|
155
|
+
* @returns File size in bytes.
|
|
156
|
+
*/
|
|
157
|
+
size(path: string): Promise<number>;
|
|
158
|
+
/**
|
|
159
|
+
* Returns the last modification time for a file.
|
|
160
|
+
*
|
|
161
|
+
* @param path - Relative storage path to inspect.
|
|
162
|
+
* @returns File modification date.
|
|
163
|
+
*/
|
|
164
|
+
lastModified(path: string): Promise<Date>;
|
|
165
|
+
/**
|
|
166
|
+
* Returns a best-effort MIME type for a file path.
|
|
167
|
+
*
|
|
168
|
+
* @param path - Relative storage path to inspect.
|
|
169
|
+
* @returns MIME type for the file extension.
|
|
170
|
+
*/
|
|
171
|
+
mimeType(path: string): Promise<string>;
|
|
172
|
+
/**
|
|
173
|
+
* Returns a public URL for a path when the disk supports URLs.
|
|
174
|
+
*
|
|
175
|
+
* @param path - Relative storage path to expose.
|
|
176
|
+
* @returns Public URL.
|
|
177
|
+
*/
|
|
178
|
+
url(path: string): Promise<string>;
|
|
179
|
+
/**
|
|
180
|
+
* Returns an absolute filesystem path when the disk is local.
|
|
181
|
+
*
|
|
182
|
+
* @param path - Relative storage path to resolve.
|
|
183
|
+
* @returns Absolute filesystem path.
|
|
184
|
+
*/
|
|
185
|
+
path(path: string): string;
|
|
186
|
+
}
|
|
187
|
+
export interface LocalStorageDiskConfig {
|
|
188
|
+
driver: 'local';
|
|
189
|
+
root?: string;
|
|
190
|
+
url?: string;
|
|
191
|
+
visibility?: StorageVisibility;
|
|
192
|
+
}
|
|
193
|
+
export interface S3StorageDiskConfig {
|
|
194
|
+
driver: 's3';
|
|
195
|
+
bucket: string;
|
|
196
|
+
region?: string;
|
|
197
|
+
endpoint?: string;
|
|
198
|
+
prefix?: string;
|
|
199
|
+
url?: string;
|
|
200
|
+
forcePathStyle?: boolean;
|
|
201
|
+
accessKeyId?: string;
|
|
202
|
+
secretAccessKey?: string;
|
|
203
|
+
sessionToken?: string;
|
|
204
|
+
key?: string;
|
|
205
|
+
secret?: string;
|
|
206
|
+
visibility?: StorageVisibility;
|
|
207
|
+
}
|
|
208
|
+
export interface CustomStorageDiskConfig {
|
|
209
|
+
driver: string;
|
|
210
|
+
[key: string]: unknown;
|
|
211
|
+
}
|
|
212
|
+
export type StorageDiskConfig = LocalStorageDiskConfig | S3StorageDiskConfig | CustomStorageDiskConfig;
|
|
213
|
+
export type StorageDiskFactory = (name: string, config: StorageDiskConfig) => StorageDisk;
|
|
214
|
+
export interface StorageOptions {
|
|
215
|
+
default?: string;
|
|
216
|
+
disks?: Record<string, StorageDiskConfig | StorageDisk>;
|
|
217
|
+
drivers?: Record<string, StorageDiskFactory>;
|
|
218
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type * as url from './contracts/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Canonical application URL generator.
|
|
4
|
+
*
|
|
5
|
+
* The generator is intentionally independent of a concrete server adapter and
|
|
6
|
+
* the current request. API, queue, scheduler, console, and future SSR runtimes
|
|
7
|
+
* can therefore share one trusted application origin. Request-specific SSR
|
|
8
|
+
* state belongs to the request context and must not replace this canonical URL.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* const callback = app().url.to('/api/integrations/provider/callback');
|
|
12
|
+
*/
|
|
13
|
+
export declare class UrlGenerator {
|
|
14
|
+
/** Normalized browser-facing application URL without a trailing slash. */
|
|
15
|
+
readonly baseUrl: string;
|
|
16
|
+
/**
|
|
17
|
+
* Creates the canonical application URL generator.
|
|
18
|
+
*
|
|
19
|
+
* @param options - Public deployment URL or local browser port configuration.
|
|
20
|
+
*/
|
|
21
|
+
constructor(options?: url.UrlGeneratorOptions);
|
|
22
|
+
/**
|
|
23
|
+
* Builds an absolute application URL from a path or relative reference.
|
|
24
|
+
*
|
|
25
|
+
* @param path - Application path or relative URL to resolve.
|
|
26
|
+
* @returns Absolute browser-facing application URL.
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* app().url.to('/auth/reset-password');
|
|
30
|
+
*/
|
|
31
|
+
to(path: string): string;
|
|
32
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canonical application URL generator.
|
|
3
|
+
*
|
|
4
|
+
* The generator is intentionally independent of a concrete server adapter and
|
|
5
|
+
* the current request. API, queue, scheduler, console, and future SSR runtimes
|
|
6
|
+
* can therefore share one trusted application origin. Request-specific SSR
|
|
7
|
+
* state belongs to the request context and must not replace this canonical URL.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* const callback = app().url.to('/api/integrations/provider/callback');
|
|
11
|
+
*/
|
|
12
|
+
export class UrlGenerator {
|
|
13
|
+
/** Normalized browser-facing application URL without a trailing slash. */
|
|
14
|
+
baseUrl;
|
|
15
|
+
/**
|
|
16
|
+
* Creates the canonical application URL generator.
|
|
17
|
+
*
|
|
18
|
+
* @param options - Public deployment URL or local browser port configuration.
|
|
19
|
+
*/
|
|
20
|
+
constructor(options = {}) {
|
|
21
|
+
this.baseUrl = resolveBaseUrl(options);
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Builds an absolute application URL from a path or relative reference.
|
|
25
|
+
*
|
|
26
|
+
* @param path - Application path or relative URL to resolve.
|
|
27
|
+
* @returns Absolute browser-facing application URL.
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* app().url.to('/auth/reset-password');
|
|
31
|
+
*/
|
|
32
|
+
to(path) {
|
|
33
|
+
return new URL(path, `${this.baseUrl}/`).toString();
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Resolves and validates the one canonical application base URL.
|
|
38
|
+
*
|
|
39
|
+
* @param options - Explicit public URL or local browser port configuration.
|
|
40
|
+
* @returns Normalized HTTP(S) application base URL without a trailing slash.
|
|
41
|
+
*/
|
|
42
|
+
function resolveBaseUrl(options) {
|
|
43
|
+
const configured = options.baseUrl
|
|
44
|
+
|| process.env.APP_URL
|
|
45
|
+
|| process.env.PUBLIC_APP_URL;
|
|
46
|
+
if (configured) {
|
|
47
|
+
const normalized = configured.trim().replace(/\/+$/, '');
|
|
48
|
+
const parsed = new URL(normalized);
|
|
49
|
+
if (!['http:', 'https:'].includes(parsed.protocol)) {
|
|
50
|
+
throw new Error('Application base URL must use http or https.');
|
|
51
|
+
}
|
|
52
|
+
return normalized;
|
|
53
|
+
}
|
|
54
|
+
if (options.localPort !== undefined) {
|
|
55
|
+
if (!Number.isInteger(options.localPort) || options.localPort < 1 || options.localPort > 65_535) {
|
|
56
|
+
throw new Error('Application local port must be an integer between 1 and 65535.');
|
|
57
|
+
}
|
|
58
|
+
return `http://localhost:${options.localPort}`;
|
|
59
|
+
}
|
|
60
|
+
throw new Error('Application base URL is not configured. Set APP_URL or provide a local port.');
|
|
61
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canonical application URL configuration.
|
|
3
|
+
*
|
|
4
|
+
* The explicit public URL is authoritative in deployed environments. A local
|
|
5
|
+
* port can provide a browser-facing development origin without duplicating a
|
|
6
|
+
* complete application URL alongside the frontend server configuration.
|
|
7
|
+
*/
|
|
8
|
+
export interface UrlGeneratorOptions {
|
|
9
|
+
/** Public application base URL, such as `https://example.com`. */
|
|
10
|
+
baseUrl?: string;
|
|
11
|
+
/** Browser-facing localhost port used when no public base URL is configured. */
|
|
12
|
+
localPort?: number;
|
|
13
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './UrlGeneratorOptions.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './UrlGeneratorOptions.js';
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export type ValidationRuleName = 'required' | 'nullable' | 'string' | 'number' | 'integer' | 'boolean' | 'email' | 'url' | 'array' | 'object' | 'min' | 'max' | 'minLength' | 'maxLength' | 'in' | 'regex' | 'ulid' | 'uuid';
|
|
2
|
+
export type ValidationRule = ValidationRuleName | `${ValidationRuleName}:${string}` | {
|
|
3
|
+
rule: ValidationRuleName;
|
|
4
|
+
value?: unknown;
|
|
5
|
+
values?: readonly unknown[];
|
|
6
|
+
pattern?: RegExp;
|
|
7
|
+
message?: string;
|
|
8
|
+
};
|
|
9
|
+
export type ValidationRules = Record<string, readonly ValidationRule[]>;
|
|
10
|
+
export interface ValidationFailure {
|
|
11
|
+
field: string;
|
|
12
|
+
rule: ValidationRuleName;
|
|
13
|
+
message: string;
|
|
14
|
+
value?: unknown;
|
|
15
|
+
details?: Record<string, unknown>;
|
|
16
|
+
}
|
|
17
|
+
export interface ValidationResult<TData extends Record<string, unknown> = Record<string, unknown>> {
|
|
18
|
+
valid: boolean;
|
|
19
|
+
data: TData;
|
|
20
|
+
errors: ValidationFailure[];
|
|
21
|
+
}
|
|
22
|
+
export declare class ValidationException extends Error {
|
|
23
|
+
readonly errors: ValidationFailure[];
|
|
24
|
+
constructor(errors: ValidationFailure[]);
|
|
25
|
+
}
|
|
26
|
+
export declare function validate<TData extends Record<string, unknown> = Record<string, unknown>>(data: unknown, rules: ValidationRules): ValidationResult<TData>;
|
|
27
|
+
export declare function assertValid<TData extends Record<string, unknown> = Record<string, unknown>>(data: unknown, rules: ValidationRules): TData;
|
|
28
|
+
export declare function isEmail(value: unknown): boolean;
|
|
@@ -0,0 +1,260 @@
|
|
|
1
|
+
import { isUlid } from '@db3.ai/pure/ulid';
|
|
2
|
+
export class ValidationException extends Error {
|
|
3
|
+
errors;
|
|
4
|
+
constructor(errors) {
|
|
5
|
+
super('Validation failed');
|
|
6
|
+
this.errors = errors;
|
|
7
|
+
this.name = 'ValidationException';
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
export function validate(data, rules) {
|
|
11
|
+
const input = isPlainRecord(data) ? data : {};
|
|
12
|
+
const errors = [];
|
|
13
|
+
for (const [field, fieldRules] of Object.entries(rules)) {
|
|
14
|
+
const value = input[field];
|
|
15
|
+
const present = Object.prototype.hasOwnProperty.call(input, field);
|
|
16
|
+
const normalizedRules = fieldRules.map(normalizeRule);
|
|
17
|
+
const nullable = normalizedRules.some(rule => rule.name === 'nullable');
|
|
18
|
+
for (const rule of normalizedRules) {
|
|
19
|
+
if (rule.name === 'nullable')
|
|
20
|
+
continue;
|
|
21
|
+
if (rule.name === 'required') {
|
|
22
|
+
if (!present || isEmpty(value)) {
|
|
23
|
+
errors.push(failure(field, rule, value));
|
|
24
|
+
}
|
|
25
|
+
continue;
|
|
26
|
+
}
|
|
27
|
+
if (!present || value === undefined || value === null || (nullable && value === '')) {
|
|
28
|
+
continue;
|
|
29
|
+
}
|
|
30
|
+
if (!passesRule(value, rule)) {
|
|
31
|
+
errors.push(failure(field, rule, value));
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
return {
|
|
36
|
+
valid: errors.length === 0,
|
|
37
|
+
data: input,
|
|
38
|
+
errors,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
export function assertValid(data, rules) {
|
|
42
|
+
const result = validate(data, rules);
|
|
43
|
+
if (!result.valid) {
|
|
44
|
+
throw new ValidationException(result.errors);
|
|
45
|
+
}
|
|
46
|
+
return result.data;
|
|
47
|
+
}
|
|
48
|
+
function normalizeRule(rule) {
|
|
49
|
+
if (typeof rule === 'object') {
|
|
50
|
+
return {
|
|
51
|
+
name: rule.rule,
|
|
52
|
+
value: rule.value,
|
|
53
|
+
values: rule.values,
|
|
54
|
+
pattern: rule.pattern,
|
|
55
|
+
message: rule.message,
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
const [name, ...parts] = rule.split(':');
|
|
59
|
+
const value = parts.join(':');
|
|
60
|
+
if (!isRuleName(name)) {
|
|
61
|
+
throw new Error(`Unknown validation rule "${name}"`);
|
|
62
|
+
}
|
|
63
|
+
if (name === 'regex') {
|
|
64
|
+
return {
|
|
65
|
+
name,
|
|
66
|
+
pattern: regexFromString(value),
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
if (name === 'in') {
|
|
70
|
+
return {
|
|
71
|
+
name,
|
|
72
|
+
values: value.split(',').map(item => item.trim()),
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
return {
|
|
76
|
+
name,
|
|
77
|
+
value: value === '' ? undefined : value,
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
function passesRule(value, rule) {
|
|
81
|
+
switch (rule.name) {
|
|
82
|
+
case 'required':
|
|
83
|
+
case 'nullable':
|
|
84
|
+
return true;
|
|
85
|
+
case 'string':
|
|
86
|
+
return typeof value === 'string';
|
|
87
|
+
case 'number':
|
|
88
|
+
return isNumberLike(value);
|
|
89
|
+
case 'integer':
|
|
90
|
+
return isIntegerLike(value);
|
|
91
|
+
case 'boolean':
|
|
92
|
+
return isBooleanLike(value);
|
|
93
|
+
case 'email':
|
|
94
|
+
return isEmail(value);
|
|
95
|
+
case 'url':
|
|
96
|
+
return isUrlLike(value);
|
|
97
|
+
case 'array':
|
|
98
|
+
return Array.isArray(value);
|
|
99
|
+
case 'object':
|
|
100
|
+
return isPlainRecord(value);
|
|
101
|
+
case 'min':
|
|
102
|
+
return compareSizedValue(value, rule.value, (actual, expected) => actual >= expected);
|
|
103
|
+
case 'max':
|
|
104
|
+
return compareSizedValue(value, rule.value, (actual, expected) => actual <= expected);
|
|
105
|
+
case 'minLength':
|
|
106
|
+
return compareLength(value, rule.value, (actual, expected) => actual >= expected);
|
|
107
|
+
case 'maxLength':
|
|
108
|
+
return compareLength(value, rule.value, (actual, expected) => actual <= expected);
|
|
109
|
+
case 'in':
|
|
110
|
+
return Boolean(rule.values?.some(item => Object.is(item, value) || String(item) === String(value)));
|
|
111
|
+
case 'regex':
|
|
112
|
+
return typeof value === 'string' && Boolean(rule.pattern?.test(value));
|
|
113
|
+
case 'ulid':
|
|
114
|
+
return isUlid(value);
|
|
115
|
+
case 'uuid':
|
|
116
|
+
return typeof value === 'string'
|
|
117
|
+
&& /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(value);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
function failure(field, rule, value) {
|
|
121
|
+
return {
|
|
122
|
+
field,
|
|
123
|
+
rule: rule.name,
|
|
124
|
+
message: rule.message ?? defaultMessage(field, rule),
|
|
125
|
+
value,
|
|
126
|
+
details: detailsForRule(rule),
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
function defaultMessage(field, rule) {
|
|
130
|
+
switch (rule.name) {
|
|
131
|
+
case 'required':
|
|
132
|
+
return `${field} is required`;
|
|
133
|
+
case 'email':
|
|
134
|
+
return `${field} must be a valid email address`;
|
|
135
|
+
case 'url':
|
|
136
|
+
return `${field} must be a valid URL`;
|
|
137
|
+
case 'in':
|
|
138
|
+
return `${field} must be one of the allowed values`;
|
|
139
|
+
default:
|
|
140
|
+
return `${field} is invalid`;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
function detailsForRule(rule) {
|
|
144
|
+
if (rule.value !== undefined) {
|
|
145
|
+
return { value: rule.value };
|
|
146
|
+
}
|
|
147
|
+
if (rule.values) {
|
|
148
|
+
return { values: rule.values };
|
|
149
|
+
}
|
|
150
|
+
if (rule.pattern) {
|
|
151
|
+
return { pattern: String(rule.pattern) };
|
|
152
|
+
}
|
|
153
|
+
return undefined;
|
|
154
|
+
}
|
|
155
|
+
function compareSizedValue(value, expectedInput, compare) {
|
|
156
|
+
const expected = numberFromUnknown(expectedInput);
|
|
157
|
+
if (expected === null)
|
|
158
|
+
return false;
|
|
159
|
+
const actual = numberFromUnknown(value);
|
|
160
|
+
if (actual !== null) {
|
|
161
|
+
return compare(actual, expected);
|
|
162
|
+
}
|
|
163
|
+
if (typeof value === 'string' || Array.isArray(value)) {
|
|
164
|
+
return compare(value.length, expected);
|
|
165
|
+
}
|
|
166
|
+
return false;
|
|
167
|
+
}
|
|
168
|
+
function compareLength(value, expectedInput, compare) {
|
|
169
|
+
const expected = numberFromUnknown(expectedInput);
|
|
170
|
+
if (expected === null)
|
|
171
|
+
return false;
|
|
172
|
+
if (typeof value === 'string' || Array.isArray(value)) {
|
|
173
|
+
return compare(value.length, expected);
|
|
174
|
+
}
|
|
175
|
+
return false;
|
|
176
|
+
}
|
|
177
|
+
function isNumberLike(value) {
|
|
178
|
+
return numberFromUnknown(value) !== null;
|
|
179
|
+
}
|
|
180
|
+
function isIntegerLike(value) {
|
|
181
|
+
const number = numberFromUnknown(value);
|
|
182
|
+
return number !== null && Number.isInteger(number);
|
|
183
|
+
}
|
|
184
|
+
function numberFromUnknown(value) {
|
|
185
|
+
if (typeof value === 'number') {
|
|
186
|
+
return Number.isFinite(value) ? value : null;
|
|
187
|
+
}
|
|
188
|
+
if (typeof value !== 'string' || !value.trim()) {
|
|
189
|
+
return null;
|
|
190
|
+
}
|
|
191
|
+
const number = Number(value.trim());
|
|
192
|
+
return Number.isFinite(number) ? number : null;
|
|
193
|
+
}
|
|
194
|
+
function isBooleanLike(value) {
|
|
195
|
+
if (typeof value === 'boolean')
|
|
196
|
+
return true;
|
|
197
|
+
if (typeof value === 'number')
|
|
198
|
+
return value === 0 || value === 1;
|
|
199
|
+
if (typeof value !== 'string')
|
|
200
|
+
return false;
|
|
201
|
+
return ['true', 'false', '1', '0', 'yes', 'no', 'on', 'off'].includes(value.trim().toLowerCase());
|
|
202
|
+
}
|
|
203
|
+
function isUrlLike(value) {
|
|
204
|
+
if (typeof value !== 'string' || !value.trim())
|
|
205
|
+
return false;
|
|
206
|
+
const candidate = /^[a-z][a-z\d+.-]*:\/\//i.test(value)
|
|
207
|
+
? value
|
|
208
|
+
: `https://${value}`;
|
|
209
|
+
try {
|
|
210
|
+
const url = new URL(candidate);
|
|
211
|
+
return ['http:', 'https:'].includes(url.protocol) && url.hostname.includes('.');
|
|
212
|
+
}
|
|
213
|
+
catch {
|
|
214
|
+
return false;
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
export function isEmail(value) {
|
|
218
|
+
const EMAIL_REGEX = /^[A-Za-z0-9.!#$%&'*+/=?^_`{|}~-]+@[A-Za-z0-9-]+(?:\.[A-Za-z0-9-]+)+$/;
|
|
219
|
+
return typeof value === 'string'
|
|
220
|
+
&& value.length <= 254
|
|
221
|
+
&& EMAIL_REGEX.test(value);
|
|
222
|
+
}
|
|
223
|
+
function regexFromString(value) {
|
|
224
|
+
const match = value.match(/^\/(.*)\/([dgimsuvy]*)$/);
|
|
225
|
+
return match ? new RegExp(match[1], match[2]) : new RegExp(value);
|
|
226
|
+
}
|
|
227
|
+
function isPlainRecord(value) {
|
|
228
|
+
return typeof value === 'object'
|
|
229
|
+
&& value !== null
|
|
230
|
+
&& !Array.isArray(value)
|
|
231
|
+
&& !(value instanceof Date);
|
|
232
|
+
}
|
|
233
|
+
function isEmpty(value) {
|
|
234
|
+
return value === null
|
|
235
|
+
|| value === undefined
|
|
236
|
+
|| value === ''
|
|
237
|
+
|| (Array.isArray(value) && value.length === 0);
|
|
238
|
+
}
|
|
239
|
+
function isRuleName(value) {
|
|
240
|
+
return [
|
|
241
|
+
'required',
|
|
242
|
+
'nullable',
|
|
243
|
+
'string',
|
|
244
|
+
'number',
|
|
245
|
+
'integer',
|
|
246
|
+
'boolean',
|
|
247
|
+
'email',
|
|
248
|
+
'url',
|
|
249
|
+
'array',
|
|
250
|
+
'object',
|
|
251
|
+
'min',
|
|
252
|
+
'max',
|
|
253
|
+
'minLength',
|
|
254
|
+
'maxLength',
|
|
255
|
+
'in',
|
|
256
|
+
'regex',
|
|
257
|
+
'ulid',
|
|
258
|
+
'uuid',
|
|
259
|
+
].includes(value);
|
|
260
|
+
}
|