@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,164 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Subdomain Validation
|
|
3
|
+
*
|
|
4
|
+
* Utilities for validating subdomain names, checking reserved lists,
|
|
5
|
+
* and verifying TLD validity.
|
|
6
|
+
*
|
|
7
|
+
* @module domains/validation
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Validation result
|
|
11
|
+
*/
|
|
12
|
+
export interface ValidationResult {
|
|
13
|
+
/** Whether validation passed */
|
|
14
|
+
valid: boolean;
|
|
15
|
+
/** Error message if invalid */
|
|
16
|
+
error?: string;
|
|
17
|
+
/** Detailed validation info */
|
|
18
|
+
details?: ValidationDetails;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Detailed validation information
|
|
22
|
+
*/
|
|
23
|
+
export interface ValidationDetails {
|
|
24
|
+
/** The value that was validated */
|
|
25
|
+
value: string;
|
|
26
|
+
/** Checks that passed */
|
|
27
|
+
passed: string[];
|
|
28
|
+
/** Check that failed (if any) */
|
|
29
|
+
failed?: string;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Validation options
|
|
33
|
+
*/
|
|
34
|
+
export interface ValidationOptions {
|
|
35
|
+
/** Allow uppercase (will be normalized) */
|
|
36
|
+
allowUppercase?: boolean;
|
|
37
|
+
/** Minimum length (default: 2) */
|
|
38
|
+
minLength?: number;
|
|
39
|
+
/** Maximum length (default: 63) */
|
|
40
|
+
maxLength?: number;
|
|
41
|
+
/** Additional reserved words to block */
|
|
42
|
+
additionalReserved?: string[];
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Additional reserved subdomains beyond the core list
|
|
46
|
+
* These are commonly used or potentially confusing names
|
|
47
|
+
*/
|
|
48
|
+
export declare const ADDITIONAL_RESERVED_SUBDOMAINS: readonly ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "www2", "www3", "ftp2", "mail2", "smtp2", "ns", "ns3", "ns4", "mx", "mx2", "security", "secure", "ssl", "vpn", "proxy", "api2", "api3", "graphql", "rest", "rpc", "ws", "wss", "beta", "alpha", "preview", "canary", "edge", "admin2", "panel", "cp", "controlpanel", "webmail", "autodiscover", "autoconfig", "mail-server", "google", "facebook", "amazon", "microsoft", "apple", "twitter", "github", "cloudflare", "stripe", "aws"];
|
|
49
|
+
/**
|
|
50
|
+
* All reserved subdomains (core + additional)
|
|
51
|
+
*/
|
|
52
|
+
export declare const ALL_RESERVED_SUBDOMAINS: readonly ["www", "mail", "email", "smtp", "pop", "imap", "ftp", "sftp", "ssh", "ns1", "ns2", "dns", "api", "app", "admin", "dashboard", "console", "dev", "staging", "prod", "test", "demo", "auth", "login", "signin", "signup", "logout", "sso", "oauth", "account", "profile", "support", "help", "docs", "blog", "status", "cdn", "static", "assets", "media", "images", "legal", "terms", "privacy", "about", "contact", "team", "careers", "press", "investors", "undefined", "null", "true", "false", "root", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "www2", "www3", "ftp2", "mail2", "smtp2", "ns", "ns3", "ns4", "mx", "mx2", "security", "secure", "ssl", "vpn", "proxy", "api2", "api3", "graphql", "rest", "rpc", "ws", "wss", "beta", "alpha", "preview", "canary", "edge", "admin2", "panel", "cp", "controlpanel", "webmail", "autodiscover", "autoconfig", "mail-server", "google", "facebook", "amazon", "microsoft", "apple", "twitter", "github", "cloudflare", "stripe", "aws"];
|
|
53
|
+
/**
|
|
54
|
+
* Validate a subdomain name
|
|
55
|
+
*
|
|
56
|
+
* Checks:
|
|
57
|
+
* 1. Length (2-63 characters)
|
|
58
|
+
* 2. Characters (lowercase alphanumeric + hyphens)
|
|
59
|
+
* 3. No leading/trailing hyphens
|
|
60
|
+
* 4. Not reserved
|
|
61
|
+
*
|
|
62
|
+
* @param subdomain - The subdomain to validate
|
|
63
|
+
* @param options - Validation options
|
|
64
|
+
* @returns Validation result
|
|
65
|
+
*
|
|
66
|
+
* @example
|
|
67
|
+
* ```typescript
|
|
68
|
+
* validateSubdomain('acme')
|
|
69
|
+
* // { valid: true, details: { passed: ['length', 'characters', 'hyphens', 'reserved'] } }
|
|
70
|
+
*
|
|
71
|
+
* validateSubdomain('www')
|
|
72
|
+
* // { valid: false, error: 'Subdomain is reserved' }
|
|
73
|
+
*
|
|
74
|
+
* validateSubdomain('a')
|
|
75
|
+
* // { valid: false, error: 'Subdomain must be 2-63 characters' }
|
|
76
|
+
* ```
|
|
77
|
+
*/
|
|
78
|
+
export declare function validateSubdomain(subdomain: string, options?: ValidationOptions): ValidationResult;
|
|
79
|
+
/**
|
|
80
|
+
* Validate a platform TLD
|
|
81
|
+
*
|
|
82
|
+
* @param tld - The TLD to validate
|
|
83
|
+
* @returns Validation result
|
|
84
|
+
*
|
|
85
|
+
* @example
|
|
86
|
+
* ```typescript
|
|
87
|
+
* validateTLD('saas.group')
|
|
88
|
+
* // { valid: true }
|
|
89
|
+
*
|
|
90
|
+
* validateTLD('example.com')
|
|
91
|
+
* // { valid: false, error: 'Not a valid platform TLD' }
|
|
92
|
+
* ```
|
|
93
|
+
*/
|
|
94
|
+
export declare function validateTLD(tld: string): ValidationResult;
|
|
95
|
+
/**
|
|
96
|
+
* Validate a full domain (subdomain + TLD)
|
|
97
|
+
*
|
|
98
|
+
* @param subdomain - The subdomain
|
|
99
|
+
* @param tld - The TLD
|
|
100
|
+
* @param options - Validation options
|
|
101
|
+
* @returns Validation result
|
|
102
|
+
*
|
|
103
|
+
* @example
|
|
104
|
+
* ```typescript
|
|
105
|
+
* validateDomain('acme', 'saas.group')
|
|
106
|
+
* // { valid: true }
|
|
107
|
+
* ```
|
|
108
|
+
*/
|
|
109
|
+
export declare function validateDomain(subdomain: string, tld: string, options?: ValidationOptions): ValidationResult;
|
|
110
|
+
/**
|
|
111
|
+
* Check if a subdomain is in the reserved list
|
|
112
|
+
*
|
|
113
|
+
* @param subdomain - The subdomain to check
|
|
114
|
+
* @param includeAdditional - Include additional reserved list
|
|
115
|
+
* @returns True if reserved
|
|
116
|
+
*
|
|
117
|
+
* @example
|
|
118
|
+
* ```typescript
|
|
119
|
+
* isReserved('www') // true
|
|
120
|
+
* isReserved('acme') // false
|
|
121
|
+
* isReserved('google', true) // true (in additional list)
|
|
122
|
+
* ```
|
|
123
|
+
*/
|
|
124
|
+
export declare function isReserved(subdomain: string, includeAdditional?: boolean): boolean;
|
|
125
|
+
/**
|
|
126
|
+
* Normalize a subdomain
|
|
127
|
+
*
|
|
128
|
+
* @param subdomain - The subdomain to normalize
|
|
129
|
+
* @returns Normalized subdomain (lowercase, trimmed)
|
|
130
|
+
*
|
|
131
|
+
* @example
|
|
132
|
+
* ```typescript
|
|
133
|
+
* normalizeSubdomain(' ACME ')
|
|
134
|
+
* // 'acme'
|
|
135
|
+
* ```
|
|
136
|
+
*/
|
|
137
|
+
export declare function normalizeSubdomain(subdomain: string): string;
|
|
138
|
+
/**
|
|
139
|
+
* Suggest similar available subdomains
|
|
140
|
+
*
|
|
141
|
+
* When a subdomain is taken or reserved, suggest alternatives.
|
|
142
|
+
*
|
|
143
|
+
* @param subdomain - The original subdomain
|
|
144
|
+
* @param checkAvailability - Function to check if a subdomain is available
|
|
145
|
+
* @returns Array of suggested alternatives
|
|
146
|
+
*
|
|
147
|
+
* @example
|
|
148
|
+
* ```typescript
|
|
149
|
+
* const suggestions = await suggestAlternatives('acme', async (s) => {
|
|
150
|
+
* const status = await client.check(s, 'saas.group')
|
|
151
|
+
* return status === 'available'
|
|
152
|
+
* })
|
|
153
|
+
* // ['acme-app', 'acme-hq', 'getacme', 'acme2']
|
|
154
|
+
* ```
|
|
155
|
+
*/
|
|
156
|
+
export declare function suggestAlternatives(subdomain: string, checkAvailability: (subdomain: string) => Promise<boolean>, maxSuggestions?: number): Promise<string[]>;
|
|
157
|
+
/**
|
|
158
|
+
* Get all reserved subdomains
|
|
159
|
+
*
|
|
160
|
+
* @param includeAdditional - Include additional reserved list
|
|
161
|
+
* @returns Array of reserved subdomain names
|
|
162
|
+
*/
|
|
163
|
+
export declare function getReservedSubdomains(includeAdditional?: boolean): readonly string[];
|
|
164
|
+
//# sourceMappingURL=validation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../do/domains/validation.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAcH;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,gCAAgC;IAChC,KAAK,EAAE,OAAO,CAAA;IACd,+BAA+B;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,+BAA+B;IAC/B,OAAO,CAAC,EAAE,iBAAiB,CAAA;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,mCAAmC;IACnC,KAAK,EAAE,MAAM,CAAA;IACb,yBAAyB;IACzB,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,iCAAiC;IACjC,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,2CAA2C;IAC3C,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,kCAAkC;IAClC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,mCAAmC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,yCAAyC;IACzC,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAA;CAC9B;AAMD;;;GAGG;AACH,eAAO,MAAM,8BAA8B,qeAsBjC,CAAA;AAEV;;GAEG;AACH,eAAO,MAAM,uBAAuB,g9BAG1B,CAAA;AAMV;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,iBAAsB,GAC9B,gBAAgB,CAiFlB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,gBAAgB,CASzD;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAC5B,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,iBAAiB,GAC1B,gBAAgB,CAYlB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,iBAAiB,UAAO,GAAG,OAAO,CAY/E;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,mBAAmB,CACvC,SAAS,EAAE,MAAM,EACjB,iBAAiB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,EAC1D,cAAc,SAAI,GACjB,OAAO,CAAC,MAAM,EAAE,CAAC,CA0BnB;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,iBAAiB,UAAO,GAAG,SAAS,MAAM,EAAE,CAKjF"}
|
|
@@ -0,0 +1,290 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Subdomain Validation
|
|
3
|
+
*
|
|
4
|
+
* Utilities for validating subdomain names, checking reserved lists,
|
|
5
|
+
* and verifying TLD validity.
|
|
6
|
+
*
|
|
7
|
+
* @module domains/validation
|
|
8
|
+
*/
|
|
9
|
+
import { RESERVED_SUBDOMAINS, isReservedSubdomain, } from '../../types/domains';
|
|
10
|
+
import { isValidTLD } from './tlds';
|
|
11
|
+
// =============================================================================
|
|
12
|
+
// Constants
|
|
13
|
+
// =============================================================================
|
|
14
|
+
/**
|
|
15
|
+
* Additional reserved subdomains beyond the core list
|
|
16
|
+
* These are commonly used or potentially confusing names
|
|
17
|
+
*/
|
|
18
|
+
export const ADDITIONAL_RESERVED_SUBDOMAINS = [
|
|
19
|
+
// Numbers that might be confusing
|
|
20
|
+
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
|
|
21
|
+
// Common abbreviations
|
|
22
|
+
'www2', 'www3', 'ftp2', 'mail2', 'smtp2',
|
|
23
|
+
'ns', 'ns3', 'ns4', 'mx', 'mx2',
|
|
24
|
+
// Security related
|
|
25
|
+
'security', 'secure', 'ssl', 'vpn', 'proxy',
|
|
26
|
+
// Common service names
|
|
27
|
+
'api2', 'api3', 'graphql', 'rest', 'rpc', 'ws', 'wss',
|
|
28
|
+
'beta', 'alpha', 'preview', 'canary', 'edge',
|
|
29
|
+
// Platform specific
|
|
30
|
+
'admin2', 'panel', 'cp', 'controlpanel', 'webmail',
|
|
31
|
+
'autodiscover', 'autoconfig', 'mail-server',
|
|
32
|
+
// Potential trademark issues
|
|
33
|
+
'google', 'facebook', 'amazon', 'microsoft', 'apple',
|
|
34
|
+
'twitter', 'github', 'cloudflare', 'stripe', 'aws',
|
|
35
|
+
];
|
|
36
|
+
/**
|
|
37
|
+
* All reserved subdomains (core + additional)
|
|
38
|
+
*/
|
|
39
|
+
export const ALL_RESERVED_SUBDOMAINS = [
|
|
40
|
+
...RESERVED_SUBDOMAINS,
|
|
41
|
+
...ADDITIONAL_RESERVED_SUBDOMAINS,
|
|
42
|
+
];
|
|
43
|
+
// =============================================================================
|
|
44
|
+
// Public API
|
|
45
|
+
// =============================================================================
|
|
46
|
+
/**
|
|
47
|
+
* Validate a subdomain name
|
|
48
|
+
*
|
|
49
|
+
* Checks:
|
|
50
|
+
* 1. Length (2-63 characters)
|
|
51
|
+
* 2. Characters (lowercase alphanumeric + hyphens)
|
|
52
|
+
* 3. No leading/trailing hyphens
|
|
53
|
+
* 4. Not reserved
|
|
54
|
+
*
|
|
55
|
+
* @param subdomain - The subdomain to validate
|
|
56
|
+
* @param options - Validation options
|
|
57
|
+
* @returns Validation result
|
|
58
|
+
*
|
|
59
|
+
* @example
|
|
60
|
+
* ```typescript
|
|
61
|
+
* validateSubdomain('acme')
|
|
62
|
+
* // { valid: true, details: { passed: ['length', 'characters', 'hyphens', 'reserved'] } }
|
|
63
|
+
*
|
|
64
|
+
* validateSubdomain('www')
|
|
65
|
+
* // { valid: false, error: 'Subdomain is reserved' }
|
|
66
|
+
*
|
|
67
|
+
* validateSubdomain('a')
|
|
68
|
+
* // { valid: false, error: 'Subdomain must be 2-63 characters' }
|
|
69
|
+
* ```
|
|
70
|
+
*/
|
|
71
|
+
export function validateSubdomain(subdomain, options = {}) {
|
|
72
|
+
const passed = [];
|
|
73
|
+
const minLength = options.minLength ?? 2;
|
|
74
|
+
const maxLength = options.maxLength ?? 63;
|
|
75
|
+
// Normalize if uppercase allowed
|
|
76
|
+
const normalized = options.allowUppercase ? subdomain.toLowerCase() : subdomain;
|
|
77
|
+
// Check lowercase
|
|
78
|
+
if (!options.allowUppercase && subdomain !== subdomain.toLowerCase()) {
|
|
79
|
+
return {
|
|
80
|
+
valid: false,
|
|
81
|
+
error: 'Subdomain must be lowercase',
|
|
82
|
+
details: { value: subdomain, passed, failed: 'lowercase' },
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
passed.push('lowercase');
|
|
86
|
+
// Check length
|
|
87
|
+
if (normalized.length < minLength || normalized.length > maxLength) {
|
|
88
|
+
return {
|
|
89
|
+
valid: false,
|
|
90
|
+
error: `Subdomain must be ${minLength}-${maxLength} characters`,
|
|
91
|
+
details: { value: subdomain, passed, failed: 'length' },
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
passed.push('length');
|
|
95
|
+
// Check characters
|
|
96
|
+
if (!/^[a-z0-9]([a-z0-9-]*[a-z0-9])?$/.test(normalized) && normalized.length > 1) {
|
|
97
|
+
return {
|
|
98
|
+
valid: false,
|
|
99
|
+
error: 'Subdomain must be alphanumeric with optional hyphens (no leading/trailing hyphens)',
|
|
100
|
+
details: { value: subdomain, passed, failed: 'characters' },
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
// Single character check
|
|
104
|
+
if (normalized.length === 1 && !/^[a-z0-9]$/.test(normalized)) {
|
|
105
|
+
return {
|
|
106
|
+
valid: false,
|
|
107
|
+
error: 'Single character subdomain must be alphanumeric',
|
|
108
|
+
details: { value: subdomain, passed, failed: 'characters' },
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
passed.push('characters');
|
|
112
|
+
// Check consecutive hyphens
|
|
113
|
+
if (normalized.includes('--')) {
|
|
114
|
+
return {
|
|
115
|
+
valid: false,
|
|
116
|
+
error: 'Subdomain cannot contain consecutive hyphens',
|
|
117
|
+
details: { value: subdomain, passed, failed: 'consecutive-hyphens' },
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
passed.push('consecutive-hyphens');
|
|
121
|
+
// Check reserved (core list)
|
|
122
|
+
if (isReservedSubdomain(normalized)) {
|
|
123
|
+
return {
|
|
124
|
+
valid: false,
|
|
125
|
+
error: 'Subdomain is reserved',
|
|
126
|
+
details: { value: subdomain, passed, failed: 'reserved' },
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
passed.push('reserved');
|
|
130
|
+
// Check additional reserved
|
|
131
|
+
const additionalReserved = options.additionalReserved ?? ADDITIONAL_RESERVED_SUBDOMAINS;
|
|
132
|
+
if (additionalReserved.includes(normalized)) {
|
|
133
|
+
return {
|
|
134
|
+
valid: false,
|
|
135
|
+
error: 'Subdomain is reserved',
|
|
136
|
+
details: { value: subdomain, passed, failed: 'additional-reserved' },
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
passed.push('additional-reserved');
|
|
140
|
+
return {
|
|
141
|
+
valid: true,
|
|
142
|
+
details: { value: subdomain, passed },
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Validate a platform TLD
|
|
147
|
+
*
|
|
148
|
+
* @param tld - The TLD to validate
|
|
149
|
+
* @returns Validation result
|
|
150
|
+
*
|
|
151
|
+
* @example
|
|
152
|
+
* ```typescript
|
|
153
|
+
* validateTLD('saas.group')
|
|
154
|
+
* // { valid: true }
|
|
155
|
+
*
|
|
156
|
+
* validateTLD('example.com')
|
|
157
|
+
* // { valid: false, error: 'Not a valid platform TLD' }
|
|
158
|
+
* ```
|
|
159
|
+
*/
|
|
160
|
+
export function validateTLD(tld) {
|
|
161
|
+
if (isValidTLD(tld)) {
|
|
162
|
+
return { valid: true };
|
|
163
|
+
}
|
|
164
|
+
return {
|
|
165
|
+
valid: false,
|
|
166
|
+
error: 'Not a valid platform TLD',
|
|
167
|
+
details: { value: tld, passed: [], failed: 'platform-tld' },
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Validate a full domain (subdomain + TLD)
|
|
172
|
+
*
|
|
173
|
+
* @param subdomain - The subdomain
|
|
174
|
+
* @param tld - The TLD
|
|
175
|
+
* @param options - Validation options
|
|
176
|
+
* @returns Validation result
|
|
177
|
+
*
|
|
178
|
+
* @example
|
|
179
|
+
* ```typescript
|
|
180
|
+
* validateDomain('acme', 'saas.group')
|
|
181
|
+
* // { valid: true }
|
|
182
|
+
* ```
|
|
183
|
+
*/
|
|
184
|
+
export function validateDomain(subdomain, tld, options) {
|
|
185
|
+
const subdomainResult = validateSubdomain(subdomain, options);
|
|
186
|
+
if (!subdomainResult.valid) {
|
|
187
|
+
return subdomainResult;
|
|
188
|
+
}
|
|
189
|
+
const tldResult = validateTLD(tld);
|
|
190
|
+
if (!tldResult.valid) {
|
|
191
|
+
return tldResult;
|
|
192
|
+
}
|
|
193
|
+
return { valid: true };
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Check if a subdomain is in the reserved list
|
|
197
|
+
*
|
|
198
|
+
* @param subdomain - The subdomain to check
|
|
199
|
+
* @param includeAdditional - Include additional reserved list
|
|
200
|
+
* @returns True if reserved
|
|
201
|
+
*
|
|
202
|
+
* @example
|
|
203
|
+
* ```typescript
|
|
204
|
+
* isReserved('www') // true
|
|
205
|
+
* isReserved('acme') // false
|
|
206
|
+
* isReserved('google', true) // true (in additional list)
|
|
207
|
+
* ```
|
|
208
|
+
*/
|
|
209
|
+
export function isReserved(subdomain, includeAdditional = true) {
|
|
210
|
+
const normalized = subdomain.toLowerCase();
|
|
211
|
+
if (isReservedSubdomain(normalized)) {
|
|
212
|
+
return true;
|
|
213
|
+
}
|
|
214
|
+
if (includeAdditional) {
|
|
215
|
+
return ADDITIONAL_RESERVED_SUBDOMAINS.includes(normalized);
|
|
216
|
+
}
|
|
217
|
+
return false;
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Normalize a subdomain
|
|
221
|
+
*
|
|
222
|
+
* @param subdomain - The subdomain to normalize
|
|
223
|
+
* @returns Normalized subdomain (lowercase, trimmed)
|
|
224
|
+
*
|
|
225
|
+
* @example
|
|
226
|
+
* ```typescript
|
|
227
|
+
* normalizeSubdomain(' ACME ')
|
|
228
|
+
* // 'acme'
|
|
229
|
+
* ```
|
|
230
|
+
*/
|
|
231
|
+
export function normalizeSubdomain(subdomain) {
|
|
232
|
+
return subdomain.toLowerCase().trim();
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* Suggest similar available subdomains
|
|
236
|
+
*
|
|
237
|
+
* When a subdomain is taken or reserved, suggest alternatives.
|
|
238
|
+
*
|
|
239
|
+
* @param subdomain - The original subdomain
|
|
240
|
+
* @param checkAvailability - Function to check if a subdomain is available
|
|
241
|
+
* @returns Array of suggested alternatives
|
|
242
|
+
*
|
|
243
|
+
* @example
|
|
244
|
+
* ```typescript
|
|
245
|
+
* const suggestions = await suggestAlternatives('acme', async (s) => {
|
|
246
|
+
* const status = await client.check(s, 'saas.group')
|
|
247
|
+
* return status === 'available'
|
|
248
|
+
* })
|
|
249
|
+
* // ['acme-app', 'acme-hq', 'getacme', 'acme2']
|
|
250
|
+
* ```
|
|
251
|
+
*/
|
|
252
|
+
export async function suggestAlternatives(subdomain, checkAvailability, maxSuggestions = 5) {
|
|
253
|
+
const suggestions = [];
|
|
254
|
+
const suffixes = ['app', 'hq', 'io', 'dev', 'co', 'team', 'labs', '2', '3'];
|
|
255
|
+
const prefixes = ['get', 'try', 'use', 'my', 'the', 'go'];
|
|
256
|
+
// Try suffixes
|
|
257
|
+
for (const suffix of suffixes) {
|
|
258
|
+
if (suggestions.length >= maxSuggestions)
|
|
259
|
+
break;
|
|
260
|
+
const candidate = `${subdomain}-${suffix}`;
|
|
261
|
+
const validation = validateSubdomain(candidate);
|
|
262
|
+
if (validation.valid && (await checkAvailability(candidate))) {
|
|
263
|
+
suggestions.push(candidate);
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
// Try prefixes
|
|
267
|
+
for (const prefix of prefixes) {
|
|
268
|
+
if (suggestions.length >= maxSuggestions)
|
|
269
|
+
break;
|
|
270
|
+
const candidate = `${prefix}${subdomain}`;
|
|
271
|
+
const validation = validateSubdomain(candidate);
|
|
272
|
+
if (validation.valid && (await checkAvailability(candidate))) {
|
|
273
|
+
suggestions.push(candidate);
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
return suggestions;
|
|
277
|
+
}
|
|
278
|
+
/**
|
|
279
|
+
* Get all reserved subdomains
|
|
280
|
+
*
|
|
281
|
+
* @param includeAdditional - Include additional reserved list
|
|
282
|
+
* @returns Array of reserved subdomain names
|
|
283
|
+
*/
|
|
284
|
+
export function getReservedSubdomains(includeAdditional = true) {
|
|
285
|
+
if (includeAdditional) {
|
|
286
|
+
return ALL_RESERVED_SUBDOMAINS;
|
|
287
|
+
}
|
|
288
|
+
return RESERVED_SUBDOMAINS;
|
|
289
|
+
}
|
|
290
|
+
//# sourceMappingURL=validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../do/domains/validation.ts"],"names":[],"mappings":"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"}
|