@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,390 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Renders a frozen TypeScript Knex migration from a safe schema plan.
|
|
3
|
+
*
|
|
4
|
+
* Generated source contains literal table, column, index, and foreign-key
|
|
5
|
+
* operations. It never imports current models or field implementations.
|
|
6
|
+
*
|
|
7
|
+
* @param plan - Pure schema plan with no blocked changes.
|
|
8
|
+
* @returns Deterministic TypeScript migration source.
|
|
9
|
+
*/
|
|
10
|
+
export function renderKnexMigration(plan) {
|
|
11
|
+
if (plan.blockedChanges.length > 0) {
|
|
12
|
+
throw new Error('Cannot render a migration plan containing blocked changes.');
|
|
13
|
+
}
|
|
14
|
+
if (plan.safeChanges.length === 0) {
|
|
15
|
+
throw new Error('Cannot render an empty database migration.');
|
|
16
|
+
}
|
|
17
|
+
const lines = [
|
|
18
|
+
"import type { Knex } from 'knex';",
|
|
19
|
+
'',
|
|
20
|
+
'/** Knex migration settings for MariaDB non-transactional DDL. */',
|
|
21
|
+
'export const config = { transaction: false };',
|
|
22
|
+
'',
|
|
23
|
+
'/** Frozen schema lineage recorded when this migration was generated. */',
|
|
24
|
+
'export const schema = {',
|
|
25
|
+
`\tfrom: ${quote(plan.fromHash)},`,
|
|
26
|
+
`\tto: ${quote(plan.toHash)},`,
|
|
27
|
+
'};',
|
|
28
|
+
'',
|
|
29
|
+
'/**',
|
|
30
|
+
' * Applies this forward-only generated database migration.',
|
|
31
|
+
' *',
|
|
32
|
+
' * @param knex - Knex connection managed by the application migration runner.',
|
|
33
|
+
' * @returns Promise that resolves after every schema operation completes.',
|
|
34
|
+
' */',
|
|
35
|
+
'export async function up(knex: Knex): Promise<void> {',
|
|
36
|
+
];
|
|
37
|
+
const body = renderMigrationBody(plan.safeChanges);
|
|
38
|
+
lines.push(...body.map(line => line ? `\t${line}` : ''));
|
|
39
|
+
lines.push('}', '', '/**', ' * Refuses automatic rollback because generated MariaDB DDL is forward-only.', ' *', ' * @param _knex - Unused Knex connection supplied by the migration runner.', ' * @returns Promise that always rejects before performing database DDL.', ' */', 'export async function down(_knex: Knex): Promise<void> {', "\tthrow new Error('Generated database migrations are forward-only.');", '}', '');
|
|
40
|
+
return lines.join('\n');
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Orders migration DDL so all new tables exist before foreign keys are added.
|
|
44
|
+
*
|
|
45
|
+
* @param changes - Safe normalized schema changes.
|
|
46
|
+
* @returns TypeScript statements without the outer function indentation.
|
|
47
|
+
*/
|
|
48
|
+
function renderMigrationBody(changes) {
|
|
49
|
+
const lines = [];
|
|
50
|
+
const createTables = changes.filter(isChangeKind('create_table'));
|
|
51
|
+
const otherChanges = changes.filter(change => change.kind !== 'create_table');
|
|
52
|
+
for (const change of otherChanges) {
|
|
53
|
+
if (change.kind === 'drop_foreign_key') {
|
|
54
|
+
appendStatement(lines, renderDropForeignKey(change.tableName, change.foreignKeyName));
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
for (const change of otherChanges) {
|
|
58
|
+
if (change.kind === 'drop_index') {
|
|
59
|
+
appendStatement(lines, renderDropIndex(change.tableName, change.indexName));
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
for (const change of otherChanges) {
|
|
63
|
+
if (change.kind === 'drop_column') {
|
|
64
|
+
appendStatement(lines, renderDropColumn(change.tableName, change.columnName));
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
for (const change of createTables) {
|
|
68
|
+
appendStatement(lines, renderCreateTable(change.table));
|
|
69
|
+
}
|
|
70
|
+
for (const change of otherChanges) {
|
|
71
|
+
if (change.kind === 'alter_table_comment') {
|
|
72
|
+
appendStatement(lines, renderAlterTableComment(change.tableName, change.comment));
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
for (const change of otherChanges) {
|
|
76
|
+
if (change.kind === 'add_column') {
|
|
77
|
+
appendStatement(lines, renderAddColumn(change.tableName, change.column));
|
|
78
|
+
}
|
|
79
|
+
if (change.kind === 'alter_column') {
|
|
80
|
+
appendStatement(lines, renderAlterColumn(change));
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
for (const change of otherChanges) {
|
|
84
|
+
if (change.kind === 'add_index') {
|
|
85
|
+
appendStatement(lines, renderAddIndex(change.tableName, change.index));
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
const foreignKeys = [
|
|
89
|
+
...createTables.flatMap(change => {
|
|
90
|
+
return change.table.foreignKeys.map(foreignKey => ({
|
|
91
|
+
tableName: change.table.name,
|
|
92
|
+
foreignKey,
|
|
93
|
+
}));
|
|
94
|
+
}),
|
|
95
|
+
...otherChanges.flatMap(change => {
|
|
96
|
+
return change.kind === 'add_foreign_key'
|
|
97
|
+
? [{ tableName: change.tableName, foreignKey: change.foreignKey }]
|
|
98
|
+
: [];
|
|
99
|
+
}),
|
|
100
|
+
];
|
|
101
|
+
for (const { tableName, foreignKey } of foreignKeys) {
|
|
102
|
+
appendStatement(lines, renderAddForeignKey(tableName, foreignKey));
|
|
103
|
+
}
|
|
104
|
+
for (const change of otherChanges) {
|
|
105
|
+
if (change.kind === 'drop_table') {
|
|
106
|
+
appendStatement(lines, renderDropTable(change.tableName));
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
return lines;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Appends one statement separated from the previous statement by a blank line.
|
|
113
|
+
*
|
|
114
|
+
* @param target - Mutable migration body lines.
|
|
115
|
+
* @param statement - Complete statement lines to append.
|
|
116
|
+
*/
|
|
117
|
+
function appendStatement(target, statement) {
|
|
118
|
+
if (target.length > 0)
|
|
119
|
+
target.push('');
|
|
120
|
+
target.push(...statement);
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Renders one table creation without foreign keys, which are emitted later.
|
|
124
|
+
*
|
|
125
|
+
* @param table - Complete desired table definition.
|
|
126
|
+
* @returns TypeScript statement lines.
|
|
127
|
+
*/
|
|
128
|
+
function renderCreateTable(table) {
|
|
129
|
+
const lines = [
|
|
130
|
+
`await knex.schema.createTable(${quote(table.name)}, table => {`,
|
|
131
|
+
];
|
|
132
|
+
for (const column of table.columns) {
|
|
133
|
+
lines.push(...indent(renderColumn(column, {
|
|
134
|
+
creation: true,
|
|
135
|
+
alterNullable: true,
|
|
136
|
+
alterType: true,
|
|
137
|
+
alterComment: true,
|
|
138
|
+
})));
|
|
139
|
+
}
|
|
140
|
+
for (const index of table.indexes) {
|
|
141
|
+
lines.push(...indent(renderIndex(index)));
|
|
142
|
+
}
|
|
143
|
+
if (table.comment) {
|
|
144
|
+
lines.push(`\ttable.comment(${quote(table.comment)});`);
|
|
145
|
+
}
|
|
146
|
+
lines.push('});');
|
|
147
|
+
return lines;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Renders one nullable-column addition.
|
|
151
|
+
*
|
|
152
|
+
* @param tableName - Table receiving the column.
|
|
153
|
+
* @param column - Desired new column definition.
|
|
154
|
+
* @returns TypeScript statement lines.
|
|
155
|
+
*/
|
|
156
|
+
function renderAddColumn(tableName, column) {
|
|
157
|
+
return [
|
|
158
|
+
`await knex.schema.alterTable(${quote(tableName)}, table => {`,
|
|
159
|
+
...indent(renderColumn(column, {
|
|
160
|
+
creation: true,
|
|
161
|
+
alterNullable: true,
|
|
162
|
+
alterType: true,
|
|
163
|
+
alterComment: true,
|
|
164
|
+
})),
|
|
165
|
+
'});',
|
|
166
|
+
];
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Renders one safe existing-column alteration.
|
|
170
|
+
*
|
|
171
|
+
* @param change - Normalized safe column change.
|
|
172
|
+
* @returns TypeScript statement lines.
|
|
173
|
+
*/
|
|
174
|
+
function renderAlterColumn(change) {
|
|
175
|
+
return [
|
|
176
|
+
`await knex.schema.alterTable(${quote(change.tableName)}, table => {`,
|
|
177
|
+
...indent(renderColumn(change.column, {
|
|
178
|
+
creation: false,
|
|
179
|
+
alterNullable: change.alterNullable,
|
|
180
|
+
alterType: change.alterType,
|
|
181
|
+
alterComment: change.alterComment,
|
|
182
|
+
})),
|
|
183
|
+
'});',
|
|
184
|
+
];
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Renders one table comment change, using an empty comment to clear it.
|
|
188
|
+
*
|
|
189
|
+
* @param tableName - Table receiving the comment.
|
|
190
|
+
* @param comment - Desired normalized comment.
|
|
191
|
+
* @returns TypeScript statement lines.
|
|
192
|
+
*/
|
|
193
|
+
function renderAlterTableComment(tableName, comment) {
|
|
194
|
+
return [
|
|
195
|
+
`await knex.schema.alterTable(${quote(tableName)}, table => {`,
|
|
196
|
+
`\ttable.comment(${quote(comment ?? '')});`,
|
|
197
|
+
'});',
|
|
198
|
+
];
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Renders one named index addition.
|
|
202
|
+
*
|
|
203
|
+
* @param tableName - Table receiving the index.
|
|
204
|
+
* @param index - Desired normalized index definition.
|
|
205
|
+
* @returns TypeScript statement lines.
|
|
206
|
+
*/
|
|
207
|
+
function renderAddIndex(tableName, index) {
|
|
208
|
+
return [
|
|
209
|
+
`await knex.schema.alterTable(${quote(tableName)}, table => {`,
|
|
210
|
+
...indent(renderIndex(index)),
|
|
211
|
+
'});',
|
|
212
|
+
];
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Renders one named foreign-key addition.
|
|
216
|
+
*
|
|
217
|
+
* @param tableName - Local table receiving the constraint.
|
|
218
|
+
* @param foreignKey - Desired normalized foreign key.
|
|
219
|
+
* @returns TypeScript statement lines.
|
|
220
|
+
*/
|
|
221
|
+
function renderAddForeignKey(tableName, foreignKey) {
|
|
222
|
+
const lines = [
|
|
223
|
+
`await knex.schema.alterTable(${quote(tableName)}, table => {`,
|
|
224
|
+
'\tlet foreign = table',
|
|
225
|
+
`\t\t.foreign(${quote(foreignKey.column)}, ${quote(foreignKey.name)})`,
|
|
226
|
+
`\t\t.references(${quote(foreignKey.referencesColumn)})`,
|
|
227
|
+
`\t\t.inTable(${quote(foreignKey.referencesTable)});`,
|
|
228
|
+
];
|
|
229
|
+
if (foreignKey.onDelete) {
|
|
230
|
+
lines.push('', `\tforeign = foreign.onDelete(${quote(foreignKey.onDelete)});`);
|
|
231
|
+
}
|
|
232
|
+
if (foreignKey.onUpdate) {
|
|
233
|
+
lines.push('', `\tforeign.onUpdate(${quote(foreignKey.onUpdate)});`);
|
|
234
|
+
}
|
|
235
|
+
lines.push('});');
|
|
236
|
+
return lines;
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* Renders one named foreign-key drop.
|
|
240
|
+
*
|
|
241
|
+
* @param tableName - Local table owning the constraint.
|
|
242
|
+
* @param foreignKeyName - Stable foreign-key name.
|
|
243
|
+
* @returns TypeScript statement lines.
|
|
244
|
+
*/
|
|
245
|
+
function renderDropForeignKey(tableName, foreignKeyName) {
|
|
246
|
+
return [
|
|
247
|
+
`await knex.schema.raw('ALTER TABLE ?? DROP FOREIGN KEY ??', [${quote(tableName)}, ${quote(foreignKeyName)}]);`,
|
|
248
|
+
];
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* Renders one named index drop.
|
|
252
|
+
*
|
|
253
|
+
* @param tableName - Table owning the index.
|
|
254
|
+
* @param indexName - Stable index name.
|
|
255
|
+
* @returns TypeScript statement lines.
|
|
256
|
+
*/
|
|
257
|
+
function renderDropIndex(tableName, indexName) {
|
|
258
|
+
return [
|
|
259
|
+
`await knex.schema.raw('ALTER TABLE ?? DROP INDEX ??', [${quote(tableName)}, ${quote(indexName)}]);`,
|
|
260
|
+
];
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Renders one column drop.
|
|
264
|
+
*
|
|
265
|
+
* @param tableName - Table owning the column.
|
|
266
|
+
* @param columnName - Physical column name.
|
|
267
|
+
* @returns TypeScript statement lines.
|
|
268
|
+
*/
|
|
269
|
+
function renderDropColumn(tableName, columnName) {
|
|
270
|
+
return [
|
|
271
|
+
`await knex.schema.alterTable(${quote(tableName)}, table => {`,
|
|
272
|
+
`\ttable.dropColumn(${quote(columnName)});`,
|
|
273
|
+
'});',
|
|
274
|
+
];
|
|
275
|
+
}
|
|
276
|
+
/**
|
|
277
|
+
* Renders one table drop.
|
|
278
|
+
*
|
|
279
|
+
* @param tableName - Table to remove.
|
|
280
|
+
* @returns TypeScript statement lines.
|
|
281
|
+
*/
|
|
282
|
+
function renderDropTable(tableName) {
|
|
283
|
+
return [
|
|
284
|
+
`await knex.schema.dropTableIfExists(${quote(tableName)});`,
|
|
285
|
+
];
|
|
286
|
+
}
|
|
287
|
+
/**
|
|
288
|
+
* Renders a column builder inside a small lexical block so every column can
|
|
289
|
+
* reuse the same readable local variable name.
|
|
290
|
+
*
|
|
291
|
+
* @param column - Desired normalized column definition.
|
|
292
|
+
* @param options - Creation or alteration facets to emit.
|
|
293
|
+
* @returns TypeScript callback lines.
|
|
294
|
+
*/
|
|
295
|
+
function renderColumn(column, options) {
|
|
296
|
+
const lines = [
|
|
297
|
+
'{',
|
|
298
|
+
`\tconst column = table.specificType(${quote(column.name)}, ${quote(column.type)});`,
|
|
299
|
+
];
|
|
300
|
+
lines.push(column.nullable
|
|
301
|
+
? '\tcolumn.nullable();'
|
|
302
|
+
: '\tcolumn.notNullable();');
|
|
303
|
+
if (options.creation && column.primary) {
|
|
304
|
+
lines.push('\tcolumn.primary();');
|
|
305
|
+
}
|
|
306
|
+
if (options.creation && column.unique) {
|
|
307
|
+
lines.push('\tcolumn.unique();');
|
|
308
|
+
}
|
|
309
|
+
if (Object.hasOwn(column, 'default')) {
|
|
310
|
+
lines.push(`\tcolumn.defaultTo(${renderValue(column.default)});`);
|
|
311
|
+
}
|
|
312
|
+
if (column.comment || (!options.creation && options.alterComment)) {
|
|
313
|
+
lines.push(`\tcolumn.comment(${quote(column.comment ?? '')});`);
|
|
314
|
+
}
|
|
315
|
+
if (!options.creation) {
|
|
316
|
+
lines.push(`\tcolumn.alter({ alterNullable: ${options.alterNullable}, alterType: ${options.alterType} });`);
|
|
317
|
+
}
|
|
318
|
+
lines.push('}');
|
|
319
|
+
return lines;
|
|
320
|
+
}
|
|
321
|
+
/**
|
|
322
|
+
* Renders one normalized index inside a Knex table callback.
|
|
323
|
+
*
|
|
324
|
+
* @param index - Desired named index.
|
|
325
|
+
* @returns TypeScript callback lines.
|
|
326
|
+
*/
|
|
327
|
+
function renderIndex(index) {
|
|
328
|
+
const columns = renderIndexColumns(index);
|
|
329
|
+
if (index.type === 'vector') {
|
|
330
|
+
return [`table.index(${columns}, ${quote(index.name)}, 'vector');`];
|
|
331
|
+
}
|
|
332
|
+
if (index.unique) {
|
|
333
|
+
return [`table.unique(${columns}, ${quote(index.name)});`];
|
|
334
|
+
}
|
|
335
|
+
return [`table.index(${columns}, ${quote(index.name)});`];
|
|
336
|
+
}
|
|
337
|
+
/**
|
|
338
|
+
* Renders scalar or raw ordered index columns.
|
|
339
|
+
*
|
|
340
|
+
* @param index - Desired normalized index.
|
|
341
|
+
* @returns TypeScript expression accepted by Knex index methods.
|
|
342
|
+
*/
|
|
343
|
+
function renderIndexColumns(index) {
|
|
344
|
+
const columns = index.columns.map(column => {
|
|
345
|
+
return column.order
|
|
346
|
+
? `knex.raw('?? ${column.order}', [${quote(column.name)}])`
|
|
347
|
+
: quote(column.name);
|
|
348
|
+
});
|
|
349
|
+
return columns.length === 1 && !index.columns[0]?.order
|
|
350
|
+
? columns[0] ?? '[]'
|
|
351
|
+
: `[${columns.join(', ')}]`;
|
|
352
|
+
}
|
|
353
|
+
/**
|
|
354
|
+
* Adds one tab of indentation to rendered callback lines.
|
|
355
|
+
*
|
|
356
|
+
* @param lines - Lines to indent.
|
|
357
|
+
* @returns New indented line collection.
|
|
358
|
+
*/
|
|
359
|
+
function indent(lines) {
|
|
360
|
+
return lines.map(line => line ? `\t${line}` : '');
|
|
361
|
+
}
|
|
362
|
+
/**
|
|
363
|
+
* Renders a JSON-safe schema value as a TypeScript literal.
|
|
364
|
+
*
|
|
365
|
+
* @param value - Frozen static database default.
|
|
366
|
+
* @returns TypeScript literal expression.
|
|
367
|
+
*/
|
|
368
|
+
function renderValue(value) {
|
|
369
|
+
return JSON.stringify(value);
|
|
370
|
+
}
|
|
371
|
+
/**
|
|
372
|
+
* Renders a string as a deterministic double-quoted literal.
|
|
373
|
+
*
|
|
374
|
+
* @param value - String to quote.
|
|
375
|
+
* @returns JSON-compatible TypeScript string literal.
|
|
376
|
+
*/
|
|
377
|
+
function quote(value) {
|
|
378
|
+
return JSON.stringify(value);
|
|
379
|
+
}
|
|
380
|
+
/**
|
|
381
|
+
* Builds a type guard for one discriminant kind.
|
|
382
|
+
*
|
|
383
|
+
* @param kind - Safe change kind to retain.
|
|
384
|
+
* @returns Array-filter predicate narrowing to that change kind.
|
|
385
|
+
*/
|
|
386
|
+
function isChangeKind(kind) {
|
|
387
|
+
return (change) => {
|
|
388
|
+
return change.kind === kind;
|
|
389
|
+
};
|
|
390
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { ActiveRecordClass } from '../ActiveRecord.js';
|
|
2
|
+
import type { DatabaseDialect } from '../dialects/index.js';
|
|
3
|
+
import type { SchemaSnapshot, SchemaValue } from './contracts/index.js';
|
|
4
|
+
/**
|
|
5
|
+
* Collects a deterministic serializable schema snapshot from ActiveRecord
|
|
6
|
+
* model metadata.
|
|
7
|
+
*
|
|
8
|
+
* @param models - Complete model registry owned by the application.
|
|
9
|
+
* @param dialect - Database dialect used by fields to resolve physical types.
|
|
10
|
+
* @returns Normalized desired database state sorted by physical names.
|
|
11
|
+
*/
|
|
12
|
+
export declare function collectModelSchema(models: readonly ActiveRecordClass[], dialect: DatabaseDialect): SchemaSnapshot;
|
|
13
|
+
/**
|
|
14
|
+
* Canonicalizes dialect type strings so snapshots do not change because of
|
|
15
|
+
* harmless whitespace, case, or MariaDB integer display widths.
|
|
16
|
+
*
|
|
17
|
+
* @param input - Dialect-provided or database-inspected SQL type.
|
|
18
|
+
* @returns Stable lower-case SQL type.
|
|
19
|
+
*/
|
|
20
|
+
export declare function normalizeSchemaColumnType(input: string): string;
|
|
21
|
+
/**
|
|
22
|
+
* Converts a static field default to the JSON-safe representation permitted in
|
|
23
|
+
* committed snapshots and generated migration source.
|
|
24
|
+
*
|
|
25
|
+
* @param input - Static database default produced by a field.
|
|
26
|
+
* @param path - Human-readable location used in validation errors.
|
|
27
|
+
* @returns Deterministically ordered JSON-safe value.
|
|
28
|
+
*/
|
|
29
|
+
export declare function normalizeSchemaValue(input: unknown, path: string): SchemaValue;
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
import { normalizeDatabaseComment } from '@db3.ai/pure';
|
|
2
|
+
import { Database } from '../Database.js';
|
|
3
|
+
import { defaultSchemaForeignKeyName, defaultSchemaIndexName } from './SchemaNames.js';
|
|
4
|
+
/**
|
|
5
|
+
* Collects a deterministic serializable schema snapshot from ActiveRecord
|
|
6
|
+
* model metadata.
|
|
7
|
+
*
|
|
8
|
+
* @param models - Complete model registry owned by the application.
|
|
9
|
+
* @param dialect - Database dialect used by fields to resolve physical types.
|
|
10
|
+
* @returns Normalized desired database state sorted by physical names.
|
|
11
|
+
*/
|
|
12
|
+
export function collectModelSchema(models, dialect) {
|
|
13
|
+
const tables = models.map(Model => collectModelTable(Model, dialect));
|
|
14
|
+
const tableNames = new Set();
|
|
15
|
+
for (const table of tables) {
|
|
16
|
+
if (tableNames.has(table.name)) {
|
|
17
|
+
throw new Error(`Duplicate model table "${table.name}" in migration registry.`);
|
|
18
|
+
}
|
|
19
|
+
tableNames.add(table.name);
|
|
20
|
+
}
|
|
21
|
+
return {
|
|
22
|
+
formatVersion: 1,
|
|
23
|
+
dialect: dialect.name,
|
|
24
|
+
tables: tables.sort(compareByName),
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Collects one normalized table from an ActiveRecord class.
|
|
29
|
+
*
|
|
30
|
+
* @param Model - ActiveRecord model defining the table.
|
|
31
|
+
* @param dialect - Database dialect used by fields to resolve physical types.
|
|
32
|
+
* @returns Deterministic normalized table schema.
|
|
33
|
+
*/
|
|
34
|
+
function collectModelTable(Model, dialect) {
|
|
35
|
+
const schema = Database.getSchema(Model, dialect);
|
|
36
|
+
const columns = schema.columns.map(column => {
|
|
37
|
+
const normalized = {
|
|
38
|
+
name: column.name,
|
|
39
|
+
type: normalizeSchemaColumnType(column.type),
|
|
40
|
+
nullable: !(column.primary || column.nullable === false),
|
|
41
|
+
primary: Boolean(column.primary),
|
|
42
|
+
unique: Boolean(column.unique),
|
|
43
|
+
comment: normalizeDatabaseComment(column.comment),
|
|
44
|
+
};
|
|
45
|
+
if (column.default !== undefined) {
|
|
46
|
+
normalized.default = normalizeSchemaValue(column.default, `${Model.table}.${column.name} default`);
|
|
47
|
+
}
|
|
48
|
+
return normalized;
|
|
49
|
+
});
|
|
50
|
+
const indexes = schema.indexes.map(index => {
|
|
51
|
+
const indexColumns = index.columns.map(normalizeIndexColumn);
|
|
52
|
+
const unique = Boolean(index.unique);
|
|
53
|
+
const type = index.type ?? 'normal';
|
|
54
|
+
return {
|
|
55
|
+
name: index.name ?? defaultSchemaIndexName(Model.table, indexColumns, unique, type),
|
|
56
|
+
columns: indexColumns,
|
|
57
|
+
unique,
|
|
58
|
+
type,
|
|
59
|
+
};
|
|
60
|
+
});
|
|
61
|
+
const foreignKeys = schema.foreignKeys.map(foreignKey => {
|
|
62
|
+
const normalized = {
|
|
63
|
+
name: defaultSchemaForeignKeyName(Model.table, foreignKey.column),
|
|
64
|
+
column: foreignKey.column,
|
|
65
|
+
referencesTable: foreignKey.referencesTable,
|
|
66
|
+
referencesColumn: foreignKey.referencesColumn,
|
|
67
|
+
};
|
|
68
|
+
if (foreignKey.onDelete)
|
|
69
|
+
normalized.onDelete = foreignKey.onDelete;
|
|
70
|
+
if (foreignKey.onUpdate)
|
|
71
|
+
normalized.onUpdate = foreignKey.onUpdate;
|
|
72
|
+
return normalized;
|
|
73
|
+
});
|
|
74
|
+
assertUniqueNames(columns, `${Model.table} column`);
|
|
75
|
+
assertUniqueNames(indexes, `${Model.table} index`);
|
|
76
|
+
assertUniqueNames(foreignKeys, `${Model.table} foreign key`);
|
|
77
|
+
return {
|
|
78
|
+
name: Model.table,
|
|
79
|
+
comment: normalizeDatabaseComment(Model.comment),
|
|
80
|
+
columns: columns.sort(compareByName),
|
|
81
|
+
indexes: indexes.sort(compareByName),
|
|
82
|
+
foreignKeys: foreignKeys.sort(compareByName),
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Converts one framework index column to its normalized serializable form.
|
|
87
|
+
*
|
|
88
|
+
* @param column - Field-owned index column metadata.
|
|
89
|
+
* @returns Normalized ordered index column.
|
|
90
|
+
*/
|
|
91
|
+
function normalizeIndexColumn(column) {
|
|
92
|
+
if (typeof column === 'string') {
|
|
93
|
+
return { name: column };
|
|
94
|
+
}
|
|
95
|
+
const normalized = { name: column.name };
|
|
96
|
+
if (column.order)
|
|
97
|
+
normalized.order = column.order;
|
|
98
|
+
return normalized;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Canonicalizes dialect type strings so snapshots do not change because of
|
|
102
|
+
* harmless whitespace, case, or MariaDB integer display widths.
|
|
103
|
+
*
|
|
104
|
+
* @param input - Dialect-provided or database-inspected SQL type.
|
|
105
|
+
* @returns Stable lower-case SQL type.
|
|
106
|
+
*/
|
|
107
|
+
export function normalizeSchemaColumnType(input) {
|
|
108
|
+
return input
|
|
109
|
+
.trim()
|
|
110
|
+
.toLowerCase()
|
|
111
|
+
.replace(/\bboolean\b/g, 'tinyint(1)')
|
|
112
|
+
.replace(/\b(bigint|int|mediumint|smallint)\(\d+\)/g, '$1')
|
|
113
|
+
.replace(/\s+/g, ' ');
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Converts a static field default to the JSON-safe representation permitted in
|
|
117
|
+
* committed snapshots and generated migration source.
|
|
118
|
+
*
|
|
119
|
+
* @param input - Static database default produced by a field.
|
|
120
|
+
* @param path - Human-readable location used in validation errors.
|
|
121
|
+
* @returns Deterministically ordered JSON-safe value.
|
|
122
|
+
*/
|
|
123
|
+
export function normalizeSchemaValue(input, path) {
|
|
124
|
+
if (input === null || typeof input === 'string' || typeof input === 'boolean') {
|
|
125
|
+
return input;
|
|
126
|
+
}
|
|
127
|
+
if (typeof input === 'number') {
|
|
128
|
+
if (!Number.isFinite(input)) {
|
|
129
|
+
throw new Error(`${path} must be a finite serializable number.`);
|
|
130
|
+
}
|
|
131
|
+
return input;
|
|
132
|
+
}
|
|
133
|
+
if (Array.isArray(input)) {
|
|
134
|
+
return input.map((value, index) => {
|
|
135
|
+
return normalizeSchemaValue(value, `${path}[${index}]`);
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
if (isPlainObject(input)) {
|
|
139
|
+
return Object.fromEntries(Object.entries(input)
|
|
140
|
+
.sort(([a], [b]) => a.localeCompare(b))
|
|
141
|
+
.map(([key, value]) => {
|
|
142
|
+
return [key, normalizeSchemaValue(value, `${path}.${key}`)];
|
|
143
|
+
}));
|
|
144
|
+
}
|
|
145
|
+
throw new Error(`${path} must be a static JSON-serializable value.`);
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Tests whether an input is a plain record that can be frozen as JSON.
|
|
149
|
+
*
|
|
150
|
+
* @param input - Value to inspect.
|
|
151
|
+
* @returns True only for ordinary or null-prototype records.
|
|
152
|
+
*/
|
|
153
|
+
function isPlainObject(input) {
|
|
154
|
+
if (!input || typeof input !== 'object')
|
|
155
|
+
return false;
|
|
156
|
+
const prototype = Object.getPrototypeOf(input);
|
|
157
|
+
return prototype === Object.prototype || prototype === null;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Rejects duplicate names before sorting hides their model declaration order.
|
|
161
|
+
*
|
|
162
|
+
* @param values - Named schema objects to validate.
|
|
163
|
+
* @param description - Object kind included in validation errors.
|
|
164
|
+
*/
|
|
165
|
+
function assertUniqueNames(values, description) {
|
|
166
|
+
const names = new Set();
|
|
167
|
+
for (const value of values) {
|
|
168
|
+
if (names.has(value.name)) {
|
|
169
|
+
throw new Error(`Duplicate ${description} "${value.name}".`);
|
|
170
|
+
}
|
|
171
|
+
names.add(value.name);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Sort comparator for normalized named schema objects.
|
|
176
|
+
*
|
|
177
|
+
* @param a - First named schema object.
|
|
178
|
+
* @param b - Second named schema object.
|
|
179
|
+
* @returns Locale-independent lexical ordering result.
|
|
180
|
+
*/
|
|
181
|
+
function compareByName(a, b) {
|
|
182
|
+
return a.name < b.name ? -1 : a.name > b.name ? 1 : 0;
|
|
183
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { SchemaMigrationPlan, SchemaSnapshot } from './contracts/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Computes a pure deterministic migration plan between two normalized schema
|
|
4
|
+
* snapshots.
|
|
5
|
+
*
|
|
6
|
+
* The automatic policy is intentionally conservative. Any blocked change
|
|
7
|
+
* prevents the manager from emitting a partially correct migration.
|
|
8
|
+
*
|
|
9
|
+
* @param from - Previously committed or currently installed model-owned state.
|
|
10
|
+
* @param to - New desired model-owned state.
|
|
11
|
+
* @returns Safe renderable changes and blocked reviewed changes.
|
|
12
|
+
*/
|
|
13
|
+
export declare function diffSchemaSnapshots(from: SchemaSnapshot, to: SchemaSnapshot): SchemaMigrationPlan;
|