@dotdo/do 0.1.0
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/README.md +400 -0
- package/dist/ai/embeddings.d.ts +129 -0
- package/dist/ai/embeddings.d.ts.map +1 -0
- package/dist/ai/embeddings.js +217 -0
- package/dist/ai/embeddings.js.map +1 -0
- package/dist/ai/gateway.d.ts +139 -0
- package/dist/ai/gateway.d.ts.map +1 -0
- package/dist/ai/gateway.js +179 -0
- package/dist/ai/gateway.js.map +1 -0
- package/dist/ai/image.d.ts +140 -0
- package/dist/ai/image.d.ts.map +1 -0
- package/dist/ai/image.js +199 -0
- package/dist/ai/image.js.map +1 -0
- package/dist/ai/index.d.ts +98 -0
- package/dist/ai/index.d.ts.map +1 -0
- package/dist/ai/index.js +223 -0
- package/dist/ai/index.js.map +1 -0
- package/dist/ai/models.d.ts +81 -0
- package/dist/ai/models.d.ts.map +1 -0
- package/dist/ai/models.js +537 -0
- package/dist/ai/models.js.map +1 -0
- package/dist/ai/text.d.ts +176 -0
- package/dist/ai/text.d.ts.map +1 -0
- package/dist/ai/text.js +253 -0
- package/dist/ai/text.js.map +1 -0
- package/dist/ai/voice/agents.d.ts +224 -0
- package/dist/ai/voice/agents.d.ts.map +1 -0
- package/dist/ai/voice/agents.js +375 -0
- package/dist/ai/voice/agents.js.map +1 -0
- package/dist/ai/voice/campaigns.d.ts +307 -0
- package/dist/ai/voice/campaigns.d.ts.map +1 -0
- package/dist/ai/voice/campaigns.js +739 -0
- package/dist/ai/voice/campaigns.js.map +1 -0
- package/dist/ai/voice/index.d.ts +21 -0
- package/dist/ai/voice/index.d.ts.map +1 -0
- package/dist/ai/voice/index.js +42 -0
- package/dist/ai/voice/index.js.map +1 -0
- package/dist/ai/voice/providers.d.ts +283 -0
- package/dist/ai/voice/providers.d.ts.map +1 -0
- package/dist/ai/voice/providers.js +286 -0
- package/dist/ai/voice/providers.js.map +1 -0
- package/dist/ai/voice/sessions.d.ts +294 -0
- package/dist/ai/voice/sessions.d.ts.map +1 -0
- package/dist/ai/voice/sessions.js +531 -0
- package/dist/ai/voice/sessions.js.map +1 -0
- package/dist/ai/voice/tools.d.ts +242 -0
- package/dist/ai/voice/tools.d.ts.map +1 -0
- package/dist/ai/voice/tools.js +370 -0
- package/dist/ai/voice/tools.js.map +1 -0
- package/dist/ai/voice/tts.d.ts +173 -0
- package/dist/ai/voice/tts.d.ts.map +1 -0
- package/dist/ai/voice/tts.js +252 -0
- package/dist/ai/voice/tts.js.map +1 -0
- package/dist/ai/voice/webrtc.d.ts +228 -0
- package/dist/ai/voice/webrtc.d.ts.map +1 -0
- package/dist/ai/voice/webrtc.js +372 -0
- package/dist/ai/voice/webrtc.js.map +1 -0
- package/dist/api/index.d.ts +103 -0
- package/dist/api/index.d.ts.map +1 -0
- package/dist/api/index.js +191 -0
- package/dist/api/index.js.map +1 -0
- package/dist/api/mcp/handlers.d.ts +25 -0
- package/dist/api/mcp/handlers.d.ts.map +1 -0
- package/dist/api/mcp/handlers.js +422 -0
- package/dist/api/mcp/handlers.js.map +1 -0
- package/dist/api/mcp/index.d.ts +113 -0
- package/dist/api/mcp/index.d.ts.map +1 -0
- package/dist/api/mcp/index.js +141 -0
- package/dist/api/mcp/index.js.map +1 -0
- package/dist/api/middleware/auth.d.ts +65 -0
- package/dist/api/middleware/auth.d.ts.map +1 -0
- package/dist/api/middleware/auth.js +271 -0
- package/dist/api/middleware/auth.js.map +1 -0
- package/dist/api/middleware/cors.d.ts +62 -0
- package/dist/api/middleware/cors.d.ts.map +1 -0
- package/dist/api/middleware/cors.js +225 -0
- package/dist/api/middleware/cors.js.map +1 -0
- package/dist/api/middleware/index.d.ts +60 -0
- package/dist/api/middleware/index.d.ts.map +1 -0
- package/dist/api/middleware/index.js +175 -0
- package/dist/api/middleware/index.js.map +1 -0
- package/dist/api/middleware/rateLimit.d.ts +84 -0
- package/dist/api/middleware/rateLimit.d.ts.map +1 -0
- package/dist/api/middleware/rateLimit.js +321 -0
- package/dist/api/middleware/rateLimit.js.map +1 -0
- package/dist/api/routes/ai.d.ts +17 -0
- package/dist/api/routes/ai.d.ts.map +1 -0
- package/dist/api/routes/ai.js +430 -0
- package/dist/api/routes/ai.js.map +1 -0
- package/dist/api/routes/do.d.ts +17 -0
- package/dist/api/routes/do.d.ts.map +1 -0
- package/dist/api/routes/do.js +458 -0
- package/dist/api/routes/do.js.map +1 -0
- package/dist/api/routes/functions.d.ts +111 -0
- package/dist/api/routes/functions.d.ts.map +1 -0
- package/dist/api/routes/functions.js +548 -0
- package/dist/api/routes/functions.js.map +1 -0
- package/dist/api/routes/health.d.ts +16 -0
- package/dist/api/routes/health.d.ts.map +1 -0
- package/dist/api/routes/health.js +163 -0
- package/dist/api/routes/health.js.map +1 -0
- package/dist/api/routes/index.d.ts +41 -0
- package/dist/api/routes/index.d.ts.map +1 -0
- package/dist/api/routes/index.js +275 -0
- package/dist/api/routes/index.js.map +1 -0
- package/dist/api/routes/nouns.d.ts +26 -0
- package/dist/api/routes/nouns.d.ts.map +1 -0
- package/dist/api/routes/nouns.js +456 -0
- package/dist/api/routes/nouns.js.map +1 -0
- package/dist/api/routes/orgs.d.ts +17 -0
- package/dist/api/routes/orgs.d.ts.map +1 -0
- package/dist/api/routes/orgs.js +560 -0
- package/dist/api/routes/orgs.js.map +1 -0
- package/dist/api/routes/relationships.d.ts +30 -0
- package/dist/api/routes/relationships.d.ts.map +1 -0
- package/dist/api/routes/relationships.js +360 -0
- package/dist/api/routes/relationships.js.map +1 -0
- package/dist/api/routes/roles.d.ts +17 -0
- package/dist/api/routes/roles.d.ts.map +1 -0
- package/dist/api/routes/roles.js +721 -0
- package/dist/api/routes/roles.js.map +1 -0
- package/dist/api/routes/things.d.ts +27 -0
- package/dist/api/routes/things.d.ts.map +1 -0
- package/dist/api/routes/things.js +568 -0
- package/dist/api/routes/things.js.map +1 -0
- package/dist/api/routes/users.d.ts +17 -0
- package/dist/api/routes/users.d.ts.map +1 -0
- package/dist/api/routes/users.js +401 -0
- package/dist/api/routes/users.js.map +1 -0
- package/dist/api/routes/verbs.d.ts +31 -0
- package/dist/api/routes/verbs.d.ts.map +1 -0
- package/dist/api/routes/verbs.js +505 -0
- package/dist/api/routes/verbs.js.map +1 -0
- package/dist/api/routes/workflows.d.ts +44 -0
- package/dist/api/routes/workflows.d.ts.map +1 -0
- package/dist/api/routes/workflows.js +521 -0
- package/dist/api/routes/workflows.js.map +1 -0
- package/dist/api/types.d.ts +370 -0
- package/dist/api/types.d.ts.map +1 -0
- package/dist/api/types.js +11 -0
- package/dist/api/types.js.map +1 -0
- package/dist/db/cdc/events.d.ts +201 -0
- package/dist/db/cdc/events.d.ts.map +1 -0
- package/dist/db/cdc/events.js +271 -0
- package/dist/db/cdc/events.js.map +1 -0
- package/dist/db/cdc/index.d.ts +13 -0
- package/dist/db/cdc/index.d.ts.map +1 -0
- package/dist/db/cdc/index.js +16 -0
- package/dist/db/cdc/index.js.map +1 -0
- package/dist/db/cdc/replay.d.ts +388 -0
- package/dist/db/cdc/replay.d.ts.map +1 -0
- package/dist/db/cdc/replay.js +469 -0
- package/dist/db/cdc/replay.js.map +1 -0
- package/dist/db/cdc/storage.d.ts +567 -0
- package/dist/db/cdc/storage.d.ts.map +1 -0
- package/dist/db/cdc/storage.js +856 -0
- package/dist/db/cdc/storage.js.map +1 -0
- package/dist/db/cdc/streaming.d.ts +459 -0
- package/dist/db/cdc/streaming.d.ts.map +1 -0
- package/dist/db/cdc/streaming.js +636 -0
- package/dist/db/cdc/streaming.js.map +1 -0
- package/dist/db/collections/actions.d.ts +440 -0
- package/dist/db/collections/actions.d.ts.map +1 -0
- package/dist/db/collections/actions.js +631 -0
- package/dist/db/collections/actions.js.map +1 -0
- package/dist/db/collections/base.d.ts +342 -0
- package/dist/db/collections/base.d.ts.map +1 -0
- package/dist/db/collections/base.js +510 -0
- package/dist/db/collections/base.js.map +1 -0
- package/dist/db/collections/index.d.ts +50 -0
- package/dist/db/collections/index.d.ts.map +1 -0
- package/dist/db/collections/index.js +48 -0
- package/dist/db/collections/index.js.map +1 -0
- package/dist/db/collections/nouns.d.ts +260 -0
- package/dist/db/collections/nouns.d.ts.map +1 -0
- package/dist/db/collections/nouns.js +273 -0
- package/dist/db/collections/nouns.js.map +1 -0
- package/dist/db/collections/relationships.d.ts +484 -0
- package/dist/db/collections/relationships.d.ts.map +1 -0
- package/dist/db/collections/relationships.js +815 -0
- package/dist/db/collections/relationships.js.map +1 -0
- package/dist/db/collections/things.d.ts +439 -0
- package/dist/db/collections/things.d.ts.map +1 -0
- package/dist/db/collections/things.js +603 -0
- package/dist/db/collections/things.js.map +1 -0
- package/dist/db/collections/verbs.d.ts +308 -0
- package/dist/db/collections/verbs.d.ts.map +1 -0
- package/dist/db/collections/verbs.js +480 -0
- package/dist/db/collections/verbs.js.map +1 -0
- package/dist/db/index.d.ts +14 -0
- package/dist/db/index.d.ts.map +1 -0
- package/dist/db/index.js +23 -0
- package/dist/db/index.js.map +1 -0
- package/dist/db/storage/cold.d.ts +313 -0
- package/dist/db/storage/cold.d.ts.map +1 -0
- package/dist/db/storage/cold.js +319 -0
- package/dist/db/storage/cold.js.map +1 -0
- package/dist/db/storage/hot.d.ts +340 -0
- package/dist/db/storage/hot.d.ts.map +1 -0
- package/dist/db/storage/hot.js +333 -0
- package/dist/db/storage/hot.js.map +1 -0
- package/dist/db/storage/index.d.ts +242 -0
- package/dist/db/storage/index.d.ts.map +1 -0
- package/dist/db/storage/index.js +109 -0
- package/dist/db/storage/index.js.map +1 -0
- package/dist/db/storage/snapshots.d.ts +342 -0
- package/dist/db/storage/snapshots.d.ts.map +1 -0
- package/dist/db/storage/snapshots.js +298 -0
- package/dist/db/storage/snapshots.js.map +1 -0
- package/dist/db/storage/vortex.d.ts +324 -0
- package/dist/db/storage/vortex.d.ts.map +1 -0
- package/dist/db/storage/vortex.js +365 -0
- package/dist/db/storage/vortex.js.map +1 -0
- package/dist/db/storage/warm.d.ts +306 -0
- package/dist/db/storage/warm.d.ts.map +1 -0
- package/dist/db/storage/warm.js +339 -0
- package/dist/db/storage/warm.js.map +1 -0
- package/dist/do/DigitalObject.d.ts +595 -0
- package/dist/do/DigitalObject.d.ts.map +1 -0
- package/dist/do/DigitalObject.js +971 -0
- package/dist/do/DigitalObject.js.map +1 -0
- package/dist/do/business/financial/accounting.d.ts +436 -0
- package/dist/do/business/financial/accounting.d.ts.map +1 -0
- package/dist/do/business/financial/accounting.js +476 -0
- package/dist/do/business/financial/accounting.js.map +1 -0
- package/dist/do/business/financial/index.d.ts +15 -0
- package/dist/do/business/financial/index.d.ts.map +1 -0
- package/dist/do/business/financial/index.js +20 -0
- package/dist/do/business/financial/index.js.map +1 -0
- package/dist/do/business/financial/metrics.d.ts +370 -0
- package/dist/do/business/financial/metrics.d.ts.map +1 -0
- package/dist/do/business/financial/metrics.js +376 -0
- package/dist/do/business/financial/metrics.js.map +1 -0
- package/dist/do/business/financial/payments.d.ts +397 -0
- package/dist/do/business/financial/payments.d.ts.map +1 -0
- package/dist/do/business/financial/payments.js +395 -0
- package/dist/do/business/financial/payments.js.map +1 -0
- package/dist/do/business/financial/reports.d.ts +284 -0
- package/dist/do/business/financial/reports.d.ts.map +1 -0
- package/dist/do/business/financial/reports.js +347 -0
- package/dist/do/business/financial/reports.js.map +1 -0
- package/dist/do/business/financial/stripe.d.ts +254 -0
- package/dist/do/business/financial/stripe.d.ts.map +1 -0
- package/dist/do/business/financial/stripe.js +261 -0
- package/dist/do/business/financial/stripe.js.map +1 -0
- package/dist/do/business/financial/subscriptions.d.ts +402 -0
- package/dist/do/business/financial/subscriptions.d.ts.map +1 -0
- package/dist/do/business/financial/subscriptions.js +349 -0
- package/dist/do/business/financial/subscriptions.js.map +1 -0
- package/dist/do/business/index.d.ts +9 -0
- package/dist/do/business/index.d.ts.map +1 -0
- package/dist/do/business/index.js +10 -0
- package/dist/do/business/index.js.map +1 -0
- package/dist/do/colo/followers.d.ts +194 -0
- package/dist/do/colo/followers.d.ts.map +1 -0
- package/dist/do/colo/followers.js +224 -0
- package/dist/do/colo/followers.js.map +1 -0
- package/dist/do/colo/fork.d.ts +103 -0
- package/dist/do/colo/fork.d.ts.map +1 -0
- package/dist/do/colo/fork.js +143 -0
- package/dist/do/colo/fork.js.map +1 -0
- package/dist/do/colo/index.d.ts +181 -0
- package/dist/do/colo/index.d.ts.map +1 -0
- package/dist/do/colo/index.js +145 -0
- package/dist/do/colo/index.js.map +1 -0
- package/dist/do/colo/info.d.ts +106 -0
- package/dist/do/colo/info.d.ts.map +1 -0
- package/dist/do/colo/info.js +196 -0
- package/dist/do/colo/info.js.map +1 -0
- package/dist/do/colo/migrate.d.ts +161 -0
- package/dist/do/colo/migrate.d.ts.map +1 -0
- package/dist/do/colo/migrate.js +190 -0
- package/dist/do/colo/migrate.js.map +1 -0
- package/dist/do/colo/routing.d.ts +182 -0
- package/dist/do/colo/routing.d.ts.map +1 -0
- package/dist/do/colo/routing.js +254 -0
- package/dist/do/colo/routing.js.map +1 -0
- package/dist/do/domains/dns.d.ts +269 -0
- package/dist/do/domains/dns.d.ts.map +1 -0
- package/dist/do/domains/dns.js +215 -0
- package/dist/do/domains/dns.js.map +1 -0
- package/dist/do/domains/index.d.ts +40 -0
- package/dist/do/domains/index.d.ts.map +1 -0
- package/dist/do/domains/index.js +61 -0
- package/dist/do/domains/index.js.map +1 -0
- package/dist/do/domains/routing.d.ts +263 -0
- package/dist/do/domains/routing.d.ts.map +1 -0
- package/dist/do/domains/routing.js +362 -0
- package/dist/do/domains/routing.js.map +1 -0
- package/dist/do/domains/ssl.d.ts +217 -0
- package/dist/do/domains/ssl.d.ts.map +1 -0
- package/dist/do/domains/ssl.js +231 -0
- package/dist/do/domains/ssl.js.map +1 -0
- package/dist/do/domains/subdomains.d.ts +207 -0
- package/dist/do/domains/subdomains.d.ts.map +1 -0
- package/dist/do/domains/subdomains.js +223 -0
- package/dist/do/domains/subdomains.js.map +1 -0
- package/dist/do/domains/tlds.d.ts +175 -0
- package/dist/do/domains/tlds.d.ts.map +1 -0
- package/dist/do/domains/tlds.js +188 -0
- package/dist/do/domains/tlds.js.map +1 -0
- package/dist/do/domains/validation.d.ts +164 -0
- package/dist/do/domains/validation.d.ts.map +1 -0
- package/dist/do/domains/validation.js +290 -0
- package/dist/do/domains/validation.js.map +1 -0
- package/dist/do/hibernation.d.ts +385 -0
- package/dist/do/hibernation.d.ts.map +1 -0
- package/dist/do/hibernation.js +518 -0
- package/dist/do/hibernation.js.map +1 -0
- package/dist/do/index.d.ts +19 -0
- package/dist/do/index.d.ts.map +1 -0
- package/dist/do/index.js +23 -0
- package/dist/do/index.js.map +1 -0
- package/dist/do/state.d.ts +336 -0
- package/dist/do/state.d.ts.map +1 -0
- package/dist/do/state.js +290 -0
- package/dist/do/state.js.map +1 -0
- package/dist/index.d.ts +44 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +89 -0
- package/dist/index.js.map +1 -0
- package/dist/rpc/client.d.ts +426 -0
- package/dist/rpc/client.d.ts.map +1 -0
- package/dist/rpc/client.js +826 -0
- package/dist/rpc/client.js.map +1 -0
- package/dist/rpc/index.d.ts +19 -0
- package/dist/rpc/index.d.ts.map +1 -0
- package/dist/rpc/index.js +23 -0
- package/dist/rpc/index.js.map +1 -0
- package/dist/rpc/methods.d.ts +364 -0
- package/dist/rpc/methods.d.ts.map +1 -0
- package/dist/rpc/methods.js +557 -0
- package/dist/rpc/methods.js.map +1 -0
- package/dist/rpc/protocol.d.ts +310 -0
- package/dist/rpc/protocol.d.ts.map +1 -0
- package/dist/rpc/protocol.js +672 -0
- package/dist/rpc/protocol.js.map +1 -0
- package/dist/rpc/routes.d.ts +332 -0
- package/dist/rpc/routes.d.ts.map +1 -0
- package/dist/rpc/routes.js +633 -0
- package/dist/rpc/routes.js.map +1 -0
- package/dist/rpc/server.d.ts +380 -0
- package/dist/rpc/server.d.ts.map +1 -0
- package/dist/rpc/server.js +850 -0
- package/dist/rpc/server.js.map +1 -0
- package/dist/sdk/auth.d.ts +201 -0
- package/dist/sdk/auth.d.ts.map +1 -0
- package/dist/sdk/auth.js +343 -0
- package/dist/sdk/auth.js.map +1 -0
- package/dist/sdk/client.d.ts +123 -0
- package/dist/sdk/client.d.ts.map +1 -0
- package/dist/sdk/client.js +403 -0
- package/dist/sdk/client.js.map +1 -0
- package/dist/sdk/index.d.ts +123 -0
- package/dist/sdk/index.d.ts.map +1 -0
- package/dist/sdk/index.js +230 -0
- package/dist/sdk/index.js.map +1 -0
- package/dist/sdk/rpc.d.ts +275 -0
- package/dist/sdk/rpc.d.ts.map +1 -0
- package/dist/sdk/rpc.js +249 -0
- package/dist/sdk/rpc.js.map +1 -0
- package/dist/sdk/transport.d.ts +283 -0
- package/dist/sdk/transport.d.ts.map +1 -0
- package/dist/sdk/transport.js +661 -0
- package/dist/sdk/transport.js.map +1 -0
- package/dist/sdk/types.d.ts +265 -0
- package/dist/sdk/types.d.ts.map +1 -0
- package/dist/sdk/types.js +27 -0
- package/dist/sdk/types.js.map +1 -0
- package/dist/types/ai.d.ts +533 -0
- package/dist/types/ai.d.ts.map +1 -0
- package/dist/types/ai.js +18 -0
- package/dist/types/ai.js.map +1 -0
- package/dist/types/app.d.ts +371 -0
- package/dist/types/app.d.ts.map +1 -0
- package/dist/types/app.js +151 -0
- package/dist/types/app.js.map +1 -0
- package/dist/types/business.d.ts +482 -0
- package/dist/types/business.d.ts.map +1 -0
- package/dist/types/business.js +60 -0
- package/dist/types/business.js.map +1 -0
- package/dist/types/cascade.d.ts +323 -0
- package/dist/types/cascade.d.ts.map +1 -0
- package/dist/types/cascade.js +82 -0
- package/dist/types/cascade.js.map +1 -0
- package/dist/types/collections.d.ts +704 -0
- package/dist/types/collections.d.ts.map +1 -0
- package/dist/types/collections.js +23 -0
- package/dist/types/collections.js.map +1 -0
- package/dist/types/colo.d.ts +171 -0
- package/dist/types/colo.d.ts.map +1 -0
- package/dist/types/colo.js +63 -0
- package/dist/types/colo.js.map +1 -0
- package/dist/types/communication.d.ts +595 -0
- package/dist/types/communication.d.ts.map +1 -0
- package/dist/types/communication.js +16 -0
- package/dist/types/communication.js.map +1 -0
- package/dist/types/content.d.ts +286 -0
- package/dist/types/content.d.ts.map +1 -0
- package/dist/types/content.js +8 -0
- package/dist/types/content.js.map +1 -0
- package/dist/types/context.d.ts +407 -0
- package/dist/types/context.d.ts.map +1 -0
- package/dist/types/context.js +36 -0
- package/dist/types/context.js.map +1 -0
- package/dist/types/databases.d.ts +377 -0
- package/dist/types/databases.d.ts.map +1 -0
- package/dist/types/databases.js +14 -0
- package/dist/types/databases.js.map +1 -0
- package/dist/types/domains.d.ts +132 -0
- package/dist/types/domains.d.ts.map +1 -0
- package/dist/types/domains.js +107 -0
- package/dist/types/domains.js.map +1 -0
- package/dist/types/execution.d.ts +381 -0
- package/dist/types/execution.d.ts.map +1 -0
- package/dist/types/execution.js +40 -0
- package/dist/types/execution.js.map +1 -0
- package/dist/types/financial.d.ts +608 -0
- package/dist/types/financial.d.ts.map +1 -0
- package/dist/types/financial.js +12 -0
- package/dist/types/financial.js.map +1 -0
- package/dist/types/functions.d.ts +215 -0
- package/dist/types/functions.d.ts.map +1 -0
- package/dist/types/functions.js +15 -0
- package/dist/types/functions.js.map +1 -0
- package/dist/types/git.d.ts +299 -0
- package/dist/types/git.d.ts.map +1 -0
- package/dist/types/git.js +17 -0
- package/dist/types/git.js.map +1 -0
- package/dist/types/identity.d.ts +141 -0
- package/dist/types/identity.d.ts.map +1 -0
- package/dist/types/identity.js +54 -0
- package/dist/types/identity.js.map +1 -0
- package/dist/types/index.d.ts +40 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +65 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/integrations.d.ts +356 -0
- package/dist/types/integrations.d.ts.map +1 -0
- package/dist/types/integrations.js +19 -0
- package/dist/types/integrations.js.map +1 -0
- package/dist/types/mdxui.d.ts +1955 -0
- package/dist/types/mdxui.d.ts.map +1 -0
- package/dist/types/mdxui.js +751 -0
- package/dist/types/mdxui.js.map +1 -0
- package/dist/types/observability.d.ts +315 -0
- package/dist/types/observability.d.ts.map +1 -0
- package/dist/types/observability.js +13 -0
- package/dist/types/observability.js.map +1 -0
- package/dist/types/rpc.d.ts +339 -0
- package/dist/types/rpc.d.ts.map +1 -0
- package/dist/types/rpc.js +24 -0
- package/dist/types/rpc.js.map +1 -0
- package/dist/types/saas.d.ts +678 -0
- package/dist/types/saas.d.ts.map +1 -0
- package/dist/types/saas.js +59 -0
- package/dist/types/saas.js.map +1 -0
- package/dist/types/service.d.ts +676 -0
- package/dist/types/service.d.ts.map +1 -0
- package/dist/types/service.js +69 -0
- package/dist/types/service.js.map +1 -0
- package/dist/types/site.d.ts +317 -0
- package/dist/types/site.d.ts.map +1 -0
- package/dist/types/site.js +203 -0
- package/dist/types/site.js.map +1 -0
- package/dist/types/startup.d.ts +576 -0
- package/dist/types/startup.d.ts.map +1 -0
- package/dist/types/startup.js +59 -0
- package/dist/types/startup.js.map +1 -0
- package/dist/types/storage.d.ts +276 -0
- package/dist/types/storage.d.ts.map +1 -0
- package/dist/types/storage.js +35 -0
- package/dist/types/storage.js.map +1 -0
- package/dist/types/telephony.d.ts +458 -0
- package/dist/types/telephony.d.ts.map +1 -0
- package/dist/types/telephony.js +19 -0
- package/dist/types/telephony.js.map +1 -0
- package/dist/types/tenant.d.ts +708 -0
- package/dist/types/tenant.d.ts.map +1 -0
- package/dist/types/tenant.js +103 -0
- package/dist/types/tenant.js.map +1 -0
- package/dist/types/voice-ai.d.ts +459 -0
- package/dist/types/voice-ai.d.ts.map +1 -0
- package/dist/types/voice-ai.js +32 -0
- package/dist/types/voice-ai.js.map +1 -0
- package/package.json +143 -0
|
@@ -0,0 +1,370 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* API Types - Type definitions for the Hono-based API layer
|
|
3
|
+
*
|
|
4
|
+
* Includes:
|
|
5
|
+
* - Request/response types
|
|
6
|
+
* - Context types for middleware
|
|
7
|
+
* - Error types
|
|
8
|
+
* - Configuration types
|
|
9
|
+
*/
|
|
10
|
+
import type { Context, MiddlewareHandler } from 'hono';
|
|
11
|
+
/**
|
|
12
|
+
* Cloudflare Worker environment bindings
|
|
13
|
+
*/
|
|
14
|
+
export interface Env {
|
|
15
|
+
/** Durable Object namespace for Digital Objects */
|
|
16
|
+
DO: DurableObjectNamespace;
|
|
17
|
+
/** R2 bucket for cold storage */
|
|
18
|
+
R2: R2Bucket;
|
|
19
|
+
/** KV namespace for caching */
|
|
20
|
+
KV: KVNamespace;
|
|
21
|
+
/** Cloudflare AI binding */
|
|
22
|
+
AI: Ai;
|
|
23
|
+
/** Environment (development, staging, production) */
|
|
24
|
+
ENVIRONMENT: string;
|
|
25
|
+
/** Optional: Auth secret for JWT validation */
|
|
26
|
+
AUTH_SECRET?: string;
|
|
27
|
+
/** Optional: Rate limit requests per minute */
|
|
28
|
+
RATE_LIMIT_RPM?: string;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Extended Hono context with DO-specific variables
|
|
32
|
+
*/
|
|
33
|
+
export interface DOContext {
|
|
34
|
+
/** Authenticated user info */
|
|
35
|
+
user?: AuthUser;
|
|
36
|
+
/** Request ID for tracing */
|
|
37
|
+
requestId: string;
|
|
38
|
+
/** Start time for latency tracking */
|
|
39
|
+
startTime: number;
|
|
40
|
+
/** Target DO hostname */
|
|
41
|
+
hostname: string;
|
|
42
|
+
/** Colo (datacenter) code */
|
|
43
|
+
colo?: string;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Authenticated user
|
|
47
|
+
*/
|
|
48
|
+
export interface AuthUser {
|
|
49
|
+
/** User ID */
|
|
50
|
+
id: string;
|
|
51
|
+
/** Email address */
|
|
52
|
+
email?: string;
|
|
53
|
+
/** Organization ID */
|
|
54
|
+
orgId?: string;
|
|
55
|
+
/** Roles */
|
|
56
|
+
roles: string[];
|
|
57
|
+
/** Permissions */
|
|
58
|
+
permissions: string[];
|
|
59
|
+
/** Token expiration time */
|
|
60
|
+
exp?: number;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Authentication result
|
|
64
|
+
*/
|
|
65
|
+
export interface AuthResult {
|
|
66
|
+
/** Whether authentication succeeded */
|
|
67
|
+
success: boolean;
|
|
68
|
+
/** Authenticated user (if success) */
|
|
69
|
+
user?: AuthUser;
|
|
70
|
+
/** Error message (if failed) */
|
|
71
|
+
error?: string;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Authentication options
|
|
75
|
+
*/
|
|
76
|
+
export interface AuthOptions {
|
|
77
|
+
/** JWT secret for validation */
|
|
78
|
+
secret?: string;
|
|
79
|
+
/** Whether to require auth (vs optional) */
|
|
80
|
+
required?: boolean;
|
|
81
|
+
/** Required roles */
|
|
82
|
+
roles?: string[];
|
|
83
|
+
/** Required permissions */
|
|
84
|
+
permissions?: string[];
|
|
85
|
+
/** Custom token extractor */
|
|
86
|
+
extractToken?: (c: Context) => string | null;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Standard API response wrapper
|
|
90
|
+
* Every response includes clickable links for API discovery
|
|
91
|
+
*/
|
|
92
|
+
export interface APIResponse<T = unknown> {
|
|
93
|
+
/** API identifier (usually the hostname) */
|
|
94
|
+
api: string;
|
|
95
|
+
/** Response data */
|
|
96
|
+
data: T;
|
|
97
|
+
/** Clickable links to related endpoints */
|
|
98
|
+
links: Record<string, string>;
|
|
99
|
+
/** Authenticated user (if any) */
|
|
100
|
+
user?: string;
|
|
101
|
+
/** Cloudflare colo code */
|
|
102
|
+
colo?: string;
|
|
103
|
+
/** Response timestamp */
|
|
104
|
+
timestamp: number;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* API error response
|
|
108
|
+
*/
|
|
109
|
+
export interface APIErrorResponse {
|
|
110
|
+
/** API identifier */
|
|
111
|
+
api: string;
|
|
112
|
+
/** Error details */
|
|
113
|
+
error: {
|
|
114
|
+
/** Error code */
|
|
115
|
+
code: string;
|
|
116
|
+
/** Human-readable message */
|
|
117
|
+
message: string;
|
|
118
|
+
/** Additional error details */
|
|
119
|
+
details?: unknown;
|
|
120
|
+
};
|
|
121
|
+
/** Clickable links */
|
|
122
|
+
links: Record<string, string>;
|
|
123
|
+
/** Response timestamp */
|
|
124
|
+
timestamp: number;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Pagination info
|
|
128
|
+
*/
|
|
129
|
+
export interface PaginationInfo {
|
|
130
|
+
/** Total items */
|
|
131
|
+
total: number;
|
|
132
|
+
/** Current page */
|
|
133
|
+
page: number;
|
|
134
|
+
/** Items per page */
|
|
135
|
+
pageSize: number;
|
|
136
|
+
/** Total pages */
|
|
137
|
+
totalPages: number;
|
|
138
|
+
/** Has more pages */
|
|
139
|
+
hasMore: boolean;
|
|
140
|
+
/** Next cursor (for cursor-based pagination) */
|
|
141
|
+
nextCursor?: string;
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Paginated response
|
|
145
|
+
*/
|
|
146
|
+
export interface PaginatedResponse<T> extends APIResponse<T[]> {
|
|
147
|
+
/** Pagination info */
|
|
148
|
+
pagination: PaginationInfo;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Rate limit configuration
|
|
152
|
+
*/
|
|
153
|
+
export interface RateLimitConfig {
|
|
154
|
+
/** Window size in seconds */
|
|
155
|
+
windowSecs: number;
|
|
156
|
+
/** Max requests per window */
|
|
157
|
+
maxRequests: number;
|
|
158
|
+
/** Key generator (default: IP-based) */
|
|
159
|
+
keyGenerator?: (c: Context) => string;
|
|
160
|
+
/** Skip rate limiting for these paths */
|
|
161
|
+
skipPaths?: string[];
|
|
162
|
+
/** Custom rate limit by path */
|
|
163
|
+
pathLimits?: Record<string, number>;
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Rate limit info (returned in headers)
|
|
167
|
+
*/
|
|
168
|
+
export interface RateLimitInfo {
|
|
169
|
+
/** Max requests allowed */
|
|
170
|
+
limit: number;
|
|
171
|
+
/** Remaining requests */
|
|
172
|
+
remaining: number;
|
|
173
|
+
/** Window reset time (Unix timestamp) */
|
|
174
|
+
reset: number;
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* CORS configuration
|
|
178
|
+
*/
|
|
179
|
+
export interface CORSConfig {
|
|
180
|
+
/** Allowed origins (default: '*') */
|
|
181
|
+
origin?: string | string[] | ((origin: string) => boolean);
|
|
182
|
+
/** Allowed methods */
|
|
183
|
+
methods?: string[];
|
|
184
|
+
/** Allowed headers */
|
|
185
|
+
allowedHeaders?: string[];
|
|
186
|
+
/** Exposed headers */
|
|
187
|
+
exposedHeaders?: string[];
|
|
188
|
+
/** Allow credentials */
|
|
189
|
+
credentials?: boolean;
|
|
190
|
+
/** Max age for preflight cache */
|
|
191
|
+
maxAge?: number;
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Route definition
|
|
195
|
+
*/
|
|
196
|
+
export interface RouteDefinition {
|
|
197
|
+
/** HTTP method */
|
|
198
|
+
method: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'OPTIONS';
|
|
199
|
+
/** Path pattern */
|
|
200
|
+
path: string;
|
|
201
|
+
/** Handler function */
|
|
202
|
+
handler: (c: Context<{
|
|
203
|
+
Bindings: Env;
|
|
204
|
+
Variables: DOContext;
|
|
205
|
+
}>) => Promise<Response> | Response;
|
|
206
|
+
/** Middleware to apply */
|
|
207
|
+
middleware?: MiddlewareHandler[];
|
|
208
|
+
/** Route description (for docs) */
|
|
209
|
+
description?: string;
|
|
210
|
+
/** Whether auth is required */
|
|
211
|
+
auth?: boolean;
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Route group
|
|
215
|
+
*/
|
|
216
|
+
export interface RouteGroup {
|
|
217
|
+
/** Base path */
|
|
218
|
+
basePath: string;
|
|
219
|
+
/** Routes in this group */
|
|
220
|
+
routes: RouteDefinition[];
|
|
221
|
+
/** Middleware to apply to all routes */
|
|
222
|
+
middleware?: MiddlewareHandler[];
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* DO operation request
|
|
226
|
+
*/
|
|
227
|
+
export interface DOOperationRequest {
|
|
228
|
+
/** Operation type */
|
|
229
|
+
operation: 'create' | 'read' | 'update' | 'delete' | 'list' | 'execute';
|
|
230
|
+
/** Collection name */
|
|
231
|
+
collection: string;
|
|
232
|
+
/** Item ID (for single-item operations) */
|
|
233
|
+
id?: string;
|
|
234
|
+
/** Data payload */
|
|
235
|
+
data?: unknown;
|
|
236
|
+
/** Query options */
|
|
237
|
+
options?: {
|
|
238
|
+
limit?: number;
|
|
239
|
+
offset?: number;
|
|
240
|
+
cursor?: string;
|
|
241
|
+
orderBy?: string;
|
|
242
|
+
orderDir?: 'asc' | 'desc';
|
|
243
|
+
filter?: Record<string, unknown>;
|
|
244
|
+
};
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* DO operation result
|
|
248
|
+
*/
|
|
249
|
+
export interface DOOperationResult<T = unknown> {
|
|
250
|
+
/** Whether operation succeeded */
|
|
251
|
+
success: boolean;
|
|
252
|
+
/** Result data */
|
|
253
|
+
data?: T;
|
|
254
|
+
/** Error (if failed) */
|
|
255
|
+
error?: {
|
|
256
|
+
code: string;
|
|
257
|
+
message: string;
|
|
258
|
+
};
|
|
259
|
+
/** Affected count (for mutations) */
|
|
260
|
+
affected?: number;
|
|
261
|
+
/** Pagination info (for list operations) */
|
|
262
|
+
pagination?: PaginationInfo;
|
|
263
|
+
}
|
|
264
|
+
/**
|
|
265
|
+
* AI generation request
|
|
266
|
+
*/
|
|
267
|
+
export interface AIGenerateRequest {
|
|
268
|
+
/** Prompt text */
|
|
269
|
+
prompt: string;
|
|
270
|
+
/** Model selector (characteristic-based) */
|
|
271
|
+
model?: 'best' | 'fast' | 'cost' | 'reasoning' | 'code' | 'vision' | 'long' | string;
|
|
272
|
+
/** System prompt */
|
|
273
|
+
system?: string;
|
|
274
|
+
/** Temperature (0-2) */
|
|
275
|
+
temperature?: number;
|
|
276
|
+
/** Max tokens */
|
|
277
|
+
maxTokens?: number;
|
|
278
|
+
/** JSON mode */
|
|
279
|
+
jsonMode?: boolean;
|
|
280
|
+
/** Stream response */
|
|
281
|
+
stream?: boolean;
|
|
282
|
+
}
|
|
283
|
+
/**
|
|
284
|
+
* AI chat request
|
|
285
|
+
*/
|
|
286
|
+
export interface AIChatRequest {
|
|
287
|
+
/** Chat messages */
|
|
288
|
+
messages: Array<{
|
|
289
|
+
role: 'system' | 'user' | 'assistant';
|
|
290
|
+
content: string;
|
|
291
|
+
}>;
|
|
292
|
+
/** Model selector */
|
|
293
|
+
model?: string;
|
|
294
|
+
/** Temperature */
|
|
295
|
+
temperature?: number;
|
|
296
|
+
/** Max tokens */
|
|
297
|
+
maxTokens?: number;
|
|
298
|
+
/** Tools available */
|
|
299
|
+
tools?: Array<{
|
|
300
|
+
name: string;
|
|
301
|
+
description: string;
|
|
302
|
+
parameters: Record<string, unknown>;
|
|
303
|
+
}>;
|
|
304
|
+
/** Stream response */
|
|
305
|
+
stream?: boolean;
|
|
306
|
+
}
|
|
307
|
+
/**
|
|
308
|
+
* AI embedding request
|
|
309
|
+
*/
|
|
310
|
+
export interface AIEmbedRequest {
|
|
311
|
+
/** Text to embed */
|
|
312
|
+
text: string | string[];
|
|
313
|
+
/** Model (optional) */
|
|
314
|
+
model?: string;
|
|
315
|
+
/** Dimensions (for models that support it) */
|
|
316
|
+
dimensions?: number;
|
|
317
|
+
}
|
|
318
|
+
/**
|
|
319
|
+
* Health check response
|
|
320
|
+
*/
|
|
321
|
+
export interface HealthCheckResponse {
|
|
322
|
+
/** Service status */
|
|
323
|
+
status: 'ok' | 'degraded' | 'down';
|
|
324
|
+
/** Current timestamp */
|
|
325
|
+
timestamp: number;
|
|
326
|
+
/** Cloudflare colo */
|
|
327
|
+
colo?: string;
|
|
328
|
+
/** Service version */
|
|
329
|
+
version: string;
|
|
330
|
+
/** Component health */
|
|
331
|
+
components?: Record<string, {
|
|
332
|
+
status: 'ok' | 'degraded' | 'down';
|
|
333
|
+
latencyMs?: number;
|
|
334
|
+
message?: string;
|
|
335
|
+
}>;
|
|
336
|
+
}
|
|
337
|
+
/**
|
|
338
|
+
* Middleware configuration
|
|
339
|
+
*/
|
|
340
|
+
export interface MiddlewareConfig {
|
|
341
|
+
/** Whether middleware is enabled */
|
|
342
|
+
enabled: boolean;
|
|
343
|
+
/** Paths to skip */
|
|
344
|
+
skip?: string[];
|
|
345
|
+
/** Additional options */
|
|
346
|
+
options?: Record<string, unknown>;
|
|
347
|
+
}
|
|
348
|
+
/**
|
|
349
|
+
* Logging middleware options
|
|
350
|
+
*/
|
|
351
|
+
export interface LoggingOptions {
|
|
352
|
+
/** Log level */
|
|
353
|
+
level?: 'debug' | 'info' | 'warn' | 'error';
|
|
354
|
+
/** Include request body */
|
|
355
|
+
includeBody?: boolean;
|
|
356
|
+
/** Include response body */
|
|
357
|
+
includeResponse?: boolean;
|
|
358
|
+
/** Paths to skip */
|
|
359
|
+
skipPaths?: string[];
|
|
360
|
+
}
|
|
361
|
+
/**
|
|
362
|
+
* Timing middleware options
|
|
363
|
+
*/
|
|
364
|
+
export interface TimingOptions {
|
|
365
|
+
/** Header name for timing info */
|
|
366
|
+
headerName?: string;
|
|
367
|
+
/** Include in response body */
|
|
368
|
+
includeInBody?: boolean;
|
|
369
|
+
}
|
|
370
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../api/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../api/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG"}
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CDC Event Generation
|
|
3
|
+
*
|
|
4
|
+
* Generates Change Data Capture events for all mutations within a Digital Object.
|
|
5
|
+
* Events capture INSERT, UPDATE, DELETE operations with before/after state.
|
|
6
|
+
*
|
|
7
|
+
* @module cdc/events
|
|
8
|
+
*/
|
|
9
|
+
import type { CDCEvent, CDCOperation, CDCCursor } from '../../types/storage';
|
|
10
|
+
/**
|
|
11
|
+
* Configuration options for the CDC event emitter
|
|
12
|
+
*/
|
|
13
|
+
export interface CDCEmitterOptions {
|
|
14
|
+
/**
|
|
15
|
+
* Whether to include full document in before/after fields
|
|
16
|
+
* @default true
|
|
17
|
+
*/
|
|
18
|
+
includeDocuments?: boolean;
|
|
19
|
+
/**
|
|
20
|
+
* Whether to compute and include changed fields for UPDATE operations
|
|
21
|
+
* @default true
|
|
22
|
+
*/
|
|
23
|
+
includeChangedFields?: boolean;
|
|
24
|
+
/**
|
|
25
|
+
* Source identifier for this DO (usually the $id)
|
|
26
|
+
*/
|
|
27
|
+
source?: string;
|
|
28
|
+
/**
|
|
29
|
+
* Collection name for events
|
|
30
|
+
*/
|
|
31
|
+
collection?: string;
|
|
32
|
+
/**
|
|
33
|
+
* Starting sequence number
|
|
34
|
+
* @default 0
|
|
35
|
+
*/
|
|
36
|
+
startSequence?: number;
|
|
37
|
+
/**
|
|
38
|
+
* Maximum events to buffer before forcing a flush
|
|
39
|
+
* @default 100
|
|
40
|
+
*/
|
|
41
|
+
bufferSize?: number;
|
|
42
|
+
/**
|
|
43
|
+
* Maximum time in ms to buffer events before flushing
|
|
44
|
+
* @default 1000
|
|
45
|
+
*/
|
|
46
|
+
bufferTimeout?: number;
|
|
47
|
+
/**
|
|
48
|
+
* Maximum events per batch
|
|
49
|
+
* @default 100
|
|
50
|
+
*/
|
|
51
|
+
batchSize?: number;
|
|
52
|
+
/**
|
|
53
|
+
* Maximum time in ms to wait before sending batch
|
|
54
|
+
* @default 1000
|
|
55
|
+
*/
|
|
56
|
+
batchTimeout?: number;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Callback invoked when events are ready to be processed
|
|
60
|
+
* Return value is ignored - can return void, Promise, or any other value
|
|
61
|
+
*/
|
|
62
|
+
export type CDCEventHandler = (events: CDCEvent[]) => unknown;
|
|
63
|
+
/**
|
|
64
|
+
* CDCEventEmitter - Generates CDC events for mutations
|
|
65
|
+
*
|
|
66
|
+
* @example
|
|
67
|
+
* ```typescript
|
|
68
|
+
* const emitter = new CDCEventEmitter({
|
|
69
|
+
* source: 'https://my.do',
|
|
70
|
+
* includeDocuments: true,
|
|
71
|
+
* })
|
|
72
|
+
*
|
|
73
|
+
* // Emit an INSERT event
|
|
74
|
+
* const event = await emitter.emit('INSERT', 'users', 'user-123', {
|
|
75
|
+
* after: { name: 'Alice', email: 'alice@example.com' },
|
|
76
|
+
* })
|
|
77
|
+
*
|
|
78
|
+
* // Emit an UPDATE event
|
|
79
|
+
* const updateEvent = await emitter.emit('UPDATE', 'users', 'user-123', {
|
|
80
|
+
* before: { name: 'Alice', email: 'alice@example.com' },
|
|
81
|
+
* after: { name: 'Alice Smith', email: 'alice@example.com' },
|
|
82
|
+
* })
|
|
83
|
+
*
|
|
84
|
+
* // Emit a DELETE event
|
|
85
|
+
* const deleteEvent = await emitter.emit('DELETE', 'users', 'user-123', {
|
|
86
|
+
* before: { name: 'Alice Smith', email: 'alice@example.com' },
|
|
87
|
+
* })
|
|
88
|
+
* ```
|
|
89
|
+
*/
|
|
90
|
+
export declare class CDCEventEmitter {
|
|
91
|
+
private options;
|
|
92
|
+
private sequence;
|
|
93
|
+
private lastTimestamp;
|
|
94
|
+
private buffer;
|
|
95
|
+
private batchHandlers;
|
|
96
|
+
private batchTimer;
|
|
97
|
+
/**
|
|
98
|
+
* Creates a new CDC event emitter
|
|
99
|
+
*
|
|
100
|
+
* @param options - Configuration options
|
|
101
|
+
*/
|
|
102
|
+
constructor(options?: CDCEmitterOptions);
|
|
103
|
+
/**
|
|
104
|
+
* Emits a CDC event for a mutation
|
|
105
|
+
*
|
|
106
|
+
* @param operation - The type of mutation (INSERT, UPDATE, DELETE)
|
|
107
|
+
* @param data - The before/after state data with optional correlation ID
|
|
108
|
+
* @returns The generated CDC event
|
|
109
|
+
*
|
|
110
|
+
* @example
|
|
111
|
+
* ```typescript
|
|
112
|
+
* const event = await emitter.emit('UPDATE', {
|
|
113
|
+
* before: { id: 'prod-456', price: 99 },
|
|
114
|
+
* after: { id: 'prod-456', price: 79 },
|
|
115
|
+
* correlationId: 'req-789',
|
|
116
|
+
* })
|
|
117
|
+
* ```
|
|
118
|
+
*/
|
|
119
|
+
emit<T extends {
|
|
120
|
+
id: string;
|
|
121
|
+
}>(operation: CDCOperation, data: {
|
|
122
|
+
before?: T;
|
|
123
|
+
after?: T;
|
|
124
|
+
correlationId?: string;
|
|
125
|
+
}): Promise<CDCEvent<T>>;
|
|
126
|
+
/**
|
|
127
|
+
* Registers a handler for batched events
|
|
128
|
+
*
|
|
129
|
+
* @param handler - Callback invoked with batches of events
|
|
130
|
+
* @returns Unsubscribe function
|
|
131
|
+
*
|
|
132
|
+
* @example
|
|
133
|
+
* ```typescript
|
|
134
|
+
* const unsubscribe = emitter.onBatch(async (events) => {
|
|
135
|
+
* await streamer.propagate(events)
|
|
136
|
+
* })
|
|
137
|
+
* ```
|
|
138
|
+
*/
|
|
139
|
+
onBatch(handler: CDCEventHandler): () => void;
|
|
140
|
+
private flushBatch;
|
|
141
|
+
/**
|
|
142
|
+
* Forces immediate flush of buffered events
|
|
143
|
+
*
|
|
144
|
+
* @returns The flushed events
|
|
145
|
+
*/
|
|
146
|
+
flush(): Promise<CDCEvent[]>;
|
|
147
|
+
/**
|
|
148
|
+
* Gets the current sequence number
|
|
149
|
+
*
|
|
150
|
+
* @returns The current sequence number
|
|
151
|
+
*/
|
|
152
|
+
getSequence(): number;
|
|
153
|
+
/**
|
|
154
|
+
* Gets the current cursor position
|
|
155
|
+
*
|
|
156
|
+
* @returns The current cursor
|
|
157
|
+
*/
|
|
158
|
+
getCursor(): CDCCursor;
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Computes the list of fields that changed between two objects
|
|
162
|
+
*
|
|
163
|
+
* @param before - Object state before the change
|
|
164
|
+
* @param after - Object state after the change
|
|
165
|
+
* @returns Array of field names that changed
|
|
166
|
+
*
|
|
167
|
+
* @example
|
|
168
|
+
* ```typescript
|
|
169
|
+
* const changed = computeChangedFields(
|
|
170
|
+
* { name: 'Alice', age: 30 },
|
|
171
|
+
* { name: 'Alice', age: 31 }
|
|
172
|
+
* )
|
|
173
|
+
* // Returns: ['age']
|
|
174
|
+
* ```
|
|
175
|
+
*/
|
|
176
|
+
export declare function computeChangedFields(before: Record<string, unknown>, after: Record<string, unknown>, prefix?: string): string[];
|
|
177
|
+
/**
|
|
178
|
+
* Generates a unique event ID
|
|
179
|
+
*
|
|
180
|
+
* @returns A unique event ID (UUID v4)
|
|
181
|
+
*/
|
|
182
|
+
export declare function generateEventId(): string;
|
|
183
|
+
/**
|
|
184
|
+
* Creates a CDC event from raw data
|
|
185
|
+
*
|
|
186
|
+
* @param params - Event parameters
|
|
187
|
+
* @returns A fully populated CDC event
|
|
188
|
+
*/
|
|
189
|
+
export declare function createEvent<T>(params: {
|
|
190
|
+
operation: CDCOperation;
|
|
191
|
+
collection: string;
|
|
192
|
+
documentId: string;
|
|
193
|
+
sequence: number;
|
|
194
|
+
before?: T;
|
|
195
|
+
after?: T;
|
|
196
|
+
source?: string;
|
|
197
|
+
correlationId?: string;
|
|
198
|
+
includeChangedFields?: boolean;
|
|
199
|
+
changedFields?: string[];
|
|
200
|
+
}): CDCEvent<T>;
|
|
201
|
+
//# sourceMappingURL=events.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../db/cdc/events.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAwB,MAAM,qBAAqB,CAAA;AAElG;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAE1B;;;OAGG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAE9B;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IAEf;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;IAEnB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAA;IAEtB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;IAEnB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAA;IAEtB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAElB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,OAAO,CAAA;AAE7D;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,OAAO,CAAmB;IAClC,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,aAAa,CAAY;IACjC,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,aAAa,CAAwB;IAC7C,OAAO,CAAC,UAAU,CAA6C;IAE/D;;;;OAIG;gBACS,OAAO,CAAC,EAAE,iBAAiB;IAYvC;;;;;;;;;;;;;;;OAeG;IACG,IAAI,CAAC,CAAC,SAAS;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,EACjC,SAAS,EAAE,YAAY,EACvB,IAAI,EAAE;QAAE,MAAM,CAAC,EAAE,CAAC,CAAC;QAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,GACtD,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAsCvB;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,IAAI;YAU/B,UAAU;IAsBxB;;;;OAIG;IACG,KAAK,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;IAMlC;;;;OAIG;IACH,WAAW,IAAI,MAAM;IAIrB;;;;OAIG;IACH,SAAS,IAAI,SAAS;CAMvB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAE,MAAW,GAAG,MAAM,EAAE,CA4CnI;AAED;;;;GAIG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE;IACrC,SAAS,EAAE,YAAY,CAAA;IACvB,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,CAAC,CAAA;IACV,KAAK,CAAC,EAAE,CAAC,CAAA;IACT,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;CACzB,GAAG,QAAQ,CAAC,CAAC,CAAC,CA+Bd"}
|