@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,31 @@
|
|
|
1
|
+
import type * as queue from './contracts/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Typed asynchronous lifecycle dispatcher owned by one Queue instance.
|
|
4
|
+
*
|
|
5
|
+
* Queue transitions are already durable when events are published. Listener
|
|
6
|
+
* failures are therefore reported independently and never reject the queue
|
|
7
|
+
* operation that produced the event.
|
|
8
|
+
*/
|
|
9
|
+
export declare class QueueEvents {
|
|
10
|
+
#private;
|
|
11
|
+
private readonly onListenerError;
|
|
12
|
+
/**
|
|
13
|
+
* Creates a queue event dispatcher.
|
|
14
|
+
*
|
|
15
|
+
* @param onListenerError - Reporter for isolated listener failures.
|
|
16
|
+
*/
|
|
17
|
+
constructor(onListenerError: queue.QueueLifecycleErrorHandler);
|
|
18
|
+
/**
|
|
19
|
+
* Subscribes to every queue lifecycle event.
|
|
20
|
+
*
|
|
21
|
+
* @param listener - Listener invoked for subsequent lifecycle events.
|
|
22
|
+
* @returns Function that removes the listener.
|
|
23
|
+
*/
|
|
24
|
+
subscribe(listener: queue.QueueLifecycleListener): () => void;
|
|
25
|
+
/**
|
|
26
|
+
* Publishes one event and waits for every current listener to settle.
|
|
27
|
+
*
|
|
28
|
+
* @param event - Immutable lifecycle event to publish.
|
|
29
|
+
*/
|
|
30
|
+
publish(event: queue.QueueLifecycleEvent): Promise<void>;
|
|
31
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Typed asynchronous lifecycle dispatcher owned by one Queue instance.
|
|
3
|
+
*
|
|
4
|
+
* Queue transitions are already durable when events are published. Listener
|
|
5
|
+
* failures are therefore reported independently and never reject the queue
|
|
6
|
+
* operation that produced the event.
|
|
7
|
+
*/
|
|
8
|
+
export class QueueEvents {
|
|
9
|
+
onListenerError;
|
|
10
|
+
#listeners = new Set();
|
|
11
|
+
/**
|
|
12
|
+
* Creates a queue event dispatcher.
|
|
13
|
+
*
|
|
14
|
+
* @param onListenerError - Reporter for isolated listener failures.
|
|
15
|
+
*/
|
|
16
|
+
constructor(onListenerError) {
|
|
17
|
+
this.onListenerError = onListenerError;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Subscribes to every queue lifecycle event.
|
|
21
|
+
*
|
|
22
|
+
* @param listener - Listener invoked for subsequent lifecycle events.
|
|
23
|
+
* @returns Function that removes the listener.
|
|
24
|
+
*/
|
|
25
|
+
subscribe(listener) {
|
|
26
|
+
this.#listeners.add(listener);
|
|
27
|
+
return () => {
|
|
28
|
+
this.#listeners.delete(listener);
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Publishes one event and waits for every current listener to settle.
|
|
33
|
+
*
|
|
34
|
+
* @param event - Immutable lifecycle event to publish.
|
|
35
|
+
*/
|
|
36
|
+
async publish(event) {
|
|
37
|
+
const listeners = [...this.#listeners];
|
|
38
|
+
const results = await Promise.allSettled(listeners.map(async (listener) => listener(event)));
|
|
39
|
+
for (const result of results) {
|
|
40
|
+
if (result.status === 'fulfilled')
|
|
41
|
+
continue;
|
|
42
|
+
this.onListenerError({
|
|
43
|
+
source: 'listener',
|
|
44
|
+
event,
|
|
45
|
+
error: result.reason,
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Error type that asks a queue worker to retry a job at a specific later time.
|
|
3
|
+
*
|
|
4
|
+
* Throw this for intentional external backpressure, such as provider rate limits,
|
|
5
|
+
* where the job should remain queued without consuming an application retry.
|
|
6
|
+
*/
|
|
7
|
+
export declare class QueueRetryLaterError extends Error {
|
|
8
|
+
readonly delaySeconds: number;
|
|
9
|
+
/**
|
|
10
|
+
* Create a queue retry-later error.
|
|
11
|
+
*
|
|
12
|
+
* @param delaySeconds - Number of seconds before the job should be available.
|
|
13
|
+
* @param message - Human-readable reason for the deferral.
|
|
14
|
+
*/
|
|
15
|
+
constructor(delaySeconds: number, message?: string);
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Checks whether an unknown error asks the queue to defer without consuming a try.
|
|
19
|
+
*
|
|
20
|
+
* @param error - Unknown thrown value.
|
|
21
|
+
* @returns True when the error carries a finite retry delay.
|
|
22
|
+
*/
|
|
23
|
+
export declare function isQueueRetryLaterError(error: unknown): error is QueueRetryLaterError;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Error type that asks a queue worker to retry a job at a specific later time.
|
|
3
|
+
*
|
|
4
|
+
* Throw this for intentional external backpressure, such as provider rate limits,
|
|
5
|
+
* where the job should remain queued without consuming an application retry.
|
|
6
|
+
*/
|
|
7
|
+
export class QueueRetryLaterError extends Error {
|
|
8
|
+
delaySeconds;
|
|
9
|
+
/**
|
|
10
|
+
* Create a queue retry-later error.
|
|
11
|
+
*
|
|
12
|
+
* @param delaySeconds - Number of seconds before the job should be available.
|
|
13
|
+
* @param message - Human-readable reason for the deferral.
|
|
14
|
+
*/
|
|
15
|
+
constructor(delaySeconds, message = 'Queue job should retry later.') {
|
|
16
|
+
super(message);
|
|
17
|
+
this.delaySeconds = delaySeconds;
|
|
18
|
+
this.name = 'QueueRetryLaterError';
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Checks whether an unknown error asks the queue to defer without consuming a try.
|
|
23
|
+
*
|
|
24
|
+
* @param error - Unknown thrown value.
|
|
25
|
+
* @returns True when the error carries a finite retry delay.
|
|
26
|
+
*/
|
|
27
|
+
export function isQueueRetryLaterError(error) {
|
|
28
|
+
return (error instanceof QueueRetryLaterError
|
|
29
|
+
|| (typeof error === 'object'
|
|
30
|
+
&& error !== null
|
|
31
|
+
&& error.name === 'QueueRetryLaterError'
|
|
32
|
+
&& typeof error.delaySeconds === 'number'
|
|
33
|
+
&& Number.isFinite(error.delaySeconds)));
|
|
34
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import type { Queue } from './Queue.js';
|
|
2
|
+
import type * as queue from './contracts/index.js';
|
|
3
|
+
export type { QueueLogger, QueueWorkerLifecycle, QueueWorkerOptions } from './contracts/index.js';
|
|
4
|
+
/**
|
|
5
|
+
* Polls one queue and asks Queue to process available jobs.
|
|
6
|
+
*
|
|
7
|
+
* The worker intentionally owns only timer and lifecycle behavior. It delegates claims,
|
|
8
|
+
* handler execution, retries, and failure recording back to Queue.
|
|
9
|
+
*/
|
|
10
|
+
export declare class QueueWorker implements queue.QueueWorkerLifecycle {
|
|
11
|
+
#private;
|
|
12
|
+
private readonly queueManager;
|
|
13
|
+
private readonly queue;
|
|
14
|
+
private readonly logger?;
|
|
15
|
+
private readonly verbose;
|
|
16
|
+
private timer;
|
|
17
|
+
private readonly intervalMs;
|
|
18
|
+
private readonly maxJobsPerTick;
|
|
19
|
+
constructor(queueManager: Queue, queue?: string, intervalMs?: number, maxJobsPerTick?: number, logger?: queue.QueueLogger | undefined, verbose?: boolean);
|
|
20
|
+
/**
|
|
21
|
+
* Starts the worker with an immediate tick followed by interval-based polling.
|
|
22
|
+
*/
|
|
23
|
+
start(): void;
|
|
24
|
+
/**
|
|
25
|
+
* Stops future polling ticks. Any already-running tick is allowed to finish.
|
|
26
|
+
*/
|
|
27
|
+
stop(): void;
|
|
28
|
+
/**
|
|
29
|
+
* Stops future polling and waits for the active queue tick to finish.
|
|
30
|
+
*/
|
|
31
|
+
stopAndDrain(): Promise<void>;
|
|
32
|
+
/**
|
|
33
|
+
* Starts one tick when the previous tick is no longer running.
|
|
34
|
+
*/
|
|
35
|
+
private startTick;
|
|
36
|
+
/**
|
|
37
|
+
* Claims and processes the bounded set of jobs assigned to one polling tick.
|
|
38
|
+
*/
|
|
39
|
+
private tick;
|
|
40
|
+
/**
|
|
41
|
+
* Logs that the worker reached an idle poll.
|
|
42
|
+
*
|
|
43
|
+
* @param processedThisTick - Number of jobs processed before the queue became idle.
|
|
44
|
+
*/
|
|
45
|
+
private logIdle;
|
|
46
|
+
/**
|
|
47
|
+
* Logs that this tick hit the configured maximum jobs per tick.
|
|
48
|
+
*
|
|
49
|
+
* @param processedThisTick - Number of jobs processed during this tick.
|
|
50
|
+
*/
|
|
51
|
+
private logTickLimit;
|
|
52
|
+
/**
|
|
53
|
+
* Logs the final outcome for a processed queue job.
|
|
54
|
+
*
|
|
55
|
+
* @param result - Queue processing result returned by the queue manager.
|
|
56
|
+
*/
|
|
57
|
+
private logResult;
|
|
58
|
+
/**
|
|
59
|
+
* Logs that a queue job has been claimed and is about to run.
|
|
60
|
+
*
|
|
61
|
+
* @param job - Claimed queue job.
|
|
62
|
+
*/
|
|
63
|
+
private logClaimed;
|
|
64
|
+
/**
|
|
65
|
+
* Returns a verbose suffix describing the next chained job.
|
|
66
|
+
*
|
|
67
|
+
* @param job - Completed queue job.
|
|
68
|
+
* @returns Empty string or a sentence fragment for the next queued job.
|
|
69
|
+
*/
|
|
70
|
+
private verboseNextJobMessage;
|
|
71
|
+
}
|
|
72
|
+
export { QueueWorker as DatabaseQueueWorker };
|
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
import { unknownErrorMessage } from '@db3.ai/pure';
|
|
2
|
+
const DEFAULT_WORKER_INTERVAL_MS = 1000;
|
|
3
|
+
const MIN_WORKER_INTERVAL_MS = 100;
|
|
4
|
+
const DEFAULT_MAX_JOBS_PER_TICK = 5;
|
|
5
|
+
const MIN_MAX_JOBS_PER_TICK = 1;
|
|
6
|
+
/**
|
|
7
|
+
* Polls one queue and asks Queue to process available jobs.
|
|
8
|
+
*
|
|
9
|
+
* The worker intentionally owns only timer and lifecycle behavior. It delegates claims,
|
|
10
|
+
* handler execution, retries, and failure recording back to Queue.
|
|
11
|
+
*/
|
|
12
|
+
export class QueueWorker {
|
|
13
|
+
queueManager;
|
|
14
|
+
queue;
|
|
15
|
+
logger;
|
|
16
|
+
verbose;
|
|
17
|
+
#activeTick = null;
|
|
18
|
+
timer = null;
|
|
19
|
+
intervalMs;
|
|
20
|
+
maxJobsPerTick;
|
|
21
|
+
constructor(queueManager, queue = 'default', intervalMs = Number(process.env.QUEUE_WORKER_INTERVAL_MS || DEFAULT_WORKER_INTERVAL_MS), maxJobsPerTick = Number(process.env.QUEUE_WORKER_MAX_JOBS_PER_TICK || DEFAULT_MAX_JOBS_PER_TICK), logger, verbose = false) {
|
|
22
|
+
this.queueManager = queueManager;
|
|
23
|
+
this.queue = queue;
|
|
24
|
+
this.logger = logger;
|
|
25
|
+
this.verbose = verbose;
|
|
26
|
+
this.intervalMs = normalizeWorkerIntervalMs(intervalMs);
|
|
27
|
+
this.maxJobsPerTick = normalizeMaxJobsPerTick(maxJobsPerTick);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Starts the worker with an immediate tick followed by interval-based polling.
|
|
31
|
+
*/
|
|
32
|
+
start() {
|
|
33
|
+
if (this.timer)
|
|
34
|
+
return;
|
|
35
|
+
this.logger?.info(this.verbose
|
|
36
|
+
? `[queue] Worker started for "${this.queue}" (interval ${this.intervalMs}ms, max ${this.maxJobsPerTick} jobs/tick).`
|
|
37
|
+
: `[queue] Worker started for "${this.queue}".`);
|
|
38
|
+
this.startTick();
|
|
39
|
+
this.timer = setInterval(() => {
|
|
40
|
+
this.startTick();
|
|
41
|
+
}, this.intervalMs);
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Stops future polling ticks. Any already-running tick is allowed to finish.
|
|
45
|
+
*/
|
|
46
|
+
stop() {
|
|
47
|
+
if (!this.timer)
|
|
48
|
+
return;
|
|
49
|
+
clearInterval(this.timer);
|
|
50
|
+
this.timer = null;
|
|
51
|
+
this.logger?.info(`[queue] Worker stopped for "${this.queue}".`);
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Stops future polling and waits for the active queue tick to finish.
|
|
55
|
+
*/
|
|
56
|
+
async stopAndDrain() {
|
|
57
|
+
this.stop();
|
|
58
|
+
if (this.#activeTick) {
|
|
59
|
+
await this.#activeTick;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Starts one tick when the previous tick is no longer running.
|
|
64
|
+
*/
|
|
65
|
+
startTick() {
|
|
66
|
+
if (this.#activeTick)
|
|
67
|
+
return;
|
|
68
|
+
const tick = this.tick();
|
|
69
|
+
this.#activeTick = tick;
|
|
70
|
+
void tick.finally(() => {
|
|
71
|
+
if (this.#activeTick === tick) {
|
|
72
|
+
this.#activeTick = null;
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Claims and processes the bounded set of jobs assigned to one polling tick.
|
|
78
|
+
*/
|
|
79
|
+
async tick() {
|
|
80
|
+
let processedThisTick = 0;
|
|
81
|
+
try {
|
|
82
|
+
for (let processed = 0; processed < this.maxJobsPerTick; processed += 1) {
|
|
83
|
+
const result = await this.queueManager.workNextJob(this.queue, {
|
|
84
|
+
onClaimed: job => this.logClaimed(job),
|
|
85
|
+
});
|
|
86
|
+
if (!result) {
|
|
87
|
+
this.logIdle(processedThisTick);
|
|
88
|
+
break;
|
|
89
|
+
}
|
|
90
|
+
processedThisTick += 1;
|
|
91
|
+
this.logResult(result);
|
|
92
|
+
}
|
|
93
|
+
if (processedThisTick >= this.maxJobsPerTick) {
|
|
94
|
+
this.logTickLimit(processedThisTick);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
catch (error) {
|
|
98
|
+
this.logger?.error?.(`[queue] Worker tick failed for "${this.queue}". ${unknownErrorMessage(error)}`);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Logs that the worker reached an idle poll.
|
|
103
|
+
*
|
|
104
|
+
* @param processedThisTick - Number of jobs processed before the queue became idle.
|
|
105
|
+
*/
|
|
106
|
+
logIdle(processedThisTick) {
|
|
107
|
+
if (!this.verbose)
|
|
108
|
+
return;
|
|
109
|
+
const drained = processedThisTick > 0
|
|
110
|
+
? ` after processing ${processedThisTick} ${plural('job', processedThisTick)}`
|
|
111
|
+
: '';
|
|
112
|
+
this.logger?.info(`[queue] Idle on "${this.queue}"${drained}; next check in ${this.intervalMs}ms.`);
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Logs that this tick hit the configured maximum jobs per tick.
|
|
116
|
+
*
|
|
117
|
+
* @param processedThisTick - Number of jobs processed during this tick.
|
|
118
|
+
*/
|
|
119
|
+
logTickLimit(processedThisTick) {
|
|
120
|
+
if (!this.verbose)
|
|
121
|
+
return;
|
|
122
|
+
this.logger?.info(`[queue] Processed ${processedThisTick} ${plural('job', processedThisTick)} this tick; next check in ${this.intervalMs}ms.`);
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Logs the final outcome for a processed queue job.
|
|
126
|
+
*
|
|
127
|
+
* @param result - Queue processing result returned by the queue manager.
|
|
128
|
+
*/
|
|
129
|
+
logResult(result) {
|
|
130
|
+
const job = result.job;
|
|
131
|
+
const label = `${job.payload.job}#${job.id}`;
|
|
132
|
+
if (result.status === 'succeeded') {
|
|
133
|
+
this.logger?.info(`[queue] Processed ${label} on "${job.queue}".${this.verboseNextJobMessage(job)}`);
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
if (result.status === 'released') {
|
|
137
|
+
this.logger?.warn?.(`[queue] Released ${label} after attempt ${job.attempts}/${job.payload.maxTries}; retrying in ${result.delaySeconds ?? 0}s. ${unknownErrorMessage(result.error)}`);
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
if (result.status === 'deferred') {
|
|
141
|
+
this.logger?.warn?.(`[queue] Deferred ${label}; retrying in ${result.delaySeconds ?? 0}s. ${unknownErrorMessage(result.error)}`);
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
if (result.status === 'lease_lost') {
|
|
145
|
+
this.logger?.warn?.(`[queue] Stopped fenced ${label} attempt ${job.attempts}; lease ownership could not be confirmed. ${unknownErrorMessage(result.error)}`);
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
this.logger?.error?.(`[queue] Failed ${label} after ${job.attempts}/${job.payload.maxTries} attempts. ${unknownErrorMessage(result.error)}`);
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Logs that a queue job has been claimed and is about to run.
|
|
152
|
+
*
|
|
153
|
+
* @param job - Claimed queue job.
|
|
154
|
+
*/
|
|
155
|
+
logClaimed(job) {
|
|
156
|
+
const label = `${job.payload.job}#${job.id}`;
|
|
157
|
+
this.logger?.info(`[queue] Claimed ${label} on "${job.queue}" attempt ${job.attempts}/${job.payload.maxTries}.`);
|
|
158
|
+
if (!this.verbose)
|
|
159
|
+
return;
|
|
160
|
+
this.logger?.info(`[queue] Running ${label}; payload keys: ${payloadKeys(job)}; next on success: ${nextJobLabel(job) ?? 'none'}.`);
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Returns a verbose suffix describing the next chained job.
|
|
164
|
+
*
|
|
165
|
+
* @param job - Completed queue job.
|
|
166
|
+
* @returns Empty string or a sentence fragment for the next queued job.
|
|
167
|
+
*/
|
|
168
|
+
verboseNextJobMessage(job) {
|
|
169
|
+
if (!this.verbose)
|
|
170
|
+
return '';
|
|
171
|
+
const next = nextJobLabel(job);
|
|
172
|
+
return next ? ` Queued next ${next}.` : ' No chained job remains.';
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
export { QueueWorker as DatabaseQueueWorker };
|
|
176
|
+
/**
|
|
177
|
+
* Formats a singular or plural word for a count.
|
|
178
|
+
*
|
|
179
|
+
* @param word - Singular word to pluralize.
|
|
180
|
+
* @param count - Number of items.
|
|
181
|
+
* @returns Word with a simple plural suffix when needed.
|
|
182
|
+
*/
|
|
183
|
+
function plural(word, count) {
|
|
184
|
+
return count === 1 ? word : `${word}s`;
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Normalizes worker polling intervals so bad env or CLI values cannot create a hot loop.
|
|
188
|
+
*
|
|
189
|
+
* @param value - Requested interval in milliseconds.
|
|
190
|
+
* @returns A safe polling interval in milliseconds.
|
|
191
|
+
*/
|
|
192
|
+
function normalizeWorkerIntervalMs(value) {
|
|
193
|
+
if (!Number.isFinite(value) || value <= 0)
|
|
194
|
+
return DEFAULT_WORKER_INTERVAL_MS;
|
|
195
|
+
return Math.max(MIN_WORKER_INTERVAL_MS, Math.floor(value));
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Normalizes the per-tick job limit so workers always make bounded forward progress.
|
|
199
|
+
*
|
|
200
|
+
* @param value - Requested number of jobs to process per tick.
|
|
201
|
+
* @returns A safe integer job limit.
|
|
202
|
+
*/
|
|
203
|
+
function normalizeMaxJobsPerTick(value) {
|
|
204
|
+
if (!Number.isFinite(value) || value <= 0)
|
|
205
|
+
return DEFAULT_MAX_JOBS_PER_TICK;
|
|
206
|
+
return Math.max(MIN_MAX_JOBS_PER_TICK, Math.floor(value));
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Returns a readable list of payload keys for terminal output.
|
|
210
|
+
*
|
|
211
|
+
* @param job - Queue job whose payload data should be described.
|
|
212
|
+
* @returns Comma-separated payload keys or none.
|
|
213
|
+
*/
|
|
214
|
+
function payloadKeys(job) {
|
|
215
|
+
const keys = Object.keys(job.payload.data ?? {});
|
|
216
|
+
return keys.length > 0 ? keys.join(', ') : 'none';
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Returns the next chained job name from a queue payload.
|
|
220
|
+
*
|
|
221
|
+
* @param job - Queue job whose chain should be inspected.
|
|
222
|
+
* @returns Next chained job label or null.
|
|
223
|
+
*/
|
|
224
|
+
function nextJobLabel(job) {
|
|
225
|
+
const [next] = job.payload.chained ?? [];
|
|
226
|
+
return next ? serializedJobLabel(next) : null;
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Builds a terminal label for a serialized queued job.
|
|
230
|
+
*
|
|
231
|
+
* @param job - Serialized queued job.
|
|
232
|
+
* @returns Readable job label.
|
|
233
|
+
*/
|
|
234
|
+
function serializedJobLabel(job) {
|
|
235
|
+
return job.displayName || job.job;
|
|
236
|
+
}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import type * as queue from './contracts/index.js';
|
|
2
|
+
export type { QueueableJobClass, QueueableJobContext, QueueableJobFailureContext, QueueableJobRetryContext, SerializedQueueableJob } from './contracts/index.js';
|
|
3
|
+
/**
|
|
4
|
+
* Base class for application jobs that serialize their runtime data through JSON.
|
|
5
|
+
*
|
|
6
|
+
* Normal jobs only need to declare their data type and implement `handle()`.
|
|
7
|
+
* Override the constructor to validate or normalize input, and override
|
|
8
|
+
* `fromJSON()` or `toJSON()` only when the default round trip is insufficient.
|
|
9
|
+
*/
|
|
10
|
+
export declare abstract class QueueableJob<TData extends Record<string, unknown> = Record<string, unknown>> {
|
|
11
|
+
readonly data: TData;
|
|
12
|
+
private chainedJobs;
|
|
13
|
+
/**
|
|
14
|
+
* Creates a queueable job from its JSON-safe runtime data.
|
|
15
|
+
*
|
|
16
|
+
* @param data - Data that will be persisted in the queue payload.
|
|
17
|
+
*/
|
|
18
|
+
constructor(data: TData);
|
|
19
|
+
/**
|
|
20
|
+
* Rehydrates a job by passing persisted JSON data to its constructor.
|
|
21
|
+
*
|
|
22
|
+
* Subclasses may override this for advanced serialization formats. Most jobs
|
|
23
|
+
* should validate or normalize data in their constructor instead.
|
|
24
|
+
*
|
|
25
|
+
* @param data - JSON-safe data restored from the queue payload.
|
|
26
|
+
* @returns Rehydrated job instance.
|
|
27
|
+
*/
|
|
28
|
+
static fromJSON<TJob extends QueueableJob>(this: new (data: any) => TJob, data: Record<string, unknown>): TJob;
|
|
29
|
+
/**
|
|
30
|
+
* Attaches jobs that should run after this job completes successfully.
|
|
31
|
+
*
|
|
32
|
+
* @param jobs - Serializable jobs to dispatch one at a time after this job.
|
|
33
|
+
* @returns This job instance for fluent dispatching.
|
|
34
|
+
*/
|
|
35
|
+
chain(jobs: QueueableJob[]): this;
|
|
36
|
+
/**
|
|
37
|
+
* Serializes this job into the durable database queue payload shape.
|
|
38
|
+
*
|
|
39
|
+
* @returns Serialized queueable job envelope data.
|
|
40
|
+
*/
|
|
41
|
+
serialize(): queue.SerializedQueueableJob<TData>;
|
|
42
|
+
/**
|
|
43
|
+
* Handles the job after the worker rehydrates it from queued data.
|
|
44
|
+
*
|
|
45
|
+
* @param context - Queueable job runtime context.
|
|
46
|
+
*/
|
|
47
|
+
abstract handle(context: queue.QueueableJobContext): Promise<void>;
|
|
48
|
+
/**
|
|
49
|
+
* Handles a failed attempt after the queue has safely scheduled its retry.
|
|
50
|
+
*
|
|
51
|
+
* Hook failures are reported independently and do not change the retry.
|
|
52
|
+
*
|
|
53
|
+
* @param context - Queue metadata, failure, and retry delay.
|
|
54
|
+
*/
|
|
55
|
+
onRetry(_context: queue.QueueableJobRetryContext): Promise<void>;
|
|
56
|
+
/**
|
|
57
|
+
* Handles terminal failure after the queue driver persists the failed job.
|
|
58
|
+
*
|
|
59
|
+
* Hook failures are reported independently and do not change the durable
|
|
60
|
+
* terminal outcome.
|
|
61
|
+
*
|
|
62
|
+
* @param context - Queue metadata and terminal error.
|
|
63
|
+
*/
|
|
64
|
+
onFinalFailure(_context: queue.QueueableJobFailureContext): Promise<void>;
|
|
65
|
+
/**
|
|
66
|
+
* Returns the JSON-safe data stored as this queued job's payload data.
|
|
67
|
+
*
|
|
68
|
+
* @returns JSON payload data for this job.
|
|
69
|
+
*/
|
|
70
|
+
toJSON(): TData;
|
|
71
|
+
/**
|
|
72
|
+
* Returns jobs that should follow this job when no explicit chain is set.
|
|
73
|
+
*
|
|
74
|
+
* @returns Queueable jobs to run after this job succeeds.
|
|
75
|
+
*/
|
|
76
|
+
protected defaultChain(): QueueableJob[];
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Returns true when a value exposes the queueable-job serialization contract.
|
|
80
|
+
*
|
|
81
|
+
* @param value - Unknown value to inspect.
|
|
82
|
+
* @returns True when the value is a queueable job instance.
|
|
83
|
+
*/
|
|
84
|
+
export declare function isQueueableJob(value: unknown): value is QueueableJob;
|
|
85
|
+
/**
|
|
86
|
+
* Returns true when a class looks like a QueueableJob subclass.
|
|
87
|
+
*
|
|
88
|
+
* @param value - Unknown value to inspect.
|
|
89
|
+
* @returns True when the value is a queueable job class with JSON rehydration.
|
|
90
|
+
*/
|
|
91
|
+
export declare function isQueueableJobClass(value: unknown): value is queue.QueueableJobClass;
|
|
92
|
+
/**
|
|
93
|
+
* Resolves the durable queue name for a queueable job class.
|
|
94
|
+
*
|
|
95
|
+
* @param Job - Queueable job class or compatible class metadata.
|
|
96
|
+
* @returns Durable queue job name.
|
|
97
|
+
*/
|
|
98
|
+
export declare function queueableJobName(Job: queue.QueueableJobClass | {
|
|
99
|
+
name: string;
|
|
100
|
+
jobName?: string;
|
|
101
|
+
}): string;
|
|
102
|
+
/**
|
|
103
|
+
* Rehydrates a queueable job instance from persisted JSON payload data.
|
|
104
|
+
*
|
|
105
|
+
* @param Job - Queueable job class that owns the payload data.
|
|
106
|
+
* @param data - JSON payload data stored in the queue envelope.
|
|
107
|
+
* @returns Rehydrated queueable job instance.
|
|
108
|
+
*/
|
|
109
|
+
export declare function queueableJobFromJSON(Job: queue.QueueableJobClass, data: Record<string, unknown>): QueueableJob;
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base class for application jobs that serialize their runtime data through JSON.
|
|
3
|
+
*
|
|
4
|
+
* Normal jobs only need to declare their data type and implement `handle()`.
|
|
5
|
+
* Override the constructor to validate or normalize input, and override
|
|
6
|
+
* `fromJSON()` or `toJSON()` only when the default round trip is insufficient.
|
|
7
|
+
*/
|
|
8
|
+
export class QueueableJob {
|
|
9
|
+
data;
|
|
10
|
+
chainedJobs = [];
|
|
11
|
+
/**
|
|
12
|
+
* Creates a queueable job from its JSON-safe runtime data.
|
|
13
|
+
*
|
|
14
|
+
* @param data - Data that will be persisted in the queue payload.
|
|
15
|
+
*/
|
|
16
|
+
constructor(data) {
|
|
17
|
+
this.data = data;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Rehydrates a job by passing persisted JSON data to its constructor.
|
|
21
|
+
*
|
|
22
|
+
* Subclasses may override this for advanced serialization formats. Most jobs
|
|
23
|
+
* should validate or normalize data in their constructor instead.
|
|
24
|
+
*
|
|
25
|
+
* @param data - JSON-safe data restored from the queue payload.
|
|
26
|
+
* @returns Rehydrated job instance.
|
|
27
|
+
*/
|
|
28
|
+
static fromJSON(data) {
|
|
29
|
+
return new this(data);
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Attaches jobs that should run after this job completes successfully.
|
|
33
|
+
*
|
|
34
|
+
* @param jobs - Serializable jobs to dispatch one at a time after this job.
|
|
35
|
+
* @returns This job instance for fluent dispatching.
|
|
36
|
+
*/
|
|
37
|
+
chain(jobs) {
|
|
38
|
+
this.chainedJobs = jobs;
|
|
39
|
+
return this;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Serializes this job into the durable database queue payload shape.
|
|
43
|
+
*
|
|
44
|
+
* @returns Serialized queueable job envelope data.
|
|
45
|
+
*/
|
|
46
|
+
serialize() {
|
|
47
|
+
const job = queueableJobName(this.constructor);
|
|
48
|
+
const chainedJobs = this.chainedJobs.length > 0
|
|
49
|
+
? this.chainedJobs
|
|
50
|
+
: this.defaultChain();
|
|
51
|
+
const chained = chainedJobs.map(chainedJob => chainedJob.serialize());
|
|
52
|
+
return {
|
|
53
|
+
job,
|
|
54
|
+
displayName: job,
|
|
55
|
+
data: this.toJSON(),
|
|
56
|
+
...(chained.length ? { chained } : {}),
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Handles a failed attempt after the queue has safely scheduled its retry.
|
|
61
|
+
*
|
|
62
|
+
* Hook failures are reported independently and do not change the retry.
|
|
63
|
+
*
|
|
64
|
+
* @param context - Queue metadata, failure, and retry delay.
|
|
65
|
+
*/
|
|
66
|
+
async onRetry(_context) { }
|
|
67
|
+
/**
|
|
68
|
+
* Handles terminal failure after the queue driver persists the failed job.
|
|
69
|
+
*
|
|
70
|
+
* Hook failures are reported independently and do not change the durable
|
|
71
|
+
* terminal outcome.
|
|
72
|
+
*
|
|
73
|
+
* @param context - Queue metadata and terminal error.
|
|
74
|
+
*/
|
|
75
|
+
async onFinalFailure(_context) { }
|
|
76
|
+
/**
|
|
77
|
+
* Returns the JSON-safe data stored as this queued job's payload data.
|
|
78
|
+
*
|
|
79
|
+
* @returns JSON payload data for this job.
|
|
80
|
+
*/
|
|
81
|
+
toJSON() {
|
|
82
|
+
return this.data;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Returns jobs that should follow this job when no explicit chain is set.
|
|
86
|
+
*
|
|
87
|
+
* @returns Queueable jobs to run after this job succeeds.
|
|
88
|
+
*/
|
|
89
|
+
defaultChain() {
|
|
90
|
+
return [];
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Returns true when a value exposes the queueable-job serialization contract.
|
|
95
|
+
*
|
|
96
|
+
* @param value - Unknown value to inspect.
|
|
97
|
+
* @returns True when the value is a queueable job instance.
|
|
98
|
+
*/
|
|
99
|
+
export function isQueueableJob(value) {
|
|
100
|
+
return Boolean(value
|
|
101
|
+
&& typeof value === 'object'
|
|
102
|
+
&& typeof value.serialize === 'function');
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Returns true when a class looks like a QueueableJob subclass.
|
|
106
|
+
*
|
|
107
|
+
* @param value - Unknown value to inspect.
|
|
108
|
+
* @returns True when the value is a queueable job class with JSON rehydration.
|
|
109
|
+
*/
|
|
110
|
+
export function isQueueableJobClass(value) {
|
|
111
|
+
if (typeof value !== 'function')
|
|
112
|
+
return false;
|
|
113
|
+
const prototype = value.prototype;
|
|
114
|
+
return Boolean(prototype
|
|
115
|
+
&& typeof prototype.serialize === 'function'
|
|
116
|
+
&& typeof prototype.handle === 'function'
|
|
117
|
+
&& typeof value.fromJSON === 'function');
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Resolves the durable queue name for a queueable job class.
|
|
121
|
+
*
|
|
122
|
+
* @param Job - Queueable job class or compatible class metadata.
|
|
123
|
+
* @returns Durable queue job name.
|
|
124
|
+
*/
|
|
125
|
+
export function queueableJobName(Job) {
|
|
126
|
+
return Job.jobName || Job.name;
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Rehydrates a queueable job instance from persisted JSON payload data.
|
|
130
|
+
*
|
|
131
|
+
* @param Job - Queueable job class that owns the payload data.
|
|
132
|
+
* @param data - JSON payload data stored in the queue envelope.
|
|
133
|
+
* @returns Rehydrated queueable job instance.
|
|
134
|
+
*/
|
|
135
|
+
export function queueableJobFromJSON(Job, data) {
|
|
136
|
+
return Job.fromJSON(data);
|
|
137
|
+
}
|