@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,147 @@
|
|
|
1
|
+
import { createKeyv as createMemoryStore } from 'cacheable';
|
|
2
|
+
import { createCache } from 'cache-manager';
|
|
3
|
+
import { createKeyv as createRedisStore } from '@keyv/redis';
|
|
4
|
+
import { CacheManagerDriver } from './CacheManagerDriver.js';
|
|
5
|
+
const defaultMemoryStore = {
|
|
6
|
+
driver: 'memory',
|
|
7
|
+
maxEntries: 1000,
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* Creates the concrete cache driver selected by named application config.
|
|
11
|
+
*
|
|
12
|
+
* @param options - Named store configuration from `config.cache`.
|
|
13
|
+
* @returns Cache Manager driver using the selected memory or Redis store.
|
|
14
|
+
*/
|
|
15
|
+
export function createCacheDriver(options = {}) {
|
|
16
|
+
const storeName = nonEmptyString(options.default ?? 'memory', 'Cache default store');
|
|
17
|
+
const stores = options.stores ?? {
|
|
18
|
+
memory: defaultMemoryStore,
|
|
19
|
+
};
|
|
20
|
+
const store = stores[storeName];
|
|
21
|
+
if (!store) {
|
|
22
|
+
throw new Error(`Cache store "${storeName}" is not configured.`);
|
|
23
|
+
}
|
|
24
|
+
switch (store.driver) {
|
|
25
|
+
case 'memory':
|
|
26
|
+
return memoryCacheDriver(store);
|
|
27
|
+
case 'redis':
|
|
28
|
+
return redisCacheDriver(store);
|
|
29
|
+
default:
|
|
30
|
+
return unsupportedCacheDriver(store);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Creates a bounded CacheableMemory store behind Cache Manager.
|
|
35
|
+
*
|
|
36
|
+
* @param options - Memory TTL, LRU bound, and clone configuration.
|
|
37
|
+
* @returns Cache Manager driver using an in-process store.
|
|
38
|
+
*/
|
|
39
|
+
function memoryCacheDriver(options) {
|
|
40
|
+
const ttl = optionalPositiveNumber(options.ttl, 'Memory cache TTL');
|
|
41
|
+
const maxEntries = positiveInteger(options.maxEntries ?? defaultMemoryStore.maxEntries, 'Memory cache maxEntries');
|
|
42
|
+
const store = createMemoryStore({
|
|
43
|
+
ttl,
|
|
44
|
+
lruSize: maxEntries,
|
|
45
|
+
useClone: options.clone,
|
|
46
|
+
});
|
|
47
|
+
store.on('error', ignoreStoreError);
|
|
48
|
+
return new CacheManagerDriver(createCache({
|
|
49
|
+
stores: [store],
|
|
50
|
+
ttl,
|
|
51
|
+
}));
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Creates a namespaced Redis Keyv store behind Cache Manager.
|
|
55
|
+
*
|
|
56
|
+
* `noNamespaceAffectsAll` remains false so a cache clear never becomes a broad
|
|
57
|
+
* Redis database flush.
|
|
58
|
+
*
|
|
59
|
+
* @param options - Redis connection, namespace, TTL, and failure configuration.
|
|
60
|
+
* @returns Cache Manager driver using the official Redis adapter.
|
|
61
|
+
*/
|
|
62
|
+
function redisCacheDriver(options) {
|
|
63
|
+
const url = nonEmptyString(options.url, 'Redis cache URL');
|
|
64
|
+
const namespace = nonEmptyString(options.namespace, 'Redis cache namespace');
|
|
65
|
+
const ttl = optionalPositiveNumber(options.ttl, 'Redis cache TTL');
|
|
66
|
+
const connectionTimeout = optionalPositiveNumber(options.connectionTimeoutMs, 'Redis cache connectionTimeoutMs');
|
|
67
|
+
const clearBatchSize = options.clearBatchSize === undefined
|
|
68
|
+
? undefined
|
|
69
|
+
: positiveInteger(options.clearBatchSize, 'Redis cache clearBatchSize');
|
|
70
|
+
const store = createRedisStore(url, {
|
|
71
|
+
namespace,
|
|
72
|
+
keyPrefixSeparator: ':',
|
|
73
|
+
connectionTimeout,
|
|
74
|
+
clearBatchSize,
|
|
75
|
+
noNamespaceAffectsAll: false,
|
|
76
|
+
throwOnConnectError: options.throwOnConnectError,
|
|
77
|
+
throwOnErrors: options.throwOnErrors,
|
|
78
|
+
useUnlink: true,
|
|
79
|
+
});
|
|
80
|
+
store.on('error', ignoreStoreError);
|
|
81
|
+
return new CacheManagerDriver(createCache({
|
|
82
|
+
stores: [store],
|
|
83
|
+
ttl,
|
|
84
|
+
}));
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Produces an exhaustive runtime error for config values outside the public union.
|
|
88
|
+
*
|
|
89
|
+
* @param store - Invalid store configuration received from untyped runtime config.
|
|
90
|
+
* @returns Never because unsupported drivers cannot be created.
|
|
91
|
+
*/
|
|
92
|
+
function unsupportedCacheDriver(store) {
|
|
93
|
+
const driver = store.driver;
|
|
94
|
+
throw new Error(`Unsupported cache driver "${String(driver)}".`);
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Prevents storage-adapter EventEmitter errors from terminating the process.
|
|
98
|
+
*
|
|
99
|
+
* Cache operations still follow Cache Manager's own resolve/reject semantics.
|
|
100
|
+
*
|
|
101
|
+
* @param _error - Adapter error governed by the selected store's failure options.
|
|
102
|
+
*/
|
|
103
|
+
function ignoreStoreError(_error) { }
|
|
104
|
+
/**
|
|
105
|
+
* Validates a required non-empty string config value.
|
|
106
|
+
*
|
|
107
|
+
* @param value - Candidate config value.
|
|
108
|
+
* @param label - Human-readable option name.
|
|
109
|
+
* @returns Trimmed non-empty string.
|
|
110
|
+
*/
|
|
111
|
+
function nonEmptyString(value, label) {
|
|
112
|
+
const normalized = typeof value === 'string'
|
|
113
|
+
? value.trim()
|
|
114
|
+
: '';
|
|
115
|
+
if (!normalized) {
|
|
116
|
+
throw new Error(`${label} must be a non-empty string.`);
|
|
117
|
+
}
|
|
118
|
+
return normalized;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Validates an optional positive finite number.
|
|
122
|
+
*
|
|
123
|
+
* @param value - Candidate numeric config value.
|
|
124
|
+
* @param label - Human-readable option name.
|
|
125
|
+
* @returns Validated value or undefined when omitted.
|
|
126
|
+
*/
|
|
127
|
+
function optionalPositiveNumber(value, label) {
|
|
128
|
+
if (value === undefined)
|
|
129
|
+
return undefined;
|
|
130
|
+
if (!Number.isFinite(value) || value <= 0) {
|
|
131
|
+
throw new Error(`${label} must be greater than zero.`);
|
|
132
|
+
}
|
|
133
|
+
return value;
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Validates a positive integer config value.
|
|
137
|
+
*
|
|
138
|
+
* @param value - Candidate numeric config value.
|
|
139
|
+
* @param label - Human-readable option name.
|
|
140
|
+
* @returns Validated positive integer.
|
|
141
|
+
*/
|
|
142
|
+
function positiveInteger(value, label) {
|
|
143
|
+
if (!Number.isInteger(value) || Number(value) <= 0) {
|
|
144
|
+
throw new Error(`${label} must be a positive integer.`);
|
|
145
|
+
}
|
|
146
|
+
return Number(value);
|
|
147
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type * as cli from './contracts/index.js';
|
|
2
|
+
/** Validates and executes registered service commands with one owned app lifecycle. */
|
|
3
|
+
export declare class Cli {
|
|
4
|
+
#private;
|
|
5
|
+
/**
|
|
6
|
+
* Registers explicit commands without booting an application or its services.
|
|
7
|
+
* @param config - App factory and service-owned command definitions.
|
|
8
|
+
* @param options - Root directory and output adapters.
|
|
9
|
+
*/
|
|
10
|
+
constructor(config: cli.CliConfig, options?: cli.CliOptions);
|
|
11
|
+
/**
|
|
12
|
+
* Runs one invocation, printing help without app startup and closing a created app on failure too.
|
|
13
|
+
* @param argv - Arguments after the executable name.
|
|
14
|
+
* @returns Process-compatible exit status; this method never exits the process.
|
|
15
|
+
*/
|
|
16
|
+
run(argv: readonly string[]): Promise<number>;
|
|
17
|
+
}
|
package/dist/cli/Cli.js
ADDED
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { resolve } from 'node:path';
|
|
2
|
+
/** Validates and executes registered service commands with one owned app lifecycle. */
|
|
3
|
+
export class Cli {
|
|
4
|
+
#commands = new Map();
|
|
5
|
+
#config;
|
|
6
|
+
#directory;
|
|
7
|
+
#write;
|
|
8
|
+
#writeError;
|
|
9
|
+
/**
|
|
10
|
+
* Registers explicit commands without booting an application or its services.
|
|
11
|
+
* @param config - App factory and service-owned command definitions.
|
|
12
|
+
* @param options - Root directory and output adapters.
|
|
13
|
+
*/
|
|
14
|
+
constructor(config, options = {}) {
|
|
15
|
+
if (!config || !Array.isArray(config.commands))
|
|
16
|
+
throw new Error('CLI configuration must export a commands array.');
|
|
17
|
+
if (config.createApp !== undefined && typeof config.createApp !== 'function')
|
|
18
|
+
throw new Error('CLI createApp must be a function.');
|
|
19
|
+
this.#config = config;
|
|
20
|
+
this.#directory = resolve(options.directory ?? process.cwd());
|
|
21
|
+
this.#write = options.write ?? console.log;
|
|
22
|
+
this.#writeError = options.writeError ?? console.error;
|
|
23
|
+
for (const command of config.commands) {
|
|
24
|
+
if (!command || !/^[a-z][a-z0-9]*(?::[a-z][a-z0-9-]*)*$/.test(command.name) || typeof command.description !== 'string' || typeof command.run !== 'function')
|
|
25
|
+
throw new Error('Invalid CLI command definition.');
|
|
26
|
+
if (this.#commands.has(command.name))
|
|
27
|
+
throw new Error(`Duplicate CLI command: ${command.name}`);
|
|
28
|
+
let optional = false;
|
|
29
|
+
for (const argument of command.arguments ?? []) {
|
|
30
|
+
if (!/^[a-zA-Z][a-zA-Z0-9-]*$/.test(argument.name) || (optional && argument.required))
|
|
31
|
+
throw new Error(`Invalid argument declaration for ${command.name}.`);
|
|
32
|
+
if (!argument.required)
|
|
33
|
+
optional = true;
|
|
34
|
+
}
|
|
35
|
+
this.#commands.set(command.name, command);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Runs one invocation, printing help without app startup and closing a created app on failure too.
|
|
40
|
+
* @param argv - Arguments after the executable name.
|
|
41
|
+
* @returns Process-compatible exit status; this method never exits the process.
|
|
42
|
+
*/
|
|
43
|
+
async run(argv) {
|
|
44
|
+
if (argv.length === 0 || (argv.length === 1 && ['--help', '-h'].includes(argv[0]))) {
|
|
45
|
+
this.#write(['Usage: db3 <command> [arguments]', '', ...[...this.#commands.values()].map(command => `${usage(command)}\n ${command.description}`)].join('\n'));
|
|
46
|
+
return 0;
|
|
47
|
+
}
|
|
48
|
+
const command = this.#commands.get(argv[0]);
|
|
49
|
+
if (!command) {
|
|
50
|
+
this.#writeError(`Unknown command: ${argv[0]}. Run db3 --help from your app root; service commands are registered in server/cli.config.ts.`);
|
|
51
|
+
return 1;
|
|
52
|
+
}
|
|
53
|
+
const args = argv.slice(1);
|
|
54
|
+
if (args.length === 1 && ['--help', '-h'].includes(args[0])) {
|
|
55
|
+
this.#write(`${usage(command)}\n${command.description}`);
|
|
56
|
+
return 0;
|
|
57
|
+
}
|
|
58
|
+
const parameters = command.arguments ?? [];
|
|
59
|
+
if (args.some(value => value.startsWith('-')) || args.length < parameters.filter(argument => argument.required).length || args.length > parameters.length) {
|
|
60
|
+
this.#writeError(`Invalid arguments. Usage: ${usage(command)}`);
|
|
61
|
+
return 1;
|
|
62
|
+
}
|
|
63
|
+
let application;
|
|
64
|
+
let pendingApplication;
|
|
65
|
+
let status = 0;
|
|
66
|
+
let reportedError;
|
|
67
|
+
try {
|
|
68
|
+
const result = await command.run({
|
|
69
|
+
args, directory: this.#directory, write: this.#write,
|
|
70
|
+
/** Creates the invocation's app once, even when multiple callers await it. */
|
|
71
|
+
app: () => {
|
|
72
|
+
pendingApplication ??= Promise.resolve().then(async () => {
|
|
73
|
+
if (!this.#config.createApp)
|
|
74
|
+
throw new Error('This command requires createApp in server/cli.config.ts.');
|
|
75
|
+
application = await this.#config.createApp();
|
|
76
|
+
return application;
|
|
77
|
+
});
|
|
78
|
+
return pendingApplication;
|
|
79
|
+
},
|
|
80
|
+
});
|
|
81
|
+
status = result ?? 0;
|
|
82
|
+
if (!Number.isInteger(status) || status < 0 || status > 255)
|
|
83
|
+
throw new Error(`Command ${command.name} returned an invalid exit status.`);
|
|
84
|
+
}
|
|
85
|
+
catch (error) {
|
|
86
|
+
reportedError = error;
|
|
87
|
+
this.#writeError(errorMessage(error));
|
|
88
|
+
status = 1;
|
|
89
|
+
}
|
|
90
|
+
finally {
|
|
91
|
+
// Finish pending startup before releasing resources, including failed commands.
|
|
92
|
+
try {
|
|
93
|
+
await pendingApplication;
|
|
94
|
+
}
|
|
95
|
+
catch (error) {
|
|
96
|
+
if (error !== reportedError)
|
|
97
|
+
this.#writeError(errorMessage(error));
|
|
98
|
+
status = 1;
|
|
99
|
+
}
|
|
100
|
+
if (application) {
|
|
101
|
+
try {
|
|
102
|
+
await application.close();
|
|
103
|
+
}
|
|
104
|
+
catch (error) {
|
|
105
|
+
this.#writeError(`Application shutdown failed: ${errorMessage(error)}`);
|
|
106
|
+
status = 1;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
return status;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
/** Formats command usage from its declared positional arguments. */
|
|
114
|
+
function usage(command) {
|
|
115
|
+
return [`db3 ${command.name}`, ...(command.arguments ?? []).map(argument => argument.required ? `<${argument.name}>` : `[${argument.name}]`)].join(' ');
|
|
116
|
+
}
|
|
117
|
+
/** Produces a concise terminal error without dumping application objects or configuration. */
|
|
118
|
+
function errorMessage(error) {
|
|
119
|
+
return error instanceof Error ? error.message : 'Command failed.';
|
|
120
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { CliCommand, CliOptions } from '../contracts/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Registers the application REPL using the same module scope as app bootstrap.
|
|
4
|
+
*
|
|
5
|
+
* @param loadModels - Loads the conventional app model registry only when invoked.
|
|
6
|
+
* @param options - Terminal stream adapters for interactive or embedded callers.
|
|
7
|
+
* @returns Built-in command whose app lifecycle remains owned by the CLI runner.
|
|
8
|
+
*/
|
|
9
|
+
export declare function createReplCommand(loadModels: () => Promise<Record<string, unknown>>, options: CliOptions): CliCommand;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { runRepl } from '../runRepl.js';
|
|
2
|
+
/**
|
|
3
|
+
* Registers the application REPL using the same module scope as app bootstrap.
|
|
4
|
+
*
|
|
5
|
+
* @param loadModels - Loads the conventional app model registry only when invoked.
|
|
6
|
+
* @param options - Terminal stream adapters for interactive or embedded callers.
|
|
7
|
+
* @returns Built-in command whose app lifecycle remains owned by the CLI runner.
|
|
8
|
+
*/
|
|
9
|
+
export function createReplCommand(loadModels, options) {
|
|
10
|
+
return {
|
|
11
|
+
name: 'repl', description: 'Explore the application and its models in an interactive terminal.',
|
|
12
|
+
/** Boots the app without an HTTP listener and keeps it alive until REPL exit. */
|
|
13
|
+
async run(context) {
|
|
14
|
+
const application = await context.app();
|
|
15
|
+
const models = await loadModels();
|
|
16
|
+
context.write('DB3 REPL. Use app(), models and model names. Type .exit or press Ctrl+D to quit.');
|
|
17
|
+
await runRepl({
|
|
18
|
+
input: options.input, output: options.output,
|
|
19
|
+
values: {
|
|
20
|
+
...models, models,
|
|
21
|
+
/** Returns the invocation's live application service hub. */
|
|
22
|
+
app: () => application,
|
|
23
|
+
},
|
|
24
|
+
});
|
|
25
|
+
},
|
|
26
|
+
};
|
|
27
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { App } from '../../server/index.js';
|
|
2
|
+
/** One positional value accepted by a command, in declaration order. */
|
|
3
|
+
export interface CliArgument {
|
|
4
|
+
/** Name displayed in command usage. */
|
|
5
|
+
name: string;
|
|
6
|
+
/** Whether omission is a usage error. Required arguments precede optional ones. */
|
|
7
|
+
required?: boolean;
|
|
8
|
+
}
|
|
9
|
+
/** Invocation state supplied by the runner to a service-owned command. */
|
|
10
|
+
export interface CliCommandContext {
|
|
11
|
+
/** Validated positional values, excluding the command name. */
|
|
12
|
+
args: readonly string[];
|
|
13
|
+
/** Absolute application root used for app-owned source generation. */
|
|
14
|
+
directory: string;
|
|
15
|
+
/** Lazily creates one application, which the runner closes after execution. */
|
|
16
|
+
app(): Promise<App>;
|
|
17
|
+
/** Writes one user-facing output message. */
|
|
18
|
+
write(message: string): void;
|
|
19
|
+
}
|
|
20
|
+
/** A service or application command, backed by its existing programmatic operation. */
|
|
21
|
+
export interface CliCommand {
|
|
22
|
+
/** Unique command name, for example db:migrate or queue:make-job. */
|
|
23
|
+
name: string;
|
|
24
|
+
/** Short explanation shown by db3 --help. */
|
|
25
|
+
description: string;
|
|
26
|
+
/** Positional argument declarations used for validation and help. */
|
|
27
|
+
arguments?: readonly CliArgument[];
|
|
28
|
+
/** Executes the operation; return a nonzero status for a reported failure. */
|
|
29
|
+
run(context: CliCommandContext): number | void | Promise<number | void>;
|
|
30
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { App } from '../../server/index.js';
|
|
2
|
+
import type { CliCommand } from './CliCommand.js';
|
|
3
|
+
/** App-owned command registration exported by server/cli.config.ts. */
|
|
4
|
+
export interface CliConfig {
|
|
5
|
+
/** Creates the app only when a command requests it; do not start an HTTP listener. */
|
|
6
|
+
createApp?: () => App | Promise<App>;
|
|
7
|
+
/** Commands exposed by configured services or by the application itself. */
|
|
8
|
+
commands: readonly CliCommand[];
|
|
9
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/** Process adapters shared by direct CLI execution and embedded command runners. */
|
|
2
|
+
export interface CliOptions {
|
|
3
|
+
/** Application root. Defaults to the current working directory. */
|
|
4
|
+
directory?: string;
|
|
5
|
+
/** Interactive input used by `db3 repl`. Defaults to process.stdin. */
|
|
6
|
+
input?: NodeJS.ReadableStream;
|
|
7
|
+
/** Interactive output used by `db3 repl`. Defaults to process.stdout. */
|
|
8
|
+
output?: NodeJS.WritableStream;
|
|
9
|
+
/** Standard output adapter. Defaults to console.log. */
|
|
10
|
+
write?: (message: string) => void;
|
|
11
|
+
/** Error output adapter. Defaults to console.error. */
|
|
12
|
+
writeError?: (message: string) => void;
|
|
13
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { CliArgument, CliCommandContext } from './CliCommand.js';
|
|
2
|
+
/** A named action adapted for terminal invocation without coupling the action to output or exit codes. */
|
|
3
|
+
export interface CommandDefinition<TResult> {
|
|
4
|
+
/** Service:action command name, for example db:make-migration. */
|
|
5
|
+
name: string;
|
|
6
|
+
/** Short help description. */
|
|
7
|
+
description: string;
|
|
8
|
+
/** Positional arguments mapped by name before invoking the handler. */
|
|
9
|
+
parameters?: readonly CliArgument[];
|
|
10
|
+
/** Defaults to true; false is for source generators that need no running application. */
|
|
11
|
+
needsApp?: boolean;
|
|
12
|
+
/** Calls the service action with named arguments; validation remains in that action. */
|
|
13
|
+
handle(parameters: Readonly<Record<string, string | undefined>>, context: CliCommandContext): TResult | Promise<TResult>;
|
|
14
|
+
/** Maps a domain result to a terminal exit code. Defaults to success. */
|
|
15
|
+
exitCode?: (result: TResult) => number;
|
|
16
|
+
/** Optional terminal presentation; direct action callers still receive the original result. */
|
|
17
|
+
formatResult?: (result: TResult) => string;
|
|
18
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/** Terminal REPL context and streams, reusable by application development tools. */
|
|
2
|
+
export interface ReplOptions {
|
|
3
|
+
/** Named values available to expressions; installed again after `.clear`. */
|
|
4
|
+
values: Readonly<Record<string, unknown>>;
|
|
5
|
+
/** Prompt shown before each expression. Defaults to `db3> `. */
|
|
6
|
+
prompt?: string;
|
|
7
|
+
/** Input stream. Defaults to the current process's standard input. */
|
|
8
|
+
input?: NodeJS.ReadableStream;
|
|
9
|
+
/** Output stream. Defaults to the current process's standard output. */
|
|
10
|
+
output?: NodeJS.WritableStream;
|
|
11
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type * as cli from './contracts/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Registers an app-context action with named argument mapping and terminal result formatting.
|
|
4
|
+
*
|
|
5
|
+
* Export action functions separately so UI and programmatic callers receive normal
|
|
6
|
+
* results without terminal output. The runner owns the application lifecycle.
|
|
7
|
+
* @param definition - Service action, parameters and optional result-to-exit-code mapping.
|
|
8
|
+
* @returns Command suitable for app or service registration.
|
|
9
|
+
*/
|
|
10
|
+
export declare function defineCommand<TResult>(definition: cli.CommandDefinition<TResult>): cli.CliCommand;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Registers an app-context action with named argument mapping and terminal result formatting.
|
|
3
|
+
*
|
|
4
|
+
* Export action functions separately so UI and programmatic callers receive normal
|
|
5
|
+
* results without terminal output. The runner owns the application lifecycle.
|
|
6
|
+
* @param definition - Service action, parameters and optional result-to-exit-code mapping.
|
|
7
|
+
* @returns Command suitable for app or service registration.
|
|
8
|
+
*/
|
|
9
|
+
export function defineCommand(definition) {
|
|
10
|
+
return {
|
|
11
|
+
name: definition.name,
|
|
12
|
+
description: definition.description,
|
|
13
|
+
arguments: definition.parameters,
|
|
14
|
+
/** Establishes app context, maps parameters and adapts the action result for the terminal. */
|
|
15
|
+
async run(context) {
|
|
16
|
+
if (definition.needsApp !== false)
|
|
17
|
+
await context.app();
|
|
18
|
+
const parameters = Object.fromEntries((definition.parameters ?? []).map((parameter, index) => [parameter.name, context.args[index]]));
|
|
19
|
+
const result = await definition.handle(parameters, context);
|
|
20
|
+
if (result !== undefined)
|
|
21
|
+
context.write(definition.formatResult ? definition.formatResult(result) : typeof result === 'string' ? result : JSON.stringify(result, null, 2));
|
|
22
|
+
return definition.exitCode?.(result) ?? 0;
|
|
23
|
+
},
|
|
24
|
+
};
|
|
25
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type * as cli from './contracts/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Loads app registration and runs the framework CLI from source or an installed package.
|
|
4
|
+
*
|
|
5
|
+
* TypeScript config loading supports the same extensionless imports as the starter.
|
|
6
|
+
* No HTTP listener is started. Help and queue:make-job do not create the app.
|
|
7
|
+
* @param argv - Arguments after db3.
|
|
8
|
+
* @param options - Application root and optional output adapters.
|
|
9
|
+
* @returns Exit status to assign to process.exitCode.
|
|
10
|
+
*/
|
|
11
|
+
export declare function runDb3(argv: readonly string[], options?: cli.CliOptions): Promise<number>;
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { access } from 'node:fs/promises';
|
|
2
|
+
import { randomUUID } from 'node:crypto';
|
|
3
|
+
import { resolve } from 'node:path';
|
|
4
|
+
import { pathToFileURL } from 'node:url';
|
|
5
|
+
import { register } from 'tsx/esm/api';
|
|
6
|
+
import { Cli } from './Cli.js';
|
|
7
|
+
import { createReplCommand } from './commands/repl.js';
|
|
8
|
+
/**
|
|
9
|
+
* Loads app registration and runs the framework CLI from source or an installed package.
|
|
10
|
+
*
|
|
11
|
+
* TypeScript config loading supports the same extensionless imports as the starter.
|
|
12
|
+
* No HTTP listener is started. Help and queue:make-job do not create the app.
|
|
13
|
+
* @param argv - Arguments after db3.
|
|
14
|
+
* @param options - Application root and optional output adapters.
|
|
15
|
+
* @returns Exit status to assign to process.exitCode.
|
|
16
|
+
*/
|
|
17
|
+
export async function runDb3(argv, options = {}) {
|
|
18
|
+
const loader = register({ namespace: `db3-cli-${randomUUID()}` });
|
|
19
|
+
try {
|
|
20
|
+
const { queueCommands } = await import('../queue/commands/index.js');
|
|
21
|
+
const directory = resolve(options.directory ?? process.cwd());
|
|
22
|
+
const configModule = await loadAppModule(directory, 'server/cli.config', loader.import);
|
|
23
|
+
const config = configModule ? configModule.default : { commands: [] };
|
|
24
|
+
// Validate app config before combining it with commands that need no app bootstrap.
|
|
25
|
+
if (!config || !Array.isArray(config.commands))
|
|
26
|
+
throw new Error('CLI configuration must export a commands array.');
|
|
27
|
+
const repl = createReplCommand(async () => loadReplModels(directory, loader.import), options);
|
|
28
|
+
return await new Cli({ ...config, commands: [repl, ...queueCommands, ...config.commands] }, { ...options, directory }).run(argv);
|
|
29
|
+
}
|
|
30
|
+
catch (error) {
|
|
31
|
+
(options.writeError ?? console.error)(error instanceof Error ? error.message : 'Unable to load CLI configuration.');
|
|
32
|
+
return 1;
|
|
33
|
+
}
|
|
34
|
+
finally {
|
|
35
|
+
await loader.unregister();
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
/** Loads an optional conventional app module without hiding errors from its imports. */
|
|
39
|
+
async function loadAppModule(directory, path, importModule) {
|
|
40
|
+
for (const extension of ['ts', 'mjs', 'js']) {
|
|
41
|
+
const file = resolve(directory, `${path}.${extension}`);
|
|
42
|
+
try {
|
|
43
|
+
await access(file);
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
if (error.code === 'ENOENT')
|
|
47
|
+
continue;
|
|
48
|
+
throw error;
|
|
49
|
+
}
|
|
50
|
+
return importModule(pathToFileURL(file).href, import.meta.url);
|
|
51
|
+
}
|
|
52
|
+
return undefined;
|
|
53
|
+
}
|
|
54
|
+
/** Exposes named model constructors from the same registry used by app migrations. */
|
|
55
|
+
async function loadReplModels(directory, importModule) {
|
|
56
|
+
const module = await loadAppModule(directory, 'server/database/models', importModule);
|
|
57
|
+
if (!module)
|
|
58
|
+
return {};
|
|
59
|
+
if (!Array.isArray(module.models))
|
|
60
|
+
throw new Error('server/database/models must export a models array for the REPL.');
|
|
61
|
+
const models = Object.create(null);
|
|
62
|
+
for (const model of module.models) {
|
|
63
|
+
if (typeof model !== 'function' || !/^[A-Za-z_$][\w$]*$/.test(model.name))
|
|
64
|
+
throw new Error('REPL models must be named constructors.');
|
|
65
|
+
if (['app', 'models', '__proto__', 'constructor', 'prototype'].includes(model.name) || Object.hasOwn(models, model.name))
|
|
66
|
+
throw new Error(`Duplicate or reserved REPL model name: ${model.name}`);
|
|
67
|
+
models[model.name] = model;
|
|
68
|
+
}
|
|
69
|
+
return models;
|
|
70
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { ReplOptions } from './contracts/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Runs a Node terminal REPL until `.exit`, end-of-input or a stream failure.
|
|
4
|
+
*
|
|
5
|
+
* Expressions support top-level await and persistent variables. Context values
|
|
6
|
+
* stay inside the REPL's VM rather than becoming process-wide globals. The
|
|
7
|
+
* caller retains ownership of its application and closes it after this resolves.
|
|
8
|
+
*
|
|
9
|
+
* @param options - Context values, prompt and optional terminal streams.
|
|
10
|
+
* @returns Resolves after the terminal session exits; rejects on stream errors.
|
|
11
|
+
*/
|
|
12
|
+
export declare function runRepl(options: ReplOptions): Promise<void>;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { start } from 'node:repl';
|
|
2
|
+
import { inspect } from 'node:util';
|
|
3
|
+
/**
|
|
4
|
+
* Runs a Node terminal REPL until `.exit`, end-of-input or a stream failure.
|
|
5
|
+
*
|
|
6
|
+
* Expressions support top-level await and persistent variables. Context values
|
|
7
|
+
* stay inside the REPL's VM rather than becoming process-wide globals. The
|
|
8
|
+
* caller retains ownership of its application and closes it after this resolves.
|
|
9
|
+
*
|
|
10
|
+
* @param options - Context values, prompt and optional terminal streams.
|
|
11
|
+
* @returns Resolves after the terminal session exits; rejects on stream errors.
|
|
12
|
+
*/
|
|
13
|
+
export async function runRepl(options) {
|
|
14
|
+
const input = options.input ?? process.stdin;
|
|
15
|
+
const output = options.output ?? process.stdout;
|
|
16
|
+
const terminal = Boolean(output.isTTY);
|
|
17
|
+
const session = start({
|
|
18
|
+
prompt: options.prompt ?? 'db3> ', input, output, terminal,
|
|
19
|
+
useGlobal: false, ignoreUndefined: true,
|
|
20
|
+
/** Formats results without invoking arbitrary model or service getters. */
|
|
21
|
+
writer: value => inspect(value, { colors: terminal, depth: 6, getters: false }),
|
|
22
|
+
});
|
|
23
|
+
/** Restores the app bindings when Node creates or clears the session context. */
|
|
24
|
+
function installValues() {
|
|
25
|
+
for (const [name, value] of Object.entries(options.values)) {
|
|
26
|
+
Object.defineProperty(session.context, name, { value, configurable: true, enumerable: true, writable: true });
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
try {
|
|
30
|
+
installValues();
|
|
31
|
+
session.on('reset', installValues);
|
|
32
|
+
await new Promise((resolve, reject) => {
|
|
33
|
+
/** Releases stream listeners after normal exit or failure. */
|
|
34
|
+
function cleanup() {
|
|
35
|
+
input.off('error', fail);
|
|
36
|
+
output.off('error', fail);
|
|
37
|
+
session.off('error', fail);
|
|
38
|
+
session.off('exit', finish);
|
|
39
|
+
}
|
|
40
|
+
/** Completes the session after Node has processed its exit command. */
|
|
41
|
+
function finish() { cleanup(); resolve(); }
|
|
42
|
+
/** Preserves the original stream failure while releasing the REPL. */
|
|
43
|
+
function fail(error) { cleanup(); session.close(); reject(error); }
|
|
44
|
+
input.once('error', fail);
|
|
45
|
+
output.once('error', fail);
|
|
46
|
+
session.once('error', fail);
|
|
47
|
+
session.once('exit', finish);
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
finally {
|
|
51
|
+
session.off('reset', installValues);
|
|
52
|
+
session.close();
|
|
53
|
+
}
|
|
54
|
+
}
|