@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,365 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Vortex Blob Format
|
|
3
|
+
*
|
|
4
|
+
* Columnar blob encoding optimized for DO SQLite storage.
|
|
5
|
+
* Provides efficient storage and column-selective reads for analytical queries.
|
|
6
|
+
*
|
|
7
|
+
* Format structure:
|
|
8
|
+
* - Header: magic, version, column count, row count
|
|
9
|
+
* - Column data: per-column compressed data
|
|
10
|
+
* - Column index: column metadata and offsets
|
|
11
|
+
* - Footer: checksum, index offset
|
|
12
|
+
*
|
|
13
|
+
* @module @do/core/storage/vortex
|
|
14
|
+
*/
|
|
15
|
+
/**
|
|
16
|
+
* Vortex format magic bytes ("VRTX")
|
|
17
|
+
*/
|
|
18
|
+
export const VORTEX_MAGIC = new Uint8Array([0x56, 0x52, 0x54, 0x58]);
|
|
19
|
+
/**
|
|
20
|
+
* Current Vortex format version
|
|
21
|
+
*/
|
|
22
|
+
export const VORTEX_VERSION = 1;
|
|
23
|
+
/**
|
|
24
|
+
* Vortex encoder for creating columnar blobs
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* ```typescript
|
|
28
|
+
* const schema: VortexSchema = {
|
|
29
|
+
* columns: [
|
|
30
|
+
* { name: 'id', type: 'string', nullable: false },
|
|
31
|
+
* { name: 'name', type: 'string', nullable: false },
|
|
32
|
+
* { name: 'age', type: 'int32', nullable: true },
|
|
33
|
+
* ],
|
|
34
|
+
* }
|
|
35
|
+
*
|
|
36
|
+
* const encoder = new VortexEncoder(schema)
|
|
37
|
+
*
|
|
38
|
+
* // Add rows
|
|
39
|
+
* encoder.addRow({ id: '1', name: 'Alice', age: 30 })
|
|
40
|
+
* encoder.addRow({ id: '2', name: 'Bob', age: null })
|
|
41
|
+
*
|
|
42
|
+
* // Or add many at once
|
|
43
|
+
* encoder.addRows(moreUsers)
|
|
44
|
+
*
|
|
45
|
+
* // Finish and get blob
|
|
46
|
+
* const blob = encoder.finish()
|
|
47
|
+
*
|
|
48
|
+
* // Store in SQLite
|
|
49
|
+
* await db.exec('INSERT INTO vortex (data) VALUES (?)', [blob])
|
|
50
|
+
* ```
|
|
51
|
+
*/
|
|
52
|
+
export class VortexEncoder {
|
|
53
|
+
schema;
|
|
54
|
+
options;
|
|
55
|
+
rows = [];
|
|
56
|
+
finished = false;
|
|
57
|
+
/**
|
|
58
|
+
* Create a new Vortex encoder
|
|
59
|
+
*
|
|
60
|
+
* @param schema - Column schema
|
|
61
|
+
* @param options - Encoder options
|
|
62
|
+
*/
|
|
63
|
+
constructor(schema, options) {
|
|
64
|
+
this.schema = schema;
|
|
65
|
+
this.options = options;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Add a single row
|
|
69
|
+
*
|
|
70
|
+
* @param row - Row data (must match schema)
|
|
71
|
+
* @throws {Error} If encoder is already finished
|
|
72
|
+
*/
|
|
73
|
+
addRow(row) {
|
|
74
|
+
if (this.finished) {
|
|
75
|
+
throw new Error('Encoder is already finished');
|
|
76
|
+
}
|
|
77
|
+
this.rows.push(row);
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Add multiple rows
|
|
81
|
+
*
|
|
82
|
+
* @param rows - Array of row data
|
|
83
|
+
* @throws {Error} If encoder is already finished
|
|
84
|
+
*/
|
|
85
|
+
addRows(rows) {
|
|
86
|
+
if (this.finished) {
|
|
87
|
+
throw new Error('Encoder is already finished');
|
|
88
|
+
}
|
|
89
|
+
this.rows.push(...rows);
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Get current row count
|
|
93
|
+
*/
|
|
94
|
+
get rowCount() {
|
|
95
|
+
return this.rows.length;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Finish encoding and return the blob
|
|
99
|
+
*
|
|
100
|
+
* @returns Vortex blob as ArrayBuffer
|
|
101
|
+
*/
|
|
102
|
+
finish() {
|
|
103
|
+
if (this.finished) {
|
|
104
|
+
throw new Error('Encoder is already finished');
|
|
105
|
+
}
|
|
106
|
+
this.finished = true;
|
|
107
|
+
// TODO: Implement Vortex encoding
|
|
108
|
+
// 1. Transpose rows to columns
|
|
109
|
+
// 2. Choose optimal encoding per column
|
|
110
|
+
// 3. Encode and compress each column
|
|
111
|
+
// 4. Build column index
|
|
112
|
+
// 5. Assemble blob with header and footer
|
|
113
|
+
throw new Error('Not implemented');
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Reset encoder for reuse
|
|
117
|
+
*/
|
|
118
|
+
reset() {
|
|
119
|
+
this.rows = [];
|
|
120
|
+
this.finished = false;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Get estimated blob size
|
|
124
|
+
*
|
|
125
|
+
* @returns Estimated size in bytes
|
|
126
|
+
*/
|
|
127
|
+
estimateSize() {
|
|
128
|
+
// TODO: Implement size estimation
|
|
129
|
+
throw new Error('Not implemented');
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Vortex decoder for reading columnar blobs
|
|
134
|
+
*
|
|
135
|
+
* @example
|
|
136
|
+
* ```typescript
|
|
137
|
+
* // Read blob from SQLite
|
|
138
|
+
* const blob = await db.query('SELECT data FROM vortex WHERE id = ?', [id])
|
|
139
|
+
*
|
|
140
|
+
* // Create decoder
|
|
141
|
+
* const decoder = new VortexDecoder(blob)
|
|
142
|
+
*
|
|
143
|
+
* // Read metadata
|
|
144
|
+
* const meta = decoder.getMetadata()
|
|
145
|
+
* console.log(`Rows: ${meta.rowCount}, Columns: ${meta.columnCount}`)
|
|
146
|
+
*
|
|
147
|
+
* // Read specific columns only (efficient)
|
|
148
|
+
* const names = decoder.readColumn<string>('name')
|
|
149
|
+
* const ages = decoder.readColumn<number>('age')
|
|
150
|
+
*
|
|
151
|
+
* // Or read all data
|
|
152
|
+
* const rows = decoder.readAll()
|
|
153
|
+
* ```
|
|
154
|
+
*/
|
|
155
|
+
export class VortexDecoder {
|
|
156
|
+
blob;
|
|
157
|
+
options;
|
|
158
|
+
metadata = null;
|
|
159
|
+
/**
|
|
160
|
+
* Create a new Vortex decoder
|
|
161
|
+
*
|
|
162
|
+
* @param blob - Vortex blob data
|
|
163
|
+
* @param options - Decoder options
|
|
164
|
+
*/
|
|
165
|
+
constructor(blob, options) {
|
|
166
|
+
this.blob = blob;
|
|
167
|
+
this.options = options;
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Get blob metadata
|
|
171
|
+
*
|
|
172
|
+
* @returns Vortex metadata
|
|
173
|
+
*/
|
|
174
|
+
getMetadata() {
|
|
175
|
+
if (!this.metadata) {
|
|
176
|
+
this.metadata = this.parseMetadata();
|
|
177
|
+
}
|
|
178
|
+
return this.metadata;
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Get schema from blob
|
|
182
|
+
*
|
|
183
|
+
* @returns Column schema
|
|
184
|
+
*/
|
|
185
|
+
getSchema() {
|
|
186
|
+
// TODO: Implement schema extraction
|
|
187
|
+
throw new Error('Not implemented');
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Read a single column
|
|
191
|
+
*
|
|
192
|
+
* Efficiently reads only the requested column without
|
|
193
|
+
* decoding the entire blob.
|
|
194
|
+
*
|
|
195
|
+
* @param name - Column name
|
|
196
|
+
* @returns Column data
|
|
197
|
+
*
|
|
198
|
+
* @example
|
|
199
|
+
* ```typescript
|
|
200
|
+
* const emails = decoder.readColumn<string>('email')
|
|
201
|
+
* console.log(emails.values) // ['alice@example.com', ...]
|
|
202
|
+
* console.log(emails.stats.nullCount)
|
|
203
|
+
* ```
|
|
204
|
+
*/
|
|
205
|
+
readColumn(name) {
|
|
206
|
+
// TODO: Implement column-selective read
|
|
207
|
+
throw new Error('Not implemented');
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Read multiple columns
|
|
211
|
+
*
|
|
212
|
+
* @param names - Column names to read
|
|
213
|
+
* @returns Map of column name to column data
|
|
214
|
+
*/
|
|
215
|
+
readColumns(names) {
|
|
216
|
+
// TODO: Implement multi-column read
|
|
217
|
+
throw new Error('Not implemented');
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Read all data as rows
|
|
221
|
+
*
|
|
222
|
+
* @returns Array of row objects
|
|
223
|
+
*/
|
|
224
|
+
readAll() {
|
|
225
|
+
// TODO: Implement full blob read
|
|
226
|
+
throw new Error('Not implemented');
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Read rows in a range
|
|
230
|
+
*
|
|
231
|
+
* @param start - Start row index
|
|
232
|
+
* @param count - Number of rows to read
|
|
233
|
+
* @returns Array of row objects
|
|
234
|
+
*/
|
|
235
|
+
readRange(start, count) {
|
|
236
|
+
// TODO: Implement range read
|
|
237
|
+
throw new Error('Not implemented');
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* Get column statistics without reading data
|
|
241
|
+
*
|
|
242
|
+
* @param name - Column name
|
|
243
|
+
* @returns Column statistics
|
|
244
|
+
*/
|
|
245
|
+
getColumnStats(name) {
|
|
246
|
+
// TODO: Implement stats extraction
|
|
247
|
+
throw new Error('Not implemented');
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* Validate blob checksum
|
|
251
|
+
*
|
|
252
|
+
* @returns True if checksum is valid
|
|
253
|
+
*/
|
|
254
|
+
validate() {
|
|
255
|
+
// TODO: Implement checksum validation
|
|
256
|
+
throw new Error('Not implemented');
|
|
257
|
+
}
|
|
258
|
+
/**
|
|
259
|
+
* Parse metadata from blob header
|
|
260
|
+
*/
|
|
261
|
+
parseMetadata() {
|
|
262
|
+
// TODO: Implement metadata parsing
|
|
263
|
+
throw new Error('Not implemented');
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
/**
|
|
267
|
+
* Infer schema from sample rows
|
|
268
|
+
*
|
|
269
|
+
* @param rows - Sample row data
|
|
270
|
+
* @returns Inferred schema
|
|
271
|
+
*
|
|
272
|
+
* @example
|
|
273
|
+
* ```typescript
|
|
274
|
+
* const schema = inferVortexSchema([
|
|
275
|
+
* { id: '1', name: 'Alice', age: 30 },
|
|
276
|
+
* { id: '2', name: 'Bob', age: null },
|
|
277
|
+
* ])
|
|
278
|
+
* // { columns: [
|
|
279
|
+
* // { name: 'id', type: 'string', nullable: false },
|
|
280
|
+
* // { name: 'name', type: 'string', nullable: false },
|
|
281
|
+
* // { name: 'age', type: 'int32', nullable: true },
|
|
282
|
+
* // ]}
|
|
283
|
+
* ```
|
|
284
|
+
*/
|
|
285
|
+
export function inferVortexSchema(rows) {
|
|
286
|
+
if (rows.length === 0) {
|
|
287
|
+
return { columns: [] };
|
|
288
|
+
}
|
|
289
|
+
const columnInfo = new Map();
|
|
290
|
+
for (const row of rows) {
|
|
291
|
+
for (const [key, value] of Object.entries(row)) {
|
|
292
|
+
let info = columnInfo.get(key);
|
|
293
|
+
if (!info) {
|
|
294
|
+
info = { types: new Set(), hasNull: false };
|
|
295
|
+
columnInfo.set(key, info);
|
|
296
|
+
}
|
|
297
|
+
if (value === null || value === undefined) {
|
|
298
|
+
info.hasNull = true;
|
|
299
|
+
}
|
|
300
|
+
else {
|
|
301
|
+
info.types.add(inferVortexType(value));
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
const columns = [];
|
|
306
|
+
for (const [name, info] of columnInfo) {
|
|
307
|
+
const types = Array.from(info.types);
|
|
308
|
+
const type = types.length > 0 ? types[0] : 'string';
|
|
309
|
+
columns.push({
|
|
310
|
+
name,
|
|
311
|
+
type,
|
|
312
|
+
nullable: info.hasNull,
|
|
313
|
+
encoding: chooseEncoding(type),
|
|
314
|
+
});
|
|
315
|
+
}
|
|
316
|
+
return { columns };
|
|
317
|
+
}
|
|
318
|
+
/**
|
|
319
|
+
* Infer Vortex type from JavaScript value
|
|
320
|
+
*/
|
|
321
|
+
function inferVortexType(value) {
|
|
322
|
+
if (typeof value === 'string')
|
|
323
|
+
return 'string';
|
|
324
|
+
if (typeof value === 'number') {
|
|
325
|
+
if (Number.isInteger(value)) {
|
|
326
|
+
return value >= -2147483648 && value <= 2147483647 ? 'int32' : 'int64';
|
|
327
|
+
}
|
|
328
|
+
return 'float64';
|
|
329
|
+
}
|
|
330
|
+
if (typeof value === 'boolean')
|
|
331
|
+
return 'boolean';
|
|
332
|
+
if (value instanceof Date)
|
|
333
|
+
return 'timestamp';
|
|
334
|
+
if (value instanceof ArrayBuffer || value instanceof Uint8Array)
|
|
335
|
+
return 'binary';
|
|
336
|
+
return 'json';
|
|
337
|
+
}
|
|
338
|
+
/**
|
|
339
|
+
* Choose optimal encoding for a column type
|
|
340
|
+
*/
|
|
341
|
+
function chooseEncoding(type) {
|
|
342
|
+
switch (type) {
|
|
343
|
+
case 'string':
|
|
344
|
+
return 'dictionary';
|
|
345
|
+
case 'int32':
|
|
346
|
+
case 'int64':
|
|
347
|
+
case 'timestamp':
|
|
348
|
+
return 'delta';
|
|
349
|
+
case 'boolean':
|
|
350
|
+
return 'boolean';
|
|
351
|
+
default:
|
|
352
|
+
return 'plain';
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
/**
|
|
356
|
+
* Calculate compression ratio
|
|
357
|
+
*
|
|
358
|
+
* @param original - Original size in bytes
|
|
359
|
+
* @param compressed - Compressed size in bytes
|
|
360
|
+
* @returns Compression ratio (e.g., 5.0 means 5x smaller)
|
|
361
|
+
*/
|
|
362
|
+
export function compressionRatio(original, compressed) {
|
|
363
|
+
return compressed > 0 ? original / compressed : 0;
|
|
364
|
+
}
|
|
365
|
+
//# sourceMappingURL=vortex.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vortex.js","sourceRoot":"","sources":["../../../db/storage/vortex.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,306 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Warm Storage - Edge Cache API
|
|
3
|
+
*
|
|
4
|
+
* Caching tier using Cloudflare's Cache API for frequently accessed data.
|
|
5
|
+
* Provides ~10ms latency with zero additional cost.
|
|
6
|
+
*
|
|
7
|
+
* Features:
|
|
8
|
+
* - Automatic cache key generation
|
|
9
|
+
* - TTL management
|
|
10
|
+
* - Pattern-based invalidation
|
|
11
|
+
* - Cache-aside pattern support
|
|
12
|
+
*
|
|
13
|
+
* @module @do/core/storage/warm
|
|
14
|
+
*/
|
|
15
|
+
/**
|
|
16
|
+
* Warm storage configuration
|
|
17
|
+
*/
|
|
18
|
+
export interface WarmStorageConfig {
|
|
19
|
+
/** Default TTL in seconds */
|
|
20
|
+
defaultTTL?: number;
|
|
21
|
+
/** Cache key prefix */
|
|
22
|
+
keyPrefix?: string;
|
|
23
|
+
/** Maximum serialized value size in bytes */
|
|
24
|
+
maxValueSize?: number;
|
|
25
|
+
/** Enable compression for large values */
|
|
26
|
+
compression?: boolean;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Cache options for individual operations
|
|
30
|
+
*/
|
|
31
|
+
export interface CacheOptions {
|
|
32
|
+
/** TTL in seconds (overrides default) */
|
|
33
|
+
ttl?: number;
|
|
34
|
+
/** Cache tags for invalidation */
|
|
35
|
+
tags?: string[];
|
|
36
|
+
/** Skip compression even if enabled globally */
|
|
37
|
+
skipCompression?: boolean;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Cache entry metadata
|
|
41
|
+
*/
|
|
42
|
+
export interface CacheEntry<T> {
|
|
43
|
+
/** Cached value */
|
|
44
|
+
value: T;
|
|
45
|
+
/** When the entry was cached */
|
|
46
|
+
cachedAt: number;
|
|
47
|
+
/** When the entry expires */
|
|
48
|
+
expiresAt: number;
|
|
49
|
+
/** Cache tags */
|
|
50
|
+
tags: string[];
|
|
51
|
+
/** Size in bytes */
|
|
52
|
+
sizeBytes: number;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Cache statistics
|
|
56
|
+
*/
|
|
57
|
+
export interface CacheStats {
|
|
58
|
+
/** Number of cache hits */
|
|
59
|
+
hits: number;
|
|
60
|
+
/** Number of cache misses */
|
|
61
|
+
misses: number;
|
|
62
|
+
/** Hit rate percentage */
|
|
63
|
+
hitRate: number;
|
|
64
|
+
/** Number of invalidations */
|
|
65
|
+
invalidations: number;
|
|
66
|
+
/** Total cached entries (estimated) */
|
|
67
|
+
entries: number;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Warm storage implementation using Edge Cache API
|
|
71
|
+
*
|
|
72
|
+
* @example
|
|
73
|
+
* ```typescript
|
|
74
|
+
* const warm = new WarmStorage(caches.default)
|
|
75
|
+
*
|
|
76
|
+
* // Cache a value
|
|
77
|
+
* await warm.set('users:123', user, { ttl: 300 })
|
|
78
|
+
*
|
|
79
|
+
* // Get cached value
|
|
80
|
+
* const cached = await warm.get<User>('users:123')
|
|
81
|
+
*
|
|
82
|
+
* // Cache-aside pattern
|
|
83
|
+
* const user = await warm.getOrSet('users:123', async () => {
|
|
84
|
+
* return await hot.get('users', '123')
|
|
85
|
+
* }, { ttl: 300 })
|
|
86
|
+
*
|
|
87
|
+
* // Invalidate by pattern
|
|
88
|
+
* await warm.invalidate('users:*')
|
|
89
|
+
* ```
|
|
90
|
+
*/
|
|
91
|
+
export declare class WarmStorage {
|
|
92
|
+
private readonly cache;
|
|
93
|
+
private config;
|
|
94
|
+
private stats;
|
|
95
|
+
/**
|
|
96
|
+
* Create a new warm storage instance
|
|
97
|
+
*
|
|
98
|
+
* @param cache - Cloudflare Cache API instance
|
|
99
|
+
* @param config - Cache configuration
|
|
100
|
+
*/
|
|
101
|
+
constructor(cache: Cache, config?: WarmStorageConfig);
|
|
102
|
+
/**
|
|
103
|
+
* Get a value from cache
|
|
104
|
+
*
|
|
105
|
+
* @param key - Cache key
|
|
106
|
+
* @returns Cached value or null if not found/expired
|
|
107
|
+
*
|
|
108
|
+
* @example
|
|
109
|
+
* ```typescript
|
|
110
|
+
* const user = await warm.get<User>('users:123')
|
|
111
|
+
* if (user) {
|
|
112
|
+
* console.log('Cache hit:', user.name)
|
|
113
|
+
* } else {
|
|
114
|
+
* console.log('Cache miss')
|
|
115
|
+
* }
|
|
116
|
+
* ```
|
|
117
|
+
*/
|
|
118
|
+
get<T>(key: string): Promise<T | null>;
|
|
119
|
+
/**
|
|
120
|
+
* Get a value with metadata
|
|
121
|
+
*
|
|
122
|
+
* @param key - Cache key
|
|
123
|
+
* @returns Cache entry with metadata or null
|
|
124
|
+
*/
|
|
125
|
+
getEntry<T>(key: string): Promise<CacheEntry<T> | null>;
|
|
126
|
+
/**
|
|
127
|
+
* Set a value in cache
|
|
128
|
+
*
|
|
129
|
+
* @param key - Cache key
|
|
130
|
+
* @param value - Value to cache
|
|
131
|
+
* @param options - Cache options
|
|
132
|
+
*
|
|
133
|
+
* @example
|
|
134
|
+
* ```typescript
|
|
135
|
+
* await warm.set('users:123', user, {
|
|
136
|
+
* ttl: 600, // 10 minutes
|
|
137
|
+
* tags: ['users', 'user:123'],
|
|
138
|
+
* })
|
|
139
|
+
* ```
|
|
140
|
+
*/
|
|
141
|
+
set<T>(key: string, value: T, options?: CacheOptions): Promise<void>;
|
|
142
|
+
/**
|
|
143
|
+
* Get or set a cached value (cache-aside pattern)
|
|
144
|
+
*
|
|
145
|
+
* If the key exists in cache, returns cached value.
|
|
146
|
+
* Otherwise, calls the factory function, caches the result, and returns it.
|
|
147
|
+
*
|
|
148
|
+
* @param key - Cache key
|
|
149
|
+
* @param factory - Function to generate value on cache miss
|
|
150
|
+
* @param options - Cache options
|
|
151
|
+
* @returns Cached or generated value
|
|
152
|
+
*
|
|
153
|
+
* @example
|
|
154
|
+
* ```typescript
|
|
155
|
+
* const user = await warm.getOrSet('users:123', async () => {
|
|
156
|
+
* return await db.query('SELECT * FROM users WHERE id = ?', [123])
|
|
157
|
+
* }, { ttl: 300 })
|
|
158
|
+
* ```
|
|
159
|
+
*/
|
|
160
|
+
getOrSet<T>(key: string, factory: () => Promise<T>, options?: CacheOptions): Promise<T>;
|
|
161
|
+
/**
|
|
162
|
+
* Delete a specific key from cache
|
|
163
|
+
*
|
|
164
|
+
* @param key - Cache key
|
|
165
|
+
* @returns True if key was deleted
|
|
166
|
+
*
|
|
167
|
+
* @example
|
|
168
|
+
* ```typescript
|
|
169
|
+
* await warm.delete('users:123')
|
|
170
|
+
* ```
|
|
171
|
+
*/
|
|
172
|
+
delete(key: string): Promise<boolean>;
|
|
173
|
+
/**
|
|
174
|
+
* Invalidate cache entries by pattern
|
|
175
|
+
*
|
|
176
|
+
* Supports glob-style patterns:
|
|
177
|
+
* - `users:*` - All keys starting with "users:"
|
|
178
|
+
* - `*:123` - All keys ending with ":123"
|
|
179
|
+
* - `users:*:orders` - Keys matching pattern
|
|
180
|
+
*
|
|
181
|
+
* @param pattern - Glob pattern for keys to invalidate
|
|
182
|
+
* @returns Number of entries invalidated
|
|
183
|
+
*
|
|
184
|
+
* @example
|
|
185
|
+
* ```typescript
|
|
186
|
+
* // Invalidate all user cache entries
|
|
187
|
+
* await warm.invalidate('users:*')
|
|
188
|
+
*
|
|
189
|
+
* // Invalidate specific user's related caches
|
|
190
|
+
* await warm.invalidate('*:user:123:*')
|
|
191
|
+
* ```
|
|
192
|
+
*/
|
|
193
|
+
invalidate(pattern: string): Promise<number>;
|
|
194
|
+
/**
|
|
195
|
+
* Invalidate cache entries by tag
|
|
196
|
+
*
|
|
197
|
+
* @param tag - Tag to invalidate
|
|
198
|
+
* @returns Number of entries invalidated
|
|
199
|
+
*
|
|
200
|
+
* @example
|
|
201
|
+
* ```typescript
|
|
202
|
+
* // Invalidate all entries tagged with 'user:123'
|
|
203
|
+
* await warm.invalidateByTag('user:123')
|
|
204
|
+
* ```
|
|
205
|
+
*/
|
|
206
|
+
invalidateByTag(tag: string): Promise<number>;
|
|
207
|
+
/**
|
|
208
|
+
* Check if a key exists in cache
|
|
209
|
+
*
|
|
210
|
+
* @param key - Cache key
|
|
211
|
+
* @returns True if key exists and is not expired
|
|
212
|
+
*/
|
|
213
|
+
has(key: string): Promise<boolean>;
|
|
214
|
+
/**
|
|
215
|
+
* Get multiple values from cache
|
|
216
|
+
*
|
|
217
|
+
* @param keys - Array of cache keys
|
|
218
|
+
* @returns Map of key to value (missing keys omitted)
|
|
219
|
+
*
|
|
220
|
+
* @example
|
|
221
|
+
* ```typescript
|
|
222
|
+
* const users = await warm.getMany(['users:1', 'users:2', 'users:3'])
|
|
223
|
+
* for (const [key, user] of users) {
|
|
224
|
+
* console.log(key, user.name)
|
|
225
|
+
* }
|
|
226
|
+
* ```
|
|
227
|
+
*/
|
|
228
|
+
getMany<T>(keys: string[]): Promise<Map<string, T>>;
|
|
229
|
+
/**
|
|
230
|
+
* Set multiple values in cache
|
|
231
|
+
*
|
|
232
|
+
* @param entries - Map of key to value
|
|
233
|
+
* @param options - Cache options (applied to all entries)
|
|
234
|
+
*
|
|
235
|
+
* @example
|
|
236
|
+
* ```typescript
|
|
237
|
+
* await warm.setMany(new Map([
|
|
238
|
+
* ['users:1', user1],
|
|
239
|
+
* ['users:2', user2],
|
|
240
|
+
* ]), { ttl: 300 })
|
|
241
|
+
* ```
|
|
242
|
+
*/
|
|
243
|
+
setMany<T>(entries: Map<string, T>, options?: CacheOptions): Promise<void>;
|
|
244
|
+
/**
|
|
245
|
+
* Get cache statistics
|
|
246
|
+
*
|
|
247
|
+
* @returns Cache statistics
|
|
248
|
+
*/
|
|
249
|
+
getStats(): CacheStats;
|
|
250
|
+
/**
|
|
251
|
+
* Reset cache statistics
|
|
252
|
+
*/
|
|
253
|
+
resetStats(): void;
|
|
254
|
+
/**
|
|
255
|
+
* Build full cache key with prefix
|
|
256
|
+
*
|
|
257
|
+
* @param key - User-provided key
|
|
258
|
+
* @returns Full cache key
|
|
259
|
+
*/
|
|
260
|
+
private buildKey;
|
|
261
|
+
/**
|
|
262
|
+
* Convert cache key to Request object
|
|
263
|
+
*
|
|
264
|
+
* Cache API requires Request objects as keys.
|
|
265
|
+
*
|
|
266
|
+
* @param key - Cache key
|
|
267
|
+
* @returns Request object for cache operations
|
|
268
|
+
*/
|
|
269
|
+
private toRequest;
|
|
270
|
+
/**
|
|
271
|
+
* Create Response object for caching
|
|
272
|
+
*
|
|
273
|
+
* @param value - Value to cache
|
|
274
|
+
* @param options - Cache options
|
|
275
|
+
* @returns Response object with proper headers
|
|
276
|
+
*/
|
|
277
|
+
private toResponse;
|
|
278
|
+
}
|
|
279
|
+
/**
|
|
280
|
+
* Cache key builder utility
|
|
281
|
+
*
|
|
282
|
+
* Builds consistent cache keys from components.
|
|
283
|
+
*
|
|
284
|
+
* @example
|
|
285
|
+
* ```typescript
|
|
286
|
+
* const key = cacheKey('users', userId, 'orders')
|
|
287
|
+
* // Returns: 'users:abc123:orders'
|
|
288
|
+
* ```
|
|
289
|
+
*/
|
|
290
|
+
export declare function cacheKey(...parts: (string | number)[]): string;
|
|
291
|
+
/**
|
|
292
|
+
* Parse cache key into components
|
|
293
|
+
*
|
|
294
|
+
* @param key - Cache key
|
|
295
|
+
* @returns Array of key components
|
|
296
|
+
*/
|
|
297
|
+
export declare function parseCacheKey(key: string): string[];
|
|
298
|
+
/**
|
|
299
|
+
* Check if a key matches a glob pattern
|
|
300
|
+
*
|
|
301
|
+
* @param key - Cache key to check
|
|
302
|
+
* @param pattern - Glob pattern
|
|
303
|
+
* @returns True if key matches pattern
|
|
304
|
+
*/
|
|
305
|
+
export declare function matchesCachePattern(key: string, pattern: string): boolean;
|
|
306
|
+
//# sourceMappingURL=warm.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"warm.d.ts","sourceRoot":"","sources":["../../../db/storage/warm.ts"],"names":[],"mappings":"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"}
|