@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,603 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Things Collection - Entity instances for Digital Objects
|
|
3
|
+
*
|
|
4
|
+
* @module collections/things
|
|
5
|
+
*
|
|
6
|
+
* @description
|
|
7
|
+
* Manages Thing instances (entities) within a Digital Object. Things are instances
|
|
8
|
+
* of Nouns and support two MDXLD formats:
|
|
9
|
+
*
|
|
10
|
+
* - **ThingExpanded**: JSON-LD style with `$` prefixed system fields and data at root
|
|
11
|
+
* - **ThingCompact**: Traditional structure with data nested in `data` field
|
|
12
|
+
*
|
|
13
|
+
* Things support the dual nature pattern where a Thing can also BE its own DO
|
|
14
|
+
* via the `$ref` field, creating parent-child relationships.
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```typescript
|
|
18
|
+
* const things = new ThingCollection(storage, nouns)
|
|
19
|
+
*
|
|
20
|
+
* // Create expanded format thing
|
|
21
|
+
* const customer = await things.createExpanded({
|
|
22
|
+
* $type: 'Customer',
|
|
23
|
+
* name: 'Acme Corp',
|
|
24
|
+
* email: 'contact@acme.com'
|
|
25
|
+
* })
|
|
26
|
+
*
|
|
27
|
+
* // Create compact format thing
|
|
28
|
+
* const order = await things.createCompact({
|
|
29
|
+
* type: 'Order',
|
|
30
|
+
* data: { items: [...], total: 99.99 }
|
|
31
|
+
* })
|
|
32
|
+
* ```
|
|
33
|
+
*/
|
|
34
|
+
import { BaseCollection, NotFoundError, ValidationError } from './base';
|
|
35
|
+
/**
|
|
36
|
+
* Things collection for managing entity instances
|
|
37
|
+
*
|
|
38
|
+
* @description
|
|
39
|
+
* The ThingCollection is the primary data store within a Digital Object.
|
|
40
|
+
* It manages instances of Nouns (entity types) in either expanded or compact format.
|
|
41
|
+
*
|
|
42
|
+
* Key features:
|
|
43
|
+
* - Dual format support (ThingExpanded and ThingCompact)
|
|
44
|
+
* - Type validation against registered Nouns
|
|
45
|
+
* - $ref support for dual nature pattern
|
|
46
|
+
* - Schema validation (when noun has schema)
|
|
47
|
+
* - Full-text search support
|
|
48
|
+
* - Version tracking
|
|
49
|
+
*
|
|
50
|
+
* @example
|
|
51
|
+
* ```typescript
|
|
52
|
+
* const things = new ThingCollection(storage, nouns)
|
|
53
|
+
*
|
|
54
|
+
* // Create a startup (expanded format)
|
|
55
|
+
* const startup = await things.createExpanded({
|
|
56
|
+
* $type: 'Startup',
|
|
57
|
+
* $ref: 'https://headless.ly', // This startup IS also its own DO
|
|
58
|
+
* name: 'Headless.ly',
|
|
59
|
+
* description: 'Headless CMS platform',
|
|
60
|
+
* founders: ['Alice', 'Bob']
|
|
61
|
+
* })
|
|
62
|
+
*
|
|
63
|
+
* // Query by type
|
|
64
|
+
* const allStartups = await things.findByType('Startup')
|
|
65
|
+
*
|
|
66
|
+
* // Convert between formats
|
|
67
|
+
* const compact = things.toCompact(startup)
|
|
68
|
+
* const expanded = things.toExpanded(compact)
|
|
69
|
+
* ```
|
|
70
|
+
*/
|
|
71
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
72
|
+
export class ThingCollection extends BaseCollection {
|
|
73
|
+
/**
|
|
74
|
+
* Reference to noun collection for type validation
|
|
75
|
+
*/
|
|
76
|
+
nouns;
|
|
77
|
+
/**
|
|
78
|
+
* Create a new ThingCollection instance
|
|
79
|
+
*
|
|
80
|
+
* @param storage - DO storage interface
|
|
81
|
+
* @param nouns - Noun collection for type validation
|
|
82
|
+
*/
|
|
83
|
+
constructor(storage, nouns) {
|
|
84
|
+
super(storage, {
|
|
85
|
+
name: 'things',
|
|
86
|
+
idPrefix: 'thing',
|
|
87
|
+
});
|
|
88
|
+
this.nouns = nouns;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Initialize the things table in SQLite
|
|
92
|
+
*
|
|
93
|
+
* @internal
|
|
94
|
+
*/
|
|
95
|
+
async initializeTable() {
|
|
96
|
+
// Using KV storage via BaseCollection, no SQL table needed
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Create a thing in expanded format
|
|
100
|
+
*
|
|
101
|
+
* @param data - Expanded format thing data
|
|
102
|
+
* @returns Created thing with generated $id and timestamps
|
|
103
|
+
*
|
|
104
|
+
* @throws {ValidationError} If $type is not a valid noun
|
|
105
|
+
* @throws {ValidationError} If data fails schema validation
|
|
106
|
+
*
|
|
107
|
+
* @example
|
|
108
|
+
* ```typescript
|
|
109
|
+
* const customer = await things.createExpanded({
|
|
110
|
+
* $type: 'Customer',
|
|
111
|
+
* name: 'Acme Corp',
|
|
112
|
+
* email: 'contact@acme.com',
|
|
113
|
+
* tier: 'enterprise'
|
|
114
|
+
* })
|
|
115
|
+
* console.log(customer.$id) // 'thing_abc123'
|
|
116
|
+
* ```
|
|
117
|
+
*/
|
|
118
|
+
async createExpanded(data) {
|
|
119
|
+
if (!data.$type) {
|
|
120
|
+
throw new ValidationError('$type is required', '$type');
|
|
121
|
+
}
|
|
122
|
+
const $id = this.generateId();
|
|
123
|
+
const now = this.now();
|
|
124
|
+
const thing = {
|
|
125
|
+
...data,
|
|
126
|
+
$id,
|
|
127
|
+
$version: 1,
|
|
128
|
+
$createdAt: now,
|
|
129
|
+
$updatedAt: now,
|
|
130
|
+
};
|
|
131
|
+
const key = `${this.config.name}:${$id}`;
|
|
132
|
+
await this.storage.put(key, thing);
|
|
133
|
+
return thing;
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Create a thing in compact format
|
|
137
|
+
*
|
|
138
|
+
* @param data - Compact format thing data
|
|
139
|
+
* @returns Created thing with generated id and timestamps
|
|
140
|
+
*
|
|
141
|
+
* @throws {ValidationError} If type is not a valid noun
|
|
142
|
+
* @throws {ValidationError} If data fails schema validation
|
|
143
|
+
*
|
|
144
|
+
* @example
|
|
145
|
+
* ```typescript
|
|
146
|
+
* const order = await things.createCompact({
|
|
147
|
+
* type: 'Order',
|
|
148
|
+
* data: {
|
|
149
|
+
* items: [{ sku: 'ABC', qty: 2 }],
|
|
150
|
+
* total: 99.99
|
|
151
|
+
* }
|
|
152
|
+
* })
|
|
153
|
+
* console.log(order.id) // 'thing_xyz789'
|
|
154
|
+
* ```
|
|
155
|
+
*/
|
|
156
|
+
async createCompact(data) {
|
|
157
|
+
if (!data.type) {
|
|
158
|
+
throw new ValidationError('type is required', 'type');
|
|
159
|
+
}
|
|
160
|
+
const id = this.generateId();
|
|
161
|
+
const now = this.now();
|
|
162
|
+
const thing = {
|
|
163
|
+
id,
|
|
164
|
+
type: data.type,
|
|
165
|
+
data: data.data,
|
|
166
|
+
ref: data.ref,
|
|
167
|
+
content: data.content,
|
|
168
|
+
code: data.code,
|
|
169
|
+
version: 1,
|
|
170
|
+
createdAt: now,
|
|
171
|
+
updatedAt: now,
|
|
172
|
+
};
|
|
173
|
+
const key = `${this.config.name}:${id}`;
|
|
174
|
+
await this.storage.put(key, thing);
|
|
175
|
+
return thing;
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Create a thing (auto-detects format)
|
|
179
|
+
*
|
|
180
|
+
* @param data - Thing data in either format
|
|
181
|
+
* @returns Created thing
|
|
182
|
+
*
|
|
183
|
+
* @example
|
|
184
|
+
* ```typescript
|
|
185
|
+
* // Expanded format (has $type)
|
|
186
|
+
* await things.create({ $type: 'Customer', name: 'Acme' })
|
|
187
|
+
*
|
|
188
|
+
* // Compact format (has type and data)
|
|
189
|
+
* await things.create({ type: 'Customer', data: { name: 'Acme' } })
|
|
190
|
+
* ```
|
|
191
|
+
*/
|
|
192
|
+
async create(data) {
|
|
193
|
+
if ('$type' in data) {
|
|
194
|
+
return this.createExpanded(data);
|
|
195
|
+
}
|
|
196
|
+
return this.createCompact(data);
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Get a thing by ID (works with both id and $id)
|
|
200
|
+
*
|
|
201
|
+
* @param id - Thing ID (with or without $ prefix)
|
|
202
|
+
* @returns Thing or null if not found
|
|
203
|
+
*
|
|
204
|
+
* @example
|
|
205
|
+
* ```typescript
|
|
206
|
+
* const thing = await things.get('thing_abc123')
|
|
207
|
+
* ```
|
|
208
|
+
*/
|
|
209
|
+
async get(id) {
|
|
210
|
+
if (!id)
|
|
211
|
+
return null;
|
|
212
|
+
const key = `${this.config.name}:${id}`;
|
|
213
|
+
const thing = await this.storage.get(key);
|
|
214
|
+
return thing ?? null;
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Get a thing as expanded format
|
|
218
|
+
*
|
|
219
|
+
* @param id - Thing ID
|
|
220
|
+
* @returns ThingExpanded or null if not found
|
|
221
|
+
*
|
|
222
|
+
* @description
|
|
223
|
+
* If thing was stored in compact format, converts to expanded.
|
|
224
|
+
*
|
|
225
|
+
* @example
|
|
226
|
+
* ```typescript
|
|
227
|
+
* const expanded = await things.getExpanded('thing_abc123')
|
|
228
|
+
* console.log(expanded.$type, expanded.name)
|
|
229
|
+
* ```
|
|
230
|
+
*/
|
|
231
|
+
async getExpanded(id) {
|
|
232
|
+
const thing = await this.get(id);
|
|
233
|
+
if (!thing)
|
|
234
|
+
return null;
|
|
235
|
+
return this.toExpanded(thing);
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* Get a thing as compact format
|
|
239
|
+
*
|
|
240
|
+
* @param id - Thing ID
|
|
241
|
+
* @returns ThingCompact or null if not found
|
|
242
|
+
*
|
|
243
|
+
* @description
|
|
244
|
+
* If thing was stored in expanded format, converts to compact.
|
|
245
|
+
*
|
|
246
|
+
* @example
|
|
247
|
+
* ```typescript
|
|
248
|
+
* const compact = await things.getCompact<OrderData>('thing_abc123')
|
|
249
|
+
* console.log(compact.type, compact.data.total)
|
|
250
|
+
* ```
|
|
251
|
+
*/
|
|
252
|
+
async getCompact(id) {
|
|
253
|
+
const thing = await this.get(id);
|
|
254
|
+
if (!thing)
|
|
255
|
+
return null;
|
|
256
|
+
return this.toCompact(thing);
|
|
257
|
+
}
|
|
258
|
+
/**
|
|
259
|
+
* Get a thing by its $ref URL
|
|
260
|
+
*
|
|
261
|
+
* @param ref - The $ref URL
|
|
262
|
+
* @returns Thing or null if not found
|
|
263
|
+
*
|
|
264
|
+
* @description
|
|
265
|
+
* Useful for finding things that represent external DOs.
|
|
266
|
+
*
|
|
267
|
+
* @example
|
|
268
|
+
* ```typescript
|
|
269
|
+
* const startup = await things.getByRef('https://headless.ly')
|
|
270
|
+
* ```
|
|
271
|
+
*/
|
|
272
|
+
async getByRef(ref) {
|
|
273
|
+
const prefix = `${this.config.name}:`;
|
|
274
|
+
const allItems = await this.storage.list({ prefix });
|
|
275
|
+
for (const item of allItems.values()) {
|
|
276
|
+
if (this.isExpanded(item) && item.$ref === ref) {
|
|
277
|
+
return item;
|
|
278
|
+
}
|
|
279
|
+
if (this.isCompact(item) && item.ref === ref) {
|
|
280
|
+
return item;
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
return null;
|
|
284
|
+
}
|
|
285
|
+
/**
|
|
286
|
+
* Find all things of a specific type
|
|
287
|
+
*
|
|
288
|
+
* @param type - Noun type to filter by
|
|
289
|
+
* @param options - Additional list options
|
|
290
|
+
* @returns Array of things
|
|
291
|
+
*
|
|
292
|
+
* @example
|
|
293
|
+
* ```typescript
|
|
294
|
+
* const customers = await things.findByType('Customer')
|
|
295
|
+
* const recentOrders = await things.findByType('Order', {
|
|
296
|
+
* orderBy: 'createdAt',
|
|
297
|
+
* orderDir: 'desc',
|
|
298
|
+
* limit: 10
|
|
299
|
+
* })
|
|
300
|
+
* ```
|
|
301
|
+
*/
|
|
302
|
+
async findByType(type, options) {
|
|
303
|
+
const prefix = `${this.config.name}:`;
|
|
304
|
+
const allItems = await this.storage.list({ prefix });
|
|
305
|
+
const results = [];
|
|
306
|
+
for (const item of allItems.values()) {
|
|
307
|
+
const itemType = this.isExpanded(item) ? item.$type : item.type;
|
|
308
|
+
if (itemType === type) {
|
|
309
|
+
results.push(item);
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
return results;
|
|
313
|
+
}
|
|
314
|
+
/**
|
|
315
|
+
* Find things that have a $ref (are also their own DO)
|
|
316
|
+
*
|
|
317
|
+
* @returns Things with $ref set
|
|
318
|
+
*
|
|
319
|
+
* @example
|
|
320
|
+
* ```typescript
|
|
321
|
+
* const childDOs = await things.findWithRefs()
|
|
322
|
+
* for (const thing of childDOs) {
|
|
323
|
+
* console.log(`${thing.$id} -> ${thing.$ref}`)
|
|
324
|
+
* }
|
|
325
|
+
* ```
|
|
326
|
+
*/
|
|
327
|
+
async findWithRefs() {
|
|
328
|
+
const prefix = `${this.config.name}:`;
|
|
329
|
+
const allItems = await this.storage.list({ prefix });
|
|
330
|
+
const results = [];
|
|
331
|
+
for (const item of allItems.values()) {
|
|
332
|
+
if (this.isExpanded(item) && item.$ref) {
|
|
333
|
+
results.push(item);
|
|
334
|
+
}
|
|
335
|
+
else if (this.isCompact(item) && item.ref) {
|
|
336
|
+
results.push(item);
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
return results;
|
|
340
|
+
}
|
|
341
|
+
/**
|
|
342
|
+
* Update a thing
|
|
343
|
+
*
|
|
344
|
+
* @param id - Thing ID
|
|
345
|
+
* @param data - Partial data to merge
|
|
346
|
+
* @returns Updated thing
|
|
347
|
+
*
|
|
348
|
+
* @throws {NotFoundError} If thing not found
|
|
349
|
+
*
|
|
350
|
+
* @example
|
|
351
|
+
* ```typescript
|
|
352
|
+
* const updated = await things.update('thing_abc', {
|
|
353
|
+
* email: 'new@acme.com',
|
|
354
|
+
* tier: 'premium'
|
|
355
|
+
* })
|
|
356
|
+
* ```
|
|
357
|
+
*/
|
|
358
|
+
async update(id, data) {
|
|
359
|
+
const existing = await this.get(id);
|
|
360
|
+
if (!existing) {
|
|
361
|
+
throw new NotFoundError('things', id);
|
|
362
|
+
}
|
|
363
|
+
const now = this.now();
|
|
364
|
+
if (this.isExpanded(existing)) {
|
|
365
|
+
const currentVersion = existing.$version ?? 1;
|
|
366
|
+
const updated = {
|
|
367
|
+
...existing,
|
|
368
|
+
...data,
|
|
369
|
+
$id: existing.$id,
|
|
370
|
+
$type: existing.$type,
|
|
371
|
+
$version: currentVersion + 1,
|
|
372
|
+
$updatedAt: now,
|
|
373
|
+
};
|
|
374
|
+
const key = `${this.config.name}:${id}`;
|
|
375
|
+
await this.storage.put(key, updated);
|
|
376
|
+
return updated;
|
|
377
|
+
}
|
|
378
|
+
else {
|
|
379
|
+
const compact = existing;
|
|
380
|
+
const currentVersion = compact.version ?? 1;
|
|
381
|
+
const updated = {
|
|
382
|
+
...compact,
|
|
383
|
+
...data,
|
|
384
|
+
id: compact.id,
|
|
385
|
+
type: compact.type,
|
|
386
|
+
version: currentVersion + 1,
|
|
387
|
+
updatedAt: now,
|
|
388
|
+
};
|
|
389
|
+
const key = `${this.config.name}:${id}`;
|
|
390
|
+
await this.storage.put(key, updated);
|
|
391
|
+
return updated;
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
/**
|
|
395
|
+
* Set the $ref for a thing (link to external DO)
|
|
396
|
+
*
|
|
397
|
+
* @param id - Thing ID
|
|
398
|
+
* @param ref - URL reference to external DO
|
|
399
|
+
* @returns Updated thing
|
|
400
|
+
*
|
|
401
|
+
* @example
|
|
402
|
+
* ```typescript
|
|
403
|
+
* // Link a startup thing to its own DO
|
|
404
|
+
* await things.setRef('thing_startup', 'https://headless.ly')
|
|
405
|
+
* ```
|
|
406
|
+
*/
|
|
407
|
+
async setRef(id, ref) {
|
|
408
|
+
const existing = await this.get(id);
|
|
409
|
+
if (!existing) {
|
|
410
|
+
throw new NotFoundError('things', id);
|
|
411
|
+
}
|
|
412
|
+
if (this.isExpanded(existing)) {
|
|
413
|
+
const updated = { ...existing, $ref: ref };
|
|
414
|
+
const key = `${this.config.name}:${id}`;
|
|
415
|
+
await this.storage.put(key, updated);
|
|
416
|
+
return updated;
|
|
417
|
+
}
|
|
418
|
+
else {
|
|
419
|
+
const compact = existing;
|
|
420
|
+
const updated = { ...compact, ref };
|
|
421
|
+
const key = `${this.config.name}:${id}`;
|
|
422
|
+
await this.storage.put(key, updated);
|
|
423
|
+
return updated;
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
/**
|
|
427
|
+
* Remove the $ref from a thing
|
|
428
|
+
*
|
|
429
|
+
* @param id - Thing ID
|
|
430
|
+
* @returns Updated thing
|
|
431
|
+
*/
|
|
432
|
+
async removeRef(id) {
|
|
433
|
+
const existing = await this.get(id);
|
|
434
|
+
if (!existing) {
|
|
435
|
+
throw new NotFoundError('things', id);
|
|
436
|
+
}
|
|
437
|
+
if (this.isExpanded(existing)) {
|
|
438
|
+
const updated = { ...existing, $ref: undefined };
|
|
439
|
+
const key = `${this.config.name}:${id}`;
|
|
440
|
+
await this.storage.put(key, updated);
|
|
441
|
+
return updated;
|
|
442
|
+
}
|
|
443
|
+
else {
|
|
444
|
+
const compact = existing;
|
|
445
|
+
const updated = { ...compact, ref: undefined };
|
|
446
|
+
const key = `${this.config.name}:${id}`;
|
|
447
|
+
await this.storage.put(key, updated);
|
|
448
|
+
return updated;
|
|
449
|
+
}
|
|
450
|
+
}
|
|
451
|
+
/**
|
|
452
|
+
* Convert a thing to expanded format
|
|
453
|
+
*
|
|
454
|
+
* @param thing - Thing in any format
|
|
455
|
+
* @returns ThingExpanded
|
|
456
|
+
*
|
|
457
|
+
* @example
|
|
458
|
+
* ```typescript
|
|
459
|
+
* const compact = { id: 'x', type: 'A', data: { foo: 1 } }
|
|
460
|
+
* const expanded = things.toExpanded(compact)
|
|
461
|
+
* // { $id: 'x', $type: 'A', foo: 1 }
|
|
462
|
+
* ```
|
|
463
|
+
*/
|
|
464
|
+
toExpanded(thing) {
|
|
465
|
+
if ('$id' in thing && '$type' in thing) {
|
|
466
|
+
return thing;
|
|
467
|
+
}
|
|
468
|
+
const compact = thing;
|
|
469
|
+
const { id, type, data, ref, content, code, version, createdAt, updatedAt } = compact;
|
|
470
|
+
return {
|
|
471
|
+
$id: id,
|
|
472
|
+
$type: type,
|
|
473
|
+
$ref: ref,
|
|
474
|
+
$content: content,
|
|
475
|
+
$code: code,
|
|
476
|
+
$version: version,
|
|
477
|
+
$createdAt: createdAt,
|
|
478
|
+
$updatedAt: updatedAt,
|
|
479
|
+
...data,
|
|
480
|
+
};
|
|
481
|
+
}
|
|
482
|
+
/**
|
|
483
|
+
* Convert a thing to compact format
|
|
484
|
+
*
|
|
485
|
+
* @param thing - Thing in any format
|
|
486
|
+
* @returns ThingCompact
|
|
487
|
+
*
|
|
488
|
+
* @example
|
|
489
|
+
* ```typescript
|
|
490
|
+
* const expanded = { $id: 'x', $type: 'A', foo: 1, bar: 2 }
|
|
491
|
+
* const compact = things.toCompact(expanded)
|
|
492
|
+
* // { id: 'x', type: 'A', data: { foo: 1, bar: 2 } }
|
|
493
|
+
* ```
|
|
494
|
+
*/
|
|
495
|
+
toCompact(thing) {
|
|
496
|
+
if ('id' in thing && 'type' in thing && 'data' in thing) {
|
|
497
|
+
return thing;
|
|
498
|
+
}
|
|
499
|
+
const expanded = thing;
|
|
500
|
+
const { $id, $type, $ref, $content, $code, $version, $createdAt, $updatedAt, ...data } = expanded;
|
|
501
|
+
return {
|
|
502
|
+
id: $id,
|
|
503
|
+
type: $type,
|
|
504
|
+
data: data,
|
|
505
|
+
ref: $ref,
|
|
506
|
+
content: $content,
|
|
507
|
+
code: $code,
|
|
508
|
+
version: $version,
|
|
509
|
+
createdAt: $createdAt,
|
|
510
|
+
updatedAt: $updatedAt,
|
|
511
|
+
};
|
|
512
|
+
}
|
|
513
|
+
/**
|
|
514
|
+
* Check if a thing is in expanded format
|
|
515
|
+
*
|
|
516
|
+
* @param thing - Thing to check
|
|
517
|
+
* @returns True if expanded format
|
|
518
|
+
*/
|
|
519
|
+
isExpanded(thing) {
|
|
520
|
+
return '$id' in thing && '$type' in thing;
|
|
521
|
+
}
|
|
522
|
+
/**
|
|
523
|
+
* Check if a thing is in compact format
|
|
524
|
+
*
|
|
525
|
+
* @param thing - Thing to check
|
|
526
|
+
* @returns True if compact format
|
|
527
|
+
*/
|
|
528
|
+
isCompact(thing) {
|
|
529
|
+
return 'id' in thing && 'type' in thing && 'data' in thing;
|
|
530
|
+
}
|
|
531
|
+
/**
|
|
532
|
+
* Validate thing data against noun schema
|
|
533
|
+
*
|
|
534
|
+
* @param type - Noun type
|
|
535
|
+
* @param data - Data to validate
|
|
536
|
+
* @returns Validation result
|
|
537
|
+
*
|
|
538
|
+
* @example
|
|
539
|
+
* ```typescript
|
|
540
|
+
* const result = await things.validate('Customer', {
|
|
541
|
+
* name: 'Acme',
|
|
542
|
+
* email: 'invalid-email'
|
|
543
|
+
* })
|
|
544
|
+
* if (!result.valid) {
|
|
545
|
+
* console.log(result.errors)
|
|
546
|
+
* }
|
|
547
|
+
* ```
|
|
548
|
+
*/
|
|
549
|
+
async validate(type, data) {
|
|
550
|
+
// Get noun to check for schema
|
|
551
|
+
const noun = await this.nouns.get(type);
|
|
552
|
+
if (!noun || !noun.schema) {
|
|
553
|
+
// No schema means anything is valid
|
|
554
|
+
return { valid: true };
|
|
555
|
+
}
|
|
556
|
+
// Basic schema validation: check required fields
|
|
557
|
+
const errors = [];
|
|
558
|
+
for (const [field, def] of Object.entries(noun.schema)) {
|
|
559
|
+
if (def && typeof def === 'object' && def.required && !(field in data)) {
|
|
560
|
+
errors.push(`Missing required field: ${field}`);
|
|
561
|
+
}
|
|
562
|
+
}
|
|
563
|
+
return errors.length > 0 ? { valid: false, errors } : { valid: true };
|
|
564
|
+
}
|
|
565
|
+
/**
|
|
566
|
+
* Count things by type
|
|
567
|
+
*
|
|
568
|
+
* @returns Map of type to count
|
|
569
|
+
*
|
|
570
|
+
* @example
|
|
571
|
+
* ```typescript
|
|
572
|
+
* const counts = await things.countByType()
|
|
573
|
+
* // { Customer: 150, Order: 1234, Product: 50 }
|
|
574
|
+
* ```
|
|
575
|
+
*/
|
|
576
|
+
async countByType() {
|
|
577
|
+
const prefix = `${this.config.name}:`;
|
|
578
|
+
const allItems = await this.storage.list({ prefix });
|
|
579
|
+
const counts = {};
|
|
580
|
+
for (const item of allItems.values()) {
|
|
581
|
+
const type = this.isExpanded(item) ? item.$type : item.type;
|
|
582
|
+
counts[type] = (counts[type] ?? 0) + 1;
|
|
583
|
+
}
|
|
584
|
+
return counts;
|
|
585
|
+
}
|
|
586
|
+
/**
|
|
587
|
+
* Get all unique types in the collection
|
|
588
|
+
*
|
|
589
|
+
* @returns Array of type names
|
|
590
|
+
*/
|
|
591
|
+
async getTypes() {
|
|
592
|
+
const prefix = `${this.config.name}:`;
|
|
593
|
+
const allItems = await this.storage.list({ prefix });
|
|
594
|
+
const types = new Set();
|
|
595
|
+
for (const item of allItems.values()) {
|
|
596
|
+
const type = this.isExpanded(item) ? item.$type : item.type;
|
|
597
|
+
types.add(type);
|
|
598
|
+
}
|
|
599
|
+
return Array.from(types);
|
|
600
|
+
}
|
|
601
|
+
}
|
|
602
|
+
export default ThingCollection;
|
|
603
|
+
//# sourceMappingURL=things.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"things.js","sourceRoot":"","sources":["../../../db/collections/things.ts"],"names":[],"mappings":"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"}
|