@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,242 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Storage Layer
|
|
3
|
+
*
|
|
4
|
+
* Three-tier storage architecture for Digital Objects:
|
|
5
|
+
* - Hot: DO SQLite + Vortex columnar (~4ms)
|
|
6
|
+
* - Warm: Edge Cache API (~10ms, free)
|
|
7
|
+
* - Cold: R2 + Iceberg (~69ms, $0.015/GB/mo)
|
|
8
|
+
*
|
|
9
|
+
* @module @do/core/storage
|
|
10
|
+
*/
|
|
11
|
+
import type { StorageTier, StorageTierInfo, CDCEvent, SyncState, SyncOptions, SyncResult } from '../../types/storage';
|
|
12
|
+
import { HotStorage } from './hot';
|
|
13
|
+
import { WarmStorage } from './warm';
|
|
14
|
+
import { ColdStorage } from './cold';
|
|
15
|
+
import { SnapshotManager } from './snapshots';
|
|
16
|
+
export { HotStorage } from './hot';
|
|
17
|
+
export { WarmStorage } from './warm';
|
|
18
|
+
export { ColdStorage } from './cold';
|
|
19
|
+
export { VortexEncoder, VortexDecoder } from './vortex';
|
|
20
|
+
export { SnapshotManager } from './snapshots';
|
|
21
|
+
/**
|
|
22
|
+
* Storage configuration options
|
|
23
|
+
*/
|
|
24
|
+
export interface StorageConfig {
|
|
25
|
+
/** DO SQLite storage binding */
|
|
26
|
+
sqlite?: SqlStorage;
|
|
27
|
+
/** Cloudflare Cache API */
|
|
28
|
+
cache?: CacheStorage;
|
|
29
|
+
/** R2 bucket binding */
|
|
30
|
+
r2?: R2Bucket;
|
|
31
|
+
/** CDC event emitter */
|
|
32
|
+
onCDC?: (event: CDCEvent) => void | Promise<void>;
|
|
33
|
+
/** Hot tier configuration */
|
|
34
|
+
hot?: HotStorageConfig;
|
|
35
|
+
/** Warm tier configuration */
|
|
36
|
+
warm?: WarmStorageConfig;
|
|
37
|
+
/** Cold tier configuration */
|
|
38
|
+
cold?: ColdStorageConfig;
|
|
39
|
+
/** Sync configuration */
|
|
40
|
+
sync?: SyncConfig;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Hot storage configuration
|
|
44
|
+
*/
|
|
45
|
+
export interface HotStorageConfig {
|
|
46
|
+
/** Enable hot storage (default: true) */
|
|
47
|
+
enabled?: boolean;
|
|
48
|
+
/** Maximum storage size in bytes */
|
|
49
|
+
maxSize?: number;
|
|
50
|
+
/** Row count threshold for Vortex conversion */
|
|
51
|
+
vortexThreshold?: number;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Warm storage configuration
|
|
55
|
+
*/
|
|
56
|
+
export interface WarmStorageConfig {
|
|
57
|
+
/** Enable warm storage (default: true if cache available) */
|
|
58
|
+
enabled?: boolean;
|
|
59
|
+
/** Default TTL in seconds */
|
|
60
|
+
defaultTTL?: number;
|
|
61
|
+
/** Maximum cached entries */
|
|
62
|
+
maxEntries?: number;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Cold storage configuration
|
|
66
|
+
*/
|
|
67
|
+
export interface ColdStorageConfig {
|
|
68
|
+
/** Enable cold storage (default: true if R2 available) */
|
|
69
|
+
enabled?: boolean;
|
|
70
|
+
/** R2 key prefix */
|
|
71
|
+
prefix?: string;
|
|
72
|
+
/** Partition fields */
|
|
73
|
+
partitionBy?: string[];
|
|
74
|
+
/** Compression codec */
|
|
75
|
+
compressionCodec?: 'none' | 'zstd' | 'snappy' | 'gzip';
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Sync configuration
|
|
79
|
+
*/
|
|
80
|
+
export interface SyncConfig {
|
|
81
|
+
/** Batch size for sync operations */
|
|
82
|
+
batchSize?: number;
|
|
83
|
+
/** Sync interval in milliseconds */
|
|
84
|
+
interval?: number;
|
|
85
|
+
/** Auto-sync enabled */
|
|
86
|
+
autoSync?: boolean;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Unified storage interface across all tiers
|
|
90
|
+
*/
|
|
91
|
+
export interface UnifiedStorage {
|
|
92
|
+
/** Hot tier storage */
|
|
93
|
+
readonly hot: HotStorage;
|
|
94
|
+
/** Warm tier storage (optional) */
|
|
95
|
+
readonly warm?: WarmStorage;
|
|
96
|
+
/** Cold tier storage (optional) */
|
|
97
|
+
readonly cold?: ColdStorage;
|
|
98
|
+
/** Snapshot manager */
|
|
99
|
+
readonly snapshots: SnapshotManager;
|
|
100
|
+
/**
|
|
101
|
+
* Insert a document (writes to hot, invalidates warm)
|
|
102
|
+
* @param collection - Collection name
|
|
103
|
+
* @param document - Document to insert
|
|
104
|
+
*/
|
|
105
|
+
insert<T extends {
|
|
106
|
+
id: string;
|
|
107
|
+
}>(collection: string, document: T): Promise<void>;
|
|
108
|
+
/**
|
|
109
|
+
* Query documents (checks warm cache first, falls back to hot)
|
|
110
|
+
* @param collection - Collection name
|
|
111
|
+
* @param query - Query parameters
|
|
112
|
+
*/
|
|
113
|
+
query<T>(collection: string, query?: QueryOptions): Promise<T[]>;
|
|
114
|
+
/**
|
|
115
|
+
* Update a document
|
|
116
|
+
* @param collection - Collection name
|
|
117
|
+
* @param id - Document ID
|
|
118
|
+
* @param updates - Partial document updates
|
|
119
|
+
*/
|
|
120
|
+
update<T>(collection: string, id: string, updates: Partial<T>): Promise<void>;
|
|
121
|
+
/**
|
|
122
|
+
* Delete a document
|
|
123
|
+
* @param collection - Collection name
|
|
124
|
+
* @param id - Document ID
|
|
125
|
+
*/
|
|
126
|
+
delete(collection: string, id: string): Promise<void>;
|
|
127
|
+
/**
|
|
128
|
+
* Archive data to cold storage
|
|
129
|
+
* @param collection - Collection name
|
|
130
|
+
* @param options - Archive options
|
|
131
|
+
*/
|
|
132
|
+
archive(collection: string, options?: ArchiveOptions): Promise<SyncResult>;
|
|
133
|
+
/**
|
|
134
|
+
* Get current sync state
|
|
135
|
+
*/
|
|
136
|
+
getSyncState(): Promise<SyncState>;
|
|
137
|
+
/**
|
|
138
|
+
* Sync data between tiers
|
|
139
|
+
* @param options - Sync options
|
|
140
|
+
*/
|
|
141
|
+
sync(options?: SyncOptions): Promise<SyncResult>;
|
|
142
|
+
/**
|
|
143
|
+
* Subscribe to CDC events
|
|
144
|
+
* @param callback - Event handler
|
|
145
|
+
*/
|
|
146
|
+
onCDC(callback: (event: CDCEvent) => void | Promise<void>): () => void;
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Query options for storage operations
|
|
150
|
+
*/
|
|
151
|
+
export interface QueryOptions {
|
|
152
|
+
/** Filter conditions */
|
|
153
|
+
where?: Record<string, unknown>;
|
|
154
|
+
/** Sort order */
|
|
155
|
+
orderBy?: {
|
|
156
|
+
field: string;
|
|
157
|
+
direction: 'asc' | 'desc';
|
|
158
|
+
}[];
|
|
159
|
+
/** Maximum results */
|
|
160
|
+
limit?: number;
|
|
161
|
+
/** Offset for pagination */
|
|
162
|
+
offset?: number;
|
|
163
|
+
/** Cache TTL override (warm tier) */
|
|
164
|
+
cacheTTL?: number;
|
|
165
|
+
/** Skip cache lookup */
|
|
166
|
+
skipCache?: boolean;
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Archive options for cold storage
|
|
170
|
+
*/
|
|
171
|
+
export interface ArchiveOptions {
|
|
172
|
+
/** Archive records older than this timestamp */
|
|
173
|
+
olderThan?: number;
|
|
174
|
+
/** Delete archived records from hot */
|
|
175
|
+
deleteAfterArchive?: boolean;
|
|
176
|
+
/** Partition configuration */
|
|
177
|
+
partition?: Record<string, string | number>;
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Storage event types
|
|
181
|
+
*/
|
|
182
|
+
export type StorageEventType = 'insert' | 'update' | 'delete' | 'sync' | 'archive';
|
|
183
|
+
/**
|
|
184
|
+
* Storage event
|
|
185
|
+
*/
|
|
186
|
+
export interface StorageEvent {
|
|
187
|
+
type: StorageEventType;
|
|
188
|
+
tier: StorageTier;
|
|
189
|
+
collection: string;
|
|
190
|
+
documentId?: string;
|
|
191
|
+
timestamp: number;
|
|
192
|
+
metadata?: Record<string, unknown>;
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Create a unified storage instance
|
|
196
|
+
*
|
|
197
|
+
* @param config - Storage configuration
|
|
198
|
+
* @returns Unified storage interface
|
|
199
|
+
*
|
|
200
|
+
* @example
|
|
201
|
+
* ```typescript
|
|
202
|
+
* const storage = createStorage({
|
|
203
|
+
* sqlite: env.DO_STORAGE,
|
|
204
|
+
* cache: caches,
|
|
205
|
+
* r2: env.R2_BUCKET,
|
|
206
|
+
* })
|
|
207
|
+
*
|
|
208
|
+
* await storage.insert('users', { id: '1', name: 'Alice' })
|
|
209
|
+
* const users = await storage.query('users', { where: { name: 'Alice' } })
|
|
210
|
+
* ```
|
|
211
|
+
*/
|
|
212
|
+
export declare function createStorage(config: StorageConfig): UnifiedStorage;
|
|
213
|
+
/**
|
|
214
|
+
* Storage error class
|
|
215
|
+
*/
|
|
216
|
+
export declare class StorageError extends Error {
|
|
217
|
+
readonly tier: StorageTier;
|
|
218
|
+
readonly operation: string;
|
|
219
|
+
readonly cause?: Error | undefined;
|
|
220
|
+
constructor(message: string, tier: StorageTier, operation: string, cause?: Error | undefined);
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Check if a tier is available
|
|
224
|
+
*
|
|
225
|
+
* @param tier - Storage tier to check
|
|
226
|
+
* @param config - Storage configuration
|
|
227
|
+
* @returns Whether the tier is available
|
|
228
|
+
*/
|
|
229
|
+
export declare function isTierAvailable(tier: StorageTier, config: StorageConfig): boolean;
|
|
230
|
+
/**
|
|
231
|
+
* Get tier info
|
|
232
|
+
*
|
|
233
|
+
* @param tier - Storage tier
|
|
234
|
+
* @returns Tier information
|
|
235
|
+
*/
|
|
236
|
+
export declare function getTierInfo(tier: StorageTier): StorageTierInfo;
|
|
237
|
+
declare global {
|
|
238
|
+
interface SqlStorage {
|
|
239
|
+
exec(query: string, params?: unknown[]): Promise<unknown>;
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../db/storage/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Storage Layer
|
|
3
|
+
*
|
|
4
|
+
* Three-tier storage architecture for Digital Objects:
|
|
5
|
+
* - Hot: DO SQLite + Vortex columnar (~4ms)
|
|
6
|
+
* - Warm: Edge Cache API (~10ms, free)
|
|
7
|
+
* - Cold: R2 + Iceberg (~69ms, $0.015/GB/mo)
|
|
8
|
+
*
|
|
9
|
+
* @module @do/core/storage
|
|
10
|
+
*/
|
|
11
|
+
// Re-export tier implementations
|
|
12
|
+
export { HotStorage } from './hot';
|
|
13
|
+
export { WarmStorage } from './warm';
|
|
14
|
+
export { ColdStorage } from './cold';
|
|
15
|
+
export { VortexEncoder, VortexDecoder } from './vortex';
|
|
16
|
+
export { SnapshotManager } from './snapshots';
|
|
17
|
+
/**
|
|
18
|
+
* Create a unified storage instance
|
|
19
|
+
*
|
|
20
|
+
* @param config - Storage configuration
|
|
21
|
+
* @returns Unified storage interface
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* ```typescript
|
|
25
|
+
* const storage = createStorage({
|
|
26
|
+
* sqlite: env.DO_STORAGE,
|
|
27
|
+
* cache: caches,
|
|
28
|
+
* r2: env.R2_BUCKET,
|
|
29
|
+
* })
|
|
30
|
+
*
|
|
31
|
+
* await storage.insert('users', { id: '1', name: 'Alice' })
|
|
32
|
+
* const users = await storage.query('users', { where: { name: 'Alice' } })
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
export function createStorage(config) {
|
|
36
|
+
// TODO: Implement unified storage factory
|
|
37
|
+
throw new Error('Not implemented');
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Storage error class
|
|
41
|
+
*/
|
|
42
|
+
export class StorageError extends Error {
|
|
43
|
+
tier;
|
|
44
|
+
operation;
|
|
45
|
+
cause;
|
|
46
|
+
constructor(message, tier, operation, cause) {
|
|
47
|
+
super(message);
|
|
48
|
+
this.tier = tier;
|
|
49
|
+
this.operation = operation;
|
|
50
|
+
this.cause = cause;
|
|
51
|
+
this.name = 'StorageError';
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Check if a tier is available
|
|
56
|
+
*
|
|
57
|
+
* @param tier - Storage tier to check
|
|
58
|
+
* @param config - Storage configuration
|
|
59
|
+
* @returns Whether the tier is available
|
|
60
|
+
*/
|
|
61
|
+
export function isTierAvailable(tier, config) {
|
|
62
|
+
switch (tier) {
|
|
63
|
+
case 'Hot':
|
|
64
|
+
return config.sqlite !== undefined;
|
|
65
|
+
case 'Warm':
|
|
66
|
+
return config.cache !== undefined;
|
|
67
|
+
case 'Cold':
|
|
68
|
+
return config.r2 !== undefined;
|
|
69
|
+
default:
|
|
70
|
+
return false;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Get tier info
|
|
75
|
+
*
|
|
76
|
+
* @param tier - Storage tier
|
|
77
|
+
* @returns Tier information
|
|
78
|
+
*/
|
|
79
|
+
export function getTierInfo(tier) {
|
|
80
|
+
// Import from types to avoid duplication
|
|
81
|
+
const tiers = {
|
|
82
|
+
Hot: {
|
|
83
|
+
tier: 'Hot',
|
|
84
|
+
name: 'Hot Storage',
|
|
85
|
+
description: 'DO SQLite + Vortex columnar',
|
|
86
|
+
latency: '~4ms',
|
|
87
|
+
cost: 'Included in DO pricing',
|
|
88
|
+
technology: 'SQLite + Vortex',
|
|
89
|
+
},
|
|
90
|
+
Warm: {
|
|
91
|
+
tier: 'Warm',
|
|
92
|
+
name: 'Warm Storage',
|
|
93
|
+
description: 'Edge Cache API',
|
|
94
|
+
latency: '~10ms',
|
|
95
|
+
cost: 'Free',
|
|
96
|
+
technology: 'Cloudflare Cache API',
|
|
97
|
+
},
|
|
98
|
+
Cold: {
|
|
99
|
+
tier: 'Cold',
|
|
100
|
+
name: 'Cold Storage',
|
|
101
|
+
description: 'R2 + Iceberg/Parquet',
|
|
102
|
+
latency: '~69ms',
|
|
103
|
+
cost: '$0.015/GB/month',
|
|
104
|
+
technology: 'R2 + Apache Iceberg',
|
|
105
|
+
},
|
|
106
|
+
};
|
|
107
|
+
return tiers[tier];
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../db/storage/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAmBH,iCAAiC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAA;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAA;AACpC,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AA4L7C;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,aAAa,CAAC,MAAqB;IACjD,0CAA0C;IAC1C,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAA;AACpC,CAAC;AAED;;GAEG;AACH,MAAM,OAAO,YAAa,SAAQ,KAAK;IAGnB;IACA;IACA;IAJlB,YACE,OAAe,EACC,IAAiB,EACjB,SAAiB,EACjB,KAAa;QAE7B,KAAK,CAAC,OAAO,CAAC,CAAA;QAJE,SAAI,GAAJ,IAAI,CAAa;QACjB,cAAS,GAAT,SAAS,CAAQ;QACjB,UAAK,GAAL,KAAK,CAAQ;QAG7B,IAAI,CAAC,IAAI,GAAG,cAAc,CAAA;IAC5B,CAAC;CACF;AAED;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAAC,IAAiB,EAAE,MAAqB;IACtE,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,KAAK;YACR,OAAO,MAAM,CAAC,MAAM,KAAK,SAAS,CAAA;QACpC,KAAK,MAAM;YACT,OAAO,MAAM,CAAC,KAAK,KAAK,SAAS,CAAA;QACnC,KAAK,MAAM;YACT,OAAO,MAAM,CAAC,EAAE,KAAK,SAAS,CAAA;QAChC;YACE,OAAO,KAAK,CAAA;IAChB,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,IAAiB;IAC3C,yCAAyC;IACzC,MAAM,KAAK,GAAyC;QAClD,GAAG,EAAE;YACH,IAAI,EAAE,KAAK;YACX,IAAI,EAAE,aAAa;YACnB,WAAW,EAAE,6BAA6B;YAC1C,OAAO,EAAE,MAAM;YACf,IAAI,EAAE,wBAAwB;YAC9B,UAAU,EAAE,iBAAiB;SAC9B;QACD,IAAI,EAAE;YACJ,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,cAAc;YACpB,WAAW,EAAE,gBAAgB;YAC7B,OAAO,EAAE,OAAO;YAChB,IAAI,EAAE,MAAM;YACZ,UAAU,EAAE,sBAAsB;SACnC;QACD,IAAI,EAAE;YACJ,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,cAAc;YACpB,WAAW,EAAE,sBAAsB;YACnC,OAAO,EAAE,OAAO;YAChB,IAAI,EAAE,iBAAiB;YACvB,UAAU,EAAE,qBAAqB;SAClC;KACF,CAAA;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,CAAA;AACpB,CAAC"}
|
|
@@ -0,0 +1,342 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Snapshot Management
|
|
3
|
+
*
|
|
4
|
+
* Manages DO state snapshots for persistence, recovery, and archival.
|
|
5
|
+
* Supports full and incremental snapshots with tier promotion.
|
|
6
|
+
*
|
|
7
|
+
* Features:
|
|
8
|
+
* - Full and incremental snapshot types
|
|
9
|
+
* - Vortex encoding for efficient storage
|
|
10
|
+
* - Automatic tier promotion (hot -> cold)
|
|
11
|
+
* - Retention policy enforcement
|
|
12
|
+
*
|
|
13
|
+
* @module @do/core/storage/snapshots
|
|
14
|
+
*/
|
|
15
|
+
import type { Snapshot, CDCEvent } from '../../types/storage';
|
|
16
|
+
import { HotStorage } from './hot';
|
|
17
|
+
import { ColdStorage } from './cold';
|
|
18
|
+
/**
|
|
19
|
+
* Snapshot manager configuration
|
|
20
|
+
*/
|
|
21
|
+
export interface SnapshotManagerConfig {
|
|
22
|
+
/** Hot storage instance */
|
|
23
|
+
hot?: HotStorage;
|
|
24
|
+
/** Cold storage instance */
|
|
25
|
+
cold?: ColdStorage;
|
|
26
|
+
/** Retention policy */
|
|
27
|
+
retention?: RetentionPolicy;
|
|
28
|
+
/** Automatic promotion settings */
|
|
29
|
+
autoPromote?: AutoPromoteConfig;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Retention policy configuration
|
|
33
|
+
*/
|
|
34
|
+
export interface RetentionPolicy {
|
|
35
|
+
/** Hot tier retention */
|
|
36
|
+
hot?: {
|
|
37
|
+
/** Maximum age in milliseconds */
|
|
38
|
+
maxAge?: number;
|
|
39
|
+
/** Maximum snapshot count */
|
|
40
|
+
maxCount?: number;
|
|
41
|
+
};
|
|
42
|
+
/** Cold tier retention */
|
|
43
|
+
cold?: {
|
|
44
|
+
/** Maximum age in milliseconds */
|
|
45
|
+
maxAge?: number;
|
|
46
|
+
/** Maximum snapshot count (null = unlimited) */
|
|
47
|
+
maxCount?: number | null;
|
|
48
|
+
};
|
|
49
|
+
/** Maximum incremental chain length before forcing full snapshot */
|
|
50
|
+
incrementalChainLength?: number;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Auto-promotion configuration
|
|
54
|
+
*/
|
|
55
|
+
export interface AutoPromoteConfig {
|
|
56
|
+
/** Enable automatic promotion */
|
|
57
|
+
enabled: boolean;
|
|
58
|
+
/** Promote snapshots older than this (ms) */
|
|
59
|
+
olderThan: number;
|
|
60
|
+
/** Run promotion check interval (ms) */
|
|
61
|
+
interval?: number;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Snapshot creation options
|
|
65
|
+
*/
|
|
66
|
+
export interface CreateSnapshotOptions {
|
|
67
|
+
/** DO ID */
|
|
68
|
+
doId: string;
|
|
69
|
+
/** DO type */
|
|
70
|
+
doType: string;
|
|
71
|
+
/** Table data to snapshot */
|
|
72
|
+
tables: Record<string, unknown[]>;
|
|
73
|
+
/** Parent snapshot ID (for incremental) */
|
|
74
|
+
parentId?: string;
|
|
75
|
+
/** CDC events since parent (for incremental) */
|
|
76
|
+
changes?: CDCEvent[];
|
|
77
|
+
/** Custom metadata */
|
|
78
|
+
metadata?: Record<string, string>;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Snapshot list options
|
|
82
|
+
*/
|
|
83
|
+
export interface ListSnapshotsOptions {
|
|
84
|
+
/** Filter by DO ID */
|
|
85
|
+
doId?: string;
|
|
86
|
+
/** Filter by DO type */
|
|
87
|
+
doType?: string;
|
|
88
|
+
/** Filter by snapshot type */
|
|
89
|
+
type?: 'full' | 'incremental';
|
|
90
|
+
/** Maximum results */
|
|
91
|
+
limit?: number;
|
|
92
|
+
/** Offset for pagination */
|
|
93
|
+
offset?: number;
|
|
94
|
+
/** Sort order */
|
|
95
|
+
orderBy?: 'timestamp' | 'version';
|
|
96
|
+
/** Sort direction */
|
|
97
|
+
orderDirection?: 'asc' | 'desc';
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Snapshot promotion options
|
|
101
|
+
*/
|
|
102
|
+
export interface PromoteOptions {
|
|
103
|
+
/** Promote snapshots older than this timestamp */
|
|
104
|
+
olderThan?: number;
|
|
105
|
+
/** Target tier */
|
|
106
|
+
targetTier: 'cold';
|
|
107
|
+
/** Delete from source tier after promotion */
|
|
108
|
+
deleteAfterPromote?: boolean;
|
|
109
|
+
/** Maximum snapshots to promote in one batch */
|
|
110
|
+
batchSize?: number;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Snapshot restoration options
|
|
114
|
+
*/
|
|
115
|
+
export interface RestoreOptions {
|
|
116
|
+
/** Target tables to restore (null = all) */
|
|
117
|
+
tables?: string[];
|
|
118
|
+
/** Validate checksum before restore */
|
|
119
|
+
validateChecksum?: boolean;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Snapshot manager for DO state persistence
|
|
123
|
+
*
|
|
124
|
+
* @example
|
|
125
|
+
* ```typescript
|
|
126
|
+
* const manager = new SnapshotManager({
|
|
127
|
+
* hot: hotStorage,
|
|
128
|
+
* cold: coldStorage,
|
|
129
|
+
* retention: {
|
|
130
|
+
* hot: { maxAge: days(7), maxCount: 100 },
|
|
131
|
+
* cold: { maxAge: years(7) },
|
|
132
|
+
* },
|
|
133
|
+
* })
|
|
134
|
+
*
|
|
135
|
+
* // Create full snapshot
|
|
136
|
+
* const snapshot = await manager.create('full', {
|
|
137
|
+
* doId: 'do_123',
|
|
138
|
+
* doType: 'UserStore',
|
|
139
|
+
* tables: { users: [...], orders: [...] },
|
|
140
|
+
* })
|
|
141
|
+
*
|
|
142
|
+
* // Create incremental snapshot
|
|
143
|
+
* const incremental = await manager.create('incremental', {
|
|
144
|
+
* doId: 'do_123',
|
|
145
|
+
* doType: 'UserStore',
|
|
146
|
+
* tables: { users: [...] },
|
|
147
|
+
* parentId: snapshot.id,
|
|
148
|
+
* changes: cdcEvents,
|
|
149
|
+
* })
|
|
150
|
+
*
|
|
151
|
+
* // Restore from snapshot
|
|
152
|
+
* const data = await manager.restore(snapshot.id)
|
|
153
|
+
*
|
|
154
|
+
* // Promote old snapshots to cold storage
|
|
155
|
+
* await manager.promote({ olderThan: days(30), targetTier: 'cold' })
|
|
156
|
+
*
|
|
157
|
+
* // Cleanup expired snapshots
|
|
158
|
+
* await manager.cleanup()
|
|
159
|
+
* ```
|
|
160
|
+
*/
|
|
161
|
+
export declare class SnapshotManager {
|
|
162
|
+
private config;
|
|
163
|
+
/**
|
|
164
|
+
* Create a new snapshot manager
|
|
165
|
+
*
|
|
166
|
+
* @param config - Manager configuration
|
|
167
|
+
*/
|
|
168
|
+
constructor(config?: SnapshotManagerConfig);
|
|
169
|
+
/**
|
|
170
|
+
* Create a new snapshot
|
|
171
|
+
*
|
|
172
|
+
* @param type - Snapshot type (full or incremental)
|
|
173
|
+
* @param options - Snapshot data and options
|
|
174
|
+
* @returns Created snapshot
|
|
175
|
+
*
|
|
176
|
+
* @example
|
|
177
|
+
* ```typescript
|
|
178
|
+
* // Full snapshot
|
|
179
|
+
* const full = await manager.create('full', {
|
|
180
|
+
* doId: 'do_123',
|
|
181
|
+
* doType: 'Store',
|
|
182
|
+
* tables: { items: allItems },
|
|
183
|
+
* })
|
|
184
|
+
*
|
|
185
|
+
* // Incremental snapshot (only changes)
|
|
186
|
+
* const incr = await manager.create('incremental', {
|
|
187
|
+
* doId: 'do_123',
|
|
188
|
+
* doType: 'Store',
|
|
189
|
+
* tables: { items: changedItems },
|
|
190
|
+
* parentId: full.id,
|
|
191
|
+
* changes: recentCDCEvents,
|
|
192
|
+
* })
|
|
193
|
+
* ```
|
|
194
|
+
*/
|
|
195
|
+
create(type: 'full' | 'incremental', options: CreateSnapshotOptions): Promise<Snapshot>;
|
|
196
|
+
/**
|
|
197
|
+
* Restore data from a snapshot
|
|
198
|
+
*
|
|
199
|
+
* @param snapshotId - Snapshot ID to restore
|
|
200
|
+
* @param options - Restoration options
|
|
201
|
+
* @returns Restored snapshot data
|
|
202
|
+
*
|
|
203
|
+
* @example
|
|
204
|
+
* ```typescript
|
|
205
|
+
* const data = await manager.restore(snapshotId)
|
|
206
|
+
* for (const [table, rows] of Object.entries(data.tables)) {
|
|
207
|
+
* await hot.bulkInsert(table, rows)
|
|
208
|
+
* }
|
|
209
|
+
* ```
|
|
210
|
+
*/
|
|
211
|
+
restore(snapshotId: string, options?: RestoreOptions): Promise<Snapshot>;
|
|
212
|
+
/**
|
|
213
|
+
* Get a snapshot by ID
|
|
214
|
+
*
|
|
215
|
+
* @param snapshotId - Snapshot ID
|
|
216
|
+
* @returns Snapshot or null if not found
|
|
217
|
+
*/
|
|
218
|
+
get(snapshotId: string): Promise<Snapshot | null>;
|
|
219
|
+
/**
|
|
220
|
+
* List snapshots
|
|
221
|
+
*
|
|
222
|
+
* @param options - List options
|
|
223
|
+
* @returns Array of snapshots
|
|
224
|
+
*/
|
|
225
|
+
list(options?: ListSnapshotsOptions): Promise<Snapshot[]>;
|
|
226
|
+
/**
|
|
227
|
+
* Get the latest snapshot for a DO
|
|
228
|
+
*
|
|
229
|
+
* @param doId - DO ID
|
|
230
|
+
* @param type - Optional type filter
|
|
231
|
+
* @returns Latest snapshot or null
|
|
232
|
+
*/
|
|
233
|
+
getLatest(doId: string, type?: 'full' | 'incremental'): Promise<Snapshot | null>;
|
|
234
|
+
/**
|
|
235
|
+
* Delete a snapshot
|
|
236
|
+
*
|
|
237
|
+
* @param snapshotId - Snapshot ID to delete
|
|
238
|
+
* @returns True if deleted
|
|
239
|
+
*/
|
|
240
|
+
delete(snapshotId: string): Promise<boolean>;
|
|
241
|
+
/**
|
|
242
|
+
* Promote snapshots to cold storage
|
|
243
|
+
*
|
|
244
|
+
* Moves old snapshots from hot to cold tier for cost efficiency.
|
|
245
|
+
*
|
|
246
|
+
* @param options - Promotion options
|
|
247
|
+
* @returns Promotion result
|
|
248
|
+
*
|
|
249
|
+
* @example
|
|
250
|
+
* ```typescript
|
|
251
|
+
* const result = await manager.promote({
|
|
252
|
+
* olderThan: days(30),
|
|
253
|
+
* targetTier: 'cold',
|
|
254
|
+
* deleteAfterPromote: true,
|
|
255
|
+
* })
|
|
256
|
+
* console.log(`Promoted ${result.count} snapshots`)
|
|
257
|
+
* ```
|
|
258
|
+
*/
|
|
259
|
+
promote(options: PromoteOptions): Promise<{
|
|
260
|
+
count: number;
|
|
261
|
+
bytesPromoted: number;
|
|
262
|
+
errors: Array<{
|
|
263
|
+
snapshotId: string;
|
|
264
|
+
error: string;
|
|
265
|
+
}>;
|
|
266
|
+
}>;
|
|
267
|
+
/**
|
|
268
|
+
* Cleanup expired snapshots according to retention policy
|
|
269
|
+
*
|
|
270
|
+
* @returns Cleanup result
|
|
271
|
+
*/
|
|
272
|
+
cleanup(): Promise<{
|
|
273
|
+
hotDeleted: number;
|
|
274
|
+
coldDeleted: number;
|
|
275
|
+
bytesReclaimed: number;
|
|
276
|
+
}>;
|
|
277
|
+
/**
|
|
278
|
+
* Get the incremental chain for a snapshot
|
|
279
|
+
*
|
|
280
|
+
* Returns all snapshots in the chain from the base full snapshot
|
|
281
|
+
* to the specified snapshot.
|
|
282
|
+
*
|
|
283
|
+
* @param snapshotId - Target snapshot ID
|
|
284
|
+
* @returns Chain of snapshots (oldest first)
|
|
285
|
+
*/
|
|
286
|
+
getChain(snapshotId: string): Promise<Snapshot[]>;
|
|
287
|
+
/**
|
|
288
|
+
* Consolidate incremental chain into a new full snapshot
|
|
289
|
+
*
|
|
290
|
+
* Creates a new full snapshot by applying all incrementals,
|
|
291
|
+
* reducing restore time for long chains.
|
|
292
|
+
*
|
|
293
|
+
* @param snapshotId - Latest incremental snapshot ID
|
|
294
|
+
* @returns New full snapshot
|
|
295
|
+
*/
|
|
296
|
+
consolidate(snapshotId: string): Promise<Snapshot>;
|
|
297
|
+
/**
|
|
298
|
+
* Get next version number for a DO
|
|
299
|
+
*
|
|
300
|
+
* @param doId - DO ID
|
|
301
|
+
* @returns Next version number
|
|
302
|
+
*/
|
|
303
|
+
private nextVersion;
|
|
304
|
+
/**
|
|
305
|
+
* Calculate snapshot size
|
|
306
|
+
*
|
|
307
|
+
* @param tables - Table data
|
|
308
|
+
* @returns Size in bytes
|
|
309
|
+
*/
|
|
310
|
+
private calculateSize;
|
|
311
|
+
/**
|
|
312
|
+
* Count total rows across tables
|
|
313
|
+
*
|
|
314
|
+
* @param tables - Table data
|
|
315
|
+
* @returns Total row count
|
|
316
|
+
*/
|
|
317
|
+
private countRows;
|
|
318
|
+
/**
|
|
319
|
+
* Generate checksum for snapshot data
|
|
320
|
+
*
|
|
321
|
+
* @param data - Data to checksum
|
|
322
|
+
* @returns Checksum string
|
|
323
|
+
*/
|
|
324
|
+
private generateChecksum;
|
|
325
|
+
}
|
|
326
|
+
/**
|
|
327
|
+
* Helper: Convert milliseconds to days
|
|
328
|
+
*/
|
|
329
|
+
export declare function days(n: number): number;
|
|
330
|
+
/**
|
|
331
|
+
* Helper: Convert milliseconds to years
|
|
332
|
+
*/
|
|
333
|
+
export declare function years(n: number): number;
|
|
334
|
+
/**
|
|
335
|
+
* Helper: Check if snapshot is expired
|
|
336
|
+
*/
|
|
337
|
+
export declare function isExpired(snapshot: Snapshot, maxAge: number): boolean;
|
|
338
|
+
/**
|
|
339
|
+
* Helper: Get snapshot type from metadata
|
|
340
|
+
*/
|
|
341
|
+
export declare function getSnapshotType(snapshot: Snapshot): 'Full' | 'Incremental';
|
|
342
|
+
//# sourceMappingURL=snapshots.d.ts.map
|