@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,279 @@
|
|
|
1
|
+
import { readFile } from 'node:fs/promises';
|
|
2
|
+
import type { Server as HttpServer } from 'node:http';
|
|
3
|
+
import { isAbsolute, join, resolve } from 'node:path';
|
|
4
|
+
import { pathToFileURL } from 'node:url';
|
|
5
|
+
import type { FastifyPluginAsync } from 'fastify';
|
|
6
|
+
import type { ViteDevServer } from 'vite';
|
|
7
|
+
|
|
8
|
+
import type { SsrRenderer, SsrRequest, SsrState } from '../contracts';
|
|
9
|
+
import { fastifySsr } from '../fastify';
|
|
10
|
+
import type { FastifyViteSsrOptions, ViteSsrServerModule } from './contracts';
|
|
11
|
+
import { applyViteSsrManifest, type ViteSsrManifest } from './viteSsrManifest';
|
|
12
|
+
|
|
13
|
+
const DEFAULT_TEMPLATE = 'index.html';
|
|
14
|
+
const DEFAULT_DEVELOPMENT_ENTRY = '/src/entry-server.ts';
|
|
15
|
+
const DEFAULT_CLIENT_OUT_DIR = 'dist/client';
|
|
16
|
+
const DEFAULT_SERVER_ENTRY = 'dist/server/entry-server.js';
|
|
17
|
+
const DEFAULT_MANIFEST = 'dist/client/.vite/ssr-manifest.json';
|
|
18
|
+
const DEFAULT_RENDER_EXPORT = 'render';
|
|
19
|
+
const DEVELOPMENT_ASSET_ROUTES = [
|
|
20
|
+
'/@vite/*',
|
|
21
|
+
'/@id/*',
|
|
22
|
+
'/@fs/*',
|
|
23
|
+
'/src/*',
|
|
24
|
+
'/node_modules/*',
|
|
25
|
+
] as const;
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Creates a Fastify plugin that owns Vite development and production SSR.
|
|
29
|
+
*
|
|
30
|
+
* The adapter loads application code through Vite in development, immutable
|
|
31
|
+
* build artifacts in production, optional static assets, and route-specific
|
|
32
|
+
* manifest links. Vue, routing and page data remain application concerns.
|
|
33
|
+
*
|
|
34
|
+
* @param options - Vite application paths and explicit SSR route ownership.
|
|
35
|
+
* @returns Fastify plugin ready to register on a web-delivery process.
|
|
36
|
+
*
|
|
37
|
+
* @example
|
|
38
|
+
* await server.register(fastifyViteSsr({
|
|
39
|
+
* root: import.meta.dirname,
|
|
40
|
+
* routes: ['/blog', '/blog/*'],
|
|
41
|
+
* staticAssets: {
|
|
42
|
+
* prefix: '/site-assets/',
|
|
43
|
+
* directory: 'dist/client/site-assets',
|
|
44
|
+
* },
|
|
45
|
+
* }));
|
|
46
|
+
*/
|
|
47
|
+
export function fastifyViteSsr<TState extends object = SsrState>(
|
|
48
|
+
options: FastifyViteSsrOptions<TState>,
|
|
49
|
+
): FastifyPluginAsync {
|
|
50
|
+
return async function platformFastifyViteSsr(server): Promise<void> {
|
|
51
|
+
if (!options.routes.length) {
|
|
52
|
+
throw new Error('Vite SSR requires at least one explicit page route.');
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
const mode = options.mode ?? (process.env.NODE_ENV === 'production' ? 'production' : 'development');
|
|
56
|
+
|
|
57
|
+
if (mode === 'development') {
|
|
58
|
+
const runtime = await developmentRuntime(server.server, options);
|
|
59
|
+
|
|
60
|
+
await server.register((await import('@fastify/middie')).default);
|
|
61
|
+
server.use(runtime.vite.middlewares);
|
|
62
|
+
registerDevelopmentAssetRoutes(server);
|
|
63
|
+
server.addHook('onClose', async () => {
|
|
64
|
+
await runtime.vite.close();
|
|
65
|
+
});
|
|
66
|
+
await server.register(fastifySsr({
|
|
67
|
+
routes: options.routes,
|
|
68
|
+
template: runtime.template,
|
|
69
|
+
render: runtime.render,
|
|
70
|
+
}));
|
|
71
|
+
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
if (options.staticAssets) {
|
|
76
|
+
await server.register((await import('@fastify/static')).default, {
|
|
77
|
+
root: applicationPath(options.root, options.staticAssets.directory),
|
|
78
|
+
prefix: normalizedAssetPrefix(options.staticAssets.prefix),
|
|
79
|
+
index: false,
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
const runtime = await productionRuntime(options);
|
|
84
|
+
|
|
85
|
+
await server.register(fastifySsr({
|
|
86
|
+
routes: options.routes,
|
|
87
|
+
template: runtime.template,
|
|
88
|
+
render: runtime.render,
|
|
89
|
+
}));
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* Registers the Vite URL namespaces needed by browser development requests.
|
|
95
|
+
*
|
|
96
|
+
* Fastify resolves a route before running encapsulated middleware. These
|
|
97
|
+
* fallback routes keep Vite's middleware reachable for source styles, module
|
|
98
|
+
* transforms, dependency chunks, and its HMR client without claiming unrelated
|
|
99
|
+
* application page URLs. When Vite does not handle a matching request, the
|
|
100
|
+
* application's ordinary not-found boundary remains authoritative.
|
|
101
|
+
*
|
|
102
|
+
* @param server - Encapsulated Fastify instance hosting the Vite middleware.
|
|
103
|
+
*/
|
|
104
|
+
function registerDevelopmentAssetRoutes(server: Parameters<FastifyPluginAsync>[0]): void {
|
|
105
|
+
for (const route of DEVELOPMENT_ASSET_ROUTES) {
|
|
106
|
+
server.get(route, (_request, reply) => reply.callNotFound());
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
/** Vite development runtime loaded once for one Fastify server. */
|
|
111
|
+
interface DevelopmentRuntime<TState extends object> {
|
|
112
|
+
/** Active Vite middleware server. */
|
|
113
|
+
vite: ViteDevServer;
|
|
114
|
+
/** Request-aware transformed HTML template loader. */
|
|
115
|
+
template: (request: SsrRequest) => Promise<string>;
|
|
116
|
+
/** Hot-reloaded application renderer. */
|
|
117
|
+
render: SsrRenderer<TState>;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
/** Immutable production renderer and HTML shell. */
|
|
121
|
+
interface ProductionRuntime<TState extends object> {
|
|
122
|
+
/** Transformed client-build document template. */
|
|
123
|
+
template: string;
|
|
124
|
+
/** Built application renderer with manifest integration. */
|
|
125
|
+
render: SsrRenderer<TState>;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* Creates Vite middleware and hot server-entry loading for development.
|
|
130
|
+
*
|
|
131
|
+
* @param httpServer - Fastify's underlying HTTP server used for Vite HMR.
|
|
132
|
+
* @param options - Vite SSR application options.
|
|
133
|
+
* @returns Development runtime consumed by the transport adapter.
|
|
134
|
+
*/
|
|
135
|
+
async function developmentRuntime<TState extends object>(
|
|
136
|
+
httpServer: HttpServer,
|
|
137
|
+
options: FastifyViteSsrOptions<TState>,
|
|
138
|
+
): Promise<DevelopmentRuntime<TState>> {
|
|
139
|
+
const { createServer } = await import('vite');
|
|
140
|
+
const vite = await createServer({
|
|
141
|
+
root: options.root,
|
|
142
|
+
configFile: options.viteConfigFile
|
|
143
|
+
? applicationPath(options.root, options.viteConfigFile)
|
|
144
|
+
: undefined,
|
|
145
|
+
appType: 'custom',
|
|
146
|
+
server: {
|
|
147
|
+
middlewareMode: true,
|
|
148
|
+
hmr: { server: httpServer },
|
|
149
|
+
},
|
|
150
|
+
});
|
|
151
|
+
const templatePath = applicationPath(options.root, options.template ?? DEFAULT_TEMPLATE);
|
|
152
|
+
const developmentEntry = options.developmentEntry ?? DEFAULT_DEVELOPMENT_ENTRY;
|
|
153
|
+
const renderExport = options.renderExport ?? DEFAULT_RENDER_EXPORT;
|
|
154
|
+
|
|
155
|
+
return {
|
|
156
|
+
vite,
|
|
157
|
+
template: async request => {
|
|
158
|
+
const template = await readFile(templatePath, 'utf8');
|
|
159
|
+
|
|
160
|
+
return vite.transformIndexHtml(request.url, template);
|
|
161
|
+
},
|
|
162
|
+
render: async context => {
|
|
163
|
+
try {
|
|
164
|
+
const module = await vite.ssrLoadModule(developmentEntry) as ViteSsrServerModule<TState>;
|
|
165
|
+
const render = moduleRenderer<TState>(module, renderExport);
|
|
166
|
+
|
|
167
|
+
return await render(context);
|
|
168
|
+
} catch (error) {
|
|
169
|
+
vite.ssrFixStacktrace(error as Error);
|
|
170
|
+
throw error;
|
|
171
|
+
}
|
|
172
|
+
},
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
/**
|
|
177
|
+
* Loads immutable production templates, server code and optional manifest data.
|
|
178
|
+
*
|
|
179
|
+
* @param options - Vite SSR application options.
|
|
180
|
+
* @returns Production runtime consumed by the transport adapter.
|
|
181
|
+
*/
|
|
182
|
+
async function productionRuntime<TState extends object>(
|
|
183
|
+
options: FastifyViteSsrOptions<TState>,
|
|
184
|
+
): Promise<ProductionRuntime<TState>> {
|
|
185
|
+
const clientOutDir = options.clientOutDir ?? DEFAULT_CLIENT_OUT_DIR;
|
|
186
|
+
const templatePath = applicationPath(
|
|
187
|
+
options.root,
|
|
188
|
+
join(clientOutDir, options.template ?? DEFAULT_TEMPLATE),
|
|
189
|
+
);
|
|
190
|
+
const serverEntry = applicationPath(options.root, options.serverEntry ?? DEFAULT_SERVER_ENTRY);
|
|
191
|
+
const renderExport = options.renderExport ?? DEFAULT_RENDER_EXPORT;
|
|
192
|
+
const [template, module, manifest] = await Promise.all([
|
|
193
|
+
readFile(templatePath, 'utf8'),
|
|
194
|
+
import(pathToFileURL(serverEntry).href) as Promise<ViteSsrServerModule<TState>>,
|
|
195
|
+
loadManifest(options),
|
|
196
|
+
]);
|
|
197
|
+
const render = moduleRenderer<TState>(module, renderExport);
|
|
198
|
+
|
|
199
|
+
return {
|
|
200
|
+
template,
|
|
201
|
+
render: async context => {
|
|
202
|
+
const result = await render(context);
|
|
203
|
+
|
|
204
|
+
applyViteSsrManifest(context, manifest, {
|
|
205
|
+
preloadJavaScript: options.preloadJavaScript,
|
|
206
|
+
});
|
|
207
|
+
|
|
208
|
+
return result;
|
|
209
|
+
},
|
|
210
|
+
};
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
/**
|
|
214
|
+
* Loads the optional production SSR manifest.
|
|
215
|
+
*
|
|
216
|
+
* @param options - Vite SSR application options.
|
|
217
|
+
* @returns Parsed manifest or an empty map when explicitly disabled.
|
|
218
|
+
*/
|
|
219
|
+
async function loadManifest<TState extends object>(
|
|
220
|
+
options: FastifyViteSsrOptions<TState>,
|
|
221
|
+
): Promise<ViteSsrManifest> {
|
|
222
|
+
if (options.manifest === false) return {};
|
|
223
|
+
|
|
224
|
+
const path = applicationPath(options.root, options.manifest ?? DEFAULT_MANIFEST);
|
|
225
|
+
const value = JSON.parse(await readFile(path, 'utf8')) as unknown;
|
|
226
|
+
|
|
227
|
+
if (!value || typeof value !== 'object' || Array.isArray(value)) {
|
|
228
|
+
throw new Error(`Vite SSR manifest must contain an object: ${path}`);
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
return value as ViteSsrManifest;
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
/**
|
|
235
|
+
* Resolves the configured server-entry renderer and validates its contract.
|
|
236
|
+
*
|
|
237
|
+
* @param module - Loaded development or production module namespace.
|
|
238
|
+
* @param name - Named renderer export.
|
|
239
|
+
* @returns Framework-compatible application renderer.
|
|
240
|
+
*/
|
|
241
|
+
function moduleRenderer<TState extends object>(
|
|
242
|
+
module: ViteSsrServerModule<TState>,
|
|
243
|
+
name: string,
|
|
244
|
+
): SsrRenderer<TState> {
|
|
245
|
+
const render = module[name];
|
|
246
|
+
|
|
247
|
+
if (typeof render !== 'function') {
|
|
248
|
+
throw new Error(`Vite SSR server entry must export a "${name}" renderer.`);
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
return render as SsrRenderer<TState>;
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
/**
|
|
255
|
+
* Resolves an application-owned path without changing absolute paths.
|
|
256
|
+
*
|
|
257
|
+
* @param root - Absolute application root.
|
|
258
|
+
* @param path - Absolute or application-relative path.
|
|
259
|
+
* @returns Absolute filesystem path.
|
|
260
|
+
*/
|
|
261
|
+
function applicationPath(root: string, path: string): string {
|
|
262
|
+
return isAbsolute(path) ? path : resolve(root, path);
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
/**
|
|
266
|
+
* Normalizes a Fastify static prefix to an absolute trailing-slash path.
|
|
267
|
+
*
|
|
268
|
+
* @param prefix - Application-provided public asset prefix.
|
|
269
|
+
* @returns Normalized Fastify route prefix.
|
|
270
|
+
*/
|
|
271
|
+
function normalizedAssetPrefix(prefix: string): string {
|
|
272
|
+
const value = `/${prefix.trim().replace(/^\/+|\/+$/g, '')}/`;
|
|
273
|
+
|
|
274
|
+
if (value === '//') {
|
|
275
|
+
throw new Error('Vite SSR static asset prefix cannot be empty.');
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
return value;
|
|
279
|
+
}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import type { SsrRenderContext } from '../contracts';
|
|
2
|
+
|
|
3
|
+
/** Vite SSR manifest mapping rendered module ids to their client build files. */
|
|
4
|
+
export type ViteSsrManifest = Record<string, string[]>;
|
|
5
|
+
|
|
6
|
+
/** Controls which client files should be preloaded for a rendered request. */
|
|
7
|
+
export interface ApplyViteSsrManifestOptions {
|
|
8
|
+
/** Whether JavaScript module chunks should be preloaded for hydration. */
|
|
9
|
+
preloadJavaScript?: boolean;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Adds request-used Vite assets to the single document-head pipeline.
|
|
14
|
+
*
|
|
15
|
+
* @param context - Request-owned SSR context populated by the Vue renderer.
|
|
16
|
+
* @param manifest - Production Vite SSR manifest.
|
|
17
|
+
* @param options - Client preload policy for the current application.
|
|
18
|
+
*/
|
|
19
|
+
export function applyViteSsrManifest<TState extends object>(
|
|
20
|
+
context: SsrRenderContext<TState>,
|
|
21
|
+
manifest: ViteSsrManifest,
|
|
22
|
+
options: ApplyViteSsrManifestOptions = {},
|
|
23
|
+
): void {
|
|
24
|
+
const seen = new Set(context.head.link
|
|
25
|
+
.map(link => typeof link.href === 'string' ? link.href : '')
|
|
26
|
+
.filter(Boolean));
|
|
27
|
+
|
|
28
|
+
for (const moduleId of context.modules) {
|
|
29
|
+
for (const file of manifest[moduleId] ?? []) {
|
|
30
|
+
const href = assetHref(file);
|
|
31
|
+
|
|
32
|
+
if (!href || seen.has(href)) continue;
|
|
33
|
+
|
|
34
|
+
const attributes = preloadAttributes(href, options);
|
|
35
|
+
|
|
36
|
+
if (!attributes) continue;
|
|
37
|
+
|
|
38
|
+
context.head.link.push(attributes);
|
|
39
|
+
seen.add(href);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Normalizes one manifest file to a root-relative public URL.
|
|
46
|
+
*
|
|
47
|
+
* @param file - File path emitted by Vite.
|
|
48
|
+
* @returns Root-relative public URL or an empty string.
|
|
49
|
+
*/
|
|
50
|
+
function assetHref(file: string): string {
|
|
51
|
+
const value = file.trim();
|
|
52
|
+
|
|
53
|
+
if (!value) return '';
|
|
54
|
+
|
|
55
|
+
return value.startsWith('/') ? value : `/${value}`;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Maps a built asset to the corresponding preload or stylesheet element.
|
|
60
|
+
*
|
|
61
|
+
* @param href - Root-relative public asset URL.
|
|
62
|
+
* @param options - JavaScript preload policy.
|
|
63
|
+
* @returns Document-head attributes or null for unsupported assets.
|
|
64
|
+
*/
|
|
65
|
+
function preloadAttributes(
|
|
66
|
+
href: string,
|
|
67
|
+
options: ApplyViteSsrManifestOptions,
|
|
68
|
+
): Record<string, string | boolean> | null {
|
|
69
|
+
if (href.endsWith('.css')) {
|
|
70
|
+
return { rel: 'stylesheet', href };
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
if (href.endsWith('.js')) {
|
|
74
|
+
return options.preloadJavaScript === false
|
|
75
|
+
? null
|
|
76
|
+
: { rel: 'modulepreload', crossorigin: true, href };
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
if (href.endsWith('.woff2')) {
|
|
80
|
+
return { rel: 'preload', href, as: 'font', type: 'font/woff2', crossorigin: true };
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
if (href.endsWith('.woff')) {
|
|
84
|
+
return { rel: 'preload', href, as: 'font', type: 'font/woff', crossorigin: true };
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
if (/\.(avif|gif|jpe?g|png|webp)$/.test(href)) {
|
|
88
|
+
return { rel: 'preload', href, as: 'image' };
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
return null;
|
|
92
|
+
}
|
|
@@ -0,0 +1,310 @@
|
|
|
1
|
+
# @db3.ai/app/storage
|
|
2
|
+
|
|
3
|
+
## Stream failure and recovery lab
|
|
4
|
+
|
|
5
|
+
Copy `src/storage/examples/` from the installed package into `examples/` and run
|
|
6
|
+
`npx tsx examples/runStreamExport.ts`. The lab streams 50,000 rows, interrupts a
|
|
7
|
+
staged write, preserves the last successful export and removes partial bytes.
|
|
8
|
+
It needs only temporary local storage and removes that directory afterwards.
|
|
9
|
+
`tests/examples/runStreamExport.test.ts` is the consumer-copyable behavioral
|
|
10
|
+
check. Remote moves and HTTP disconnects need separate adapter/driver tests.
|
|
11
|
+
|
|
12
|
+
`@db3.ai/app/storage` provides a Laravel-style storage service with named
|
|
13
|
+
disks. App code can write to the default disk through `app.storage` or select a
|
|
14
|
+
configured disk with `app.storage.disk(name)`.
|
|
15
|
+
|
|
16
|
+
The storage service is the lower-level file API. Managed file records, ULID
|
|
17
|
+
references, and database-backed file metadata should sit above this layer.
|
|
18
|
+
|
|
19
|
+
## Configure disks
|
|
20
|
+
|
|
21
|
+
```ts
|
|
22
|
+
import { App } from '@db3.ai/app';
|
|
23
|
+
|
|
24
|
+
const app = new App({
|
|
25
|
+
storage: {
|
|
26
|
+
default: 'local',
|
|
27
|
+
disks: {
|
|
28
|
+
local: {
|
|
29
|
+
driver: 'local',
|
|
30
|
+
root: 'storage/app',
|
|
31
|
+
},
|
|
32
|
+
agent: {
|
|
33
|
+
driver: 'local',
|
|
34
|
+
root: 'storage/agent',
|
|
35
|
+
url: 'https://example.test/storage/agent',
|
|
36
|
+
},
|
|
37
|
+
spaces: {
|
|
38
|
+
driver: 's3',
|
|
39
|
+
bucket: 'example-assets',
|
|
40
|
+
region: 'nyc3',
|
|
41
|
+
endpoint: 'https://nyc3.digitaloceanspaces.com',
|
|
42
|
+
url: 'https://example-assets.nyc3.digitaloceanspaces.com',
|
|
43
|
+
accessKeyId: process.env.SPACES_ACCESS_KEY_ID,
|
|
44
|
+
secretAccessKey: process.env.SPACES_SECRET_ACCESS_KEY,
|
|
45
|
+
},
|
|
46
|
+
},
|
|
47
|
+
},
|
|
48
|
+
});
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
If no storage config is supplied, `local` is available and writes under
|
|
52
|
+
`storage/app` relative to the process working directory. The local driver is
|
|
53
|
+
backed by Flystorage's `FileStorage` and `LocalStorageAdapter`.
|
|
54
|
+
|
|
55
|
+
## Day-To-Day Usage
|
|
56
|
+
|
|
57
|
+
Most app code should use the default disk unless it has a good reason to choose
|
|
58
|
+
a specific backend. `write(...)` and `put(...)` do the same thing. `put(...)`
|
|
59
|
+
matches Laravel naming, while `write(...)` is convenient in the REPL.
|
|
60
|
+
|
|
61
|
+
### Write A Text File
|
|
62
|
+
|
|
63
|
+
```ts
|
|
64
|
+
await app().storage.write('my/test-file.txt', 'hello i am a test file');
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
Or, using the Laravel-style name:
|
|
68
|
+
|
|
69
|
+
```ts
|
|
70
|
+
await app().storage.put('my/test-file.txt', 'hello i am a test file');
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### Read A Text File
|
|
74
|
+
|
|
75
|
+
```ts
|
|
76
|
+
const text = await app().storage.readToString('my/test-file.txt');
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
`getText(...)` is also available when you want to pass a Node text encoding.
|
|
80
|
+
|
|
81
|
+
### Read A Stream
|
|
82
|
+
|
|
83
|
+
`read(...)` follows Flystorage's API and returns a readable stream:
|
|
84
|
+
|
|
85
|
+
```ts
|
|
86
|
+
const stream = await app().storage.read('my/test-file.txt');
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
Use `get(...)` when you intentionally want the whole file buffered:
|
|
90
|
+
|
|
91
|
+
```ts
|
|
92
|
+
const buffer = await app().storage.readToBuffer('my/test-file.txt');
|
|
93
|
+
const bytes = await app().storage.readToUint8Array('my/test-file.txt');
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
`get(...)` is also available as a shorter alias for `readToBuffer(...)`.
|
|
97
|
+
|
|
98
|
+
### Write JSON
|
|
99
|
+
|
|
100
|
+
```ts
|
|
101
|
+
await app().storage.write('reports/latest.json', JSON.stringify({
|
|
102
|
+
status: 'ready',
|
|
103
|
+
}, null, '\t'), {
|
|
104
|
+
mimeType: 'application/json',
|
|
105
|
+
});
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
### Write Bytes
|
|
109
|
+
|
|
110
|
+
```ts
|
|
111
|
+
await app().storage.write('images/avatar.png', imageBytes, {
|
|
112
|
+
mimeType: 'image/png',
|
|
113
|
+
visibility: 'private',
|
|
114
|
+
});
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
### Check, Delete, And Inspect Files
|
|
118
|
+
|
|
119
|
+
```ts
|
|
120
|
+
await app().storage.exists('my/test-file.txt');
|
|
121
|
+
await app().storage.missing('my/missing-file.txt');
|
|
122
|
+
await app().storage.size('my/test-file.txt');
|
|
123
|
+
await app().storage.lastModified('my/test-file.txt');
|
|
124
|
+
await app().storage.mimeType('images/avatar.png');
|
|
125
|
+
await app().storage.delete('my/test-file.txt');
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
### List Directory Contents
|
|
129
|
+
|
|
130
|
+
`list(...)` returns a lazy, provider-neutral async listing for local and remote
|
|
131
|
+
disks. Set `deep` when descendants below the immediate directory are needed:
|
|
132
|
+
|
|
133
|
+
```ts
|
|
134
|
+
const listing = app().storage.disk('local').list('reports', {
|
|
135
|
+
deep: true,
|
|
136
|
+
});
|
|
137
|
+
|
|
138
|
+
for await (const entry of listing) {
|
|
139
|
+
console.log(entry.type, entry.path, entry.lastModified);
|
|
140
|
+
}
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
Collect a listing when the complete result is intentionally needed in memory:
|
|
144
|
+
|
|
145
|
+
```ts
|
|
146
|
+
const entries = await app().storage.disk('local').list('reports', {
|
|
147
|
+
deep: true,
|
|
148
|
+
}).toArray();
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
Pass an empty path or omit it to list from the disk root. Listings expose the
|
|
152
|
+
same framework entry shape for every driver; callers do not need to know whether
|
|
153
|
+
the selected disk is local or S3-compatible.
|
|
154
|
+
|
|
155
|
+
For local disks, `path(...)` returns the absolute filesystem path:
|
|
156
|
+
|
|
157
|
+
```ts
|
|
158
|
+
app().storage.path('my/test-file.txt');
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
Remote disks such as S3 do not expose local paths, so use `url(...)` when a
|
|
162
|
+
public URL is configured:
|
|
163
|
+
|
|
164
|
+
```ts
|
|
165
|
+
await app().storage.url('images/avatar.png');
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
### Use A Named Disk
|
|
169
|
+
|
|
170
|
+
```ts
|
|
171
|
+
await app().storage.disk('agent').write('generated-images/example.txt', 'hello agent disk');
|
|
172
|
+
|
|
173
|
+
const text = await app().storage.disk('agent').getText('generated-images/example.txt');
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
`drive(name)` is also available as an alias for `disk(name)`:
|
|
177
|
+
|
|
178
|
+
```ts
|
|
179
|
+
await app().storage.drive('agent').write('notes/example.txt', 'stored on the agent disk');
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
## Try It In Tinker
|
|
183
|
+
|
|
184
|
+
From the repo root, start the CLI REPL:
|
|
185
|
+
|
|
186
|
+
```sh
|
|
187
|
+
npm run tinker
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
An application tinker context can expose both `app` and `app()` styles. Top-level
|
|
191
|
+
`await` is supported, so each command waits for the storage operation to finish
|
|
192
|
+
before the prompt returns:
|
|
193
|
+
|
|
194
|
+
```ts
|
|
195
|
+
await app().storage.write('my/test-file.txt', 'hello i am a test file')
|
|
196
|
+
await app().storage.read('my/test-file.txt')
|
|
197
|
+
await app().storage.readToString('my/test-file.txt')
|
|
198
|
+
await app().storage.readToBuffer('my/test-file.txt')
|
|
199
|
+
await app().storage.readToUint8Array('my/test-file.txt')
|
|
200
|
+
await app().storage.exists('my/test-file.txt')
|
|
201
|
+
await app().storage.delete('my/test-file.txt')
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
If you prefer property access, this works too:
|
|
205
|
+
|
|
206
|
+
```ts
|
|
207
|
+
await app.storage.write('my/test-file.txt', 'hello from app.storage')
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
## Use The Default Disk
|
|
211
|
+
|
|
212
|
+
```ts
|
|
213
|
+
await app.storage.put('reports/latest.json', JSON.stringify({
|
|
214
|
+
status: 'ready',
|
|
215
|
+
}));
|
|
216
|
+
|
|
217
|
+
const text = await app.storage.getText('reports/latest.json');
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
## Use A Named Disk
|
|
221
|
+
|
|
222
|
+
```ts
|
|
223
|
+
const agent = app.storage.disk('agent');
|
|
224
|
+
|
|
225
|
+
await agent.write('generated-images/example.png', imageBytes, {
|
|
226
|
+
mimeType: 'image/png',
|
|
227
|
+
visibility: 'private',
|
|
228
|
+
});
|
|
229
|
+
|
|
230
|
+
const bytes = await agent.get('generated-images/example.png');
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
## Stream Large Files
|
|
234
|
+
|
|
235
|
+
Use explicit stream methods when files should not be buffered into memory:
|
|
236
|
+
|
|
237
|
+
```ts
|
|
238
|
+
await app.storage.disk('agent').writeStream('uploads/source-video.mp4', requestStream, {
|
|
239
|
+
mimeType: 'video/mp4',
|
|
240
|
+
});
|
|
241
|
+
|
|
242
|
+
const stream = await app.storage.disk('agent').readStream('uploads/source-video.mp4');
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
`read(...)` is also available and matches Flystorage's stream-returning method:
|
|
246
|
+
|
|
247
|
+
```ts
|
|
248
|
+
const stream = await app.storage.disk('agent').read('uploads/source-video.mp4');
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
These methods are backed by Flystorage streams, so they are the preferred API
|
|
252
|
+
for large uploads, exports, and future remote disks such as S3. The framework
|
|
253
|
+
wrapper passes stream objects through to the driver and does not buffer them
|
|
254
|
+
before writing or reading.
|
|
255
|
+
|
|
256
|
+
## S3-Compatible Disks
|
|
257
|
+
|
|
258
|
+
Use `driver: 's3'` for AWS S3 and services that support the S3 protocol:
|
|
259
|
+
|
|
260
|
+
```ts
|
|
261
|
+
const storage = new Storage({
|
|
262
|
+
default: 'spaces',
|
|
263
|
+
disks: {
|
|
264
|
+
spaces: {
|
|
265
|
+
driver: 's3',
|
|
266
|
+
bucket: 'example-assets',
|
|
267
|
+
region: 'nyc3',
|
|
268
|
+
endpoint: 'https://nyc3.digitaloceanspaces.com',
|
|
269
|
+
url: 'https://example-assets.nyc3.digitaloceanspaces.com',
|
|
270
|
+
accessKeyId: env.required('SPACES_ACCESS_KEY_ID'),
|
|
271
|
+
secretAccessKey: env.required('SPACES_SECRET_ACCESS_KEY'),
|
|
272
|
+
},
|
|
273
|
+
},
|
|
274
|
+
});
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
`endpoint` is optional for AWS S3 and useful for providers such as DigitalOcean
|
|
278
|
+
Spaces, MinIO, and other S3-compatible services. Use `forcePathStyle: true`
|
|
279
|
+
when the provider expects path-style bucket URLs.
|
|
280
|
+
|
|
281
|
+
## Path safety
|
|
282
|
+
|
|
283
|
+
Storage paths are always relative to the disk root. Absolute paths, null bytes,
|
|
284
|
+
and parent-directory traversal are rejected before the driver touches the
|
|
285
|
+
filesystem. File operations reject empty paths; `list('')` deliberately allows
|
|
286
|
+
an empty path to list the disk root.
|
|
287
|
+
|
|
288
|
+
## Runnable example and testing
|
|
289
|
+
|
|
290
|
+
The [storage lab](./examples/runStorage.ts) writes and reads JSON and a streamed
|
|
291
|
+
CSV, lists the resulting paths, checks traversal rejection and deletes a file.
|
|
292
|
+
It uses a real temporary local disk, removes that directory afterwards and does
|
|
293
|
+
not need SQL or cloud credentials. Copy the shipped example into `examples`
|
|
294
|
+
and run `npx tsx examples/runStorage.ts` in the consuming app.
|
|
295
|
+
|
|
296
|
+
The Storage website page includes the exact Vitest test for that copied file.
|
|
297
|
+
Framework contributors run `npm run test:service --workspace packages/app -- storage`.
|
|
298
|
+
Local behaviour is not evidence that an S3 account, bucket policy or interrupted
|
|
299
|
+
upload works correctly. Verify those against dedicated provider test resources.
|
|
300
|
+
|
|
301
|
+
## Local disk URLs
|
|
302
|
+
|
|
303
|
+
The local driver can build URLs only when `url` is configured:
|
|
304
|
+
|
|
305
|
+
```ts
|
|
306
|
+
const url = await app.storage.disk('agent').url('generated-images/example.png');
|
|
307
|
+
```
|
|
308
|
+
|
|
309
|
+
This method only returns the URL. Routes remain responsible for authentication,
|
|
310
|
+
ownership checks, headers, and response shaping.
|