@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,427 @@
|
|
|
1
|
+
import { isDeepStrictEqual } from 'node:util';
|
|
2
|
+
import { hashSchemaSnapshot } from './SchemaSnapshotSerializer.js';
|
|
3
|
+
/**
|
|
4
|
+
* Computes a pure deterministic migration plan between two normalized schema
|
|
5
|
+
* snapshots.
|
|
6
|
+
*
|
|
7
|
+
* The automatic policy is intentionally conservative. Any blocked change
|
|
8
|
+
* prevents the manager from emitting a partially correct migration.
|
|
9
|
+
*
|
|
10
|
+
* @param from - Previously committed or currently installed model-owned state.
|
|
11
|
+
* @param to - New desired model-owned state.
|
|
12
|
+
* @returns Safe renderable changes and blocked reviewed changes.
|
|
13
|
+
*/
|
|
14
|
+
export function diffSchemaSnapshots(from, to) {
|
|
15
|
+
if (from.dialect !== to.dialect) {
|
|
16
|
+
throw new Error(`Cannot diff ${from.dialect} schema against ${to.dialect} schema.`);
|
|
17
|
+
}
|
|
18
|
+
const safeChanges = [];
|
|
19
|
+
const blockedChanges = [];
|
|
20
|
+
const fromTables = mapByName(from.tables);
|
|
21
|
+
const toTables = mapByName(to.tables);
|
|
22
|
+
const tableNames = [...new Set([
|
|
23
|
+
...fromTables.keys(),
|
|
24
|
+
...toTables.keys(),
|
|
25
|
+
])].sort();
|
|
26
|
+
for (const tableName of tableNames) {
|
|
27
|
+
const oldTable = fromTables.get(tableName);
|
|
28
|
+
const newTable = toTables.get(tableName);
|
|
29
|
+
if (!oldTable && newTable) {
|
|
30
|
+
safeChanges.push({
|
|
31
|
+
kind: 'create_table',
|
|
32
|
+
table: newTable,
|
|
33
|
+
description: `Create table ${tableName}.`,
|
|
34
|
+
});
|
|
35
|
+
continue;
|
|
36
|
+
}
|
|
37
|
+
if (oldTable && !newTable) {
|
|
38
|
+
blockedChanges.push({
|
|
39
|
+
kind: 'blocked_change',
|
|
40
|
+
operation: 'remove_table',
|
|
41
|
+
tableName,
|
|
42
|
+
description: `Removing table ${tableName} requires a reviewed migration.`,
|
|
43
|
+
});
|
|
44
|
+
continue;
|
|
45
|
+
}
|
|
46
|
+
if (oldTable && newTable) {
|
|
47
|
+
diffTable(oldTable, newTable, safeChanges, blockedChanges);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return {
|
|
51
|
+
fromHash: hashSchemaSnapshot(from),
|
|
52
|
+
toHash: hashSchemaSnapshot(to),
|
|
53
|
+
safeChanges,
|
|
54
|
+
blockedChanges,
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Diffs two versions of one table into shared safe and blocked collections.
|
|
59
|
+
*
|
|
60
|
+
* @param from - Previous table definition.
|
|
61
|
+
* @param to - Desired table definition.
|
|
62
|
+
* @param safeChanges - Mutable safe-change output collection.
|
|
63
|
+
* @param blockedChanges - Mutable blocked-change output collection.
|
|
64
|
+
*/
|
|
65
|
+
function diffTable(from, to, safeChanges, blockedChanges) {
|
|
66
|
+
if (from.comment !== to.comment) {
|
|
67
|
+
safeChanges.push({
|
|
68
|
+
kind: 'alter_table_comment',
|
|
69
|
+
tableName: to.name,
|
|
70
|
+
comment: to.comment,
|
|
71
|
+
description: `Update comment on table ${to.name}.`,
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
const fromColumns = mapByName(from.columns);
|
|
75
|
+
const toColumns = mapByName(to.columns);
|
|
76
|
+
const nullableAddedColumnNames = new Set();
|
|
77
|
+
const columnNames = [...new Set([
|
|
78
|
+
...fromColumns.keys(),
|
|
79
|
+
...toColumns.keys(),
|
|
80
|
+
])].sort();
|
|
81
|
+
for (const columnName of columnNames) {
|
|
82
|
+
const oldColumn = fromColumns.get(columnName);
|
|
83
|
+
const newColumn = toColumns.get(columnName);
|
|
84
|
+
if (!oldColumn && newColumn) {
|
|
85
|
+
diffAddedColumn(to.name, newColumn, safeChanges, blockedChanges);
|
|
86
|
+
if (isNullableAddedColumn(newColumn)) {
|
|
87
|
+
nullableAddedColumnNames.add(columnName);
|
|
88
|
+
}
|
|
89
|
+
continue;
|
|
90
|
+
}
|
|
91
|
+
if (oldColumn && !newColumn) {
|
|
92
|
+
blockedChanges.push({
|
|
93
|
+
kind: 'blocked_change',
|
|
94
|
+
operation: 'remove_column',
|
|
95
|
+
tableName: to.name,
|
|
96
|
+
columnName,
|
|
97
|
+
description: `Removing ${to.name}.${columnName} may lose data or represent a rename.`,
|
|
98
|
+
});
|
|
99
|
+
continue;
|
|
100
|
+
}
|
|
101
|
+
if (oldColumn && newColumn) {
|
|
102
|
+
diffExistingColumn(to.name, oldColumn, newColumn, from, to, safeChanges, blockedChanges);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
diffIndexes(from, to, nullableAddedColumnNames, safeChanges, blockedChanges);
|
|
106
|
+
diffForeignKeys(from, to, nullableAddedColumnNames, safeChanges, blockedChanges);
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Classifies an added column according to the additive migration policy.
|
|
110
|
+
*
|
|
111
|
+
* @param tableName - Table receiving the new column.
|
|
112
|
+
* @param column - Desired new column.
|
|
113
|
+
* @param safeChanges - Mutable safe-change output collection.
|
|
114
|
+
* @param blockedChanges - Mutable blocked-change output collection.
|
|
115
|
+
*/
|
|
116
|
+
function diffAddedColumn(tableName, column, safeChanges, blockedChanges) {
|
|
117
|
+
if (column.primary) {
|
|
118
|
+
blockedChanges.push({
|
|
119
|
+
kind: 'blocked_change',
|
|
120
|
+
operation: 'add_required_column',
|
|
121
|
+
tableName,
|
|
122
|
+
columnName: column.name,
|
|
123
|
+
description: `Adding required column ${tableName}.${column.name} requires a data-aware migration.`,
|
|
124
|
+
});
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
if (column.unique) {
|
|
128
|
+
blockedChanges.push({
|
|
129
|
+
kind: 'blocked_change',
|
|
130
|
+
operation: 'add_unique_column',
|
|
131
|
+
tableName,
|
|
132
|
+
columnName: column.name,
|
|
133
|
+
description: `Adding unique column ${tableName}.${column.name} requires a reviewed migration.`,
|
|
134
|
+
});
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
if (!column.nullable && !Object.hasOwn(column, 'default')) {
|
|
138
|
+
blockedChanges.push({
|
|
139
|
+
kind: 'blocked_change',
|
|
140
|
+
operation: 'add_required_column',
|
|
141
|
+
tableName,
|
|
142
|
+
columnName: column.name,
|
|
143
|
+
description: `Adding required column ${tableName}.${column.name} without a static default requires a data-aware migration.`,
|
|
144
|
+
});
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
147
|
+
safeChanges.push({
|
|
148
|
+
kind: 'add_column',
|
|
149
|
+
tableName,
|
|
150
|
+
column,
|
|
151
|
+
description: column.nullable
|
|
152
|
+
? `Add nullable column ${tableName}.${column.name}.`
|
|
153
|
+
: `Add required column ${tableName}.${column.name} using its static default.`,
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Reports whether a new nullable column can safely receive a foreign key.
|
|
158
|
+
*
|
|
159
|
+
* Required columns with defaults remain excluded because their generated
|
|
160
|
+
* backfill value may not reference an existing parent row.
|
|
161
|
+
*
|
|
162
|
+
* @param column - Desired new column.
|
|
163
|
+
* @returns True for nullable non-unique non-primary columns.
|
|
164
|
+
*/
|
|
165
|
+
function isNullableAddedColumn(column) {
|
|
166
|
+
return column.nullable && !column.primary && !column.unique;
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Classifies changes to an existing column.
|
|
170
|
+
*
|
|
171
|
+
* @param tableName - Table containing the column.
|
|
172
|
+
* @param from - Previous column definition.
|
|
173
|
+
* @param to - Desired column definition.
|
|
174
|
+
* @param fromTable - Previous table definition used to inspect indexes.
|
|
175
|
+
* @param toTable - Desired table definition used to inspect indexes.
|
|
176
|
+
* @param safeChanges - Mutable safe-change output collection.
|
|
177
|
+
* @param blockedChanges - Mutable blocked-change output collection.
|
|
178
|
+
*/
|
|
179
|
+
function diffExistingColumn(tableName, from, to, fromTable, toTable, safeChanges, blockedChanges) {
|
|
180
|
+
let alterType = false;
|
|
181
|
+
let alterNullable = false;
|
|
182
|
+
const alterComment = from.comment !== to.comment;
|
|
183
|
+
const alterDefault = !defaultsEqual(from, to);
|
|
184
|
+
if (from.type !== to.type) {
|
|
185
|
+
const indexed = columnIsIndexed(from.name, fromTable)
|
|
186
|
+
|| columnIsIndexed(to.name, toTable);
|
|
187
|
+
if (isSafeTypeWidening(from.type, to.type) && !indexed) {
|
|
188
|
+
alterType = true;
|
|
189
|
+
}
|
|
190
|
+
else {
|
|
191
|
+
blockedChanges.push({
|
|
192
|
+
kind: 'blocked_change',
|
|
193
|
+
operation: 'alter_column_type',
|
|
194
|
+
tableName,
|
|
195
|
+
columnName: to.name,
|
|
196
|
+
description: `Changing ${tableName}.${to.name} from ${from.type} to ${to.type} requires review.`,
|
|
197
|
+
});
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
if (from.nullable !== to.nullable) {
|
|
201
|
+
if (!from.nullable && to.nullable) {
|
|
202
|
+
alterNullable = true;
|
|
203
|
+
}
|
|
204
|
+
else {
|
|
205
|
+
blockedChanges.push({
|
|
206
|
+
kind: 'blocked_change',
|
|
207
|
+
operation: 'tighten_column_nullability',
|
|
208
|
+
tableName,
|
|
209
|
+
columnName: to.name,
|
|
210
|
+
description: `Making ${tableName}.${to.name} required needs a null-data check.`,
|
|
211
|
+
});
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
if (from.primary !== to.primary) {
|
|
215
|
+
blockedChanges.push({
|
|
216
|
+
kind: 'blocked_change',
|
|
217
|
+
operation: 'alter_column_primary',
|
|
218
|
+
tableName,
|
|
219
|
+
columnName: to.name,
|
|
220
|
+
description: `Changing the primary-key status of ${tableName}.${to.name} requires review.`,
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
if (from.unique !== to.unique) {
|
|
224
|
+
blockedChanges.push({
|
|
225
|
+
kind: 'blocked_change',
|
|
226
|
+
operation: 'alter_column_unique',
|
|
227
|
+
tableName,
|
|
228
|
+
columnName: to.name,
|
|
229
|
+
description: `Changing the unique constraint on ${tableName}.${to.name} requires review.`,
|
|
230
|
+
});
|
|
231
|
+
}
|
|
232
|
+
if (alterType || alterNullable || alterComment || alterDefault) {
|
|
233
|
+
safeChanges.push({
|
|
234
|
+
kind: 'alter_column',
|
|
235
|
+
tableName,
|
|
236
|
+
column: to,
|
|
237
|
+
alterType,
|
|
238
|
+
alterNullable,
|
|
239
|
+
alterComment,
|
|
240
|
+
alterDefault,
|
|
241
|
+
description: `Alter column ${tableName}.${to.name}.`,
|
|
242
|
+
});
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* Classifies index additions, removals, and definition changes.
|
|
247
|
+
*
|
|
248
|
+
* @param from - Previous table definition.
|
|
249
|
+
* @param to - Desired table definition.
|
|
250
|
+
* @param addedColumnNames - Columns safely added by the same plan.
|
|
251
|
+
* @param safeChanges - Mutable safe-change output collection.
|
|
252
|
+
* @param blockedChanges - Mutable blocked-change output collection.
|
|
253
|
+
*/
|
|
254
|
+
function diffIndexes(from, to, addedColumnNames, safeChanges, blockedChanges) {
|
|
255
|
+
const oldIndexes = mapByName(from.indexes);
|
|
256
|
+
const newIndexes = mapByName(to.indexes);
|
|
257
|
+
const names = [...new Set([...oldIndexes.keys(), ...newIndexes.keys()])].sort();
|
|
258
|
+
for (const name of names) {
|
|
259
|
+
const oldIndex = oldIndexes.get(name);
|
|
260
|
+
const newIndex = newIndexes.get(name);
|
|
261
|
+
if (!oldIndex && newIndex) {
|
|
262
|
+
const usesNewNullableColumn = newIndex.columns.some(column => {
|
|
263
|
+
return addedColumnNames.has(column.name);
|
|
264
|
+
});
|
|
265
|
+
const isOrdinaryNonUniqueIndex = newIndex.type === 'normal'
|
|
266
|
+
&& !newIndex.unique;
|
|
267
|
+
if (isOrdinaryNonUniqueIndex || usesNewNullableColumn) {
|
|
268
|
+
safeChanges.push({
|
|
269
|
+
kind: 'add_index',
|
|
270
|
+
tableName: to.name,
|
|
271
|
+
index: newIndex,
|
|
272
|
+
description: `Add index ${name} on ${to.name}.`,
|
|
273
|
+
});
|
|
274
|
+
}
|
|
275
|
+
else {
|
|
276
|
+
blockedChanges.push({
|
|
277
|
+
kind: 'blocked_change',
|
|
278
|
+
operation: 'add_index_to_existing_columns',
|
|
279
|
+
tableName: to.name,
|
|
280
|
+
objectName: name,
|
|
281
|
+
description: `Adding index ${name} to existing columns requires review.`,
|
|
282
|
+
});
|
|
283
|
+
}
|
|
284
|
+
continue;
|
|
285
|
+
}
|
|
286
|
+
if (oldIndex && !newIndex) {
|
|
287
|
+
blockedChanges.push({
|
|
288
|
+
kind: 'blocked_change',
|
|
289
|
+
operation: 'remove_index',
|
|
290
|
+
tableName: to.name,
|
|
291
|
+
objectName: name,
|
|
292
|
+
description: `Removing index ${name} from ${to.name} requires review.`,
|
|
293
|
+
});
|
|
294
|
+
continue;
|
|
295
|
+
}
|
|
296
|
+
if (oldIndex && newIndex && !isDeepStrictEqual(oldIndex, newIndex)) {
|
|
297
|
+
blockedChanges.push({
|
|
298
|
+
kind: 'blocked_change',
|
|
299
|
+
operation: 'alter_index',
|
|
300
|
+
tableName: to.name,
|
|
301
|
+
objectName: name,
|
|
302
|
+
description: `Changing index ${name} on ${to.name} requires review.`,
|
|
303
|
+
});
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
/**
|
|
308
|
+
* Classifies foreign-key additions, removals, and definition changes.
|
|
309
|
+
*
|
|
310
|
+
* @param from - Previous table definition.
|
|
311
|
+
* @param to - Desired table definition.
|
|
312
|
+
* @param addedColumnNames - Columns safely added by the same plan.
|
|
313
|
+
* @param safeChanges - Mutable safe-change output collection.
|
|
314
|
+
* @param blockedChanges - Mutable blocked-change output collection.
|
|
315
|
+
*/
|
|
316
|
+
function diffForeignKeys(from, to, addedColumnNames, safeChanges, blockedChanges) {
|
|
317
|
+
const oldKeys = mapByName(from.foreignKeys);
|
|
318
|
+
const newKeys = mapByName(to.foreignKeys);
|
|
319
|
+
const names = [...new Set([...oldKeys.keys(), ...newKeys.keys()])].sort();
|
|
320
|
+
for (const name of names) {
|
|
321
|
+
const oldKey = oldKeys.get(name);
|
|
322
|
+
const newKey = newKeys.get(name);
|
|
323
|
+
if (!oldKey && newKey) {
|
|
324
|
+
if (addedColumnNames.has(newKey.column)) {
|
|
325
|
+
safeChanges.push({
|
|
326
|
+
kind: 'add_foreign_key',
|
|
327
|
+
tableName: to.name,
|
|
328
|
+
foreignKey: newKey,
|
|
329
|
+
description: `Add foreign key ${name} on ${to.name}.`,
|
|
330
|
+
});
|
|
331
|
+
}
|
|
332
|
+
else {
|
|
333
|
+
blockedChanges.push({
|
|
334
|
+
kind: 'blocked_change',
|
|
335
|
+
operation: 'add_foreign_key_to_existing_column',
|
|
336
|
+
tableName: to.name,
|
|
337
|
+
columnName: newKey.column,
|
|
338
|
+
objectName: name,
|
|
339
|
+
description: `Adding foreign key ${name} to existing data requires review.`,
|
|
340
|
+
});
|
|
341
|
+
}
|
|
342
|
+
continue;
|
|
343
|
+
}
|
|
344
|
+
if (oldKey && !newKey) {
|
|
345
|
+
blockedChanges.push({
|
|
346
|
+
kind: 'blocked_change',
|
|
347
|
+
operation: 'remove_foreign_key',
|
|
348
|
+
tableName: to.name,
|
|
349
|
+
objectName: name,
|
|
350
|
+
description: `Removing foreign key ${name} from ${to.name} requires review.`,
|
|
351
|
+
});
|
|
352
|
+
continue;
|
|
353
|
+
}
|
|
354
|
+
if (oldKey && newKey && !isDeepStrictEqual(oldKey, newKey)) {
|
|
355
|
+
blockedChanges.push({
|
|
356
|
+
kind: 'blocked_change',
|
|
357
|
+
operation: 'alter_foreign_key',
|
|
358
|
+
tableName: to.name,
|
|
359
|
+
objectName: name,
|
|
360
|
+
description: `Changing foreign key ${name} on ${to.name} requires review.`,
|
|
361
|
+
});
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
/**
|
|
366
|
+
* Reports whether a type change only increases string storage capacity.
|
|
367
|
+
*
|
|
368
|
+
* @param fromType - Previous normalized physical type.
|
|
369
|
+
* @param toType - Desired normalized physical type.
|
|
370
|
+
* @returns True for supported varchar/text widening transitions.
|
|
371
|
+
*/
|
|
372
|
+
function isSafeTypeWidening(fromType, toType) {
|
|
373
|
+
const fromVarchar = varcharLength(fromType);
|
|
374
|
+
const toVarchar = varcharLength(toType);
|
|
375
|
+
if (fromVarchar !== null && toVarchar !== null) {
|
|
376
|
+
return toVarchar > fromVarchar;
|
|
377
|
+
}
|
|
378
|
+
if (fromVarchar !== null) {
|
|
379
|
+
return toType === 'text' || toType === 'longtext';
|
|
380
|
+
}
|
|
381
|
+
return fromType === 'text' && toType === 'longtext';
|
|
382
|
+
}
|
|
383
|
+
/**
|
|
384
|
+
* Extracts a normalized varchar capacity.
|
|
385
|
+
*
|
|
386
|
+
* @param type - Normalized physical type.
|
|
387
|
+
* @returns Capacity or null when the type is not varchar.
|
|
388
|
+
*/
|
|
389
|
+
function varcharLength(type) {
|
|
390
|
+
const match = /^varchar\((\d+)\)$/.exec(type);
|
|
391
|
+
return match ? Number(match[1]) : null;
|
|
392
|
+
}
|
|
393
|
+
/**
|
|
394
|
+
* Tests whether a physical column participates in any table index.
|
|
395
|
+
*
|
|
396
|
+
* @param columnName - Physical database column name.
|
|
397
|
+
* @param table - Normalized table definition.
|
|
398
|
+
* @returns True when any model-owned index includes the column.
|
|
399
|
+
*/
|
|
400
|
+
function columnIsIndexed(columnName, table) {
|
|
401
|
+
return table.indexes.some(index => {
|
|
402
|
+
return index.columns.some(column => column.name === columnName);
|
|
403
|
+
});
|
|
404
|
+
}
|
|
405
|
+
/**
|
|
406
|
+
* Compares optional static database defaults without collapsing absence into
|
|
407
|
+
* an explicit null value.
|
|
408
|
+
*
|
|
409
|
+
* @param from - Previous column definition.
|
|
410
|
+
* @param to - Desired column definition.
|
|
411
|
+
* @returns True when both declaration presence and values match.
|
|
412
|
+
*/
|
|
413
|
+
function defaultsEqual(from, to) {
|
|
414
|
+
const fromHasDefault = Object.hasOwn(from, 'default');
|
|
415
|
+
const toHasDefault = Object.hasOwn(to, 'default');
|
|
416
|
+
return fromHasDefault === toHasDefault
|
|
417
|
+
&& isDeepStrictEqual(from.default, to.default);
|
|
418
|
+
}
|
|
419
|
+
/**
|
|
420
|
+
* Indexes normalized schema objects by their stable names.
|
|
421
|
+
*
|
|
422
|
+
* @param values - Named normalized schema objects.
|
|
423
|
+
* @returns Map keyed by physical object name.
|
|
424
|
+
*/
|
|
425
|
+
function mapByName(values) {
|
|
426
|
+
return new Map(values.map(value => [value.name, value]));
|
|
427
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { SchemaIndexColumn } from './contracts/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Builds the stable name used for a model-owned database index.
|
|
4
|
+
*
|
|
5
|
+
* @param tableName - Physical database table name.
|
|
6
|
+
* @param columns - Ordered columns included in the index.
|
|
7
|
+
* @param unique - Whether the index enforces uniqueness.
|
|
8
|
+
* @param type - Normal or vector database index type.
|
|
9
|
+
* @returns MariaDB-safe deterministic index name.
|
|
10
|
+
*/
|
|
11
|
+
export declare function defaultSchemaIndexName(tableName: string, columns: readonly SchemaIndexColumn[], unique: boolean, type: 'normal' | 'vector'): string;
|
|
12
|
+
/**
|
|
13
|
+
* Builds the stable name used for a model-owned foreign-key constraint.
|
|
14
|
+
*
|
|
15
|
+
* @param tableName - Physical database table name.
|
|
16
|
+
* @param columnName - Local physical database column.
|
|
17
|
+
* @returns MariaDB-safe deterministic foreign-key name.
|
|
18
|
+
*/
|
|
19
|
+
export declare function defaultSchemaForeignKeyName(tableName: string, columnName: string): string;
|
|
20
|
+
/**
|
|
21
|
+
* Truncates an identifier with a stable hash while respecting MariaDB's
|
|
22
|
+
* 64-character identifier limit.
|
|
23
|
+
*
|
|
24
|
+
* @param identifier - Preferred human-readable identifier.
|
|
25
|
+
* @returns Original or deterministically shortened identifier.
|
|
26
|
+
*/
|
|
27
|
+
export declare function fitSchemaIdentifier(identifier: string): string;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { createHash } from 'node:crypto';
|
|
2
|
+
const MARIADB_IDENTIFIER_MAX_LENGTH = 64;
|
|
3
|
+
/**
|
|
4
|
+
* Builds the stable name used for a model-owned database index.
|
|
5
|
+
*
|
|
6
|
+
* @param tableName - Physical database table name.
|
|
7
|
+
* @param columns - Ordered columns included in the index.
|
|
8
|
+
* @param unique - Whether the index enforces uniqueness.
|
|
9
|
+
* @param type - Normal or vector database index type.
|
|
10
|
+
* @returns MariaDB-safe deterministic index name.
|
|
11
|
+
*/
|
|
12
|
+
export function defaultSchemaIndexName(tableName, columns, unique, type) {
|
|
13
|
+
const suffix = type === 'vector'
|
|
14
|
+
? 'vector_index'
|
|
15
|
+
: unique ? 'unique' : 'index';
|
|
16
|
+
return fitSchemaIdentifier([
|
|
17
|
+
tableName,
|
|
18
|
+
...columns.map(column => column.name),
|
|
19
|
+
suffix,
|
|
20
|
+
].join('_'));
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Builds the stable name used for a model-owned foreign-key constraint.
|
|
24
|
+
*
|
|
25
|
+
* @param tableName - Physical database table name.
|
|
26
|
+
* @param columnName - Local physical database column.
|
|
27
|
+
* @returns MariaDB-safe deterministic foreign-key name.
|
|
28
|
+
*/
|
|
29
|
+
export function defaultSchemaForeignKeyName(tableName, columnName) {
|
|
30
|
+
return fitSchemaIdentifier(`${tableName}_${columnName}_foreign`);
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Truncates an identifier with a stable hash while respecting MariaDB's
|
|
34
|
+
* 64-character identifier limit.
|
|
35
|
+
*
|
|
36
|
+
* @param identifier - Preferred human-readable identifier.
|
|
37
|
+
* @returns Original or deterministically shortened identifier.
|
|
38
|
+
*/
|
|
39
|
+
export function fitSchemaIdentifier(identifier) {
|
|
40
|
+
if (identifier.length <= MARIADB_IDENTIFIER_MAX_LENGTH) {
|
|
41
|
+
return identifier;
|
|
42
|
+
}
|
|
43
|
+
const hash = createHash('sha256').update(identifier).digest('hex').slice(0, 8);
|
|
44
|
+
const prefixLength = MARIADB_IDENTIFIER_MAX_LENGTH - hash.length - 1;
|
|
45
|
+
return `${identifier.slice(0, prefixLength)}_${hash}`;
|
|
46
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { DatabaseDialectName } from '../dialects/index.js';
|
|
2
|
+
import type { SchemaSnapshot } from './contracts/index.js';
|
|
3
|
+
/**
|
|
4
|
+
* Creates an empty normalized snapshot for an application with no models.
|
|
5
|
+
*
|
|
6
|
+
* @param dialect - Database dialect represented by the snapshot.
|
|
7
|
+
* @returns Empty schema snapshot suitable as the first diff baseline.
|
|
8
|
+
*/
|
|
9
|
+
export declare function emptySchemaSnapshot(dialect: DatabaseDialectName): SchemaSnapshot;
|
|
10
|
+
/**
|
|
11
|
+
* Serializes a normalized snapshot in the committed human-readable format.
|
|
12
|
+
*
|
|
13
|
+
* @param snapshot - Normalized schema snapshot.
|
|
14
|
+
* @returns Deterministic JSON document ending with one newline.
|
|
15
|
+
*/
|
|
16
|
+
export declare function serializeSchemaSnapshot(snapshot: SchemaSnapshot): string;
|
|
17
|
+
/**
|
|
18
|
+
* Parses and minimally validates a committed schema snapshot.
|
|
19
|
+
*
|
|
20
|
+
* @param input - JSON text read from the application snapshot file.
|
|
21
|
+
* @returns Parsed version-one schema snapshot.
|
|
22
|
+
*/
|
|
23
|
+
export declare function parseSchemaSnapshot(input: string): SchemaSnapshot;
|
|
24
|
+
/**
|
|
25
|
+
* Produces a stable content hash for migration lineage and comparisons.
|
|
26
|
+
*
|
|
27
|
+
* @param snapshot - Normalized schema snapshot.
|
|
28
|
+
* @returns Lower-case SHA-256 digest.
|
|
29
|
+
*/
|
|
30
|
+
export declare function hashSchemaSnapshot(snapshot: SchemaSnapshot): string;
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { createHash } from 'node:crypto';
|
|
2
|
+
/**
|
|
3
|
+
* Creates an empty normalized snapshot for an application with no models.
|
|
4
|
+
*
|
|
5
|
+
* @param dialect - Database dialect represented by the snapshot.
|
|
6
|
+
* @returns Empty schema snapshot suitable as the first diff baseline.
|
|
7
|
+
*/
|
|
8
|
+
export function emptySchemaSnapshot(dialect) {
|
|
9
|
+
return {
|
|
10
|
+
formatVersion: 1,
|
|
11
|
+
dialect,
|
|
12
|
+
tables: [],
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Serializes a normalized snapshot in the committed human-readable format.
|
|
17
|
+
*
|
|
18
|
+
* @param snapshot - Normalized schema snapshot.
|
|
19
|
+
* @returns Deterministic JSON document ending with one newline.
|
|
20
|
+
*/
|
|
21
|
+
export function serializeSchemaSnapshot(snapshot) {
|
|
22
|
+
return `${JSON.stringify(snapshot, null, '\t')}\n`;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Parses and minimally validates a committed schema snapshot.
|
|
26
|
+
*
|
|
27
|
+
* @param input - JSON text read from the application snapshot file.
|
|
28
|
+
* @returns Parsed version-one schema snapshot.
|
|
29
|
+
*/
|
|
30
|
+
export function parseSchemaSnapshot(input) {
|
|
31
|
+
const value = JSON.parse(input);
|
|
32
|
+
if (value.formatVersion !== 1
|
|
33
|
+
|| typeof value.dialect !== 'string'
|
|
34
|
+
|| !Array.isArray(value.tables)) {
|
|
35
|
+
throw new Error('Database schema snapshot is not a supported version-one snapshot.');
|
|
36
|
+
}
|
|
37
|
+
return value;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Produces a stable content hash for migration lineage and comparisons.
|
|
41
|
+
*
|
|
42
|
+
* @param snapshot - Normalized schema snapshot.
|
|
43
|
+
* @returns Lower-case SHA-256 digest.
|
|
44
|
+
*/
|
|
45
|
+
export function hashSchemaSnapshot(snapshot) {
|
|
46
|
+
return createHash('sha256')
|
|
47
|
+
.update(JSON.stringify(snapshot))
|
|
48
|
+
.digest('hex');
|
|
49
|
+
}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import type { Knex } from 'knex';
|
|
2
|
+
import type { ActiveRecordClass } from '../../ActiveRecord.js';
|
|
3
|
+
import type { DatabaseDialect } from '../../dialects/index.js';
|
|
4
|
+
import type { SchemaMigrationPlan } from './SchemaChange.js';
|
|
5
|
+
/**
|
|
6
|
+
* Application-owned paths and runtime policy for database migration tooling.
|
|
7
|
+
*/
|
|
8
|
+
export interface DatabaseMigrationManagerOptions {
|
|
9
|
+
/** Knex connection used for migration execution and database inspection. */
|
|
10
|
+
db: Knex;
|
|
11
|
+
/** Complete set of ActiveRecord models owned by the application. */
|
|
12
|
+
models: readonly ActiveRecordClass[];
|
|
13
|
+
/** Dialect used to collect field schema metadata. MariaDB is supported first. */
|
|
14
|
+
dialect: DatabaseDialect;
|
|
15
|
+
/** Absolute directory containing permanent Knex migration files. */
|
|
16
|
+
migrationsDirectory: string;
|
|
17
|
+
/** Absolute path of the committed desired-schema snapshot. */
|
|
18
|
+
snapshotFile: string;
|
|
19
|
+
/** Knex migration ledger table. Its lock table follows Knex naming. */
|
|
20
|
+
migrationTableName?: string;
|
|
21
|
+
/** Optional database schema containing the Knex migration ledger. */
|
|
22
|
+
migrationSchemaName?: string;
|
|
23
|
+
/** Migration file extensions Knex may load. */
|
|
24
|
+
loadExtensions?: readonly string[];
|
|
25
|
+
/** Current application environment. Source generation is refused in production. */
|
|
26
|
+
environment?: string;
|
|
27
|
+
/** Absolute cross-process lock path used while generating source files. */
|
|
28
|
+
generationLockFile?: string;
|
|
29
|
+
/** Injectable clock used for deterministic migration filenames in tests. */
|
|
30
|
+
now?: () => Date;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Persisted and pending Knex migration names without mutating the ledger.
|
|
34
|
+
*/
|
|
35
|
+
export interface DatabaseMigrationState {
|
|
36
|
+
completed: string[];
|
|
37
|
+
pending: string[];
|
|
38
|
+
missingFiles: string[];
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Combined model, snapshot, database, and Knex status for CLI or development UI.
|
|
42
|
+
*/
|
|
43
|
+
export interface DatabaseMigrationStatus {
|
|
44
|
+
snapshotExists: boolean;
|
|
45
|
+
modelsMatchSnapshot: boolean;
|
|
46
|
+
databaseMatchesModels: boolean;
|
|
47
|
+
generationPlan: SchemaMigrationPlan;
|
|
48
|
+
databasePlan: SchemaMigrationPlan;
|
|
49
|
+
migrations: DatabaseMigrationState;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Result returned after checking the live database against current models.
|
|
53
|
+
*/
|
|
54
|
+
export interface DatabaseCheckResult {
|
|
55
|
+
/** Whether the live model-owned schema satisfies current models. */
|
|
56
|
+
schemaMatches: boolean;
|
|
57
|
+
/** Whether current models have a corresponding committed snapshot. */
|
|
58
|
+
modelsMatchSnapshot: boolean;
|
|
59
|
+
/** Overall readiness including snapshot and Knex migration state. */
|
|
60
|
+
matches: boolean;
|
|
61
|
+
/** Differences between the live model-owned schema and current models. */
|
|
62
|
+
plan: SchemaMigrationPlan;
|
|
63
|
+
/** Differences between the committed snapshot and current models. */
|
|
64
|
+
snapshotPlan: SchemaMigrationPlan;
|
|
65
|
+
/** Completed, pending, and corrupt Knex migration history. */
|
|
66
|
+
migrations: DatabaseMigrationState;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Options accepted when generating one permanent migration file.
|
|
70
|
+
*/
|
|
71
|
+
export interface MakeMigrationOptions {
|
|
72
|
+
/** Human-readable migration name. A deterministic name is inferred when omitted. */
|
|
73
|
+
name?: string;
|
|
74
|
+
/**
|
|
75
|
+
* When true, generate drop DDL for blocked column/index/foreign-key/table
|
|
76
|
+
* removals after warning. Other blocked operations still refuse generation.
|
|
77
|
+
*/
|
|
78
|
+
allowDestructive?: boolean;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Result of comparing models with the committed snapshot and optionally writing
|
|
82
|
+
* a new migration.
|
|
83
|
+
*/
|
|
84
|
+
export interface MakeMigrationResult {
|
|
85
|
+
generated: boolean;
|
|
86
|
+
blocked: boolean;
|
|
87
|
+
file: string | null;
|
|
88
|
+
plan: SchemaMigrationPlan;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Options used when applying permanent Knex migrations.
|
|
92
|
+
*/
|
|
93
|
+
/**
|
|
94
|
+
* Optional controls for applying committed migrations.
|
|
95
|
+
*/
|
|
96
|
+
export interface MigrateOptions {
|
|
97
|
+
/**
|
|
98
|
+
* Adopt all pending migrations without DDL when an existing untracked
|
|
99
|
+
* database already matches the committed schema snapshot.
|
|
100
|
+
*/
|
|
101
|
+
baselineIfMatching?: boolean;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Result of applying pending Knex migrations.
|
|
105
|
+
*/
|
|
106
|
+
export interface MigrateResult {
|
|
107
|
+
applied: string[];
|
|
108
|
+
batch: number | null;
|
|
109
|
+
baselined: string[] | null;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Result of the development `make -> migrate -> check` convenience operation.
|
|
113
|
+
*/
|
|
114
|
+
export interface DatabaseSyncResult {
|
|
115
|
+
make: MakeMigrationResult;
|
|
116
|
+
migrate: MigrateResult | null;
|
|
117
|
+
check: DatabaseCheckResult | null;
|
|
118
|
+
}
|